ca711e009dba6d7d6535e23a500a236f0c1209f8 mmaddren Tue Apr 26 15:51:11 2011 -0700 new version of RaFile diff --git python/ucscgenomics/rafile/RaFile.py python/ucscgenomics/rafile/RaFile.py index 784e457..a3c53d2 100644 --- python/ucscgenomics/rafile/RaFile.py +++ python/ucscgenomics/rafile/RaFile.py @@ -16,58 +16,58 @@ """ Reads an rafile stanza by stanza, and internalizes it. """ file = open(filePath, 'r') #entry = self.__entryType() stanza = list() keyValue = '' for line in file: line = line.strip() if len(stanza) == 0 and (line.startswith('#') or line == ''): - self._OrderedDict__ordering.append(line) + OrderedDict.append(self, line) continue if line != '': stanza.append(line) elif len(stanza) > 0: if keyValue == '': keyValue, name, entry = self.readStanza(stanza) else: testKey, name, entry = self.readStanza(stanza) if keyValue != testKey: raise KeyError('Inconsistent Key ' + testKey) if name in self: raise KeyError('Duplicate Key ' + name) self[name] = entry #entry = self.__entryType() stanza = list() if len(stanza) > 0: raise IOError('File is not newline terminated') file.close() def readStanza(self, stanza): - entry = RaEntry() + entry = RaStanza() val1, val2 = entry.readStanza(stanza) return val1, val2, entry def iter(self): pass def iterkeys(self): for item in self._OrderedDict__ordering: if not(item.startswith('#') or item == ''): yield item def itervalues(self): @@ -82,31 +82,31 @@ yield item, self[item] else: yield [item] def __str__(self): str = '' for item in self.iteritems(): if len(item) == 1: str += item[0].__str__() + '\n' else: str += item[1].__str__() + '\n' return str -class RaEntry(OrderedDict): +class RaStanza(OrderedDict): """ Holds an individual entry in the RaFile. """ def __init__(self): self._name = '' OrderedDict.__init__(self) @property def name(self): return self._name def readStanza(self, stanza): """ @@ -126,31 +126,32 @@ """ if len(line.split(' ', 1)) != 2: raise ValueError() names = map(str.strip, line.split(' ', 1)) self._name = names[1] return names def __readLine(self, line): """ Reads a single line from the stanza, extracting the key-value pair """ if line.startswith('#') or line == '': - self._OrderedDict__ordering.append(line) + OrderedDict.append(self, line) + #self._OrderedDict__ordering.append(line) else: raKey = line.split(' ', 1)[0] raVal = '' if (len(line.split(' ', 1)) == 2): raVal = line.split(' ', 1)[1] #raKey, raVal = map(str, line.split(' ', 1)) self[raKey] = raVal def iter(self): pass def iterkeys(self): for item in self._OrderedDict__ordering: