Browse Source

detectors to folder

pull/1/head
Alexey Velikiy 6 years ago
parent
commit
bb3a9b47f6
  1. 0
      analytics/detectors/__init__.py
  2. 6
      analytics/detectors/general_detector.py
  3. 17
      analytics/detectors/pattern_detection_model.py
  4. 4
      analytics/detectors/peaks_detector.py
  5. 0
      analytics/detectors/step_detect.py
  6. 0
      analytics/detectors/step_detector.py
  7. 6
      analytics/worker.py

0
analytics/detectors/__init__.py

6
analytics/anomaly_model.py → analytics/detectors/general_detector.py

@ -1,11 +1,11 @@
import os.path
from data_provider import DataProvider from data_provider import DataProvider
from data_preprocessor import data_preprocessor from data_preprocessor import data_preprocessor
import json
import pandas as pd import pandas as pd
import logging import logging
from urllib.parse import urlparse from urllib.parse import urlparse
import config import config
import os.path
import json
logger = logging.getLogger('analytic_toolset') logger = logging.getLogger('analytic_toolset')
@ -18,7 +18,7 @@ def anomalies_to_timestamp(anomalies):
return anomalies return anomalies
class AnomalyModel: class GeneralDetector:
def __init__(self, anomaly_name): def __init__(self, anomaly_name):
self.anomaly_name = anomaly_name self.anomaly_name = anomaly_name

17
analytics/pattern_detection_model.py → analytics/detectors/pattern_detection_model.py

@ -1,4 +1,8 @@
from detectors.step_detector import StepDetector
from detectors.peaks_detector import PeaksDetector
from data_provider import DataProvider from data_provider import DataProvider
import logging import logging
from urllib.parse import urlparse from urllib.parse import urlparse
import os.path import os.path
@ -24,9 +28,9 @@ def segments_box(segments):
class PatternDetectionModel: class PatternDetectionModel:
def __init__(self, analytic_unit_id, pattern): def __init__(self, analytic_unit_id, pattern_type):
self.analytic_unit_id = analytic_unit_id self.analytic_unit_id = analytic_unit_id
self.pattern = pattern self.pattern_type = pattern_type
self.__load_anomaly_config() self.__load_anomaly_config()
@ -46,10 +50,10 @@ class PatternDetectionModel:
self.data_prov = DataProvider(datasource, target, dataset_filename) self.data_prov = DataProvider(datasource, target, dataset_filename)
self.model = None self.model = None
self.__load_model(pattern) self.__load_model(pattern_type)
def learn(self, segments): def learn(self, segments):
self.model = self.__create_model(self.pattern) self.model = self.__create_model(self.pattern_type)
window_size = 200 window_size = 200
dataframe = self.data_prov.get_dataframe() dataframe = self.data_prov.get_dataframe()
@ -94,11 +98,10 @@ class PatternDetectionModel:
def __create_model(self, pattern): def __create_model(self, pattern):
if pattern == "peaks": if pattern == "peaks":
from peaks_detector import PeaksDetector
return PeaksDetector() return PeaksDetector()
if pattern == "jumps" or pattern == "drops": if pattern == "jumps" or pattern == "drops":
from step_detector import StepDetector
return StepDetector(pattern) return StepDetector(pattern)
raise ValueError('Unknown pattern "%s"' % pattern)
def __load_anomaly_config(self): def __load_anomaly_config(self):
with open(os.path.join(config.ANALYTIC_UNITS_FOLDER, self.analytic_unit_id + ".json"), 'r') as config_file: with open(os.path.join(config.ANALYTIC_UNITS_FOLDER, self.analytic_unit_id + ".json"), 'r') as config_file:
@ -111,7 +114,7 @@ class PatternDetectionModel:
def __load_model(self, pattern): def __load_model(self, pattern):
logger.info("Load model '%s'" % self.analytic_unit_id) logger.info("Load model '%s'" % self.analytic_unit_id)
model_filename = os.path.join(config.MODELS_FOLDER, self.pattern + ".m") model_filename = os.path.join(config.MODELS_FOLDER, self.pattern_type + ".m")
if os.path.exists(model_filename): if os.path.exists(model_filename):
self.model = self.__create_model(pattern) self.model = self.__create_model(pattern)
self.model.load(model_filename) self.model.load(model_filename)

4
analytics/peaks_detector.py → analytics/detectors/peaks_detector.py

@ -1,6 +1,8 @@
import detectors.step_detect
from scipy import signal from scipy import signal
import numpy as np import numpy as np
import step_detect
class PeaksDetector: class PeaksDetector:

0
analytics/step_detect.py → analytics/detectors/step_detect.py

0
analytics/step_detector.py → analytics/detectors/step_detector.py

6
analytics/worker.py

@ -1,6 +1,6 @@
import config import config
from anomaly_model import AnomalyModel from detectors.general_detector import GeneralDetector
from pattern_detection_model import PatternDetectionModel from detectors.pattern_detection_model import PatternDetectionModel
import queue import queue
import threading import threading
import json import json
@ -104,7 +104,7 @@ class Worker(object):
def get_model(self, analytic_unit_id, pattern): def get_model(self, analytic_unit_id, pattern):
if analytic_unit_id not in self.models_cache: if analytic_unit_id not in self.models_cache:
if pattern.find('general') != -1: if pattern.find('general') != -1:
model = AnomalyModel(analytic_unit_id) model = GeneralDetector(analytic_unit_id)
else: else:
model = PatternDetectionModel(analytic_unit_id, pattern) model = PatternDetectionModel(analytic_unit_id, pattern)
self.models_cache[analytic_unit_id] = model self.models_cache[analytic_unit_id] = model

Loading…
Cancel
Save