X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/predictops.git/blobdiff_plain/f04d85cc8028a2721d7d5e8ec866ff8022797bb5..83fdad7cdd97734f036d464acceebaf3b0f0a44b:/predictops/target/target.py?ds=sidebyside diff --git a/predictops/target/target.py b/predictops/target/target.py index b998120..9e3d86d 100644 --- a/predictops/target/target.py +++ b/predictops/target/target.py @@ -12,7 +12,7 @@ logger = getLogger() class Target: def __init__(self, config_file = None, - start = None, end = None, timestep = None): + start = None, end = None, timestep = None, cumulative = None): self._config = ConfigParser() self._config.read(config_file) @@ -20,6 +20,7 @@ class Target: self._start = start self._end = end self._timestep = timestep + self._cumulative = cumulative logger.info('Initialization of target variable') self._y = {} @@ -68,36 +69,39 @@ class Target: logger.info('Integrating interventions for the whole area') with open(self._stream_file) as f: reader = DictReader(f, delimiter=',') - for row in reader: - if row['start'] != '': - start_interv = datetime.strptime(row['start'], '%d/%m/%Y %H:%M:%S') - start_interv = start_interv.replace(minute=0) - end_interv = datetime.strptime(row['end'], '%d/%m/%Y %H:%M:%S') - end_interv = end_interv.replace(minute=0) - if not (start_interv > self._end or end_interv < self._start): - if start_interv < self._start and end_interv <= self._end: - current = self._start - while current <= end_interv: - self._y[current] += 1 - current += self._timestep - elif start_interv >= self._start and end_interv > self._end: - current = start_interv - while current not in self._y: - current -= timedelta(hours=1) - while current <= self._end: - self._y[current] += 1 - current += self._timestep - elif start_interv >= self._start and end_interv <= self._end: - current = start_interv - while current not in self._y: - current -= timedelta(hours=1) - while current <= end_interv: - self._y[current] += 1 - current += self._timestep - - - - - + if self._cumulative: + for row in reader: + if row['start'] != '': + start_interv = datetime.strptime(row['start'], '%d/%m/%Y %H:%M:%S') + start_interv = start_interv.replace(minute=0) + end_interv = datetime.strptime(row['end'], '%d/%m/%Y %H:%M:%S') + end_interv = end_interv.replace(minute=0) + if not (start_interv > self._end or end_interv < self._start): + if start_interv < self._start and end_interv <= self._end: + current = self._start + while current <= end_interv: + self._y[current] += 1 + current += self._timestep + elif start_interv >= self._start and end_interv > self._end: + current = start_interv + while current not in self._y: + current -= timedelta(hours=1) + while current <= self._end: + self._y[current] += 1 + current += self._timestep + elif start_interv >= self._start and end_interv <= self._end: + current = start_interv + while current not in self._y: + current -= timedelta(hours=1) + while current <= end_interv: + self._y[current] += 1 + current += self._timestep + else: + for row in reader: + if row['start'] != '': + start_interv = datetime.strptime(row['start'], '%d/%m/%Y %H:%M:%S') + start_interv = start_interv.replace(minute=0) + if start_interv in self._y: + self._y[start_interv] += 1