def writeMatrix(self, fh, rowFrequencies=False, columnFrequencies=False, inclTotals=False): columnKeys = tuple(sorted(self.allColumnKeys)) fileOps.prRow(fh, self.rowKeyHeader + columnKeys + (("total",) if inclTotals else ())) for rowKey in sorted(self.counts.iterkeys()): self.__writeMatrixRow(fh, rowKey, self.counts[rowKey], columnKeys, rowFrequencies, columnFrequencies, inclTotals) if inclTotals and not rowFrequencies: rowKey = ["all" for col in self.rowKeyHeader] self.__writeMatrixRow(fh, rowKey, self.columnTotals, columnKeys, rowFrequencies, columnFrequencies, inclTotals)
def __writeMatrixRow(self, fh, rowKey, rowData, columnKeys, rowFrequencies, columnFrequencies, inclTotals): if rowFrequencies: rowTotal = self.rowTotals[rowKey] data = [fmtRate(rowData[ck], rowTotal) for ck in columnKeys] if inclTotals: data.append(fmtRate(sum([rowData[ck] for ck in columnKeys]), rowTotal)) elif columnFrequencies: data = [fmtRate(rowData[ck], self.columnTotals[ck]) for ck in columnKeys] else: data = [rowData[ck] for ck in columnKeys] if inclTotals: data.append(sum(data)) fileOps.prRow(fh, list(rowKey) + data)
def writeCountsFreqs(self, fh, inclTotals=False): total = self.columnTotals[self.defaultColumnKey] fileOps.prRow(fh, self.rowKeyHeader + ("count", "freq")) for key in sorted(self.counts.iterkeys()): val = self.counts[key][self.defaultColumnKey] fileOps.prRow(fh, key + (val, fmtRate(val, total))) if inclTotals: fileOps.prRow(fh, ["all" for col in self.rowKeyHeader] + [total, fmtRate(total, total)])
def __writeRow(self, fh, key): row = list(key) for label in self.allLabels: row.extend(self.stats[key].get(label, self.__emptyCounts)) fileOps.prRow(fh, row)
def __writeHeader(self, fh): row = list(self.inKeyColNames) for label in self.allLabels: row.extend([label+"_count", label+"_freq"]) fileOps.prRow(fh, row)