]> AND Private Git Repository - predictops.git/blobdiff - predictops/target/target.py
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
Refactoring, fin du lever/coucher de soleil, et début de sentinelles
[predictops.git] / predictops / target / target.py
index b998120b1be6b3b5524e8263c155370b6edceb98..fdff54ba2259aef28f13964f71b8e115f826622b 100644 (file)
@@ -11,8 +11,8 @@ logger = getLogger()
 
 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)
@@ -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 = {}
@@ -32,8 +33,6 @@ class Target:
         self._stream_file = eval(self._config['DATA']['csv_file'])
         self._get_located_interventions()
 
-
-
     @property
     def start(self):
         return self._start
@@ -42,7 +41,6 @@ class Target:
     def start(self, x):
         self._start = x
 
-
     @property
     def end(self):
         return self._end
@@ -51,7 +49,6 @@ class Target:
     def end(self, x):
         self._end = x
 
-
     @property
     def y(self):
         return self._y
@@ -60,44 +57,45 @@ class Target:
     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