[PREPROCESSING]
fill_method = spline
-order = 3
\ No newline at end of file
+order = 3
+
+
+[TARGET]
+config = (Path.cwd() / 'config') / 'targets' / 'sdis25.cfg'
--- /dev/null
+[SPECIFICATION]
+origin = False
+destination = False
+
+[DATA]
+csv_file = (Path.cwd() / 'data') / 'targets' / 'sdis25' / 'interventions.csv'
\ No newline at end of file
from predictops.engine import Engine
from predictops.learn.preprocessing import Preprocessing
-from predictops.target.all import All
-from predictops.target.toarea import ToArea
from logging import getLogger
from logging.config import fileConfig
engine = Engine(config_file = config)
engine.add_features()
- #print(engine.X)
- process = Preprocessing(config_file = config, dict_features = engine.X)
+ engine.add_target()
+ process = Preprocessing(config_file = config, dict_features = engine.X)
- #print(engine.X[datetime.strptime('06/30/2010 21:00:00', '%m/%d/%Y %H:%M:%S')])
print(process.dataframe.head(n=20))
print(process.dataframe.tail(n=20))
-
- target = All(stream_file = Path.cwd() / 'data' / 'targets' / 'sdis25' / 'interventions.csv')
+ #target = toarea(stream_file = Path.cwd() / 'data' / 'targets' / 'sdis25' / 'interventions.csv')
exit()
Doubs = depts.loc[depts['nom'] == 'Doubs'].iloc[0]
ToArea(area=Doubs.geometry,
- start = start, end = end,
csv_file = Path.cwd() / 'data' / 'targets' / 'sdis25' / 'interventions.csv')
from .source.ephemeris import Ephemeris
from .source.meteofrance import MeteoFrance
+from .target.target import Target
fileConfig((Path.cwd() / 'config') / 'logging.cfg')
logger = getLogger()
self._config['DATETIME'].getfloat('hourStep'))
self._X = {}
- self._Y = {}
self._X.setdefault(date,{}).update(dated_features[date])
+ def add_target(self):
+ self._target = Target(config_file = eval(self._config['TARGET']['config']),
+ start = self._start, end = self._end,
+ timestep = self._timestep)
+
+
@property
def X(self):
return self._X
@X.setter
def X(self, x):
- self._X = x
\ No newline at end of file
+ self._X = x
+
+
+ @property
+ def y(self):
+ return self._target.y
+
+ @y.setter
+ def end(self, y):
+ self._target.y = y
+++ /dev/null
-from csv import DictReader
-
-class All:
-
- _start = None
- _end = None
-
- def __init__(self, stream_file = None):
- self._stream_file = stream_file
- self._get_located_interventions()
-
-
- def _get_located_interventions(self):
- with open(self._stream_file) as f:
- reader = DictReader(f, delimiter=',')
- for row in reader:
- print(row)
-
--- /dev/null
+from configparser import ConfigParser
+from csv import DictReader
+from datetime import datetime, timedelta
+from logging import getLogger
+from logging.config import fileConfig
+from pathlib import Path
+
+fileConfig((Path.cwd() / 'config') / 'logging.cfg')
+logger = getLogger()
+
+
+class Target:
+
+ def __init__(self, config_file = None,
+ start = None, end = None, timestep = None):
+
+ self._config = ConfigParser()
+ self._config.read(config_file)
+
+ self._start = start
+ self._end = end
+ self._timestep = timestep
+
+ logger.info('Initialization of target variable')
+ self._y = {}
+ current = self._start
+ while current <= self._end:
+ self._y[current] = 0
+ current += self._timestep
+
+ self._timestep = timestep
+ self._stream_file = eval(self._config['DATA']['csv_file'])
+ self._get_located_interventions()
+
+
+
+ @property
+ def start(self):
+ return self._start
+
+ @start.setter
+ def start(self, x):
+ self._start = x
+
+
+ @property
+ def end(self):
+ return self._end
+
+ @end.setter
+ def end(self, x):
+ self._end = x
+
+
+ @property
+ def y(self):
+ return self._y
+
+ @y.setter
+ 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
+
+
+
+
+
+
+
class ToArea:
- def __init__(self, area = None,
- start = datetime.strptime('19960101000000', '%Y%m%d%H%M%S'),
- end = datetime.now(),
- csv_file = None):
+ def __init__(self, area = None, stream_file = None):
self._area = area
- self._csv_file = csv_file
+ self._stream_file = stream_file
self._get_located_interventions()
def _get_located_interventions(self):
- with open(self._csv_file) as f:
+ with open(self._stream_file) as f:
reader = DictReader(f, delimiter=',')
for row in reader:
- print(row)
+ start = datetime.strptime(row['start'], '%d/%m/%Y %H:%M:%S')
+ start.minute = 0
+ end = datetime.strptime(row['end'], '%d/%m/%Y %H:%M:%S')
+ end.minute = 0
+