Source code for croissance.formats.output
import csv
from croissance.estimation import AnnotatedGrowthCurve, GrowthPhase
[docs]
class TSVWriter:
def __init__(self, filepath, exclude_default_phase: bool = True):
self._exclude_default_phase = exclude_default_phase
self._handle = open(filepath, "wt")
self._writer = csv.writer(
self._handle, delimiter="\t", quoting=csv.QUOTE_MINIMAL
)
self._writer.writerow(
["name", "phase", "start", "end", "slope", "intercept", "N0", "SNR", "rank"]
)
[docs]
def write(self, name: str, curve: AnnotatedGrowthCurve):
if not self._exclude_default_phase:
phase = GrowthPhase.pick_best(curve.growth_phases, "rank")
if phase is None:
phase = GrowthPhase(None, None, None, None, None, None, None)
self._write_phase(name, 0, phase)
for idx, phase in enumerate(curve.growth_phases, start=1):
self._write_phase(name, idx, phase)
def _write_phase(self, name, idx, phase):
self._writer.writerow(
[
name,
idx,
phase.start,
phase.end,
phase.slope,
phase.intercept,
phase.n0,
phase.SNR,
phase.rank,
]
)
def __enter__(self):
return self
def __exit__(self, *args, **kwargs):
self.close()
[docs]
def close(self):
self._handle.close()