class Target:
- def __init__(self, config_file = None,
- start = None, end = None, timestep = None):
+ def __init__(self, config_file=None,
+ start=None, end=None, timestep=None, cumulative=None):
self._config = ConfigParser()
self._config.read(config_file)
self._start = start
self._end = end
self._timestep = timestep
+ self._cumulative = cumulative
logger.info('Initialization of target variable')
self._y = {}
self._stream_file = eval(self._config['DATA']['csv_file'])
self._get_located_interventions()
-
-
@property
def start(self):
return self._start
def start(self, x):
self._start = x
-
@property
def end(self):
return self._end
def end(self, x):
self._end = x
-
@property
def y(self):
return self._y
def end(self, y):
self._y = y
-
-
def _get_located_interventions(self):
if not self._config['SPECIFICATION'].getboolean('origin')\
and not self._config['SPECIFICATION'].getboolean('destination'):
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