def test_STScan_subtask(model, project_task, analysis_model, grid_task): provider = stscan.STScan(model) subtask = standard_calls(provider, project_task, analysis_model, grid_task) prediction = subtask(datetime.datetime(2017, 6, 7)) open_cp.stscan.STSTrainer.assert_called_with() pred_mock = open_cp.stscan.STSTrainer.return_value assert pred_mock.geographic_population_limit == 0.5 assert pred_mock.geographic_radius_limit == 3000 assert pred_mock.time_population_limit == 0.5 assert pred_mock.time_max_interval == np.timedelta64(60, "D") np.testing.assert_array_equal(pred_mock.data.timestamps, [ np.datetime64("2017-05-21T12:30"), np.datetime64("2017-05-21T13:00"), np.datetime64("2017-05-21T13:30") ]) np.testing.assert_array_equal(pred_mock.data.xcoords, [0, 10, 20]) np.testing.assert_array_equal(pred_mock.data.ycoords, [10, 20, 0]) assert pred_mock.region.xmin == 25 assert pred_mock.region.ymin == 35 assert pred_mock.region.xmax == 25 + 50 * 15 assert pred_mock.region.ymax == 35 + 50 * 10 predict_date = np.datetime64(datetime.datetime(2017, 6, 7)) pred_mock.predict.assert_called_with(time=predict_date) result = pred_mock.predict.return_value result.grid_prediction.assert_called_with(50, use_maximal_clusters=False) assert prediction is result.grid_prediction.return_value
def test_STScan_from_training_start(model, project_task, analysis_model, grid_task): analysis_model.time_range = (datetime.datetime(2017, 5, 21, 12, 59), None, None, None) provider = stscan.STScan(model) subtask = standard_calls(provider, project_task, analysis_model, grid_task) prediction = subtask(datetime.datetime(2017, 6, 7)) pred_mock = open_cp.stscan.STSTrainer.return_value np.testing.assert_array_equal( pred_mock.data.timestamps, [np.datetime64("2017-05-21T13:00"), np.datetime64("2017-05-21T13:30")]) np.testing.assert_array_equal(pred_mock.data.xcoords, [10, 20]) np.testing.assert_array_equal(pred_mock.data.ycoords, [20, 0])
def test_STScan_max_clusters(model, project_task, analysis_model, grid_task): provider = stscan.STScan(model) provider.cluster_option = 2 assert provider.settings_string == "geo(50%/3000m) time(50%/60days) max" data = provider.to_dict() json_str = json.dumps(data) provider.from_dict(json.loads(json_str)) assert provider.settings_string == "geo(50%/3000m) time(50%/60days) max" subtask = standard_calls(provider, project_task, analysis_model, grid_task) subtask(datetime.datetime(2017, 5, 21, 13, 0)) pred_mock = open_cp.stscan.STSTrainer.return_value result = pred_mock.predict.return_value result.grid_prediction.assert_called_with(50, use_maximal_clusters=True)
def test_STScan_time_window(model, project_task, analysis_model, grid_task): provider = stscan.STScan(model) provider.time_window_choice = 2 provider.time_window_length = datetime.timedelta(days=13) assert provider.settings_string == "<=13days geo(50%/3000m) time(50%/60days)" data = provider.to_dict() json_str = json.dumps(data) provider.from_dict(json.loads(json_str)) assert provider.settings_string == "<=13days geo(50%/3000m) time(50%/60days)" subtask = standard_calls(provider, project_task, analysis_model, grid_task) prediction = subtask( datetime.datetime(2017, 5, 21, 13, 29) + datetime.timedelta(days=13)) pred_mock = open_cp.stscan.STSTrainer.return_value np.testing.assert_array_equal(pred_mock.data.timestamps, [np.datetime64("2017-05-21T13:30")]) np.testing.assert_array_equal(pred_mock.data.xcoords, [20]) np.testing.assert_array_equal(pred_mock.data.ycoords, [0])
def test_STScan_quant_both(model, project_task, analysis_model, grid_task): provider = stscan.STScan(model) provider.quantisation_choice = 4 provider.time_bin_length = datetime.timedelta(days=1) assert provider.settings_string == "grid bins(24hours) geo(50%/3000m) time(50%/60days)" data = provider.to_dict() json_str = json.dumps(data) provider.from_dict(json.loads(json_str)) assert provider.settings_string == "grid bins(24hours) geo(50%/3000m) time(50%/60days)" subtask = standard_calls(provider, project_task, analysis_model, grid_task) prediction = subtask(datetime.datetime(2017, 5, 21, 13, 0)) pred_mock = open_cp.stscan.STSTrainer.return_value np.testing.assert_array_equal(pred_mock.data.timestamps, [ np.datetime64("2017-05-20T13:00"), np.datetime64("2017-05-21T13:00"), np.datetime64("2017-05-21T13:00") ]) np.testing.assert_array_equal(pred_mock.data.xcoords, [0, 0, 0]) np.testing.assert_array_equal(pred_mock.data.ycoords, [10, 10, 10])
def test_STScan_cluster_options(model, project_task, analysis_model, grid_task): provider = stscan.STScan(model) provider.geographic_population_limit = 45 provider.time_population_limit = 55 provider.geographic_radius_limit = 1234 provider.time_max_interval = datetime.timedelta(days=23) assert provider.settings_string == "geo(45%/1234m) time(55%/23days)" data = provider.to_dict() json_str = json.dumps(data) provider.from_dict(json.loads(json_str)) assert provider.settings_string == "geo(45%/1234m) time(55%/23days)" subtask = standard_calls(provider, project_task, analysis_model, grid_task) prediction = subtask(datetime.datetime(2017, 6, 7)) pred_mock = open_cp.stscan.STSTrainer.return_value assert pred_mock.geographic_population_limit == 0.45 assert pred_mock.geographic_radius_limit == 1234 assert pred_mock.time_population_limit == 0.55 assert pred_mock.time_max_interval == np.timedelta64(23, "D")
def test_STScan(model, project_task, analysis_model, grid_task): provider = stscan.STScan(model) assert provider.settings_string == "geo(50%/3000m) time(50%/60days)" standard_calls(provider, project_task, analysis_model, grid_task)
def test_ProHotspot_serialise(model, project_task, analysis_model, grid_task): serialise(stscan.STScan(model))