1 from predictops.source.ephemeris import Ephemeris
2 from predictops.source.meteofrance import MeteoFrance
3 from predictops.target.toarea import ToArea
5 from datetime import datetime
6 from logging import getLogger
7 from logging.config import fileConfig
8 from pathlib import Path
9 from shutil import rmtree
11 import geopandas as gpd
13 fileConfig((Path.cwd() / 'config') / 'logging.cfg')
18 def __init__(self, start = None, end = None, time_step = None):
19 logger.info("Predictops engine launched")
25 # Cleaning the data directory
26 logger.info("Cleaning and restoring data directory")
27 directory = Path.cwd() / 'data'
28 if directory.is_dir():
30 p = Path(Path.cwd() / 'data')
34 def add_feature(self, name, **kw):
36 if name == 'meteofrance':
37 meteofeature = MeteoFrance(**kw)
39 dated_features = meteofeature.dated_features
40 for date in dated_features:
41 self._X.setdefault(date,{}).update(dated_features[date])
42 elif name == 'ephemeris':
43 ephemerides = Ephemeris(**kw)
44 dated_features = ephemerides.dated_features
45 for date in dated_features:
46 self._X.setdefault(date,{}).update(dated_features[date])
58 start = datetime.strptime('01/01/2010 00:00:00', '%m/%d/%Y %H:%M:%S')
59 end = datetime.strptime('12/31/2010 23:00:00', '%m/%d/%Y %H:%M:%S')
62 engine.add_feature(name = 'meteofrance',
63 start = start, end = end,
64 latitude = 47.25, longitude = 6.0333, nb_stations = 3,
65 features = ['temperature', 'pressure'])
67 engine.add_feature(name = 'ephemeris',
68 start = start, end = end,
69 features = ['hour', 'dayInWeek', 'dayInMonth', 'dayInYear',
70 'weekInYear', 'month', 'year'])
72 print(engine.X[datetime.strptime('06/30/2010 21:00:00', '%m/%d/%Y %H:%M:%S')])
74 depts = gpd.read_file( Path.cwd() / 'data' / 'targets' / 'departments' / "departements-20180101.shp")
75 Doubs = depts.loc[depts['nom'] == 'Doubs'].iloc[0]
77 ToArea(area=Doubs.geometry,
78 start = start, end = end)