diff --git a/ai_services/anomaly_detection/SDK/python/anomaly_detection_crud_example.py b/ai_services/anomaly_detection/SDK/python/anomaly_detection_crud_example.py new file mode 100644 index 00000000..09692cff --- /dev/null +++ b/ai_services/anomaly_detection/SDK/python/anomaly_detection_crud_example.py @@ -0,0 +1,326 @@ +from oci.config import from_file + +# import oci +import time +from oci.ai_anomaly_detection.models import * +from oci.ai_anomaly_detection.anomaly_detection_client import AnomalyDetectionClient +from oci.ai_anomaly_detection.models.data_item import DataItem +from oci.ai_anomaly_detection.models.inline_detect_anomalies_request import ( + InlineDetectAnomaliesRequest, +) +from oci.ai_anomaly_detection.models.embedded_detect_anomalies_request import ( + EmbeddedDetectAnomaliesRequest, +) +from oci.ai_anomaly_detection.models.create_project_details import CreateProjectDetails +from oci.ai_anomaly_detection.models.create_data_asset_details import ( + CreateDataAssetDetails, +) +from oci.ai_anomaly_detection.models.data_source_details import DataSourceDetails +from oci.ai_anomaly_detection.models.data_source_details_object_storage import ( + DataSourceDetailsObjectStorage, +) +from oci.ai_anomaly_detection.models.create_model_details import CreateModelDetails +from oci.ai_anomaly_detection.models.model_training_details import ModelTrainingDetails +from oci.ai_anomaly_detection.models.change_project_compartment_details import ( + ChangeProjectCompartmentDetails, +) +from oci.ai_anomaly_detection.models.change_data_asset_compartment_details import ( + ChangeDataAssetCompartmentDetails, +) +from oci.ai_anomaly_detection.models.change_model_compartment_details import ( + ChangeModelCompartmentDetails, +) + +from datetime import datetime +import json +import base64 +def test_project_crud(): + # PROJECT + print("-*-*-*-PROJECT-*-*-*-") + + # CREATE CALL + proj_details = CreateProjectDetails( + display_name="PythonSDKTestProject", + description="PythonSDKTestProject description", + compartment_id=compartment_id, + ) + create_res = ad_client.create_project(create_project_details=proj_details) + print("----CREATING----") + print(create_res.data) + time.sleep(5) + project_id = create_res.data.id + + # GET CALL + get_proj = ad_client.get_project(project_id=project_id) + print("----READING---") + print(get_proj.data) + time.sleep(5) + + # ------------------------------ Move compartment -------------------------- + mv_details = AnomalyDetectionClient(config) + + dest_compartment_id = ( + "REPLACE ME: ENTER YOUR COMPARTMENT OCID" + ) + chg_details = ChangeProjectCompartmentDetails(compartment_id=dest_compartment_id) + + mv_compart_res = mv_details.change_project_compartment(project_id, chg_details) + print(mv_compart_res) + print(f"successfully moved to compartment {dest_compartment_id}") + + chg_orig_details = ChangeProjectCompartmentDetails(compartment_id=compartment_id) + mv_bk_compart_res = mv_details.change_project_compartment(project_id, chg_orig_details) + print(mv_bk_compart_res) + print(f"successfully moved back to the original compartment {compartment_id}") + + # LIST CALL + list_proj = ad_client.list_projects(compartment_id=compartment_id) + print("----LISTING----") + print(list_proj.data) + time.sleep(5) + + # UPDATE CALL + update_proj_details = UpdateProjectDetails( + description="Updated PythonSDKTestProject description" + ) + update_proj = ad_client.update_project( + project_id=project_id, update_project_details=update_proj_details + ) + print("----UPDATING----") + print(update_proj.data) + time.sleep(60) + + print("##### All Project CRUD operations successful #####") + return project_id + +def test_data_asset_crud(project_id:str): + # DATA ASSET + print("-*-*-*-DATA ASSET-*-*-*-") + # CREATE CALL + dDetails = DataSourceDetails(data_source_type="ORACLE_OBJECT_STORAGE") + + dObjDeatils = DataSourceDetailsObjectStorage( + namespace="REPLACE ME: ENTER NAMESPACE", + bucket_name="REPLACE ME: ENTER BUCKET NAME", + object_name="latest_training_data.json", + ) + + da_details = CreateDataAssetDetails( + display_name="PythonSDKTestDataAsset", + description="description DataAsset", + compartment_id=compartment_id, + project_id=project_id, + data_source_details=dObjDeatils, + ) + create_res = ad_client.create_data_asset(create_data_asset_details=da_details) + print("----CREATING----") + print(create_res.data) + time.sleep(5) + da_id = create_res.data.id + + # READ CALL + get_da = ad_client.get_data_asset(data_asset_id=da_id) + print("----READING----") + print(get_da.data) + time.sleep(5) + + # ------------------------------ Move data asset -------------------------- + mv_details = AnomalyDetectionClient(config) + + dest_compartment_id = ( + "REPLACE ME: ENTER YOUR COMPARTMENT OCID" + ) + chg_da_details = ChangeDataAssetCompartmentDetails(compartment_id=dest_compartment_id) + mv_da_res = mv_details.change_data_asset_compartment(da_id, chg_da_details) + print(mv_da_res) + print(f"successfully moved data asset {da_id} to compartment {dest_compartment_id}") + + time.sleep(60) + + chg_orig_da_details = ChangeDataAssetCompartmentDetails(compartment_id=compartment_id) + mv_bk_da_res = mv_details.change_data_asset_compartment(da_id, chg_orig_da_details) + print(mv_bk_da_res) + print("successfully moved back data asset") + + # LIST CALL + list_da = ad_client.list_data_assets( + compartment_id=compartment_id, project_id=project_id + ) + print("----LISTING----") + print(list_da.data) + time.sleep(30) + + # UPDATE CALL + update_da_details = UpdateDataAssetDetails(description="Updated description DataAsset") + update_da = ad_client.update_data_asset( + data_asset_id=da_id, update_data_asset_details=update_da_details + ) + print("----UPDATING----") + print(update_da.data) + time.sleep(60) + print("##### All Data Asset CRUD operations successful #####") + return da_id + +def test_model_crud(project_id:str, da_id:str): + # MODEL + print("-*-*-*-MODEL-*-*-*-") + # CREATE CALL + dataAssetIds = [da_id] + mTrainDetails = ModelTrainingDetails( + target_fap=0.02, training_fraction=0.7, data_asset_ids=dataAssetIds + ) + mDetails = CreateModelDetails( + display_name="DisplayNameModel", + description="description Model", + compartment_id=compartment_id, + project_id=project_id, + model_training_details=mTrainDetails, + ) + + create_res = ad_client.create_model(create_model_details=mDetails) + print("----CREATING----") + print(create_res.data) + time.sleep(60) + model_id = create_res.data.id + + # READ CALL + get_model = ad_client.get_model(model_id=model_id) + print("----READING----") + print(get_model.data) + time.sleep(60) + while get_model.data.lifecycle_state == Model.LIFECYCLE_STATE_CREATING: + get_model = ad_client.get_model(model_id=model_id) + time.sleep(60) + print(get_model.data.lifecycle_state) + + mv_details = AnomalyDetectionClient(config) + dest_compartment_id = ( + "REPLACE ME: ENTER YOUR COMPARTMENT OCID" + ) + + chg_mod_details = ChangeModelCompartmentDetails(compartment_id=dest_compartment_id) + mv_mod_res = mv_details.change_model_compartment(model_id, chg_mod_details) + print(mv_mod_res) + print(f"successfully moved model {model_id} to compartment {dest_compartment_id}") + + time.sleep(30) + + chg_orig_mod_details = ChangeModelCompartmentDetails(compartment_id=compartment_id) + mv_bk_mod_res = mv_details.change_model_compartment(model_id, chg_orig_mod_details) + print(mv_bk_mod_res) + print("successfully moved model back") + + time.sleep(60) + + # LIST CALL + list_model = ad_client.list_models(compartment_id=compartment_id, project_id=project_id) + print("----LISTING----") + print(list_model.data) + time.sleep(60) + + # UPDATE CALL + update_model_details = UpdateModelDetails(description="Updated description Model") + update_model = ad_client.update_model( + model_id=model_id, update_model_details=update_model_details + ) + print("----UPDATING----") + print(update_model.data) + time.sleep(60) + print("##### All Model CRUD operations successful #####") + return model_id + +def test_detect_crud(model_id:str): + # DETECT + print("-*-*-*-DETECT-*-*-*-") + signalNames = [ + "sensor1", + "sensor2", + "sensor3", + "sensor4", + "sensor5", + "sensor6", + "sensor7", + "sensor8", + "sensor9", + "sensor10", + "sensor11", + ] + timestamp = datetime.strptime("2020-07-13T20:44:46Z", "%Y-%m-%dT%H:%M:%SZ") + values = [ + 1.0, + 0.4713, + 1.0, + 0.5479, + 1.291, + 0.8059, + 1.393, + 0.0293, + 0.1541, + 0.2611, + 0.4098, + ] + dItem = DataItem(timestamp=timestamp, values=values) + inlineData = [dItem] + inline = InlineDetectAnomaliesRequest( + model_id=model_id, request_type="INLINE", signal_names=signalNames, data=inlineData + ) + + detect_res = ad_client.detect_anomalies(detect_anomalies_details=inline) + print("----DETECTING----") + print(detect_res.data) + + payload = b"timestamp,sensor1,sensor2,sensor3,sensor4,sensor5,sensor6,sensor7,sensor8,sensor9,sensor10,sensor11\n2020-07-13T20:44:46Z,1,0.4713,1,0.5479,1.291,0.8059,1.393,0.0293,0.1541,0.2611,0.4098\n" + inlineData_b64 = base64.b64encode(payload) + inline_b64 = EmbeddedDetectAnomaliesRequest( + model_id=model_id, content_type="CSV", content=str(inlineData_b64, "utf-8") + ) + + detect_b64_res = ad_client.detect_anomalies(detect_anomalies_details=inline_b64) + print("----DETECTING----") + print(detect_b64_res.data) + print("##### DETECT operation successful #####") + + + +def teardown(project_id:str, da_id:str, model_id:str): + # DELETE MODEL + delete_model = ad_client.delete_model(model_id=model_id) + print("----DELETING MODEL----") + print(delete_model.data) + time.sleep(60) + + # DELETE DATA ASSET + delete_da = ad_client.delete_data_asset(data_asset_id=da_id) + print("----DELETING DATA ASSET----") + print(delete_da.data) + time.sleep(60) + + # DELETE PROJECT + print("----DELETING PROJECT----") + delete_project = ad_client.delete_project(project_id=project_id) + print(delete_project.data) + + print("### Teardown Successful ###") + +def setup(): + print("Setting up the configurations...") + global config, compartment_id, ad_client + config = from_file("~/.oci/config") + compartment_id = "REPLACE ME: ENTER YOUR COMPARTMENT OCID" + ad_client = AnomalyDetectionClient( + config, + service_endpoint="https://anomalydetection.aiservice.us-phoenix-1.oci.oraclecloud.com", + ) # /20210101 +def main(): + print("### STARTING AD CRUD SDK ###") + project_id = test_project_crud() + da_id = test_data_asset_crud(project_id) + model_id = test_model_crud(project_id, da_id) + test_detect_crud(model_id) + teardown(project_id, da_id, model_id) + + print("### ALL AD CRUD SDK SUCCESSFUL ###") + +if __name__ == "__main__": + setup() + main() diff --git a/ai_services/anomaly_detection/SDK/python/example_dataset/latest_training_data.json b/ai_services/anomaly_detection/SDK/python/example_dataset/latest_training_data.json new file mode 100644 index 00000000..12d11117 --- /dev/null +++ b/ai_services/anomaly_detection/SDK/python/example_dataset/latest_training_data.json @@ -0,0 +1,1601 @@ +{ + "signalNames": [ + "sensor1", + "sensor2", + "sensor3", + "sensor4", + "sensor5", + "sensor6", + "sensor7", + "sensor8", + "sensor9", + "sensor10", + "sensor11" + ], + "data": [ + { + "timestamp": "2018-01-03T16:00-08:00", + "values": [ + 1, + 0.8885, + 0.6459, + -0.0016, + -0.9061, + 0.1349, + -0.4967, + 0.4335, + 0.4813, + -1.0798, + 0.2734 + ] + }, + { + "timestamp": "2018-01-04T16:00-08:00", + "values": [ + 1, + 0.1756, + 1, + -0.1524, + -0.0804, + -0.2209, + 0.4321, + -0.6206, + 0.3386, + 0.0082, + -0.3083 + ] + }, + { + "timestamp": "2018-01-05T16:00-08:00", + "values": [ + 1, + 0.4132, + -0.029, + 0.2968, + 0.3098, + -0.1143, + -0.199, + 0.702, + -1.0007, + 0.1308, + -0.1828 + ] + }, + { + "timestamp": "2018-01-06T16:00-08:00", + "values": [ + 1, + 0.2385, + 1, + 0.4114, + 0.4846, + 0.4818, + 0.267, + 0.1959, + 0.3119, + 0.5407, + 0.471 + ] + }, + { + "timestamp": "2018-01-07T16:00-08:00", + "values": [ + 1, + 0.3327, + 0.4728, + 0.3623, + 0.1414, + 0.1824, + -0.0412, + 0.2011, + 0.7324, + -0.3395, + -0.3409 + ] + }, + { + "timestamp": "2018-01-08T16:00-08:00", + "values": [ + 1, + -0.7584, + 1, + -0.3594, + 1.6017, + 0.3518, + 0.3489, + 0.5281, + 0.0029, + 0.5767, + 1.0455 + ] + }, + { + "timestamp": "2018-01-09T16:00-08:00", + "values": [ + 1, + 0.929, + 0.1469, + 0.6473, + 0.7705, + 0.3025, + 0.3304, + -0.1836, + 0.0832, + -0.0936, + -0.5412 + ] + }, + { + "timestamp": "2018-01-10T16:00-08:00", + "values": [ + 1, + -0.0391, + 1, + -0.5157, + 1.1318, + 0.3299, + 0.3326, + -0.1975, + 0.9418, + -0.0746, + -0.2435 + ] + }, + { + "timestamp": "2018-01-11T16:00-08:00", + "values": [ + 1, + 0.3716, + 0.9775, + 0.2831, + -0.3171, + 0.587, + -0.4509, + 1.1606, + 0.4228, + 0.2205, + 0.281 + ] + }, + { + "timestamp": "2018-01-12T16:00-08:00", + "values": [ + 1, + 0.5168, + 1, + 0.1942, + -0.4795, + 0.5981, + -0.5221, + 0.4244, + -0.2021, + 0.4969, + 0.8721 + ] + }, + { + "timestamp": "2018-01-13T16:00-08:00", + "values": [ + 1, + -0.5121, + 0.0374, + -0.0614, + -0.8833, + -0.0957, + 0.7665, + -0.092, + 1.5145, + -0.0693, + 0.1747 + ] + }, + { + "timestamp": "2018-01-14T16:00-08:00", + "values": [ + 1, + -0.1231, + 1, + -0.7992, + -0.1696, + -0.1222, + 0.3913, + -0.3661, + -0.0053, + 0.7939, + 0.9542 + ] + }, + { + "timestamp": "2018-01-15T16:00-08:00", + "values": [ + 1, + 0.3772, + 0.8821, + -0.2902, + 0.6764, + -0.3656, + 0.0702, + 1.3629, + 0.055, + 0.2615, + 0.7096 + ] + }, + { + "timestamp": "2018-01-16T16:00-08:00", + "values": [ + 1, + -0.3399, + 1, + 1.1779, + -0.0285, + -0.4277, + 1.2614, + 0.1577, + 0.1392, + 0.2675, + -0.0947 + ] + }, + { + "timestamp": "2018-01-17T16:00-08:00", + "values": [ + 1, + 1.0663, + 0.7562, + 0.542, + 0.3802, + -0.0975, + 0.6221, + 0.1908, + 0.8055, + -0.2451, + 0.1418 + ] + }, + { + "timestamp": "2018-01-18T16:00-08:00", + "values": [ + 1, + -1.6516, + 1, + 0.9834, + 1.0265, + 1.3065, + 1.1475, + -0.4713, + -0.9229, + 0.927, + 0.2568 + ] + }, + { + "timestamp": "2018-01-19T16:00-08:00", + "values": [ + 1, + -0.1567, + 0.8736, + 0.9282, + 0.5781, + 0.6428, + 0.471, + -0.0851, + 0.0239, + 0.7359, + 0.3339 + ] + }, + { + "timestamp": "2018-01-20T16:00-08:00", + "values": [ + 1, + 1.0555, + 1, + 1.266, + 0.8543, + 0.0834, + 0.3424, + 0.1111, + 0.069, + 0.5461, + 0.0963 + ] + }, + { + "timestamp": "2018-01-21T16:00-08:00", + "values": [ + 1, + 0.4075, + 0.1438, + -0.201, + 1.0952, + 1.2359, + 0.4086, + 1.1557, + 0.8136, + 0.0141, + 1.0024 + ] + }, + { + "timestamp": "2018-01-22T16:00-08:00", + "values": [ + 1, + 0.9883, + 1, + 0.8678, + 0.4218, + -0.6011, + -0.1564, + 0.1822, + 0.6957, + -0.1173, + -0.3933 + ] + }, + { + "timestamp": "2018-01-23T16:00-08:00", + "values": [ + 1, + 1.2661, + -1.1311, + -0.1054, + 0.137, + -0.4079, + 0.78, + 0.4991, + 0.5334, + 0.5745, + -0.4626 + ] + }, + { + "timestamp": "2018-01-24T16:00-08:00", + "values": [ + 1, + 0.5297, + 1, + 0.7036, + 0.3888, + 0.1304, + 0.4666, + 0.3779, + 1.318, + 0.715, + 0.9421 + ] + }, + { + "timestamp": "2018-01-25T16:00-08:00", + "values": [ + 1, + 0.7129, + 0.6498, + -0.0217, + -0.3144, + 0.2957, + 0.5066, + 0.0678, + 0.7183, + -0.1337, + 1.0736 + ] + }, + { + "timestamp": "2018-01-26T16:00-08:00", + "values": [ + 1, + 0.962, + 1, + 0.9323, + 0.4651, + 0.1226, + 1.4538, + 0.418, + 0.2519, + -0.3804, + 0.6421 + ] + }, + { + "timestamp": "2018-01-27T16:00-08:00", + "values": [ + 1, + 1.2814, + 0.2919, + -0.4541, + 1.5283, + 0.5789, + 1.2332, + 0.1503, + -0.5183, + 0.2396, + -0.0817 + ] + }, + { + "timestamp": "2018-01-28T16:00-08:00", + "values": [ + 1, + 0.4728, + 1, + 0.2342, + 0.0614, + 0.1815, + 0.7828, + 0.9064, + 0.6415, + 0.206, + 0.8178 + ] + }, + { + "timestamp": "2018-01-29T16:00-08:00", + "values": [ + 1, + 0.5402, + -0.3143, + 1.3498, + 0.03, + 0.9356, + 0.6325, + -0.034, + 1.193, + 0.745, + 0.0076 + ] + }, + { + "timestamp": "2018-01-30T16:00-08:00", + "values": [ + 1, + 0.4713, + 1, + 0.5479, + 1.291, + 0.8059, + 1.393, + 0.0293, + 0.1541, + 0.2611, + 0.4098 + ] + }, + { + "timestamp": "2018-01-31T16:00-08:00", + "values": [ + 1, + 1.1299, + 1.12, + -0.5393, + 0.0611, + 0.163, + 0.2718, + 0.3013, + 0.1541, + 0.2765, + 0.11 + ] + }, + { + "timestamp": "2018-02-01T16:00-08:00", + "values": [ + 1, + 0.4954, + 1, + 0.7225, + 1.3331, + 1.0032, + 0.7459, + 0.4212, + 0.3819, + 0.9109, + -0.2531 + ] + }, + { + "timestamp": "2018-02-02T16:00-08:00", + "values": [ + 1, + 1.2628, + 1.2324, + -0.0646, + 1.4994, + 0.3349, + 0.0528, + 0.2229, + 0.4118, + 0.8343, + 0.9574 + ] + }, + { + "timestamp": "2018-02-03T16:00-08:00", + "values": [ + 1, + -0.274, + 1, + 1.319, + 0.7719, + 0.0077, + 1.3061, + 0.619, + 1.2904, + 0.3263, + 1.2914 + ] + }, + { + "timestamp": "2018-02-04T16:00-08:00", + "values": [ + 1, + 0.0179, + 1.7046, + 1.0653, + 0.0619, + 0.1847, + 1.2772, + 0.6378, + 0.3243, + 0.9335, + 0.5134 + ] + }, + { + "timestamp": "2018-02-05T16:00-08:00", + "values": [ + 1, + 0.8037, + 1, + 0.4323, + 0.4823, + 0.6715, + 0.3983, + 0.2738, + 0.1958, + 0.3766, + 0.934 + ] + }, + { + "timestamp": "2018-02-06T16:00-08:00", + "values": [ + 1, + 1.0537, + 0.3671, + -0.1201, + 0.9815, + 0.1832, + 0.2559, + 0.1333, + 0.6243, + 0.9647, + 1.6301 + ] + }, + { + "timestamp": "2018-02-07T16:00-08:00", + "values": [ + 1, + 1.2545, + 1, + -0.4909, + 0.7307, + 0.9842, + 0.9741, + 1.565, + 0.7549, + 0.2152, + 1.1434 + ] + }, + { + "timestamp": "2018-02-08T16:00-08:00", + "values": [ + 1, + 0.9048, + 0.8583, + 1.2662, + 0.9549, + 0.9831, + 1.1846, + 1.3122, + 1.2902, + 1.2813, + 0.8416 + ] + }, + { + "timestamp": "2018-02-09T16:00-08:00", + "values": [ + 1, + 0.3791, + 1, + 0.6952, + 0.7884, + 0.4321, + 0.4761, + 0.8522, + 0.6251, + 1.1075, + 1.7543 + ] + }, + { + "timestamp": "2018-02-10T16:00-08:00", + "values": [ + 1, + 1.2937, + 1.5361, + 1.7445, + 0.673, + -0.0191, + -0.0919, + 0.203, + 1.4284, + 0.8122, + 0.953 + ] + }, + { + "timestamp": "2018-02-11T16:00-08:00", + "values": [ + 1, + -0.14, + 1, + 0.9921, + 1.1621, + 0.9582, + 0.8248, + 0.8081, + 0.3755, + 0.4944, + 1.1853 + ] + }, + { + "timestamp": "2018-02-12T16:00-08:00", + "values": [ + 1, + 1.6053, + 0.4449, + 0.1602, + 1.5983, + 0.56, + 0.5297, + 1.5445, + 1.4137, + 0.6509, + 0.4682 + ] + }, + { + "timestamp": "2018-02-13T16:00-08:00", + "values": [ + 1, + 1.0274, + 1, + -0.3468, + 0.804, + 1.1075, + 0.4308, + -0.0238, + 0.0336, + 0.7688, + 0.8975 + ] + }, + { + "timestamp": "2018-02-14T16:00-08:00", + "values": [ + 1, + 0.9647, + 0.3216, + 0.8669, + 0.6431, + 0.2051, + 0.4026, + 0.263, + 2.0576, + 0.3226, + 0.5772 + ] + }, + { + "timestamp": "2018-02-15T16:00-08:00", + "values": [ + 1, + 0.7059, + 1, + 0.3969, + 0.6399, + 0.5932, + 1.0555, + 0.6016, + 0.6146, + -0.1091, + 0.4419 + ] + }, + { + "timestamp": "2018-02-16T16:00-08:00", + "values": [ + 1, + 0.2674, + 0.6491, + 1.2531, + 0.1174, + 1.3211, + 1.1645, + 1.1808, + 1.3928, + 1.2117, + 0.732 + ] + }, + { + "timestamp": "2018-02-17T16:00-08:00", + "values": [ + 1, + 0.8308, + 1, + 0.4703, + 0.7362, + 0.7551, + 0.5345, + 0.7879, + 1.2934, + 0.8892, + 1.1968 + ] + }, + { + "timestamp": "2018-02-18T16:00-08:00", + "values": [ + 1, + 1.1053, + 0.6563, + 1.2532, + 1.0958, + 1.0429, + 0.1764, + 0.0345, + -0.0734, + 0.666, + 0.8633 + ] + }, + { + "timestamp": "2018-02-19T16:00-08:00", + "values": [ + 1, + 0.2703, + 1, + 0.9389, + 1.0965, + 0.3521, + 0.4813, + 1.3878, + 0.6991, + 0.421, + 1.0958 + ] + }, + { + "timestamp": "2018-02-20T16:00-08:00", + "values": [ + 1, + -0.2047, + 0.5857, + 0.5581, + 0.3715, + 1.4512, + 1.0963, + -0.4542, + -0.2736, + 1.5083, + 0.8808 + ] + }, + { + "timestamp": "2018-02-21T16:00-08:00", + "values": [ + 1, + 0.8931, + 0, + 1.0763, + 0.5815, + 0.5978, + 0.554, + 1.3234, + 1.3037, + 0.4484, + 0.8197 + ] + }, + { + "timestamp": "2018-02-22T16:00-08:00", + "values": [ + 1, + 1.2146, + 1.0515, + 0.6062, + 0.4156, + 1.0328, + 1.4635, + 1.5904, + 0.8225, + 0.8417, + 0.0997 + ] + }, + { + "timestamp": "2018-02-23T16:00-08:00", + "values": [ + 1, + 1.5301, + 1, + 1.0173, + 0.4976, + 0.4313, + 0.8628, + 1.2352, + 0.9491, + 0.5508, + 1.4408 + ] + }, + { + "timestamp": "2018-02-24T16:00-08:00", + "values": [ + 1, + 0.512, + 0.9035, + 0.5159, + 0.5299, + 0.842, + 1.2237, + 0.475, + 0.0876, + 1.048, + 1.0952 + ] + }, + { + "timestamp": "2018-02-25T16:00-08:00", + "values": [ + 1, + 0.5081, + 1, + 1.22, + 0.5924, + 0.2885, + 0.897, + 1.1235, + 1.1513, + 0.8333, + 1.2193 + ] + }, + { + "timestamp": "2018-02-26T16:00-08:00", + "values": [ + 1, + 0.6237, + 1.7616, + 1.2009, + 0.9382, + 1.0329, + 1.1558, + 1.351, + 1.2908, + 1.1559, + 1.4474 + ] + }, + { + "timestamp": "2018-02-27T16:00-08:00", + "values": [ + 1, + 0.9156, + 1, + 0.0349, + 0.9605, + 1.6353, + 0.1248, + 0.04, + 0.4798, + 0.8422, + -0.2094 + ] + }, + { + "timestamp": "2018-02-28T16:00-08:00", + "values": [ + 1, + 0.8132, + 1.2355, + 1.1654, + 1.2731, + 0.6717, + 1.4543, + -0.1905, + 0.9634, + 0.9408, + 0.3748 + ] + }, + { + "timestamp": "2018-03-01T16:00-08:00", + "values": [ + 1, + 0.2813, + 1, + 1.0763, + 0.8777, + 1.9932, + 0.9783, + 1.5036, + 0.5025, + 0.4608, + 1.2197 + ] + }, + { + "timestamp": "2018-03-02T16:00-08:00", + "values": [ + 1, + 0.8405, + 0.7296, + 0.242, + 0.8725, + -0.0513, + 1.2825, + 0.2434, + 0.2093, + 1.0665, + 1.5588 + ] + }, + { + "timestamp": "2018-03-03T16:00-08:00", + "values": [ + 1, + 1.5088, + 1, + -0.0866, + 1.8665, + 1.3974, + 0.4218, + 0.9866, + 1.2697, + 1.664, + 0.8746 + ] + }, + { + "timestamp": "2018-03-04T16:00-08:00", + "values": [ + 1, + 1.0052, + 1.068, + 0.8769, + 1.2099, + 1.0231, + 1.3345, + 0.666, + 0.9827, + 2.0117, + 1.3497 + ] + }, + { + "timestamp": "2018-03-05T16:00-08:00", + "values": [ + 1, + 1.5614, + 1, + 1.1397, + 1.204, + 0.319, + 1.3829, + 0.9542, + 0.3335, + 0.4646, + 0.7124 + ] + }, + { + "timestamp": "2018-03-06T16:00-08:00", + "values": [ + 1, + 1.2548, + 0.9615, + 0.5245, + 1.5876, + 0.504, + 0.5104, + 0.2725, + 0.7649, + 0.925, + 0.5106 + ] + }, + { + "timestamp": "2018-03-07T16:00-08:00", + "values": [ + 1, + 1.5407, + 1, + 0.8172, + 0.5289, + 1.0078, + 0.8724, + 0.7423, + 0.6137, + 0.5053, + 0.4891 + ] + }, + { + "timestamp": "2018-03-08T16:00-08:00", + "values": [ + 1, + 1.6939, + 1.2401, + 0.284, + 1.7355, + 0.5035, + 0.9629, + 0.9959, + 1.0318, + 1.5487, + -0.5533 + ] + }, + { + "timestamp": "2018-03-09T16:00-08:00", + "values": [ + 1, + 1.2475, + 1, + 1.135, + 0.5368, + 1.2527, + 0.8033, + 0.8877, + 0.9132, + 0.9579, + 1.0078 + ] + }, + { + "timestamp": "2018-03-10T16:00-08:00", + "values": [ + 1, + 2.0373, + 0.8669, + 0.9482, + 0.8646, + 0.6517, + 1.691, + 1.3906, + 1.2435, + 1.396, + 0.8857 + ] + }, + { + "timestamp": "2018-03-11T16:00-08:00", + "values": [ + 1, + 0.1627, + 1, + 1.5996, + 1.1554, + 0.9154, + 1.0757, + 1.8463, + 1.2144, + 1.1237, + 1.2001 + ] + }, + { + "timestamp": "2018-03-12T16:00-08:00", + "values": [ + 1, + 1.0349, + 1.4803, + 1.5137, + 1.4322, + 0.9732, + 1.3529, + 0.7731, + 0.6433, + 1.3019, + 1.2498 + ] + }, + { + "timestamp": "2018-03-13T16:00-08:00", + "values": [ + 1, + 0.6737, + 1, + 0.9827, + 0.9961, + 0.7215, + 0.7936, + 1.1059, + 0.6993, + 1.1029, + 1.1065 + ] + }, + { + "timestamp": "2018-03-14T16:00-08:00", + "values": [ + 1, + 1.4172, + 0.8357, + 1.4731, + 1.1312, + 1.9375, + 1.8102, + 0.9625, + 1.4614, + 1.1732, + 0.7251 + ] + }, + { + "timestamp": "2018-03-15T16:00-08:00", + "values": [ + 1, + 1.3241, + 1, + 1.3808, + 1.6469, + -0.4912, + 1.1782, + 0.8385, + 0.7009, + 1.6264, + 1.5576 + ] + }, + { + "timestamp": "2018-03-16T16:00-08:00", + "values": [ + 1, + 1.0915, + 0.9277, + 0.8592, + 1.2099, + 0.6036, + 1.0279, + 1.2571, + 1.6644, + 1.0191, + 1.518 + ] + }, + { + "timestamp": "2018-03-17T16:00-08:00", + "values": [ + 1, + 1.1816, + 1, + 1.2563, + 1.3397, + 1.3447, + 1.0371, + 0.3301, + 0.5644, + 1.3926, + 0.599 + ] + }, + { + "timestamp": "2018-03-18T16:00-08:00", + "values": [ + 1, + 1.2945, + 0.4206, + 0.5374, + 0.7317, + 0.8891, + 1.1323, + 1.7748, + 1.2605, + 1.678, + 0.1819 + ] + }, + { + "timestamp": "2018-03-19T16:00-08:00", + "values": [ + 1, + 1.2574, + 1, + 0.7377, + 1.0256, + 1.6576, + 0.3448, + 1.1707, + 0.7712, + 1.8095, + 1.2181 + ] + }, + { + "timestamp": "2018-03-20T16:00-08:00", + "values": [ + 1, + 1.479, + 1.4547, + 1.4173, + 1.522, + 0.4427, + 1.3372, + 0.0578, + 0.808, + 0.7765, + 0.5075 + ] + }, + { + "timestamp": "2018-03-21T16:00-08:00", + "values": [ + 1, + 1.9646, + 1, + 0.9215, + 1.1685, + 1.4144, + 0.5073, + 0.9014, + 0.8263, + 1.3595, + 0.8117 + ] + }, + { + "timestamp": "2018-03-22T16:00-08:00", + "values": [ + 1, + 0.9487, + 0.801, + 1.555, + 0.6727, + 2.1503, + 1.03, + 1.1702, + 0.4982, + 0.7728, + 1.0423 + ] + }, + { + "timestamp": "2018-03-23T16:00-08:00", + "values": [ + 1, + 0.7978, + 1, + 1.2951, + 0.9098, + 1.216, + 1.3372, + 0.4731, + 0.0097, + 0.6755, + 1.0126 + ] + }, + { + "timestamp": "2018-03-24T16:00-08:00", + "values": [ + 1, + 2.0786, + 1.1729, + 0.1101, + 0.2238, + 1.4579, + 0.7002, + 2.0205, + 1.5501, + 0.0532, + 0.4611 + ] + }, + { + "timestamp": "2018-03-25T16:00-08:00", + "values": [ + 1, + 1.2396, + 1, + 0.5501, + 1.3953, + 1.2505, + 0.8974, + 0.5942, + 1.2806, + 1.0042, + 1.3133 + ] + }, + { + "timestamp": "2018-03-26T16:00-08:00", + "values": [ + 1, + 0.8592, + 0.5657, + 0.4851, + 1.3918, + 1.1414, + 0.4727, + 0.3214, + 1.5138, + 0.4304, + 0.5355 + ] + }, + { + "timestamp": "2018-03-27T16:00-08:00", + "values": [ + 1, + 1.2594, + 1, + 0.7754, + 0.7784, + 1.7019, + 1.0754, + 1.2519, + 1.1987, + 1.687, + -0.0194 + ] + }, + { + "timestamp": "2018-03-28T16:00-08:00", + "values": [ + 1, + 0.833, + 0.9126, + 1.0306, + 1.7957, + 1.4722, + 1.5054, + 0.6204, + 0.2167, + 0.9897, + 0.9117 + ] + }, + { + "timestamp": "2018-03-29T16:00-08:00", + "values": [ + 1, + 0.7433, + 1, + 0.9225, + 1.1036, + 1.6479, + 1.3257, + 0.9993, + 0.5435, + 1.2657, + 1.0904 + ] + }, + { + "timestamp": "2018-03-30T16:00-08:00", + "values": [ + 1, + 1.5875, + 1.2337, + -0.2096, + 1.5379, + 1.0595, + 0.6965, + 1.0524, + 0.6628, + 0.4958, + 0.8351 + ] + }, + { + "timestamp": "2018-03-31T16:00-08:00", + "values": [ + 1, + 2.0638, + 1, + 1.1071, + 1.2737, + 0.926, + 0.9619, + 1.3864, + 0.9314, + 1.0196, + 0.9788 + ] + }, + { + "timestamp": "2018-04-01T16:00-08:00", + "values": [ + 1, + -0.0716, + 1.2459, + 0.8933, + 0.5028, + 0.8318, + 0.7995, + 0.7709, + 1.5526, + 0.6119, + -0.141 + ] + }, + { + "timestamp": "2018-04-02T16:00-08:00", + "values": [ + 1, + 0.5854, + 1, + 1.0274, + 1.336, + 0.744, + 0.5744, + 1.3347, + 0.7046, + 0.5543, + 0.3881 + ] + }, + { + "timestamp": "2018-04-03T16:00-08:00", + "values": [ + 1, + 1.1165, + 1.1301, + 0.801, + 1.3503, + 1.7196, + 1.1181, + 0.5619, + 1.1228, + 0.8724, + 0.6717 + ] + }, + { + "timestamp": "2018-04-04T16:00-08:00", + "values": [ + 1, + 2.6526, + 1, + 0.6959, + 0.9324, + 0.8122, + 1.5394, + 0.4913, + 1.158, + 0.3863, + 0.4444 + ] + }, + { + "timestamp": "2018-04-05T16:00-08:00", + "values": [ + 1, + 1.1204, + 0.2522, + 0.9565, + 1.53, + 0.7492, + 0.8801, + 1.2075, + 1.3217, + 0.6993, + 0.9891 + ] + }, + { + "timestamp": "2018-04-06T16:00-08:00", + "values": [ + 1, + 1.8867, + 1, + 0.7165, + 0.9469, + 1.2219, + 0.4817, + 0.9066, + 1.4241, + 0.2964, + 1.4558 + ] + }, + { + "timestamp": "2018-04-07T16:00-08:00", + "values": [ + 1, + 1.6978, + 0.8683, + 0.7637, + 0.1888, + 0.4305, + 1.1055, + 0.3953, + 1.181, + 0.6282, + 0.8569 + ] + }, + { + "timestamp": "2018-04-08T16:00-08:00", + "values": [ + 1, + 1.018, + 1, + 1.3048, + 0.2266, + 0.6433, + 1.1103, + 1.2008, + 0.856, + 1.2787, + 0.9119 + ] + }, + { + "timestamp": "2018-04-09T16:00-08:00", + "values": [ + 1, + -0.1419, + 1.2829, + 0.5593, + 0.9214, + 0.6444, + 1.233, + 1.5201, + 0.2702, + 0.7969, + 1.037 + ] + }, + { + "timestamp": "2018-04-10T16:00-08:00", + "values": [ + 1, + 0.7468, + 1, + 0.3632, + 0.2091, + 1.2539, + 0.4938, + 1.0273, + 0.8203, + 0.7693, + 0.3778 + ] + }, + { + "timestamp": "2018-04-11T16:00-08:00", + "values": [ + 1, + 0.4236, + 1.003, + 1.5298, + 1.1327, + 0.753, + 0.9152, + 1.0352, + 0.7675, + 0.512, + 0.8177 + ] + } + ] +} diff --git a/ai_services/anomaly_detection/SDK/python/readme.md b/ai_services/anomaly_detection/SDK/python/readme.md new file mode 100644 index 00000000..c68cd1d2 --- /dev/null +++ b/ai_services/anomaly_detection/SDK/python/readme.md @@ -0,0 +1,11 @@ +## Setup python sdk +1) Create a new virtual environment outside of the project +2) Update the latest public version [link](https://pypi.org/project/oci/) of oci python sdk in requirements.txt +3) Execute command from python directory: ```pip install -r requirements.txt``` +4) Upload the example dataset to the oci bucket storage. +5) Modify the REPLACE ME fields in the script with your tenancy values. +6) Run the script. + +### Some Important Links +- Python SDK github: [link](https://github.com/oracle/oci-python-sdk) +- Python SDK documentation: [link](https://docs.oracle.com/en-us/iaas/tools/python/2.92.0/api/ai_anomaly_detection.html) diff --git a/ai_services/anomaly_detection/SDK/python/requirements.txt b/ai_services/anomaly_detection/SDK/python/requirements.txt new file mode 100644 index 00000000..ff263fcd --- /dev/null +++ b/ai_services/anomaly_detection/SDK/python/requirements.txt @@ -0,0 +1 @@ +oci==2.93.0