55# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
66
77import random
8+
89from ads .common .extended_enum import ExtendedEnumMeta
910from ads .opctl .operator .lowcode .common .const import DataColumns
10- from merlion .models .anomaly import autoencoder , deep_point_anomaly_detector , isolation_forest , spectral_residual , windstats , windstats_monthly
11- from merlion .models .anomaly .change_point import bocpd
12- from merlion .models .forecast import prophet
1311
1412
1513class SupportedModels (str , metaclass = ExtendedEnumMeta ):
1614 """Supported anomaly models."""
1715
1816 AutoTS = "autots"
1917 Auto = "auto"
20- MerilonAD = "merlion_ad"
2118 IQR = "iqr"
2219 LOF = "lof"
2320 ZSCORE = "zscore"
@@ -26,6 +23,23 @@ class SupportedModels(str, metaclass=ExtendedEnumMeta):
2623 EE = "ee"
2724 ISOLATIONFOREST = "isolationforest"
2825
26+ # point anomaly
27+ DAGMM = "dagmm"
28+ DEEP_POINT_ANOMALY_DETECTOR = "deep_point_anomaly_detector"
29+ LSTM_ED = "lstm_ed"
30+ SPECTRAL_RESIDUAL = "spectral_residual"
31+ VAE = "vae"
32+
33+ # forecast_based
34+ ARIMA = "arima"
35+ ETS = "ets"
36+ PROPHET = "prophet"
37+ SARIMA = "sarima"
38+
39+ # changepoint
40+ BOCPD = "bocpd"
41+
42+
2943class NonTimeADSupportedModels (str , metaclass = ExtendedEnumMeta ):
3044 """Supported non time-based anomaly detection models."""
3145
@@ -34,7 +48,7 @@ class NonTimeADSupportedModels(str, metaclass=ExtendedEnumMeta):
3448 RandomCutForest = "randomcutforest"
3549 # TODO : Add DBScan
3650 # DBScan = "dbscan"
37-
51+
3852
3953class TODSSubModels (str , metaclass = ExtendedEnumMeta ):
4054 """Supported TODS sub models."""
@@ -66,81 +80,51 @@ class TODSSubModels(str, metaclass=ExtendedEnumMeta):
6680}
6781
6882
69- class MerlionADSubmodels (str , metaclass = ExtendedEnumMeta ):
83+ class MerlionADModels (str , metaclass = ExtendedEnumMeta ):
7084 """Supported Merlion AD sub models."""
7185
7286 # point anomaly
73- AUTOENCODER = "autoencoder"
7487 DAGMM = "dagmm"
75- DBL = "dbl"
7688 DEEP_POINT_ANOMALY_DETECTOR = "deep_point_anomaly_detector"
77- ISOLATION_FOREST = "isolation_forest"
78- LOF = "lof"
7989 LSTM_ED = "lstm_ed"
80- # RANDOM_CUT_FOREST = "random_cut_forest"
8190 SPECTRAL_RESIDUAL = "spectral_residual"
82- STAT_RESIDUAL = "stat_residual"
8391 VAE = "vae"
84- WINDSTATS = "windstats"
85- WINDSTATS_MONTHLY = "windstats_monthly"
86- ZMS = "zms"
8792
8893 # forecast_based
8994 ARIMA = "arima"
9095 ETS = "ets"
91- MSES = "mses"
9296 PROPHET = "prophet"
9397 SARIMA = "sarima"
9498
95- #changepoint
99+ # changepoint
96100 BOCPD = "bocpd"
97101
98102
99103MERLIONAD_IMPORT_MODEL_MAP = {
100- MerlionADSubmodels .AUTOENCODER : ".autoendcoder" ,
101- MerlionADSubmodels .DAGMM : ".dagmm" ,
102- MerlionADSubmodels .DBL : ".dbl" ,
103- MerlionADSubmodels .DEEP_POINT_ANOMALY_DETECTOR : ".deep_point_anomaly_detector" ,
104- MerlionADSubmodels .ISOLATION_FOREST : ".isolation_forest" ,
105- MerlionADSubmodels .LOF : ".lof" ,
106- MerlionADSubmodels .LSTM_ED : ".lstm_ed" ,
107- # MerlionADSubmodels.RANDOM_CUT_FOREST: ".random_cut_forest",
108- MerlionADSubmodels .SPECTRAL_RESIDUAL : ".spectral_residual" ,
109- MerlionADSubmodels .STAT_RESIDUAL : ".stat_residual" ,
110- MerlionADSubmodels .VAE : ".vae" ,
111- MerlionADSubmodels .WINDSTATS : ".windstats" ,
112- MerlionADSubmodels .WINDSTATS_MONTHLY : ".windstats_monthly" ,
113- MerlionADSubmodels .ZMS : ".zms" ,
114- MerlionADSubmodels .ARIMA : ".forecast_based.arima" ,
115- MerlionADSubmodels .ETS : ".forecast_based.ets" ,
116- MerlionADSubmodels .MSES : ".forecast_based.mses" ,
117- MerlionADSubmodels .PROPHET : ".forecast_based.prophet" ,
118- MerlionADSubmodels .SARIMA : ".forecast_based.sarima" ,
119- MerlionADSubmodels .BOCPD : ".change_point.bocpd" ,
104+ MerlionADModels .DAGMM : ".dagmm" ,
105+ MerlionADModels .DEEP_POINT_ANOMALY_DETECTOR : ".deep_point_anomaly_detector" ,
106+ MerlionADModels .LSTM_ED : ".lstm_ed" ,
107+ MerlionADModels .SPECTRAL_RESIDUAL : ".spectral_residual" ,
108+ MerlionADModels .VAE : ".vae" ,
109+ MerlionADModels .ARIMA : ".forecast_based.arima" ,
110+ MerlionADModels .ETS : ".forecast_based.ets" ,
111+ MerlionADModels .PROPHET : ".forecast_based.prophet" ,
112+ MerlionADModels .SARIMA : ".forecast_based.sarima" ,
113+ MerlionADModels .BOCPD : ".change_point.bocpd" ,
120114}
121115
122116
123117MERLIONAD_MODEL_MAP = {
124- MerlionADSubmodels .AUTOENCODER : "AutoEncoder" ,
125- MerlionADSubmodels .DAGMM : "DAGMM" ,
126- MerlionADSubmodels .DBL : "DynamicBaseline" ,
127- MerlionADSubmodels .DEEP_POINT_ANOMALY_DETECTOR : "DeepPointAnomalyDetector" ,
128- MerlionADSubmodels .ISOLATION_FOREST : "IsolationForest" ,
129- MerlionADSubmodels .LOF : "LOF" ,
130- MerlionADSubmodels .LSTM_ED : "LSTMED" ,
131- # MerlionADSubmodels.RANDOM_CUT_FOREST: "RandomCutForest",
132- MerlionADSubmodels .SPECTRAL_RESIDUAL : "SpectralResidual" ,
133- MerlionADSubmodels .STAT_RESIDUAL : "StatThreshold" ,
134- MerlionADSubmodels .VAE : "VAE" ,
135- MerlionADSubmodels .WINDSTATS : "WindStats" ,
136- MerlionADSubmodels .WINDSTATS_MONTHLY : "MonthlyWindStats" ,
137- MerlionADSubmodels .ZMS : "ZMS" ,
138- MerlionADSubmodels .ARIMA : "ArimaDetector" ,
139- MerlionADSubmodels .ETS : "ETSDetector" ,
140- MerlionADSubmodels .MSES : "MSESDetector" ,
141- MerlionADSubmodels .PROPHET : "ProphetDetector" ,
142- MerlionADSubmodels .SARIMA : "SarimaDetector" ,
143- MerlionADSubmodels .BOCPD : "BOCPD" ,
118+ MerlionADModels .DAGMM : "DAGMM" ,
119+ MerlionADModels .DEEP_POINT_ANOMALY_DETECTOR : "DeepPointAnomalyDetector" ,
120+ MerlionADModels .LSTM_ED : "LSTMED" ,
121+ MerlionADModels .SPECTRAL_RESIDUAL : "SpectralResidual" ,
122+ MerlionADModels .VAE : "VAE" ,
123+ MerlionADModels .ARIMA : "ArimaDetector" ,
124+ MerlionADModels .ETS : "ETSDetector" ,
125+ MerlionADModels .PROPHET : "ProphetDetector" ,
126+ MerlionADModels .SARIMA : "SarimaDetector" ,
127+ MerlionADModels .BOCPD : "BOCPD" ,
144128}
145129
146130
@@ -182,6 +166,5 @@ class OutputColumns(str, metaclass=ExtendedEnumMeta):
182166 Series = DataColumns .Series
183167
184168
185- MERLION_DEFAULT_MODEL = "prophet"
186169TODS_DEFAULT_MODEL = "ocsvm"
187170SUBSAMPLE_THRESHOLD = 1000
0 commit comments