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)