diff --git a/src/dopt_sensor_anomalies/detection.c b/src/dopt_sensor_anomalies/detection.c index 3b31c35..b4c8d72 100644 --- a/src/dopt_sensor_anomalies/detection.c +++ b/src/dopt_sensor_anomalies/detection.c @@ -2820,6 +2820,7 @@ int __pyx_module_is_main_dopt_sensor_anomalies__detection = 0; static PyObject *__pyx_builtin_min; static PyObject *__pyx_builtin_max; static PyObject *__pyx_builtin_zip; +static PyObject *__pyx_builtin_print; static PyObject *__pyx_builtin_enumerate; /* #### Code section: string_decls ### */ /* #### Code section: decls ### */ @@ -2882,7 +2883,7 @@ typedef struct { PyObject *__pyx_slice[2]; PyObject *__pyx_tuple[7]; PyObject *__pyx_codeobj_tab[12]; - PyObject *__pyx_string_tab[315]; + PyObject *__pyx_string_tab[317]; PyObject *__pyx_number_tab[17]; /* #### Code section: module_state_contents ### */ @@ -2970,318 +2971,320 @@ static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_stati #define __pyx_kp_u_ __pyx_string_tab[0] #define __pyx_kp_u_1f __pyx_string_tab[1] #define __pyx_kp_u_3f __pyx_string_tab[2] -#define __pyx_kp_u_Contour_detection_not_valid_cont __pyx_string_tab[3] -#define __pyx_kp_u_Contour_detection_not_valid_no_c __pyx_string_tab[4] -#define __pyx_kp_u_Image_could_not_be_read_from __pyx_string_tab[5] -#define __pyx_kp_u_No_contours_were_found_in_the_pr __pyx_string_tab[6] -#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[7] -#define __pyx_kp_u_Number_of_counted_electrodes_doe __pyx_string_tab[8] -#define __pyx_kp_u_The_provided_path_seems_not_to_e __pyx_string_tab[9] -#define __pyx_kp_u__2 __pyx_string_tab[10] -#define __pyx_kp_u__3 __pyx_string_tab[11] -#define __pyx_kp_u__4 __pyx_string_tab[12] -#define __pyx_kp_u__5 __pyx_string_tab[13] -#define __pyx_kp_u_add_note __pyx_string_tab[14] -#define __pyx_kp_u_csv __pyx_string_tab[15] -#define __pyx_kp_u_disable __pyx_string_tab[16] -#define __pyx_kp_u_enable __pyx_string_tab[17] -#define __pyx_kp_u_expected __pyx_string_tab[18] -#define __pyx_kp_u_gc __pyx_string_tab[19] -#define __pyx_kp_u_huggingface_hub_cache_system_us __pyx_string_tab[20] -#define __pyx_kp_u_isenabled __pyx_string_tab[21] -#define __pyx_kp_u_npt_NDArray_np_floating __pyx_string_tab[22] -#define __pyx_kp_u_npt_NDArray_np_uint8 __pyx_string_tab[23] -#define __pyx_kp_u_png __pyx_string_tab[24] -#define __pyx_kp_u_src_dopt_sensor_anomalies_detect __pyx_string_tab[25] -#define __pyx_kp_u_t_Box __pyx_string_tab[26] -#define __pyx_kp_u_t_CsvData __pyx_string_tab[27] -#define __pyx_kp_u_t_DetectionModels __pyx_string_tab[28] -#define __pyx_kp_u_t_InferenceResult __pyx_string_tab[29] -#define __pyx_kp_u_t_SensorImages __pyx_string_tab[30] -#define __pyx_kp_u_tuple_float_float __pyx_string_tab[31] -#define __pyx_kp_u_tuple_t_CsvData_t_SensorImages __pyx_string_tab[32] -#define __pyx_n_u_Any __pyx_string_tab[33] -#define __pyx_n_u_BACKBONE __pyx_string_tab[34] -#define __pyx_n_u_Box __pyx_string_tab[35] -#define __pyx_n_u_CHAIN_APPROX_SIMPLE __pyx_string_tab[36] -#define __pyx_n_u_COLOR_BGR2GRAY __pyx_string_tab[37] -#define __pyx_n_u_COLOR_BGR2RGB __pyx_string_tab[38] -#define __pyx_n_u_Canny __pyx_string_tab[39] -#define __pyx_n_u_ContourCalculationError __pyx_string_tab[40] -#define __pyx_n_u_DETECTION_MODELS __pyx_string_tab[41] -#define __pyx_n_u_DataFrame __pyx_string_tab[42] -#define __pyx_n_u_Final __pyx_string_tab[43] -#define __pyx_n_u_HEATMAP_FILENAME_SUFFIX __pyx_string_tab[44] -#define __pyx_n_u_Image __pyx_string_tab[45] -#define __pyx_n_u_ImageNotReadError __pyx_string_tab[46] -#define __pyx_n_u_InferenceResult __pyx_string_tab[47] -#define __pyx_n_u_InvalidElectrodeCount __pyx_string_tab[48] -#define __pyx_n_u_LAYERS __pyx_string_tab[49] -#define __pyx_n_u_MODEL_FOLDER __pyx_string_tab[50] -#define __pyx_n_u_MORPH_CLOSE __pyx_string_tab[51] -#define __pyx_n_u_MORPH_RECT __pyx_string_tab[52] -#define __pyx_n_u_NDArray __pyx_string_tab[53] -#define __pyx_n_u_NUM_VALID_ELECTRODES __pyx_string_tab[54] -#define __pyx_n_u_None __pyx_string_tab[55] -#define __pyx_n_u_PIL __pyx_string_tab[56] -#define __pyx_n_u_Patchcore __pyx_string_tab[57] -#define __pyx_n_u_Path __pyx_string_tab[58] -#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[59] -#define __pyx_n_u_QUOTE_NONE __pyx_string_tab[60] -#define __pyx_n_u_RATIO __pyx_string_tab[61] -#define __pyx_n_u_RETR_TREE __pyx_string_tab[62] -#define __pyx_n_u_RGB __pyx_string_tab[63] -#define __pyx_n_u_SensorImages __pyx_string_tab[64] -#define __pyx_n_u_THRESHOLD_BW __pyx_string_tab[65] -#define __pyx_n_u_THRESH_BINARY __pyx_string_tab[66] -#define __pyx_n_u__8 __pyx_string_tab[67] -#define __pyx_n_u_accepted_boxes __pyx_string_tab[68] -#define __pyx_n_u_all __pyx_string_tab[69] -#define __pyx_n_u_alpha __pyx_string_tab[70] -#define __pyx_n_u_anomalib_models __pyx_string_tab[71] -#define __pyx_n_u_anomaly_detection __pyx_string_tab[72] -#define __pyx_n_u_anomaly_label __pyx_string_tab[73] -#define __pyx_n_u_anomaly_map __pyx_string_tab[74] -#define __pyx_n_u_anomaly_map_resized __pyx_string_tab[75] -#define __pyx_n_u_anomaly_score __pyx_string_tab[76] -#define __pyx_n_u_array __pyx_string_tab[77] -#define __pyx_n_u_astype __pyx_string_tab[78] -#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[79] -#define __pyx_n_u_ax __pyx_string_tab[80] -#define __pyx_n_u_axes __pyx_string_tab[81] -#define __pyx_n_u_axis __pyx_string_tab[82] -#define __pyx_n_u_backbone __pyx_string_tab[83] -#define __pyx_n_u_bbox_inches __pyx_string_tab[84] -#define __pyx_n_u_binary __pyx_string_tab[85] -#define __pyx_n_u_bl __pyx_string_tab[86] -#define __pyx_n_u_blbrX __pyx_string_tab[87] -#define __pyx_n_u_blbrY __pyx_string_tab[88] -#define __pyx_n_u_bool __pyx_string_tab[89] -#define __pyx_n_u_boundingRect __pyx_string_tab[90] -#define __pyx_n_u_box __pyx_string_tab[91] -#define __pyx_n_u_boxPoints __pyx_string_tab[92] -#define __pyx_n_u_box_1 __pyx_string_tab[93] -#define __pyx_n_u_box_2 __pyx_string_tab[94] -#define __pyx_n_u_br __pyx_string_tab[95] -#define __pyx_n_u_c __pyx_string_tab[96] -#define __pyx_n_u_c1 __pyx_string_tab[97] -#define __pyx_n_u_c2 __pyx_string_tab[98] -#define __pyx_n_u_cast __pyx_string_tab[99] -#define __pyx_n_u_category __pyx_string_tab[100] -#define __pyx_n_u_center_dist __pyx_string_tab[101] -#define __pyx_n_u_check_box_redundancy __pyx_string_tab[102] -#define __pyx_n_u_checkpoint __pyx_string_tab[103] -#define __pyx_n_u_class_getitem __pyx_string_tab[104] -#define __pyx_n_u_cline_in_traceback __pyx_string_tab[105] -#define __pyx_n_u_close __pyx_string_tab[106] -#define __pyx_n_u_closed __pyx_string_tab[107] -#define __pyx_n_u_cmap __pyx_string_tab[108] -#define __pyx_n_u_cnts __pyx_string_tab[109] -#define __pyx_n_u_const __pyx_string_tab[110] -#define __pyx_n_u_constants __pyx_string_tab[111] -#define __pyx_n_u_contours __pyx_string_tab[112] -#define __pyx_n_u_convert __pyx_string_tab[113] -#define __pyx_n_u_copy __pyx_string_tab[114] -#define __pyx_n_u_coreset_sampling_ratio __pyx_string_tab[115] -#define __pyx_n_u_cpu __pyx_string_tab[116] -#define __pyx_n_u_cropped __pyx_string_tab[117] -#define __pyx_n_u_cropped_sensor_left __pyx_string_tab[118] -#define __pyx_n_u_cropped_sensor_right __pyx_string_tab[119] -#define __pyx_n_u_csv_2 __pyx_string_tab[120] -#define __pyx_n_u_cuda __pyx_string_tab[121] -#define __pyx_n_u_cv2 __pyx_string_tab[122] -#define __pyx_n_u_cvtColor __pyx_string_tab[123] -#define __pyx_n_u_dA __pyx_string_tab[124] -#define __pyx_n_u_dB __pyx_string_tab[125] -#define __pyx_n_u_data_csv __pyx_string_tab[126] -#define __pyx_n_u_detection_models __pyx_string_tab[127] -#define __pyx_n_u_device __pyx_string_tab[128] -#define __pyx_n_u_df __pyx_string_tab[129] -#define __pyx_n_u_dimA __pyx_string_tab[130] -#define __pyx_n_u_dimB __pyx_string_tab[131] -#define __pyx_n_u_dist __pyx_string_tab[132] -#define __pyx_n_u_distance __pyx_string_tab[133] -#define __pyx_n_u_dopt_basics __pyx_string_tab[134] -#define __pyx_n_u_dopt_sensor_anomalies __pyx_string_tab[135] -#define __pyx_n_u_dopt_sensor_anomalies__find_path __pyx_string_tab[136] -#define __pyx_n_u_dopt_sensor_anomalies_detection __pyx_string_tab[137] -#define __pyx_n_u_dtype __pyx_string_tab[138] -#define __pyx_n_u_edged __pyx_string_tab[139] -#define __pyx_n_u_enter __pyx_string_tab[140] -#define __pyx_n_u_enumerate __pyx_string_tab[141] -#define __pyx_n_u_errors __pyx_string_tab[142] -#define __pyx_n_u_euclidean __pyx_string_tab[143] -#define __pyx_n_u_eval __pyx_string_tab[144] -#define __pyx_n_u_existing __pyx_string_tab[145] -#define __pyx_n_u_exists __pyx_string_tab[146] -#define __pyx_n_u_exit __pyx_string_tab[147] -#define __pyx_n_u_extend __pyx_string_tab[148] -#define __pyx_n_u_figsize __pyx_string_tab[149] -#define __pyx_n_u_file_path __pyx_string_tab[150] -#define __pyx_n_u_file_stem __pyx_string_tab[151] -#define __pyx_n_u_filtered_cnts __pyx_string_tab[152] -#define __pyx_n_u_filterwarnings __pyx_string_tab[153] -#define __pyx_n_u_findContours __pyx_string_tab[154] -#define __pyx_n_u_find_paths __pyx_string_tab[155] -#define __pyx_n_u_float __pyx_string_tab[156] -#define __pyx_n_u_float32 __pyx_string_tab[157] -#define __pyx_n_u_folder_path __pyx_string_tab[158] -#define __pyx_n_u_from_numpy __pyx_string_tab[159] -#define __pyx_n_u_fromarray __pyx_string_tab[160] -#define __pyx_n_u_func __pyx_string_tab[161] -#define __pyx_n_u_genexpr __pyx_string_tab[162] -#define __pyx_n_u_getStructuringElement __pyx_string_tab[163] -#define __pyx_n_u_get_detection_models __pyx_string_tab[164] -#define __pyx_n_u_get_model_folder __pyx_string_tab[165] -#define __pyx_n_u_grab_contours __pyx_string_tab[166] -#define __pyx_n_u_gray __pyx_string_tab[167] -#define __pyx_n_u_header __pyx_string_tab[168] -#define __pyx_n_u_hspace __pyx_string_tab[169] -#define __pyx_n_u_i __pyx_string_tab[170] -#define __pyx_n_u_ignore __pyx_string_tab[171] -#define __pyx_n_u_image __pyx_string_tab[172] -#define __pyx_n_u_image_np __pyx_string_tab[173] -#define __pyx_n_u_image_rgb __pyx_string_tab[174] -#define __pyx_n_u_img __pyx_string_tab[175] -#define __pyx_n_u_img_np __pyx_string_tab[176] -#define __pyx_n_u_img_path __pyx_string_tab[177] -#define __pyx_n_u_imread __pyx_string_tab[178] -#define __pyx_n_u_imshow __pyx_string_tab[179] -#define __pyx_n_u_imutils __pyx_string_tab[180] -#define __pyx_n_u_index __pyx_string_tab[181] -#define __pyx_n_u_infer_image __pyx_string_tab[182] -#define __pyx_n_u_input_tensor __pyx_string_tab[183] -#define __pyx_n_u_int32 __pyx_string_tab[184] -#define __pyx_n_u_is_available __pyx_string_tab[185] -#define __pyx_n_u_is_coroutine __pyx_string_tab[186] -#define __pyx_n_u_is_duplicate __pyx_string_tab[187] -#define __pyx_n_u_is_sorted __pyx_string_tab[188] -#define __pyx_n_u_item __pyx_string_tab[189] -#define __pyx_n_u_items __pyx_string_tab[190] -#define __pyx_n_u_jet __pyx_string_tab[191] -#define __pyx_n_u_kernel __pyx_string_tab[192] -#define __pyx_n_u_layers __pyx_string_tab[193] -#define __pyx_n_u_left __pyx_string_tab[194] -#define __pyx_n_u_leftmost_x_fourth __pyx_string_tab[195] -#define __pyx_n_u_linalg __pyx_string_tab[196] -#define __pyx_n_u_load __pyx_string_tab[197] -#define __pyx_n_u_load_state_dict __pyx_string_tab[198] -#define __pyx_n_u_main __pyx_string_tab[199] -#define __pyx_n_u_matplotlib_pyplot __pyx_string_tab[200] -#define __pyx_n_u_max __pyx_string_tab[201] -#define __pyx_n_u_measure_length __pyx_string_tab[202] -#define __pyx_n_u_measure_length_locals_genexpr __pyx_string_tab[203] -#define __pyx_n_u_message __pyx_string_tab[204] -#define __pyx_n_u_midpoint __pyx_string_tab[205] -#define __pyx_n_u_min __pyx_string_tab[206] -#define __pyx_n_u_minAreaRect __pyx_string_tab[207] -#define __pyx_n_u_mode __pyx_string_tab[208] -#define __pyx_n_u_model __pyx_string_tab[209] -#define __pyx_n_u_model_state_dict __pyx_string_tab[210] -#define __pyx_n_u_module __pyx_string_tab[211] -#define __pyx_n_u_morphologyEx __pyx_string_tab[212] -#define __pyx_n_u_name __pyx_string_tab[213] -#define __pyx_n_u_next __pyx_string_tab[214] -#define __pyx_n_u_no_grad __pyx_string_tab[215] -#define __pyx_n_u_norm __pyx_string_tab[216] -#define __pyx_n_u_np __pyx_string_tab[217] -#define __pyx_n_u_npt __pyx_string_tab[218] -#define __pyx_n_u_num_contours __pyx_string_tab[219] -#define __pyx_n_u_numpy __pyx_string_tab[220] -#define __pyx_n_u_numpy_typing __pyx_string_tab[221] -#define __pyx_n_u_off __pyx_string_tab[222] -#define __pyx_n_u_order_points __pyx_string_tab[223] -#define __pyx_n_u_orig __pyx_string_tab[224] -#define __pyx_n_u_output __pyx_string_tab[225] -#define __pyx_n_u_pad_inches __pyx_string_tab[226] -#define __pyx_n_u_pandas __pyx_string_tab[227] -#define __pyx_n_u_parent __pyx_string_tab[228] -#define __pyx_n_u_pathlib __pyx_string_tab[229] -#define __pyx_n_u_permute __pyx_string_tab[230] -#define __pyx_n_u_perspective __pyx_string_tab[231] -#define __pyx_n_u_pil_image __pyx_string_tab[232] -#define __pyx_n_u_pipeline __pyx_string_tab[233] -#define __pyx_n_u_pixels_per_metric_X __pyx_string_tab[234] -#define __pyx_n_u_pixels_per_metric_Y __pyx_string_tab[235] -#define __pyx_n_u_plt __pyx_string_tab[236] -#define __pyx_n_u_pop __pyx_string_tab[237] -#define __pyx_n_u_pred_score __pyx_string_tab[238] -#define __pyx_n_u_pt_A __pyx_string_tab[239] -#define __pyx_n_u_pt_B __pyx_string_tab[240] -#define __pyx_n_u_pyplot __pyx_string_tab[241] -#define __pyx_n_u_qualname __pyx_string_tab[242] -#define __pyx_n_u_quoting __pyx_string_tab[243] -#define __pyx_n_u_rbox __pyx_string_tab[244] -#define __pyx_n_u_resize __pyx_string_tab[245] -#define __pyx_n_u_result __pyx_string_tab[246] -#define __pyx_n_u_result_pattern __pyx_string_tab[247] -#define __pyx_n_u_return __pyx_string_tab[248] -#define __pyx_n_u_right __pyx_string_tab[249] -#define __pyx_n_u_rightmost_x_third __pyx_string_tab[250] -#define __pyx_n_u_s1 __pyx_string_tab[251] -#define __pyx_n_u_s2 __pyx_string_tab[252] -#define __pyx_n_u_savefig __pyx_string_tab[253] -#define __pyx_n_u_scipy_spatial __pyx_string_tab[254] -#define __pyx_n_u_send __pyx_string_tab[255] -#define __pyx_n_u_sensor_images __pyx_string_tab[256] -#define __pyx_n_u_sep __pyx_string_tab[257] -#define __pyx_n_u_set_name __pyx_string_tab[258] -#define __pyx_n_u_setdefault __pyx_string_tab[259] -#define __pyx_n_u_shape __pyx_string_tab[260] -#define __pyx_n_u_side __pyx_string_tab[261] -#define __pyx_n_u_size_diff __pyx_string_tab[262] -#define __pyx_n_u_sort_contours __pyx_string_tab[263] -#define __pyx_n_u_squeeze __pyx_string_tab[264] -#define __pyx_n_u_stem __pyx_string_tab[265] -#define __pyx_n_u_str __pyx_string_tab[266] -#define __pyx_n_u_subplots __pyx_string_tab[267] -#define __pyx_n_u_subplots_adjust __pyx_string_tab[268] -#define __pyx_n_u_t __pyx_string_tab[269] -#define __pyx_n_u_test __pyx_string_tab[270] -#define __pyx_n_u_threshold __pyx_string_tab[271] -#define __pyx_n_u_throw __pyx_string_tab[272] -#define __pyx_n_u_tight __pyx_string_tab[273] -#define __pyx_n_u_tl __pyx_string_tab[274] -#define __pyx_n_u_tlblX __pyx_string_tab[275] -#define __pyx_n_u_tlblY __pyx_string_tab[276] -#define __pyx_n_u_tltrX __pyx_string_tab[277] -#define __pyx_n_u_tltrY __pyx_string_tab[278] -#define __pyx_n_u_to __pyx_string_tab[279] -#define __pyx_n_u_to_csv __pyx_string_tab[280] -#define __pyx_n_u_tolerance __pyx_string_tab[281] -#define __pyx_n_u_torch __pyx_string_tab[282] -#define __pyx_n_u_torch_device __pyx_string_tab[283] -#define __pyx_n_u_tr __pyx_string_tab[284] -#define __pyx_n_u_trbrX __pyx_string_tab[285] -#define __pyx_n_u_trbrY __pyx_string_tab[286] -#define __pyx_n_u_types __pyx_string_tab[287] -#define __pyx_n_u_typing __pyx_string_tab[288] -#define __pyx_n_u_uint8 __pyx_string_tab[289] -#define __pyx_n_u_unsqueeze __pyx_string_tab[290] -#define __pyx_n_u_user_img_path __pyx_string_tab[291] -#define __pyx_n_u_value __pyx_string_tab[292] -#define __pyx_n_u_values __pyx_string_tab[293] -#define __pyx_n_u_w __pyx_string_tab[294] -#define __pyx_n_u_warnings __pyx_string_tab[295] -#define __pyx_n_u_wrap_result __pyx_string_tab[296] -#define __pyx_n_u_wspace __pyx_string_tab[297] -#define __pyx_n_u_x1 __pyx_string_tab[298] -#define __pyx_n_u_x2 __pyx_string_tab[299] -#define __pyx_n_u_x_coords __pyx_string_tab[300] -#define __pyx_n_u_x_max __pyx_string_tab[301] -#define __pyx_n_u_x_middle __pyx_string_tab[302] -#define __pyx_n_u_x_min __pyx_string_tab[303] -#define __pyx_n_u_y_max __pyx_string_tab[304] -#define __pyx_n_u_y_min __pyx_string_tab[305] -#define __pyx_n_u_zip __pyx_string_tab[306] -#define __pyx_kp_b_iso88591_5_q_uM_AQ_9AWCq_Zq_r_q_Jb_5_1IX __pyx_string_tab[307] -#define __pyx_kp_b_iso88591_AQ_t9G1_q_5_ARRS_aq_nA_Q_a __pyx_string_tab[308] -#define __pyx_kp_b_iso88591_AT_Rt1D_AS_at2Q __pyx_string_tab[309] -#define __pyx_kp_b_iso88591_Cwas_1_vS_f_a_H_e1D_fE_q_2Q_7_q __pyx_string_tab[310] -#define __pyx_kp_b_iso88591_IQ_k_Y6MURS_wc_3c_a_F_IQm6_AS_9 __pyx_string_tab[311] -#define __pyx_kp_b_iso88591__6 __pyx_string_tab[312] -#define __pyx_kp_b_iso88591__7 __pyx_string_tab[313] -#define __pyx_kp_b_iso88591_q_D_D_q_q_awb_uARvQd_BfAQ_AWBgU __pyx_string_tab[314] +#define __pyx_kp_u_Anomaly_score __pyx_string_tab[3] +#define __pyx_kp_u_Contour_detection_not_valid_cont __pyx_string_tab[4] +#define __pyx_kp_u_Contour_detection_not_valid_no_c __pyx_string_tab[5] +#define __pyx_kp_u_Image_could_not_be_read_from __pyx_string_tab[6] +#define __pyx_kp_u_No_contours_were_found_in_the_pr __pyx_string_tab[7] +#define __pyx_kp_u_Note_that_Cython_is_deliberately __pyx_string_tab[8] +#define __pyx_kp_u_Number_of_counted_electrodes_doe __pyx_string_tab[9] +#define __pyx_kp_u_The_provided_path_seems_not_to_e __pyx_string_tab[10] +#define __pyx_kp_u__2 __pyx_string_tab[11] +#define __pyx_kp_u__3 __pyx_string_tab[12] +#define __pyx_kp_u__4 __pyx_string_tab[13] +#define __pyx_kp_u__5 __pyx_string_tab[14] +#define __pyx_kp_u_add_note __pyx_string_tab[15] +#define __pyx_kp_u_csv __pyx_string_tab[16] +#define __pyx_kp_u_disable __pyx_string_tab[17] +#define __pyx_kp_u_enable __pyx_string_tab[18] +#define __pyx_kp_u_expected __pyx_string_tab[19] +#define __pyx_kp_u_gc __pyx_string_tab[20] +#define __pyx_kp_u_huggingface_hub_cache_system_us __pyx_string_tab[21] +#define __pyx_kp_u_isenabled __pyx_string_tab[22] +#define __pyx_kp_u_npt_NDArray_np_floating __pyx_string_tab[23] +#define __pyx_kp_u_npt_NDArray_np_uint8 __pyx_string_tab[24] +#define __pyx_kp_u_png __pyx_string_tab[25] +#define __pyx_kp_u_src_dopt_sensor_anomalies_detect __pyx_string_tab[26] +#define __pyx_kp_u_t_Box __pyx_string_tab[27] +#define __pyx_kp_u_t_CsvData __pyx_string_tab[28] +#define __pyx_kp_u_t_DetectionModels __pyx_string_tab[29] +#define __pyx_kp_u_t_InferenceResult __pyx_string_tab[30] +#define __pyx_kp_u_t_SensorImages __pyx_string_tab[31] +#define __pyx_kp_u_tuple_float_float __pyx_string_tab[32] +#define __pyx_kp_u_tuple_t_CsvData_t_SensorImages __pyx_string_tab[33] +#define __pyx_n_u_Any __pyx_string_tab[34] +#define __pyx_n_u_BACKBONE __pyx_string_tab[35] +#define __pyx_n_u_Box __pyx_string_tab[36] +#define __pyx_n_u_CHAIN_APPROX_SIMPLE __pyx_string_tab[37] +#define __pyx_n_u_COLOR_BGR2GRAY __pyx_string_tab[38] +#define __pyx_n_u_COLOR_BGR2RGB __pyx_string_tab[39] +#define __pyx_n_u_Canny __pyx_string_tab[40] +#define __pyx_n_u_ContourCalculationError __pyx_string_tab[41] +#define __pyx_n_u_DETECTION_MODELS __pyx_string_tab[42] +#define __pyx_n_u_DataFrame __pyx_string_tab[43] +#define __pyx_n_u_Final __pyx_string_tab[44] +#define __pyx_n_u_HEATMAP_FILENAME_SUFFIX __pyx_string_tab[45] +#define __pyx_n_u_Image __pyx_string_tab[46] +#define __pyx_n_u_ImageNotReadError __pyx_string_tab[47] +#define __pyx_n_u_InferenceResult __pyx_string_tab[48] +#define __pyx_n_u_InvalidElectrodeCount __pyx_string_tab[49] +#define __pyx_n_u_LAYERS __pyx_string_tab[50] +#define __pyx_n_u_MODEL_FOLDER __pyx_string_tab[51] +#define __pyx_n_u_MORPH_CLOSE __pyx_string_tab[52] +#define __pyx_n_u_MORPH_RECT __pyx_string_tab[53] +#define __pyx_n_u_NDArray __pyx_string_tab[54] +#define __pyx_n_u_NUM_VALID_ELECTRODES __pyx_string_tab[55] +#define __pyx_n_u_None __pyx_string_tab[56] +#define __pyx_n_u_PIL __pyx_string_tab[57] +#define __pyx_n_u_Patchcore __pyx_string_tab[58] +#define __pyx_n_u_Path __pyx_string_tab[59] +#define __pyx_n_u_Pyx_PyDict_NextRef __pyx_string_tab[60] +#define __pyx_n_u_QUOTE_NONE __pyx_string_tab[61] +#define __pyx_n_u_RATIO __pyx_string_tab[62] +#define __pyx_n_u_RETR_TREE __pyx_string_tab[63] +#define __pyx_n_u_RGB __pyx_string_tab[64] +#define __pyx_n_u_SensorImages __pyx_string_tab[65] +#define __pyx_n_u_THRESHOLD_BW __pyx_string_tab[66] +#define __pyx_n_u_THRESH_BINARY __pyx_string_tab[67] +#define __pyx_n_u__8 __pyx_string_tab[68] +#define __pyx_n_u_accepted_boxes __pyx_string_tab[69] +#define __pyx_n_u_all __pyx_string_tab[70] +#define __pyx_n_u_alpha __pyx_string_tab[71] +#define __pyx_n_u_anomalib_models __pyx_string_tab[72] +#define __pyx_n_u_anomaly_detection __pyx_string_tab[73] +#define __pyx_n_u_anomaly_label __pyx_string_tab[74] +#define __pyx_n_u_anomaly_map __pyx_string_tab[75] +#define __pyx_n_u_anomaly_map_resized __pyx_string_tab[76] +#define __pyx_n_u_anomaly_score __pyx_string_tab[77] +#define __pyx_n_u_array __pyx_string_tab[78] +#define __pyx_n_u_astype __pyx_string_tab[79] +#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[80] +#define __pyx_n_u_ax __pyx_string_tab[81] +#define __pyx_n_u_axes __pyx_string_tab[82] +#define __pyx_n_u_axis __pyx_string_tab[83] +#define __pyx_n_u_backbone __pyx_string_tab[84] +#define __pyx_n_u_bbox_inches __pyx_string_tab[85] +#define __pyx_n_u_binary __pyx_string_tab[86] +#define __pyx_n_u_bl __pyx_string_tab[87] +#define __pyx_n_u_blbrX __pyx_string_tab[88] +#define __pyx_n_u_blbrY __pyx_string_tab[89] +#define __pyx_n_u_bool __pyx_string_tab[90] +#define __pyx_n_u_boundingRect __pyx_string_tab[91] +#define __pyx_n_u_box __pyx_string_tab[92] +#define __pyx_n_u_boxPoints __pyx_string_tab[93] +#define __pyx_n_u_box_1 __pyx_string_tab[94] +#define __pyx_n_u_box_2 __pyx_string_tab[95] +#define __pyx_n_u_br __pyx_string_tab[96] +#define __pyx_n_u_c __pyx_string_tab[97] +#define __pyx_n_u_c1 __pyx_string_tab[98] +#define __pyx_n_u_c2 __pyx_string_tab[99] +#define __pyx_n_u_cast __pyx_string_tab[100] +#define __pyx_n_u_category __pyx_string_tab[101] +#define __pyx_n_u_center_dist __pyx_string_tab[102] +#define __pyx_n_u_check_box_redundancy __pyx_string_tab[103] +#define __pyx_n_u_checkpoint __pyx_string_tab[104] +#define __pyx_n_u_class_getitem __pyx_string_tab[105] +#define __pyx_n_u_cline_in_traceback __pyx_string_tab[106] +#define __pyx_n_u_close __pyx_string_tab[107] +#define __pyx_n_u_closed __pyx_string_tab[108] +#define __pyx_n_u_cmap __pyx_string_tab[109] +#define __pyx_n_u_cnts __pyx_string_tab[110] +#define __pyx_n_u_const __pyx_string_tab[111] +#define __pyx_n_u_constants __pyx_string_tab[112] +#define __pyx_n_u_contours __pyx_string_tab[113] +#define __pyx_n_u_convert __pyx_string_tab[114] +#define __pyx_n_u_copy __pyx_string_tab[115] +#define __pyx_n_u_coreset_sampling_ratio __pyx_string_tab[116] +#define __pyx_n_u_cpu __pyx_string_tab[117] +#define __pyx_n_u_cropped __pyx_string_tab[118] +#define __pyx_n_u_cropped_sensor_left __pyx_string_tab[119] +#define __pyx_n_u_cropped_sensor_right __pyx_string_tab[120] +#define __pyx_n_u_csv_2 __pyx_string_tab[121] +#define __pyx_n_u_cuda __pyx_string_tab[122] +#define __pyx_n_u_cv2 __pyx_string_tab[123] +#define __pyx_n_u_cvtColor __pyx_string_tab[124] +#define __pyx_n_u_dA __pyx_string_tab[125] +#define __pyx_n_u_dB __pyx_string_tab[126] +#define __pyx_n_u_data_csv __pyx_string_tab[127] +#define __pyx_n_u_detection_models __pyx_string_tab[128] +#define __pyx_n_u_device __pyx_string_tab[129] +#define __pyx_n_u_df __pyx_string_tab[130] +#define __pyx_n_u_dimA __pyx_string_tab[131] +#define __pyx_n_u_dimB __pyx_string_tab[132] +#define __pyx_n_u_dist __pyx_string_tab[133] +#define __pyx_n_u_distance __pyx_string_tab[134] +#define __pyx_n_u_dopt_basics __pyx_string_tab[135] +#define __pyx_n_u_dopt_sensor_anomalies __pyx_string_tab[136] +#define __pyx_n_u_dopt_sensor_anomalies__find_path __pyx_string_tab[137] +#define __pyx_n_u_dopt_sensor_anomalies_detection __pyx_string_tab[138] +#define __pyx_n_u_dtype __pyx_string_tab[139] +#define __pyx_n_u_edged __pyx_string_tab[140] +#define __pyx_n_u_enter __pyx_string_tab[141] +#define __pyx_n_u_enumerate __pyx_string_tab[142] +#define __pyx_n_u_errors __pyx_string_tab[143] +#define __pyx_n_u_euclidean __pyx_string_tab[144] +#define __pyx_n_u_eval __pyx_string_tab[145] +#define __pyx_n_u_existing __pyx_string_tab[146] +#define __pyx_n_u_exists __pyx_string_tab[147] +#define __pyx_n_u_exit __pyx_string_tab[148] +#define __pyx_n_u_extend __pyx_string_tab[149] +#define __pyx_n_u_figsize __pyx_string_tab[150] +#define __pyx_n_u_file_path __pyx_string_tab[151] +#define __pyx_n_u_file_stem __pyx_string_tab[152] +#define __pyx_n_u_filtered_cnts __pyx_string_tab[153] +#define __pyx_n_u_filterwarnings __pyx_string_tab[154] +#define __pyx_n_u_findContours __pyx_string_tab[155] +#define __pyx_n_u_find_paths __pyx_string_tab[156] +#define __pyx_n_u_float __pyx_string_tab[157] +#define __pyx_n_u_float32 __pyx_string_tab[158] +#define __pyx_n_u_folder_path __pyx_string_tab[159] +#define __pyx_n_u_from_numpy __pyx_string_tab[160] +#define __pyx_n_u_fromarray __pyx_string_tab[161] +#define __pyx_n_u_func __pyx_string_tab[162] +#define __pyx_n_u_genexpr __pyx_string_tab[163] +#define __pyx_n_u_getStructuringElement __pyx_string_tab[164] +#define __pyx_n_u_get_detection_models __pyx_string_tab[165] +#define __pyx_n_u_get_model_folder __pyx_string_tab[166] +#define __pyx_n_u_grab_contours __pyx_string_tab[167] +#define __pyx_n_u_gray __pyx_string_tab[168] +#define __pyx_n_u_header __pyx_string_tab[169] +#define __pyx_n_u_hspace __pyx_string_tab[170] +#define __pyx_n_u_i __pyx_string_tab[171] +#define __pyx_n_u_ignore __pyx_string_tab[172] +#define __pyx_n_u_image __pyx_string_tab[173] +#define __pyx_n_u_image_np __pyx_string_tab[174] +#define __pyx_n_u_image_rgb __pyx_string_tab[175] +#define __pyx_n_u_img __pyx_string_tab[176] +#define __pyx_n_u_img_np __pyx_string_tab[177] +#define __pyx_n_u_img_path __pyx_string_tab[178] +#define __pyx_n_u_imread __pyx_string_tab[179] +#define __pyx_n_u_imshow __pyx_string_tab[180] +#define __pyx_n_u_imutils __pyx_string_tab[181] +#define __pyx_n_u_index __pyx_string_tab[182] +#define __pyx_n_u_infer_image __pyx_string_tab[183] +#define __pyx_n_u_input_tensor __pyx_string_tab[184] +#define __pyx_n_u_int32 __pyx_string_tab[185] +#define __pyx_n_u_is_available __pyx_string_tab[186] +#define __pyx_n_u_is_coroutine __pyx_string_tab[187] +#define __pyx_n_u_is_duplicate __pyx_string_tab[188] +#define __pyx_n_u_is_sorted __pyx_string_tab[189] +#define __pyx_n_u_item __pyx_string_tab[190] +#define __pyx_n_u_items __pyx_string_tab[191] +#define __pyx_n_u_jet __pyx_string_tab[192] +#define __pyx_n_u_kernel __pyx_string_tab[193] +#define __pyx_n_u_layers __pyx_string_tab[194] +#define __pyx_n_u_left __pyx_string_tab[195] +#define __pyx_n_u_leftmost_x_fourth __pyx_string_tab[196] +#define __pyx_n_u_linalg __pyx_string_tab[197] +#define __pyx_n_u_load __pyx_string_tab[198] +#define __pyx_n_u_load_state_dict __pyx_string_tab[199] +#define __pyx_n_u_main __pyx_string_tab[200] +#define __pyx_n_u_matplotlib_pyplot __pyx_string_tab[201] +#define __pyx_n_u_max __pyx_string_tab[202] +#define __pyx_n_u_measure_length __pyx_string_tab[203] +#define __pyx_n_u_measure_length_locals_genexpr __pyx_string_tab[204] +#define __pyx_n_u_message __pyx_string_tab[205] +#define __pyx_n_u_midpoint __pyx_string_tab[206] +#define __pyx_n_u_min __pyx_string_tab[207] +#define __pyx_n_u_minAreaRect __pyx_string_tab[208] +#define __pyx_n_u_mode __pyx_string_tab[209] +#define __pyx_n_u_model __pyx_string_tab[210] +#define __pyx_n_u_model_state_dict __pyx_string_tab[211] +#define __pyx_n_u_module __pyx_string_tab[212] +#define __pyx_n_u_morphologyEx __pyx_string_tab[213] +#define __pyx_n_u_name __pyx_string_tab[214] +#define __pyx_n_u_next __pyx_string_tab[215] +#define __pyx_n_u_no_grad __pyx_string_tab[216] +#define __pyx_n_u_norm __pyx_string_tab[217] +#define __pyx_n_u_np __pyx_string_tab[218] +#define __pyx_n_u_npt __pyx_string_tab[219] +#define __pyx_n_u_num_contours __pyx_string_tab[220] +#define __pyx_n_u_numpy __pyx_string_tab[221] +#define __pyx_n_u_numpy_typing __pyx_string_tab[222] +#define __pyx_n_u_off __pyx_string_tab[223] +#define __pyx_n_u_order_points __pyx_string_tab[224] +#define __pyx_n_u_orig __pyx_string_tab[225] +#define __pyx_n_u_output __pyx_string_tab[226] +#define __pyx_n_u_pad_inches __pyx_string_tab[227] +#define __pyx_n_u_pandas __pyx_string_tab[228] +#define __pyx_n_u_parent __pyx_string_tab[229] +#define __pyx_n_u_pathlib __pyx_string_tab[230] +#define __pyx_n_u_permute __pyx_string_tab[231] +#define __pyx_n_u_perspective __pyx_string_tab[232] +#define __pyx_n_u_pil_image __pyx_string_tab[233] +#define __pyx_n_u_pipeline __pyx_string_tab[234] +#define __pyx_n_u_pixels_per_metric_X __pyx_string_tab[235] +#define __pyx_n_u_pixels_per_metric_Y __pyx_string_tab[236] +#define __pyx_n_u_plt __pyx_string_tab[237] +#define __pyx_n_u_pop __pyx_string_tab[238] +#define __pyx_n_u_pred_score __pyx_string_tab[239] +#define __pyx_n_u_print __pyx_string_tab[240] +#define __pyx_n_u_pt_A __pyx_string_tab[241] +#define __pyx_n_u_pt_B __pyx_string_tab[242] +#define __pyx_n_u_pyplot __pyx_string_tab[243] +#define __pyx_n_u_qualname __pyx_string_tab[244] +#define __pyx_n_u_quoting __pyx_string_tab[245] +#define __pyx_n_u_rbox __pyx_string_tab[246] +#define __pyx_n_u_resize __pyx_string_tab[247] +#define __pyx_n_u_result __pyx_string_tab[248] +#define __pyx_n_u_result_pattern __pyx_string_tab[249] +#define __pyx_n_u_return __pyx_string_tab[250] +#define __pyx_n_u_right __pyx_string_tab[251] +#define __pyx_n_u_rightmost_x_third __pyx_string_tab[252] +#define __pyx_n_u_s1 __pyx_string_tab[253] +#define __pyx_n_u_s2 __pyx_string_tab[254] +#define __pyx_n_u_savefig __pyx_string_tab[255] +#define __pyx_n_u_scipy_spatial __pyx_string_tab[256] +#define __pyx_n_u_send __pyx_string_tab[257] +#define __pyx_n_u_sensor_images __pyx_string_tab[258] +#define __pyx_n_u_sep __pyx_string_tab[259] +#define __pyx_n_u_set_name __pyx_string_tab[260] +#define __pyx_n_u_setdefault __pyx_string_tab[261] +#define __pyx_n_u_shape __pyx_string_tab[262] +#define __pyx_n_u_side __pyx_string_tab[263] +#define __pyx_n_u_size_diff __pyx_string_tab[264] +#define __pyx_n_u_sort_contours __pyx_string_tab[265] +#define __pyx_n_u_squeeze __pyx_string_tab[266] +#define __pyx_n_u_stem __pyx_string_tab[267] +#define __pyx_n_u_str __pyx_string_tab[268] +#define __pyx_n_u_subplots __pyx_string_tab[269] +#define __pyx_n_u_subplots_adjust __pyx_string_tab[270] +#define __pyx_n_u_t __pyx_string_tab[271] +#define __pyx_n_u_test __pyx_string_tab[272] +#define __pyx_n_u_threshold __pyx_string_tab[273] +#define __pyx_n_u_throw __pyx_string_tab[274] +#define __pyx_n_u_tight __pyx_string_tab[275] +#define __pyx_n_u_tl __pyx_string_tab[276] +#define __pyx_n_u_tlblX __pyx_string_tab[277] +#define __pyx_n_u_tlblY __pyx_string_tab[278] +#define __pyx_n_u_tltrX __pyx_string_tab[279] +#define __pyx_n_u_tltrY __pyx_string_tab[280] +#define __pyx_n_u_to __pyx_string_tab[281] +#define __pyx_n_u_to_csv __pyx_string_tab[282] +#define __pyx_n_u_tolerance __pyx_string_tab[283] +#define __pyx_n_u_torch __pyx_string_tab[284] +#define __pyx_n_u_torch_device __pyx_string_tab[285] +#define __pyx_n_u_tr __pyx_string_tab[286] +#define __pyx_n_u_trbrX __pyx_string_tab[287] +#define __pyx_n_u_trbrY __pyx_string_tab[288] +#define __pyx_n_u_types __pyx_string_tab[289] +#define __pyx_n_u_typing __pyx_string_tab[290] +#define __pyx_n_u_uint8 __pyx_string_tab[291] +#define __pyx_n_u_unsqueeze __pyx_string_tab[292] +#define __pyx_n_u_user_img_path __pyx_string_tab[293] +#define __pyx_n_u_value __pyx_string_tab[294] +#define __pyx_n_u_values __pyx_string_tab[295] +#define __pyx_n_u_w __pyx_string_tab[296] +#define __pyx_n_u_warnings __pyx_string_tab[297] +#define __pyx_n_u_wrap_result __pyx_string_tab[298] +#define __pyx_n_u_wspace __pyx_string_tab[299] +#define __pyx_n_u_x1 __pyx_string_tab[300] +#define __pyx_n_u_x2 __pyx_string_tab[301] +#define __pyx_n_u_x_coords __pyx_string_tab[302] +#define __pyx_n_u_x_max __pyx_string_tab[303] +#define __pyx_n_u_x_middle __pyx_string_tab[304] +#define __pyx_n_u_x_min __pyx_string_tab[305] +#define __pyx_n_u_y_max __pyx_string_tab[306] +#define __pyx_n_u_y_min __pyx_string_tab[307] +#define __pyx_n_u_zip __pyx_string_tab[308] +#define __pyx_kp_b_iso88591_5_q_uM_AQ_9AWCq_Zq_r_q_Jb_5_1IX __pyx_string_tab[309] +#define __pyx_kp_b_iso88591_AQ_t9G1_q_5_ARRS_aq_nA_Q_a __pyx_string_tab[310] +#define __pyx_kp_b_iso88591_AT_Rt1D_AS_at2Q __pyx_string_tab[311] +#define __pyx_kp_b_iso88591_Cwas_1_vS_f_a_H_e1D_fE_q_2Q_7_q __pyx_string_tab[312] +#define __pyx_kp_b_iso88591_IQ_k_Y6MURS_wc_3c_a_F_IQm6_AS_9 __pyx_string_tab[313] +#define __pyx_kp_b_iso88591__6 __pyx_string_tab[314] +#define __pyx_kp_b_iso88591__7 __pyx_string_tab[315] +#define __pyx_kp_b_iso88591_q_D_D_q_q_awb_uARvQd_BfAQ_AWBgU __pyx_string_tab[316] #define __pyx_float_0_2 __pyx_number_tab[0] #define __pyx_float_0_5 __pyx_number_tab[1] #define __pyx_float_0_8 __pyx_number_tab[2] @@ -3330,7 +3333,7 @@ static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) { for (int i=0; i<2; ++i) { Py_CLEAR(clear_module_state->__pyx_slice[i]); } for (int i=0; i<7; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); } for (int i=0; i<12; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<315; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } + for (int i=0; i<317; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); } for (int i=0; i<17; ++i) { Py_CLEAR(clear_module_state->__pyx_number_tab[i]); } /* #### Code section: module_state_clear_contents ### */ /* CommonTypesMetaclass.module_state_clear */ @@ -3374,7 +3377,7 @@ static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void for (int i=0; i<2; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_slice[i]); } for (int i=0; i<7; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); } for (int i=0; i<12; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); } - for (int i=0; i<315; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } + for (int i=0; i<317; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); } for (int i=0; i<17; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_number_tab[i]); } /* #### Code section: module_state_traverse_contents ### */ /* CommonTypesMetaclass.module_state_traverse */ @@ -8642,8 +8645,8 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_6infer_image(CYTHON * output = model(input_tensor) * * anomaly_score = output.pred_score.item() # <<<<<<<<<<<<<< + * print(f">>> Anomaly score: {anomaly_score}") * anomaly_label = bool(1 if anomaly_score >= 0.2 else 0) - * anomaly_map = output.anomaly_map.squeeze().cpu().numpy() */ if (unlikely(!__pyx_v_output)) { __Pyx_RaiseUnboundLocalError("output"); __PYX_ERR(0, 178, __pyx_L1_error) } __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output, __pyx_mstate_global->__pyx_n_u_pred_score); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error) @@ -8665,13 +8668,37 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_6infer_image(CYTHON /* "dopt_sensor_anomalies/detection.py":179 * * anomaly_score = output.pred_score.item() + * print(f">>> Anomaly score: {anomaly_score}") # <<<<<<<<<<<<<< + * anomaly_label = bool(1 if anomaly_score >= 0.2 else 0) + * anomaly_map = output.anomaly_map.squeeze().cpu().numpy() +*/ + __pyx_t_2 = NULL; + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_anomaly_score, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_Anomaly_score, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __pyx_t_9 = 1; + { + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_builtin_print, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 179, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; + + /* "dopt_sensor_anomalies/detection.py":180 + * anomaly_score = output.pred_score.item() + * print(f">>> Anomaly score: {anomaly_score}") * anomaly_label = bool(1 if anomaly_score >= 0.2 else 0) # <<<<<<<<<<<<<< * anomaly_map = output.anomaly_map.squeeze().cpu().numpy() * */ - __pyx_t_2 = PyObject_RichCompare(__pyx_v_anomaly_score, __pyx_mstate_global->__pyx_float_0_2, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error) - __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 179, __pyx_L1_error) - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = PyObject_RichCompare(__pyx_v_anomaly_score, __pyx_mstate_global->__pyx_float_0_2, Py_GE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 180, __pyx_L1_error) + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (__pyx_t_16) { __Pyx_INCREF(__pyx_mstate_global->__pyx_int_1); __pyx_t_5 = __pyx_mstate_global->__pyx_int_1; @@ -8679,19 +8706,19 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_6infer_image(CYTHON __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0); __pyx_t_5 = __pyx_mstate_global->__pyx_int_0; } - __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_16 < 0))) __PYX_ERR(0, 180, __pyx_L1_error) __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_v_anomaly_label = (!(!__pyx_t_16)); - /* "dopt_sensor_anomalies/detection.py":180 - * anomaly_score = output.pred_score.item() + /* "dopt_sensor_anomalies/detection.py":181 + * print(f">>> Anomaly score: {anomaly_score}") * anomaly_label = bool(1 if anomaly_score >= 0.2 else 0) * anomaly_map = output.anomaly_map.squeeze().cpu().numpy() # <<<<<<<<<<<<<< * * img_np = np.array(pil_image) */ - if (unlikely(!__pyx_v_output)) { __Pyx_RaiseUnboundLocalError("output"); __PYX_ERR(0, 180, __pyx_L1_error) } - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_output, __pyx_mstate_global->__pyx_n_u_anomaly_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 180, __pyx_L1_error) + if (unlikely(!__pyx_v_output)) { __Pyx_RaiseUnboundLocalError("output"); __PYX_ERR(0, 181, __pyx_L1_error) } + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_output, __pyx_mstate_global->__pyx_n_u_anomaly_map); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_3 = __pyx_t_6; __Pyx_INCREF(__pyx_t_3); @@ -8701,149 +8728,47 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_6infer_image(CYTHON __pyx_t_8 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_squeeze, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 180, __pyx_L1_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); } - __pyx_t_4 = __pyx_t_8; + __pyx_t_1 = __pyx_t_8; + __Pyx_INCREF(__pyx_t_1); + __pyx_t_9 = 0; + { + PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL}; + __pyx_t_2 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cpu, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 181, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + } + __pyx_t_4 = __pyx_t_2; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0; { PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL}; - __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_cpu, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - } - __pyx_t_2 = __pyx_t_1; - __Pyx_INCREF(__pyx_t_2); - __pyx_t_9 = 0; - { - PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL}; __pyx_t_5 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_numpy, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 180, __pyx_L1_error) + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 181, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_v_anomaly_map = __pyx_t_5; __pyx_t_5 = 0; - /* "dopt_sensor_anomalies/detection.py":182 + /* "dopt_sensor_anomalies/detection.py":183 * anomaly_map = output.anomaly_map.squeeze().cpu().numpy() * * img_np = np.array(pil_image) # <<<<<<<<<<<<<< * anomaly_map_resized = cv2.resize(anomaly_map, (img_np.shape[1], img_np.shape[0])) * */ - __pyx_t_1 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 182, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 182, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_9 = 1; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_8))) { - __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8); - assert(__pyx_t_1); - PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); - __Pyx_INCREF(__pyx_t_1); - __Pyx_INCREF(__pyx__function); - __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); - __pyx_t_9 = 0; - } - #endif - { - PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_pil_image}; - __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 182, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - } - __pyx_v_img_np = __pyx_t_5; - __pyx_t_5 = 0; - - /* "dopt_sensor_anomalies/detection.py":183 - * - * img_np = np.array(pil_image) - * anomaly_map_resized = cv2.resize(anomaly_map, (img_np.shape[1], img_np.shape[0])) # <<<<<<<<<<<<<< - * - * return t.InferenceResult( -*/ - __pyx_t_8 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_cv2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_resize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_2); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_np, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_4); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_np, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __Pyx_GIVEREF(__pyx_t_4); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4) != (0)) __PYX_ERR(0, 183, __pyx_L1_error); - __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 183, __pyx_L1_error); - __pyx_t_4 = 0; - __pyx_t_6 = 0; - __pyx_t_9 = 1; - #if CYTHON_UNPACK_METHODS - if (unlikely(PyMethod_Check(__pyx_t_2))) { - __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_2); - assert(__pyx_t_8); - PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2); - __Pyx_INCREF(__pyx_t_8); - __Pyx_INCREF(__pyx__function); - __Pyx_DECREF_SET(__pyx_t_2, __pyx__function); - __pyx_t_9 = 0; - } - #endif - { - PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_anomaly_map, __pyx_t_1}; - __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_2, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); - __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 183, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_5); - } - __pyx_v_anomaly_map_resized = __pyx_t_5; - __pyx_t_5 = 0; - - /* "dopt_sensor_anomalies/detection.py":185 - * anomaly_map_resized = cv2.resize(anomaly_map, (img_np.shape[1], img_np.shape[0])) - * - * return t.InferenceResult( # <<<<<<<<<<<<<< - * img=img_np, - * anomaly_map_resized=anomaly_map_resized, -*/ - __Pyx_XDECREF(__pyx_r); __pyx_t_2 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); - __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_InferenceResult); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 185, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_array); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 183, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - - /* "dopt_sensor_anomalies/detection.py":189 - * anomaly_map_resized=anomaly_map_resized, - * anomaly_score=anomaly_score, - * anomaly_label=anomaly_label, # <<<<<<<<<<<<<< - * ) - * -*/ - __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_anomaly_label); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 189, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_8))) { @@ -8857,19 +8782,121 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_6infer_image(CYTHON } #endif { - PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 4 : 0)] = {__pyx_t_2, NULL}; - __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 185, __pyx_L1_error) - __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_img, __pyx_v_img_np, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 185, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_anomaly_map_resized, __pyx_v_anomaly_map_resized, __pyx_t_6, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 185, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_anomaly_score, __pyx_v_anomaly_score, __pyx_t_6, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 185, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_anomaly_label, __pyx_t_1, __pyx_t_6, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 185, __pyx_L1_error) - __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_pil_image}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; - __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 183, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_v_img_np = __pyx_t_5; + __pyx_t_5 = 0; + + /* "dopt_sensor_anomalies/detection.py":184 + * + * img_np = np.array(pil_image) + * anomaly_map_resized = cv2.resize(anomaly_map, (img_np.shape[1], img_np.shape[0])) # <<<<<<<<<<<<<< + * + * return t.InferenceResult( +*/ + __pyx_t_8 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_cv2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_resize); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_4); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_np, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_np, __pyx_mstate_global->__pyx_n_u_shape); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 0, 1, __Pyx_ReferenceSharing_OwnStrongReference); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __Pyx_GIVEREF(__pyx_t_1); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1) != (0)) __PYX_ERR(0, 184, __pyx_L1_error); + __Pyx_GIVEREF(__pyx_t_6); + if (__Pyx_PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 184, __pyx_L1_error); + __pyx_t_1 = 0; + __pyx_t_6 = 0; + __pyx_t_9 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_4))) { + __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_4); + assert(__pyx_t_8); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4); + __Pyx_INCREF(__pyx_t_8); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_4, __pyx__function); + __pyx_t_9 = 0; + } + #endif + { + PyObject *__pyx_callargs[3] = {__pyx_t_8, __pyx_v_anomaly_map, __pyx_t_2}; + __pyx_t_5 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_4, __pyx_callargs+__pyx_t_9, (3-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); + __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 184, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_5); + } + __pyx_v_anomaly_map_resized = __pyx_t_5; + __pyx_t_5 = 0; + + /* "dopt_sensor_anomalies/detection.py":186 + * anomaly_map_resized = cv2.resize(anomaly_map, (img_np.shape[1], img_np.shape[0])) + * + * return t.InferenceResult( # <<<<<<<<<<<<<< + * img=img_np, + * anomaly_map_resized=anomaly_map_resized, +*/ + __Pyx_XDECREF(__pyx_r); + __pyx_t_4 = NULL; + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_InferenceResult); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_8); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + + /* "dopt_sensor_anomalies/detection.py":190 + * anomaly_map_resized=anomaly_map_resized, + * anomaly_score=anomaly_score, + * anomaly_label=anomaly_label, # <<<<<<<<<<<<<< + * ) + * +*/ + __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_v_anomaly_label); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 190, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_9 = 1; + #if CYTHON_UNPACK_METHODS + if (unlikely(PyMethod_Check(__pyx_t_8))) { + __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_8); + assert(__pyx_t_4); + PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8); + __Pyx_INCREF(__pyx_t_4); + __Pyx_INCREF(__pyx__function); + __Pyx_DECREF_SET(__pyx_t_8, __pyx__function); + __pyx_t_9 = 0; + } + #endif + { + PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 4 : 0)] = {__pyx_t_4, NULL}; + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 186, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_6); + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_img, __pyx_v_img_np, __pyx_t_6, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 186, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_anomaly_map_resized, __pyx_v_anomaly_map_resized, __pyx_t_6, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 186, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_anomaly_score, __pyx_v_anomaly_score, __pyx_t_6, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 186, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_anomaly_label, __pyx_t_2, __pyx_t_6, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 186, __pyx_L1_error) + __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_8, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); + __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; - if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 185, __pyx_L1_error) + if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 186, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); } __pyx_r = __pyx_t_5; @@ -8912,7 +8939,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_6infer_image(CYTHON return __pyx_r; } -/* "dopt_sensor_anomalies/detection.py":193 +/* "dopt_sensor_anomalies/detection.py":194 * * * def anomaly_detection( # <<<<<<<<<<<<<< @@ -8962,44 +8989,44 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_img_path,&__pyx_mstate_global->__pyx_n_u_detection_models,&__pyx_mstate_global->__pyx_n_u_data_csv,&__pyx_mstate_global->__pyx_n_u_sensor_images,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 193, __pyx_L3_error) + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 194, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 4: values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 194, __pyx_L3_error) CYTHON_FALLTHROUGH; case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 194, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 194, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 194, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "anomaly_detection", 0) < (0)) __PYX_ERR(0, 193, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "anomaly_detection", 0) < (0)) __PYX_ERR(0, 194, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 4; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("anomaly_detection", 1, 4, 4, i); __PYX_ERR(0, 193, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("anomaly_detection", 1, 4, 4, i); __PYX_ERR(0, 194, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 4)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 194, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 194, __pyx_L3_error) values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 194, __pyx_L3_error) values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 193, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 194, __pyx_L3_error) } __pyx_v_img_path = values[0]; __pyx_v_detection_models = values[1]; @@ -9008,7 +9035,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("anomaly_detection", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 193, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("anomaly_detection", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 194, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -9064,31 +9091,31 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( int __pyx_clineno = 0; __Pyx_RefNannySetupContext("anomaly_detection", 0); - /* "dopt_sensor_anomalies/detection.py":199 + /* "dopt_sensor_anomalies/detection.py":200 * sensor_images: t.SensorImages, * ) -> None: * file_stem = img_path.stem # <<<<<<<<<<<<<< * folder_path = img_path.parent * */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_path, __pyx_mstate_global->__pyx_n_u_stem); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 199, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_path, __pyx_mstate_global->__pyx_n_u_stem); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_file_stem = __pyx_t_1; __pyx_t_1 = 0; - /* "dopt_sensor_anomalies/detection.py":200 + /* "dopt_sensor_anomalies/detection.py":201 * ) -> None: * file_stem = img_path.stem * folder_path = img_path.parent # <<<<<<<<<<<<<< * * model = Patchcore( */ - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_path, __pyx_mstate_global->__pyx_n_u_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 200, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_img_path, __pyx_mstate_global->__pyx_n_u_parent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 201, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_v_folder_path = __pyx_t_1; __pyx_t_1 = 0; - /* "dopt_sensor_anomalies/detection.py":202 + /* "dopt_sensor_anomalies/detection.py":203 * folder_path = img_path.parent * * model = Patchcore( # <<<<<<<<<<<<<< @@ -9096,29 +9123,29 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * ) */ __pyx_t_2 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Patchcore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 202, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Patchcore); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - /* "dopt_sensor_anomalies/detection.py":203 + /* "dopt_sensor_anomalies/detection.py":204 * * model = Patchcore( * backbone=const.BACKBONE, layers=const.LAYERS, coreset_sampling_ratio=const.RATIO # <<<<<<<<<<<<<< * ) * _, axes = plt.subplots(1, 2, figsize=(12, 6)) */ - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BACKBONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 203, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_BACKBONE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LAYERS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 203, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_LAYERS); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 203, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_RATIO); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 203, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_RATIO); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 204, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_8 = 1; @@ -9135,11 +9162,11 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( #endif { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 3 : 0)] = {__pyx_t_2, NULL}; - __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 202, __pyx_L1_error) + __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_backbone, __pyx_t_5, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 202, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_layers, __pyx_t_6, __pyx_t_4, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 202, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_coreset_sampling_ratio, __pyx_t_7, __pyx_t_4, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 202, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_backbone, __pyx_t_5, __pyx_t_4, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 203, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_layers, __pyx_t_6, __pyx_t_4, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 203, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_coreset_sampling_ratio, __pyx_t_7, __pyx_t_4, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 203, __pyx_L1_error) __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; @@ -9147,28 +9174,28 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 202, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_model = __pyx_t_1; __pyx_t_1 = 0; - /* "dopt_sensor_anomalies/detection.py":205 + /* "dopt_sensor_anomalies/detection.py":206 * backbone=const.BACKBONE, layers=const.LAYERS, coreset_sampling_ratio=const.RATIO * ) * _, axes = plt.subplots(1, 2, figsize=(12, 6)) # <<<<<<<<<<<<<< * * for i, (side, image) in enumerate(sensor_images.items()): */ - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_subplots); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_subplots); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_figsize, __pyx_mstate_global->__pyx_tuple[6]) < (0)) __PYX_ERR(0, 205, __pyx_L1_error) - __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[5], __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 205, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_figsize, __pyx_mstate_global->__pyx_tuple[6]) < (0)) __PYX_ERR(0, 206, __pyx_L1_error) + __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[5], __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; @@ -9178,7 +9205,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 205, __pyx_L1_error) + __PYX_ERR(0, 206, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -9188,22 +9215,22 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_INCREF(__pyx_t_3); } else { __pyx_t_1 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_1); __pyx_t_3 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L1_error) + if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_3); } #else - __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_t_1 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_t_3 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); #endif __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; } else { Py_ssize_t index = -1; - __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); @@ -9211,7 +9238,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_GOTREF(__pyx_t_1); index = 1; __pyx_t_3 = __pyx_t_9(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed; __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_7), 2) < (0)) __PYX_ERR(0, 205, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_7), 2) < (0)) __PYX_ERR(0, 206, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; goto __pyx_L4_unpacking_done; @@ -9219,7 +9246,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 205, __pyx_L1_error) + __PYX_ERR(0, 206, __pyx_L1_error) __pyx_L4_unpacking_done:; } __pyx_v__ = __pyx_t_1; @@ -9227,7 +9254,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_v_axes = __pyx_t_3; __pyx_t_3 = 0; - /* "dopt_sensor_anomalies/detection.py":207 + /* "dopt_sensor_anomalies/detection.py":208 * _, axes = plt.subplots(1, 2, figsize=(12, 6)) * * for i, (side, image) in enumerate(sensor_images.items()): # <<<<<<<<<<<<<< @@ -9239,9 +9266,9 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_10 = 0; if (unlikely(__pyx_v_sensor_images == Py_None)) { PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "items"); - __PYX_ERR(0, 207, __pyx_L1_error) + __PYX_ERR(0, 208, __pyx_L1_error) } - __pyx_t_1 = __Pyx_dict_iterator(__pyx_v_sensor_images, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_11), (&__pyx_t_12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 207, __pyx_L1_error) + __pyx_t_1 = __Pyx_dict_iterator(__pyx_v_sensor_images, 0, __pyx_mstate_global->__pyx_n_u_items, (&__pyx_t_11), (&__pyx_t_12)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = __pyx_t_1; @@ -9249,7 +9276,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( while (1) { __pyx_t_13 = __Pyx_dict_iter_next(__pyx_t_3, __pyx_t_11, &__pyx_t_10, &__pyx_t_1, &__pyx_t_7, NULL, __pyx_t_12); if (unlikely(__pyx_t_13 == 0)) break; - if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 207, __pyx_L1_error) + if (unlikely(__pyx_t_13 == -1)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF_SET(__pyx_v_side, __pyx_t_1); @@ -9258,13 +9285,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_7 = 0; __Pyx_INCREF(__pyx_t_4); __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4); - __pyx_t_7 = __Pyx_PyLong_AddObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 207, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyLong_AddObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 208, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = __pyx_t_7; __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":208 + /* "dopt_sensor_anomalies/detection.py":209 * * for i, (side, image) in enumerate(sensor_images.items()): * image = cast(npt.NDArray[np.uint8], image) # <<<<<<<<<<<<<< @@ -9272,19 +9299,19 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * model.load_state_dict(checkpoint["model_state_dict"]) */ __pyx_t_1 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_cast); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_cast); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_npt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_npt); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_NDArray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 208, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_NDArray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 208, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_uint8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 208, __pyx_L1_error) + __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_uint8); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_14); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 208, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_t_2, __pyx_t_14); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0; @@ -9306,13 +9333,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 208, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_DECREF_SET(__pyx_v_image, __pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":209 + /* "dopt_sensor_anomalies/detection.py":210 * for i, (side, image) in enumerate(sensor_images.items()): * image = cast(npt.NDArray[np.uint8], image) * checkpoint = torch.load(detection_models[side]) # <<<<<<<<<<<<<< @@ -9320,12 +9347,12 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * */ __pyx_t_6 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_torch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 209, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_torch); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_load); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 209, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_load); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_detection_models, __pyx_v_side); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 209, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetItem(__pyx_v_detection_models, __pyx_v_side); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS @@ -9345,13 +9372,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 209, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 210, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_XDECREF_SET(__pyx_v_checkpoint, __pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":210 + /* "dopt_sensor_anomalies/detection.py":211 * image = cast(npt.NDArray[np.uint8], image) * checkpoint = torch.load(detection_models[side]) * model.load_state_dict(checkpoint["model_state_dict"]) # <<<<<<<<<<<<<< @@ -9360,7 +9387,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( */ __pyx_t_1 = __pyx_v_model; __Pyx_INCREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_checkpoint, __pyx_mstate_global->__pyx_n_u_model_state_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 210, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_Dict_GetItem(__pyx_v_checkpoint, __pyx_mstate_global->__pyx_n_u_model_state_dict); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = 0; { @@ -9368,12 +9395,12 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_load_state_dict, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 210, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 211, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":212 + /* "dopt_sensor_anomalies/detection.py":213 * model.load_state_dict(checkpoint["model_state_dict"]) * * result = infer_image(image, model) # <<<<<<<<<<<<<< @@ -9381,7 +9408,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * */ __pyx_t_5 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_infer_image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 212, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_infer_image); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS @@ -9400,13 +9427,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_7 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_1, __pyx_callargs+__pyx_t_8, (3-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 212, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_XDECREF_SET(__pyx_v_result, __pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":213 + /* "dopt_sensor_anomalies/detection.py":214 * * result = infer_image(image, model) * data_csv.extend([int(result.anomaly_label)]) # <<<<<<<<<<<<<< @@ -9415,15 +9442,15 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( */ __pyx_t_1 = __pyx_v_data_csv; __Pyx_INCREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_anomaly_label); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_anomaly_label); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 213, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyNumber_Int(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 213, __pyx_L1_error) + __pyx_t_5 = PyList_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_GIVEREF(__pyx_t_6); - if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_6) != (0)) __PYX_ERR(0, 213, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_5, 0, __pyx_t_6) != (0)) __PYX_ERR(0, 214, __pyx_L1_error); __pyx_t_6 = 0; __pyx_t_8 = 0; { @@ -9431,24 +9458,24 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_extend, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 213, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 214, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":215 + /* "dopt_sensor_anomalies/detection.py":216 * data_csv.extend([int(result.anomaly_label)]) * * ax = axes[i] # <<<<<<<<<<<<<< * ax.axis("off") * ax.imshow(image, alpha=0.8) */ - __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_axes, __pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 215, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetItem(__pyx_v_axes, __pyx_v_i); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 216, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_XDECREF_SET(__pyx_v_ax, __pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":216 + /* "dopt_sensor_anomalies/detection.py":217 * * ax = axes[i] * ax.axis("off") # <<<<<<<<<<<<<< @@ -9462,12 +9489,12 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_off}; __pyx_t_7 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_axis, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 216, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 217, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":217 + /* "dopt_sensor_anomalies/detection.py":218 * ax = axes[i] * ax.axis("off") * ax.imshow(image, alpha=0.8) # <<<<<<<<<<<<<< @@ -9479,18 +9506,18 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_8 = 0; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_v_image}; - __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 217, __pyx_L1_error) + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_alpha, __pyx_mstate_global->__pyx_float_0_8, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 217, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_alpha, __pyx_mstate_global->__pyx_float_0_8, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 218, __pyx_L1_error) __pyx_t_7 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_imshow, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 217, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":218 + /* "dopt_sensor_anomalies/detection.py":219 * ax.axis("off") * ax.imshow(image, alpha=0.8) * ax.imshow(result.anomaly_map_resized, cmap="jet", alpha=0.5) # <<<<<<<<<<<<<< @@ -9499,20 +9526,20 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( */ __pyx_t_1 = __pyx_v_ax; __Pyx_INCREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_anomaly_map_resized); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_result, __pyx_mstate_global->__pyx_n_u_anomaly_map_resized); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = 0; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_1, __pyx_t_5}; - __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 218, __pyx_L1_error) + __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_cmap, __pyx_mstate_global->__pyx_n_u_jet, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 218, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_alpha, __pyx_mstate_global->__pyx_float_0_5, __pyx_t_6, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 218, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_cmap, __pyx_mstate_global->__pyx_n_u_jet, __pyx_t_6, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_alpha, __pyx_mstate_global->__pyx_float_0_5, __pyx_t_6, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 219, __pyx_L1_error) __pyx_t_7 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_imshow, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6); __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 218, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 219, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; @@ -9520,7 +9547,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "dopt_sensor_anomalies/detection.py":220 + /* "dopt_sensor_anomalies/detection.py":221 * ax.imshow(result.anomaly_map_resized, cmap="jet", alpha=0.5) * * plt.subplots_adjust(wspace=0, hspace=0) # <<<<<<<<<<<<<< @@ -9528,9 +9555,9 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * (folder_path / f"{file_stem}{const.HEATMAP_FILENAME_SUFFIX}.png"), */ __pyx_t_3 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 220, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 221, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_subplots_adjust); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 220, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_subplots_adjust); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 221, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __pyx_t_8 = 1; @@ -9547,20 +9574,20 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( #endif { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_3, NULL}; - __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 220, __pyx_L1_error) + __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 221, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_wspace, __pyx_mstate_global->__pyx_int_0, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 220, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_hspace, __pyx_mstate_global->__pyx_int_0, __pyx_t_7, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 220, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_wspace, __pyx_mstate_global->__pyx_int_0, __pyx_t_7, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 221, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_hspace, __pyx_mstate_global->__pyx_int_0, __pyx_t_7, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 221, __pyx_L1_error) __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_6, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 220, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 221, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "dopt_sensor_anomalies/detection.py":221 + /* "dopt_sensor_anomalies/detection.py":222 * * plt.subplots_adjust(wspace=0, hspace=0) * plt.savefig( # <<<<<<<<<<<<<< @@ -9568,38 +9595,38 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * bbox_inches="tight", */ __pyx_t_6 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 221, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_savefig); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 221, __pyx_L1_error) + __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_savefig); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":222 + /* "dopt_sensor_anomalies/detection.py":223 * plt.subplots_adjust(wspace=0, hspace=0) * plt.savefig( * (folder_path / f"{file_stem}{const.HEATMAP_FILENAME_SUFFIX}.png"), # <<<<<<<<<<<<<< * bbox_inches="tight", * pad_inches=0, */ - __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_file_stem, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 222, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_file_stem, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 222, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_const); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_HEATMAP_FILENAME_SUFFIX); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_HEATMAP_FILENAME_SUFFIX); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 222, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_15[0] = __pyx_t_7; __pyx_t_15[1] = __pyx_t_5; __pyx_t_15[2] = __pyx_mstate_global->__pyx_kp_u_png; __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_15, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 4, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5)); - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_folder_path, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 222, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_folder_path, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 223, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = 1; @@ -9616,21 +9643,21 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( #endif { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_6, __pyx_t_5}; - __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 221, __pyx_L1_error) + __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_bbox_inches, __pyx_mstate_global->__pyx_n_u_tight, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 221, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_pad_inches, __pyx_mstate_global->__pyx_int_0, __pyx_t_1, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 221, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_bbox_inches, __pyx_mstate_global->__pyx_n_u_tight, __pyx_t_1, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 222, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_pad_inches, __pyx_mstate_global->__pyx_int_0, __pyx_t_1, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 222, __pyx_L1_error) __pyx_t_4 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 221, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 222, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "dopt_sensor_anomalies/detection.py":226 + /* "dopt_sensor_anomalies/detection.py":227 * pad_inches=0, * ) * plt.close() # <<<<<<<<<<<<<< @@ -9638,9 +9665,9 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * df = DataFrame([data_csv]) */ __pyx_t_3 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_plt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 226, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_close); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_8 = 1; @@ -9660,12 +9687,12 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_4 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_5, __pyx_callargs+__pyx_t_8, (1-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 226, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 227, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "dopt_sensor_anomalies/detection.py":228 + /* "dopt_sensor_anomalies/detection.py":229 * plt.close() * * df = DataFrame([data_csv]) # <<<<<<<<<<<<<< @@ -9673,13 +9700,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( * (folder_path / f"{file_stem}.csv"), */ __pyx_t_5 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_DataFrame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 228, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_DataFrame); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error) + __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_INCREF(__pyx_v_data_csv); __Pyx_GIVEREF(__pyx_v_data_csv); - if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_data_csv) != (0)) __PYX_ERR(0, 228, __pyx_L1_error); + if (__Pyx_PyList_SET_ITEM(__pyx_t_1, 0, __pyx_v_data_csv) != (0)) __PYX_ERR(0, 229, __pyx_L1_error); __pyx_t_8 = 1; #if CYTHON_UNPACK_METHODS if (unlikely(PyMethod_Check(__pyx_t_3))) { @@ -9698,13 +9725,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 228, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __pyx_v_df = __pyx_t_4; __pyx_t_4 = 0; - /* "dopt_sensor_anomalies/detection.py":229 + /* "dopt_sensor_anomalies/detection.py":230 * * df = DataFrame([data_csv]) * df.to_csv( # <<<<<<<<<<<<<< @@ -9714,55 +9741,55 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( __pyx_t_3 = __pyx_v_df; __Pyx_INCREF(__pyx_t_3); - /* "dopt_sensor_anomalies/detection.py":230 + /* "dopt_sensor_anomalies/detection.py":231 * df = DataFrame([data_csv]) * df.to_csv( * (folder_path / f"{file_stem}.csv"), # <<<<<<<<<<<<<< * mode="w", * index=False, */ - __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_file_stem, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_file_stem, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_csv); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyUnicode_Concat__Pyx_ReferenceSharing_OwnStrongReferenceInPlace(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_csv); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_folder_path, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 230, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_folder_path, __pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 231, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - /* "dopt_sensor_anomalies/detection.py":234 + /* "dopt_sensor_anomalies/detection.py":235 * index=False, * header=False, * quoting=csv.QUOTE_NONE, # <<<<<<<<<<<<<< * sep=";", * ) */ - __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_csv_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 234, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_csv_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QUOTE_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 234, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_QUOTE_NONE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 235, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_8 = 0; { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 5 : 0)] = {__pyx_t_3, __pyx_t_1}; - __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 229, __pyx_L1_error) + __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_5); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_mode, __pyx_mstate_global->__pyx_n_u_w, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 229, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_index, Py_False, __pyx_t_5, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 229, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_header, Py_False, __pyx_t_5, __pyx_callargs+2, 2) < (0)) __PYX_ERR(0, 229, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_quoting, __pyx_t_6, __pyx_t_5, __pyx_callargs+2, 3) < (0)) __PYX_ERR(0, 229, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_sep, __pyx_mstate_global->__pyx_kp_u__4, __pyx_t_5, __pyx_callargs+2, 4) < (0)) __PYX_ERR(0, 229, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_mode, __pyx_mstate_global->__pyx_n_u_w, __pyx_t_5, __pyx_callargs+2, 0) < (0)) __PYX_ERR(0, 230, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_index, Py_False, __pyx_t_5, __pyx_callargs+2, 1) < (0)) __PYX_ERR(0, 230, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_header, Py_False, __pyx_t_5, __pyx_callargs+2, 2) < (0)) __PYX_ERR(0, 230, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_quoting, __pyx_t_6, __pyx_t_5, __pyx_callargs+2, 3) < (0)) __PYX_ERR(0, 230, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_sep, __pyx_mstate_global->__pyx_kp_u__4, __pyx_t_5, __pyx_callargs+2, 4) < (0)) __PYX_ERR(0, 230, __pyx_L1_error) __pyx_t_4 = __Pyx_Object_VectorcallMethod_CallFromBuilder((PyObject*)__pyx_mstate_global->__pyx_n_u_to_csv, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; - if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 229, __pyx_L1_error) + if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 230, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); } __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; - /* "dopt_sensor_anomalies/detection.py":193 + /* "dopt_sensor_anomalies/detection.py":194 * * * def anomaly_detection( # <<<<<<<<<<<<<< @@ -9802,7 +9829,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_8anomaly_detection( return __pyx_r; } -/* "dopt_sensor_anomalies/detection.py":239 +/* "dopt_sensor_anomalies/detection.py":240 * * * @result_pattern.wrap_result(100) # <<<<<<<<<<<<<< @@ -9851,46 +9878,46 @@ PyObject *__pyx_args, PyObject *__pyx_kwds { PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_user_img_path,&__pyx_mstate_global->__pyx_n_u_pixels_per_metric_X,&__pyx_mstate_global->__pyx_n_u_pixels_per_metric_Y,0}; const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0; - if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 239, __pyx_L3_error) + if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 240, __pyx_L3_error) if (__pyx_kwds_len > 0) { switch (__pyx_nargs) { case 3: values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 239, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 240, __pyx_L3_error) CYTHON_FALLTHROUGH; case 2: values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 239, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 240, __pyx_L3_error) CYTHON_FALLTHROUGH; case 1: values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 239, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 240, __pyx_L3_error) CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } const Py_ssize_t kwd_pos_args = __pyx_nargs; - if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "pipeline", 0) < (0)) __PYX_ERR(0, 239, __pyx_L3_error) + if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "pipeline", 0) < (0)) __PYX_ERR(0, 240, __pyx_L3_error) for (Py_ssize_t i = __pyx_nargs; i < 3; i++) { - if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("pipeline", 1, 3, 3, i); __PYX_ERR(0, 239, __pyx_L3_error) } + if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("pipeline", 1, 3, 3, i); __PYX_ERR(0, 240, __pyx_L3_error) } } } else if (unlikely(__pyx_nargs != 3)) { goto __pyx_L5_argtuple_error; } else { values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 239, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 240, __pyx_L3_error) values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 239, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 240, __pyx_L3_error) values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2); - if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 239, __pyx_L3_error) + if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 240, __pyx_L3_error) } __pyx_v_user_img_path = ((PyObject*)values[0]); - __pyx_v_pixels_per_metric_X = __Pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_pixels_per_metric_X == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 242, __pyx_L3_error) - __pyx_v_pixels_per_metric_Y = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_pixels_per_metric_Y == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L3_error) + __pyx_v_pixels_per_metric_X = __Pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_pixels_per_metric_X == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 243, __pyx_L3_error) + __pyx_v_pixels_per_metric_Y = __Pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_pixels_per_metric_Y == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 244, __pyx_L3_error) } goto __pyx_L6_skip; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("pipeline", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 239, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("pipeline", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 240, __pyx_L3_error) __pyx_L6_skip:; goto __pyx_L4_argument_unpacking_done; __pyx_L3_error:; @@ -9901,7 +9928,7 @@ PyObject *__pyx_args, PyObject *__pyx_kwds __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_user_img_path), (&PyUnicode_Type), 0, "user_img_path", 2))) __PYX_ERR(0, 241, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_user_img_path), (&PyUnicode_Type), 0, "user_img_path", 2))) __PYX_ERR(0, 242, __pyx_L1_error) __pyx_r = __pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(__pyx_self, __pyx_v_user_img_path, __pyx_v_pixels_per_metric_X, __pyx_v_pixels_per_metric_Y); /* function exit code */ @@ -9943,7 +9970,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U int __pyx_clineno = 0; __Pyx_RefNannySetupContext("pipeline", 0); - /* "dopt_sensor_anomalies/detection.py":245 + /* "dopt_sensor_anomalies/detection.py":246 * pixels_per_metric_Y: float, * ) -> None: * file_path = Path(user_img_path) # <<<<<<<<<<<<<< @@ -9951,7 +9978,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U * raise FileNotFoundError("The provided path seems not to exist") */ __pyx_t_2 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Path); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS @@ -9970,13 +9997,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_file_path = __pyx_t_1; __pyx_t_1 = 0; - /* "dopt_sensor_anomalies/detection.py":246 + /* "dopt_sensor_anomalies/detection.py":247 * ) -> None: * file_path = Path(user_img_path) * if not file_path.exists(): # <<<<<<<<<<<<<< @@ -9990,15 +10017,15 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL}; __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_exists, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 246, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } - __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 246, __pyx_L1_error) + __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 247, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_6 = (!__pyx_t_5); if (unlikely(__pyx_t_6)) { - /* "dopt_sensor_anomalies/detection.py":247 + /* "dopt_sensor_anomalies/detection.py":248 * file_path = Path(user_img_path) * if not file_path.exists(): * raise FileNotFoundError("The provided path seems not to exist") # <<<<<<<<<<<<<< @@ -10011,14 +10038,14 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_The_provided_path_seems_not_to_e}; __pyx_t_1 = __Pyx_PyObject_FastCall((PyObject*)(((PyTypeObject*)PyExc_FileNotFoundError)), __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 247, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 248, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_Raise(__pyx_t_1, 0, 0, 0); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __PYX_ERR(0, 247, __pyx_L1_error) + __PYX_ERR(0, 248, __pyx_L1_error) - /* "dopt_sensor_anomalies/detection.py":246 + /* "dopt_sensor_anomalies/detection.py":247 * ) -> None: * file_path = Path(user_img_path) * if not file_path.exists(): # <<<<<<<<<<<<<< @@ -10027,16 +10054,16 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U */ } - /* "dopt_sensor_anomalies/detection.py":249 + /* "dopt_sensor_anomalies/detection.py":250 * raise FileNotFoundError("The provided path seems not to exist") * * MODEL_FOLDER: Final[Path] = dopt_sensor_anomalies._find_paths.get_model_folder() # <<<<<<<<<<<<<< * DETECTION_MODELS: Final[t.DetectionModels] = ( * dopt_sensor_anomalies._find_paths.get_detection_models(MODEL_FOLDER) */ - __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 249, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); - __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_find_paths); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 249, __pyx_L1_error) + __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_find_paths); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __pyx_t_3 = __pyx_t_7; @@ -10047,22 +10074,22 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_model_folder, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 249, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 250, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_MODEL_FOLDER = __pyx_t_1; __pyx_t_1 = 0; - /* "dopt_sensor_anomalies/detection.py":251 + /* "dopt_sensor_anomalies/detection.py":252 * MODEL_FOLDER: Final[Path] = dopt_sensor_anomalies._find_paths.get_model_folder() * DETECTION_MODELS: Final[t.DetectionModels] = ( * dopt_sensor_anomalies._find_paths.get_detection_models(MODEL_FOLDER) # <<<<<<<<<<<<<< * ) * */ - __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 251, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_find_paths); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 251, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_find_paths); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_7 = __pyx_t_2; @@ -10073,13 +10100,13 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __pyx_t_1 = __Pyx_PyObject_FastCallMethod((PyObject*)__pyx_mstate_global->__pyx_n_u_get_detection_models, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 251, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 252, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __pyx_v_DETECTION_MODELS = __pyx_t_1; __pyx_t_1 = 0; - /* "dopt_sensor_anomalies/detection.py":254 + /* "dopt_sensor_anomalies/detection.py":255 * ) * * data_csv, sensor_images = measure_length( # <<<<<<<<<<<<<< @@ -10087,19 +10114,19 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U * ) */ __pyx_t_2 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_measure_length); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 254, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_measure_length); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - /* "dopt_sensor_anomalies/detection.py":255 + /* "dopt_sensor_anomalies/detection.py":256 * * data_csv, sensor_images = measure_length( * file_path, pixels_per_metric_X, pixels_per_metric_Y # <<<<<<<<<<<<<< * ) * anomaly_detection( */ - __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pixels_per_metric_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 255, __pyx_L1_error) + __pyx_t_3 = PyFloat_FromDouble(__pyx_v_pixels_per_metric_X); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - __pyx_t_8 = PyFloat_FromDouble(__pyx_v_pixels_per_metric_Y); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L1_error) + __pyx_t_8 = PyFloat_FromDouble(__pyx_v_pixels_per_metric_Y); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 256, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); __pyx_t_4 = 1; #if CYTHON_UNPACK_METHODS @@ -10120,7 +10147,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 254, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) { @@ -10129,7 +10156,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U if (unlikely(size != 2)) { if (size > 2) __Pyx_RaiseTooManyValuesError(2); else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size); - __PYX_ERR(0, 254, __pyx_L1_error) + __PYX_ERR(0, 255, __pyx_L1_error) } #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS if (likely(PyTuple_CheckExact(sequence))) { @@ -10139,22 +10166,22 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __Pyx_INCREF(__pyx_t_8); } else { __pyx_t_7 = __Pyx_PyList_GetItemRefFast(sequence, 0, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 254, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_7); __pyx_t_8 = __Pyx_PyList_GetItemRefFast(sequence, 1, __Pyx_ReferenceSharing_SharedReference); - if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 254, __pyx_L1_error) + if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L1_error) __Pyx_XGOTREF(__pyx_t_8); } #else - __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 254, __pyx_L1_error) + __pyx_t_7 = __Pyx_PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 254, __pyx_L1_error) + __pyx_t_8 = __Pyx_PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_8); #endif __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; } else { Py_ssize_t index = -1; - __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 254, __pyx_L1_error) + __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 255, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); @@ -10162,7 +10189,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __Pyx_GOTREF(__pyx_t_7); index = 1; __pyx_t_8 = __pyx_t_9(__pyx_t_3); if (unlikely(!__pyx_t_8)) goto __pyx_L4_unpacking_failed; __Pyx_GOTREF(__pyx_t_8); - if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 2) < (0)) __PYX_ERR(0, 254, __pyx_L1_error) + if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_3), 2) < (0)) __PYX_ERR(0, 255, __pyx_L1_error) __pyx_t_9 = NULL; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; goto __pyx_L5_unpacking_done; @@ -10170,11 +10197,11 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __pyx_t_9 = NULL; if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index); - __PYX_ERR(0, 254, __pyx_L1_error) + __PYX_ERR(0, 255, __pyx_L1_error) __pyx_L5_unpacking_done:; } - /* "dopt_sensor_anomalies/detection.py":254 + /* "dopt_sensor_anomalies/detection.py":255 * ) * * data_csv, sensor_images = measure_length( # <<<<<<<<<<<<<< @@ -10186,7 +10213,7 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U __pyx_v_sensor_images = __pyx_t_8; __pyx_t_8 = 0; - /* "dopt_sensor_anomalies/detection.py":257 + /* "dopt_sensor_anomalies/detection.py":258 * file_path, pixels_per_metric_X, pixels_per_metric_Y * ) * anomaly_detection( # <<<<<<<<<<<<<< @@ -10194,10 +10221,10 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U * detection_models=DETECTION_MODELS, */ __pyx_t_8 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_anomaly_detection); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 257, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_anomaly_detection); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); - /* "dopt_sensor_anomalies/detection.py":261 + /* "dopt_sensor_anomalies/detection.py":262 * detection_models=DETECTION_MODELS, * data_csv=data_csv, * sensor_images=sensor_images, # <<<<<<<<<<<<<< @@ -10217,22 +10244,22 @@ static PyObject *__pyx_pf_21dopt_sensor_anomalies_9detection_10pipeline(CYTHON_U #endif { PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 4 : 0)] = {__pyx_t_8, NULL}; - __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 257, __pyx_L1_error) + __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_3); - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_img_path, __pyx_v_file_path, __pyx_t_3, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 257, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_detection_models, __pyx_v_DETECTION_MODELS, __pyx_t_3, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 257, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_data_csv, __pyx_v_data_csv, __pyx_t_3, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 257, __pyx_L1_error) - if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_sensor_images, __pyx_v_sensor_images, __pyx_t_3, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 257, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_img_path, __pyx_v_file_path, __pyx_t_3, __pyx_callargs+1, 0) < (0)) __PYX_ERR(0, 258, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_detection_models, __pyx_v_DETECTION_MODELS, __pyx_t_3, __pyx_callargs+1, 1) < (0)) __PYX_ERR(0, 258, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_data_csv, __pyx_v_data_csv, __pyx_t_3, __pyx_callargs+1, 2) < (0)) __PYX_ERR(0, 258, __pyx_L1_error) + if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_sensor_images, __pyx_v_sensor_images, __pyx_t_3, __pyx_callargs+1, 3) < (0)) __PYX_ERR(0, 258, __pyx_L1_error) __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder((PyObject*)__pyx_t_7, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3); __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 257, __pyx_L1_error) + if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 258, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "dopt_sensor_anomalies/detection.py":239 + /* "dopt_sensor_anomalies/detection.py":240 * * * @result_pattern.wrap_result(100) # <<<<<<<<<<<<<< @@ -12475,31 +12502,31 @@ __Pyx_RefNannySetupContext("PyInit_detection", 0); if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_infer_image, __pyx_t_6) < (0)) __PYX_ERR(0, 158, __pyx_L1_error) __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - /* "dopt_sensor_anomalies/detection.py":193 + /* "dopt_sensor_anomalies/detection.py":194 * * * def anomaly_detection( # <<<<<<<<<<<<<< * img_path: Path, * detection_models: t.DetectionModels, */ - __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 193, __pyx_L1_error) + __pyx_t_6 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_6); - if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_img_path, __pyx_mstate_global->__pyx_n_u_Path) < (0)) __PYX_ERR(0, 193, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_detection_models, __pyx_mstate_global->__pyx_kp_u_t_DetectionModels) < (0)) __PYX_ERR(0, 193, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_data_csv, __pyx_mstate_global->__pyx_kp_u_t_CsvData) < (0)) __PYX_ERR(0, 193, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_sensor_images, __pyx_mstate_global->__pyx_kp_u_t_SensorImages) < (0)) __PYX_ERR(0, 193, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 193, __pyx_L1_error) - __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_21dopt_sensor_anomalies_9detection_9anomaly_detection, 0, __pyx_mstate_global->__pyx_n_u_anomaly_detection, NULL, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies_detection, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 193, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_img_path, __pyx_mstate_global->__pyx_n_u_Path) < (0)) __PYX_ERR(0, 194, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_detection_models, __pyx_mstate_global->__pyx_kp_u_t_DetectionModels) < (0)) __PYX_ERR(0, 194, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_data_csv, __pyx_mstate_global->__pyx_kp_u_t_CsvData) < (0)) __PYX_ERR(0, 194, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_sensor_images, __pyx_mstate_global->__pyx_kp_u_t_SensorImages) < (0)) __PYX_ERR(0, 194, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 194, __pyx_L1_error) + __pyx_t_7 = __Pyx_CyFunction_New(&__pyx_mdef_21dopt_sensor_anomalies_9detection_9anomaly_detection, 0, __pyx_mstate_global->__pyx_n_u_anomaly_detection, NULL, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies_detection, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_7); #endif __Pyx_CyFunction_SetAnnotationsDict(__pyx_t_7, __pyx_t_6); __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_anomaly_detection, __pyx_t_7) < (0)) __PYX_ERR(0, 193, __pyx_L1_error) + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_anomaly_detection, __pyx_t_7) < (0)) __PYX_ERR(0, 194, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; - /* "dopt_sensor_anomalies/detection.py":239 + /* "dopt_sensor_anomalies/detection.py":240 * * * @result_pattern.wrap_result(100) # <<<<<<<<<<<<<< @@ -12508,9 +12535,9 @@ __Pyx_RefNannySetupContext("PyInit_detection", 0); */ __pyx_t_6 = NULL; __pyx_t_4 = NULL; - __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_result_pattern); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 239, __pyx_L1_error) + __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_result_pattern); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_9); - __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_wrap_result); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_wrap_result); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0; __pyx_t_8 = 1; @@ -12519,16 +12546,16 @@ __Pyx_RefNannySetupContext("PyInit_detection", 0); __pyx_t_2 = __Pyx_PyObject_FastCall((PyObject*)__pyx_t_10, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET)); __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; - if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 239, __pyx_L1_error) + if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); } - __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 239, __pyx_L1_error) + __pyx_t_10 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_10); - if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_user_img_path, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 239, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_pixels_per_metric_X, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(0, 239, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_pixels_per_metric_Y, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(0, 239, __pyx_L1_error) - if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 239, __pyx_L1_error) - __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_21dopt_sensor_anomalies_9detection_11pipeline, 0, __pyx_mstate_global->__pyx_n_u_pipeline, NULL, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies_detection, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 239, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_user_img_path, __pyx_mstate_global->__pyx_n_u_str) < (0)) __PYX_ERR(0, 240, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_pixels_per_metric_X, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(0, 240, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_pixels_per_metric_Y, __pyx_mstate_global->__pyx_n_u_float) < (0)) __PYX_ERR(0, 240, __pyx_L1_error) + if (PyDict_SetItem(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_return, __pyx_mstate_global->__pyx_n_u_None) < (0)) __PYX_ERR(0, 240, __pyx_L1_error) + __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_21dopt_sensor_anomalies_9detection_11pipeline, 0, __pyx_mstate_global->__pyx_n_u_pipeline, NULL, __pyx_mstate_global->__pyx_n_u_dopt_sensor_anomalies_detection, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_4); #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030E0000 PyUnstable_Object_EnableDeferredRefcount(__pyx_t_4); @@ -12542,10 +12569,10 @@ __Pyx_RefNannySetupContext("PyInit_detection", 0); __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 239, __pyx_L1_error) + if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_7); } - if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pipeline, __pyx_t_7) < (0)) __PYX_ERR(0, 239, __pyx_L1_error) + if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_pipeline, __pyx_t_7) < (0)) __PYX_ERR(0, 240, __pyx_L1_error) __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; /* "dopt_sensor_anomalies/detection.py":1 @@ -12602,7 +12629,8 @@ static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) { __pyx_builtin_min = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_min); if (!__pyx_builtin_min) __PYX_ERR(0, 143, __pyx_L1_error) __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_max); if (!__pyx_builtin_max) __PYX_ERR(0, 144, __pyx_L1_error) __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_zip); if (!__pyx_builtin_zip) __PYX_ERR(0, 84, __pyx_L1_error) - __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 207, __pyx_L1_error) + __pyx_builtin_print = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_print); if (!__pyx_builtin_print) __PYX_ERR(0, 179, __pyx_L1_error) + __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 208, __pyx_L1_error) /* Cached unbound methods */ __pyx_mstate->__pyx_umethod_PyDict_Type_items.type = (PyObject*)&PyDict_Type; @@ -12691,17 +12719,17 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]); - /* "dopt_sensor_anomalies/detection.py":205 + /* "dopt_sensor_anomalies/detection.py":206 * backbone=const.BACKBONE, layers=const.LAYERS, coreset_sampling_ratio=const.RATIO * ) * _, axes = plt.subplots(1, 2, figsize=(12, 6)) # <<<<<<<<<<<<<< * * for i, (side, image) in enumerate(sensor_images.items()): */ - __pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_1, __pyx_mstate_global->__pyx_int_2); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]); - __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_12, __pyx_mstate_global->__pyx_int_6); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(0, 205, __pyx_L1_error) + __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_int_12, __pyx_mstate_global->__pyx_int_6); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(0, 206, __pyx_L1_error) __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]); __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]); #if CYTHON_IMMORTAL_CONSTANTS @@ -12739,34 +12767,34 @@ static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) { static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) { CYTHON_UNUSED_VAR(__pyx_mstate); { - const struct { const unsigned int length: 10; } index[] = {{1},{3},{3},{81},{51},{31},{72},{179},{72},{36},{1},{1},{1},{1},{8},{4},{7},{6},{13},{2},{47},{9},{24},{21},{4},{38},{5},{9},{17},{17},{14},{19},{32},{3},{8},{3},{19},{14},{13},{5},{23},{16},{9},{5},{23},{5},{17},{15},{21},{6},{12},{11},{10},{7},{20},{4},{3},{9},{4},{20},{10},{5},{9},{3},{12},{12},{13},{1},{14},{3},{5},{15},{17},{13},{11},{19},{13},{5},{6},{18},{2},{4},{4},{8},{11},{6},{2},{5},{5},{4},{12},{3},{9},{5},{5},{2},{1},{2},{2},{4},{8},{11},{20},{10},{17},{18},{5},{6},{4},{4},{5},{9},{8},{7},{4},{22},{3},{7},{19},{20},{3},{4},{3},{8},{2},{2},{8},{16},{6},{2},{4},{4},{4},{8},{11},{21},{33},{31},{5},{5},{9},{9},{6},{9},{4},{8},{6},{8},{6},{7},{9},{9},{13},{14},{12},{11},{5},{7},{11},{10},{9},{8},{7},{21},{20},{16},{13},{4},{6},{6},{1},{6},{5},{8},{9},{3},{6},{8},{6},{6},{7},{5},{11},{12},{5},{12},{13},{12},{9},{4},{5},{3},{6},{6},{4},{17},{6},{4},{15},{8},{17},{3},{14},{31},{7},{8},{3},{11},{4},{5},{16},{10},{12},{8},{4},{7},{4},{2},{3},{12},{5},{12},{3},{12},{4},{6},{10},{6},{6},{7},{7},{11},{9},{8},{19},{19},{3},{3},{10},{4},{4},{6},{12},{7},{4},{6},{6},{14},{6},{5},{17},{2},{2},{7},{13},{4},{13},{3},{12},{10},{5},{4},{9},{13},{7},{4},{3},{8},{15},{1},{8},{9},{5},{5},{2},{5},{5},{5},{5},{2},{6},{9},{5},{12},{2},{5},{5},{5},{6},{5},{9},{13},{5},{6},{1},{8},{11},{6},{2},{2},{8},{5},{8},{5},{5},{5},{3},{284},{118},{52},{898},{340},{2},{2},{139}}; - #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (3091 bytes) */ -const char* const cstring = "BZh91AY&SY\355\244\247\\\000\001\240\177\377\377\377\377\377\377\377\377\377\277\377\377\377\277\377\377\362@@@@@@@@@@@@@\000@\000`\013\035\357\247\337/\033\337e:o\030v\305)\364j>\335V\336\353\331A\353\317\200\037|\032\247\221\020\246\232=#\311\251\355S\301\0314\300\324\236O@\005<\232\232l\243OM#'\265C@z\231\006\023\032\214\200\315&\206\203B\001\030\200\021\242i\351\006S*~E?T\3653Sj~\250\0314\0004\320\000\000\000\030\206\217D\003 jz# E6\247\252\236i\244\375SP\003M\000\030\200\000\032\000\000\000\000\r\0324\003\3244\00050$F\205\017L\247\223I\342Oi& \000\000\000\000\000\006\200\000\000\000\364\215=M4\006j\204MMO)\346\243Si\244\310\311\210\000h\003@\000\0004\000\003A\352\032\000\000\000\000\321I\355H\236\021\250dd\001\220\032\032\003@\000\000\000\000\000\000\000\000\000\002H\300a\316\316\005\017\326\034\377\332\220Cw%\030`3\301\310\352\216\221\212\200\024$\023B\003\372\003\004 L@\304\010M\003@\320\010\000g\361\316\004\200a\001=\004\210\216\344\277\210\032\231i\370/\344 \020 GK\262M\203#\006@\201\240H\022@\n\211%R\244\3237'&\245\025z\341DR\251<\310Nl\0053uIL\207D\367\022\236i\231pS\230-\320\347QJq\251\310\305\270\006\025M!\025X\220H \211\000\220\023\002\242\360\032\200\315\023ws6q\031c\013\023\311-\235\362\320\234\005/\210c\210V\215\022\250\r\342\225\330\032\032)\246k\001k\252U\216G\364W\020\362\025D\t\312Px\nxYq\001\021\230\263C\312\303rS\374i\037\347\326\371\277\025\\)\303\346O\227\317\177\274\322\201\2222\347\216\371.\376\034\311Qb/\373_\370\302R\254\312\003{Jm\006E\301\035\000\320\245,\222\306.\253),\306\021\252V\026\205\310lt\326E\325D\031f\352\240\220\257\357\235\302\263\301^\014\331M:\205\021\001b\314\313*l\347\332\313E\262\263o\n\224\203D)\352\214O\004\251D\261l}\335\241\350ag\006i\311\231\215u\000\013\023\007:\036\036\335\014\005>\2405_KHW\237\266\230/\334yj!\260\271\371\025\242\203\"\300\300h\024\336s\365\304\245\377~\350\234\342)\224\345\203\216\023\201\330}\261\242\210\020\311\2118\215\005\301\240\025\215\005:f4i\263D\316\251\275jI\003\320N\315\241\202\350""\033[\237\\0\260\236>^\351av\362K\211\033\312F\\d\200Y@?S)K+\005\223\230\2643Q\255\r\301O4&\265\235\237\302E\353\242Ye\372.\"1\352\375\354w\230\313\321\347\323\253\317\225\265\365\250;\022\300d-\320\277\220\345:\223\330\356\376\207\032\242\"5\304rq\234}\236\224<\371\305K\357v\306mx@N#/c4\335u\227S\355\221\306O\340Y]w\013\257\231\035\320\2108\033\361\363\301z\n\000v%\302\311J\270\321\333\206c\237\265\253\210\035=y\347af/6u\013zz\255Xr\226-g.\033\030\3359\252\032\1776\266\233\204\304y\330\245z3\311\303\200\257o]\343w\\\203\206\205\214=;\267\250M\332\374e\261(g\213\000\321\342\353\311\205\2604\360\270&S<\260\2458`PW]x\252Sc\332\027u.\026U\t\242\030\210\032\377ojb+\260\274\020\363\rt\310Y\261\023\177@\224Dc\232\240!G\241\355t\326\016f\335\360!\260q\341}|\245g\314\212\306\213\305AD\032\261\306\356\327\367 pm\303\025\265\250\030(\331\330\rP\351\370\313\302\177\221\030d\241\310\213\236\2038\260\326\202\263wm\346+\322\223h[qFr\375t\275ls\211w$e\335#\035\254\350\001_\352\331\203\342\343+?_\313\216\254\261\206\017p;\004\351m\020\265wb\021\261J\305\004\324\031$B\004\266\330\224\020\273\360m%\026 \265\304\\F\271\211\311\355D\000\211\212%\336R\241\270P\"v\252\362&\217\310\225\306\346c\013\210\345\302\242\213=\260\005\214\007tr\356R)\010\300_\253]_\007\375\270\234A\364\031B\352}\376\r\271W[\361\035\262\360)\213\255\2423\221\211\315\336\340]TeCi+\363qS\224\314q\0208\361`\256\200n\213\014\000\212\213\\\315\227\\6\233\t\344\036}\244]\203\257\263\340 _\220\330h\242\36159\267\215\322\327Y\260nen\350}\203i\373\307\001\307\300\274]\346\337^\303\327;\004\024g\337nC^C,\035\313TG?\263\244\254c\362p0\206vh\"\253\271\031;\005*\326\234\025j\342\271\331[\330\352\223K`\002X\021$\350)\307\253hgY\337$w+\013@\221\010K\252\323-\314\364\032q4\254\034\264\321\010\260\336\354\342\254\300\016\305\205\022\246\245\037\236\201m\270\312\344\027\230(\304\332\246\260\177k\257\030d\223\221\232\027\033b\312!S\253\203\2550\216:D\216vD\354K\035\034xe\227\r[5\363$\301\216\\\265X\266\334\307\345\301\202\372w\212""\t\204\361\356\255\254hr\031\240\356\212Pt\016hA\242M{D@\n\213Q\376J\026\033\311\216)AA\032\246\016\325W\301\236M\2640\276\253\260\rl.o\025x\263jM\251\304\030\016*\016\006\252\320Z\226D-\032\034;\311DK\331V\017S\031l&\327\330\322\346}\202\2619;\302\367\213\334\0368\262\336+\261m\322d\315\345p\312\363\311x\006\301\004s\235\265#\354pN\376\022\201\205a\327\020\027M\227\006omU\240m\211\242[\210\241\307%SP\347\3367\353\036^\317Q\3219\320N\330\265\236\314p\025\017\371\266\345\366v\267\235\210b\034\313\244\006x\013\270j!h\025\021\356\247\260\025\246P\251\0102\313\030\361\272\362\024\343\311\222\333jS\n\030\2633j|\335M\255\005\214A\031\020\252D{\330`\212\"\033\224\320\200\226v\2270\254d\315qWRU\300@\037P\247\216a\214,\215\241\252P\014`\016\3059\006\253sPi\214\3366\271\307q^\244\354\345wc\351\256O\362YB\205Ej\336g\331;f\266\035lM\002.v\276\341\240\017`\332\204A\351\327\214\260\257\242\351\206[\270\320\214\242\222A!\013L\267A\035\310+'\233\267g\254SC\2517\226p\326\265\017\254\212I`\272\202\245\007oU\033\267\312\314\242\271^\022\246\274#\n\214\005\"\327{\024\r\331\354!\351\322 A\301\340\030;\016\320\205&\030P\014-\254\202\032\350\246a\031x\361 \300\020NJ \010\262t\013b\036\240m\357\33280[\200\211\262\212\027\244e\331\036\241C\020E\353\n\261\"i\246\235;\344Hv\010H$\022\201\002\326\346Q\253\006\n0H\225\202\"EL\202\234\222\3444\204\3270A\010\006\240k\210+\007a\343\213\002\n\204\242)6h\201\211t\301m\226\203dA\307\001\250\214\315D\245\031\020D\327Q\240\255v\313u\320\363\255\200\313h\245~\024&\032\265\000\025f\000\273\315\013\374\005r\325\026\326\324\247\025bX2\253\273)\2426ST\343\327u\030\301\250\023\245\234\262\302\225\221\031\221R*\224\332&a\241\020Z\365\225\217\013\r\"\232\221\017j\205&3\2426!d\235\265*\352\260\257M\245\t\"\262\302\303T\252\244\013k\r\310q%c\031J\333\216\246\214\245K w\324\271\205\222\017.%\251u\235\003\313\323\017&\332\337X\026\3360'\212\367\264\202:\2277\222\222+\230\202\370)\270 \350\010\010`C\002=Z\327\001V1]\241\222\2260\275\324\310~\016\226\260\257\204""\022\212B\000H\306\221\223-p\251\32152\235_^^%h\243\036\025\225\254lU8\306\3356e\022\240\276\327)\272[)P,%Si)\023\304\314P\004\2562\000n\205q<(I+*\007\210SI\006\032\031\235*Q\205()\213\331\230\331\260\r\323\302\002\271%\033\010\020\2579\302\366\333%\004\201\241\031\030 6\262\273\004\014Q\266BH\210\266\226\312b\r*\256\006$a\254\222\313Sk\341\205c\026\313ZK\214\202fN8\242\002g\213{\337\242\204\270QU\022`h0\310\333[.\n|\203\324\243\261mUV%\253y\260NJ \261\3260\002\265\340\366\372\273\206\341\270p\271\267\201A\346aU\341\237wC\031\320+\330\270\227\235\265#\t\266\003u\267\320=n\333)\013\025\003~B\320 \221:\"\202'\267\225\"\341\202\200\037\t\245\010\300\035#0s\333'\300N\243d\026y\235\240\214\226q]\353\315\200n\215\006\025;b\251\221\231\031\213L\033\273pu\235\253T\036\334o\307\000\035\223%M\004B\263\252\245\030\273\032\324\361m\026\004Wz\2258\200\343DT^\2367A\253\306\312\352\346g\240Zi\313\341\263\335\261\340U\257+p\271\340\303\373k\321\321\302E\221\212}\361\201\271\255?H\312z\005\250\236\024\020\200\267?\205\177P`C\317X\327\343\272\"\350\304Zi\223\013\203M\254\021\017lF\321!\340\226\336\025Q\013\321(a\206\251W\002\212\242\232\"\230\212\361\322\240-\000\032\3123\000\314\005\201\222\301\270\202\020\225\021\341\256\003\000](\254F\267\250\316a1\304\211\003\226\236\030\313]\204+\025f\316\023\365)\361\374\205\376\337\305\371\210!+\257\305\232\313\3646\035~\303\331\0131\227s1r\251\224\007\001\335\364q\341\253\032_(\256\377\314\272%\3362\r@\226\\W1m\226\370\241\t\033\010A\357\000IBYk\234\275J\004\031d #r\311\262\013{\207\230\320\013U\031\277\211\377H\373\3115\002\002\204\n8\320\"\374\254H\350BK\236@\341\223#`\207*\r\261\231gq\t)b\213\024\364\333 \233%\261+O\357i\265d\262s\001L26A16\267?\020A\246i\003\346\232;Z\001\233*\t\251\201\2377\017\032\306'o\2539,\353\315\014\357\374\326\010?\327\005\023g\222}\263\246\332\332\241]\303\027)\334\345|*\020hW\t\235J\205Ji\250\225v\314\022\270\253\177\177tj\325\254\232\233\352\231\304\332\344\257\347\252+\226\241XPU\016\n\247\253v\365\212\264""\342\327\250\200+_Z\365k\356j$l3B\255#\024=\300\212\232\0026\305\35259\316\221\\Rx\014\321f\200\242Zs\no\276\3461\336\303\204]\031\314K-\233\262He\232\222\365%J\220\320+\335\346\270\245\335\345Q\010`JX\357f\251\340\224\244\246\251J\323\321\267r\374\237\345\366\255\215(\326\242\304\265e\245;\235\021`\213\020s,v\341:}\301\376\025\206\265|Wp\023\350z\330\272*\234\030\02060A\237t>\017X\346\0140\363\220\r)R\231\361\001\242\356\315}Q\263Wd8\004)v\332\243\264:x\356\206+\323\260|6\311\344'J\007\260\300_\320\3741'RtT8n\031\313\265e\314(kDxIq\257\005+*\254\316A\200\354H\252\354\346\220\"`\325L+fy2(\033\264\262\321R\232cRbt\205\326Qe+\022\241\312\304\242\036\261\\\301\236\364\260\"\261z\001\301\3510H\216\001\210\332JG'\306\321\3075x\311\003d\351\213\242\315\032S\233,\360\n\351@D\377\361w$S\205\t\016\332Ju\300"; - PyObject *data = __Pyx_DecompressString(cstring, 3091, 2); + const struct { const unsigned int length: 10; } index[] = {{1},{3},{3},{19},{81},{51},{31},{72},{179},{72},{36},{1},{1},{1},{1},{8},{4},{7},{6},{13},{2},{47},{9},{24},{21},{4},{38},{5},{9},{17},{17},{14},{19},{32},{3},{8},{3},{19},{14},{13},{5},{23},{16},{9},{5},{23},{5},{17},{15},{21},{6},{12},{11},{10},{7},{20},{4},{3},{9},{4},{20},{10},{5},{9},{3},{12},{12},{13},{1},{14},{3},{5},{15},{17},{13},{11},{19},{13},{5},{6},{18},{2},{4},{4},{8},{11},{6},{2},{5},{5},{4},{12},{3},{9},{5},{5},{2},{1},{2},{2},{4},{8},{11},{20},{10},{17},{18},{5},{6},{4},{4},{5},{9},{8},{7},{4},{22},{3},{7},{19},{20},{3},{4},{3},{8},{2},{2},{8},{16},{6},{2},{4},{4},{4},{8},{11},{21},{33},{31},{5},{5},{9},{9},{6},{9},{4},{8},{6},{8},{6},{7},{9},{9},{13},{14},{12},{11},{5},{7},{11},{10},{9},{8},{7},{21},{20},{16},{13},{4},{6},{6},{1},{6},{5},{8},{9},{3},{6},{8},{6},{6},{7},{5},{11},{12},{5},{12},{13},{12},{9},{4},{5},{3},{6},{6},{4},{17},{6},{4},{15},{8},{17},{3},{14},{31},{7},{8},{3},{11},{4},{5},{16},{10},{12},{8},{4},{7},{4},{2},{3},{12},{5},{12},{3},{12},{4},{6},{10},{6},{6},{7},{7},{11},{9},{8},{19},{19},{3},{3},{10},{5},{4},{4},{6},{12},{7},{4},{6},{6},{14},{6},{5},{17},{2},{2},{7},{13},{4},{13},{3},{12},{10},{5},{4},{9},{13},{7},{4},{3},{8},{15},{1},{8},{9},{5},{5},{2},{5},{5},{5},{5},{2},{6},{9},{5},{12},{2},{5},{5},{5},{6},{5},{9},{13},{5},{6},{1},{8},{11},{6},{2},{2},{8},{5},{8},{5},{5},{5},{3},{296},{118},{52},{898},{340},{2},{2},{139}}; + #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (3086 bytes) */ +const char* const cstring = "BZh91AY&SY?\314\366@\000\001\245\177\377\377\377\377\377\377\377\377\377\277\377\377\377\277\377\377\362@@@@@@@@@@@@@\000@\000`\013=\340\367\270Ol\005\301j\322@\017e\224V\351\224.||\003\347\203SI\244SF\214\206OS\324z\236I\342j\033i\252=\252~\206\002\231OSM\224z\237\251\352\206\217j\206\200\365<\240\364G\244\375Q\240\036\232M\r\006\210\0024\032\000MOM\023F\200T~\2226\247\265O\325\003&\203@\000\000\000\000h\036\241\351\001\243@\324\302d\004M4T\360\247\352jz\231\036(h\3104\0314\000\000\000\000\000\000\000\000\003@j`D\215)\350'\222l\211\350i=A\3514\r\r\000z\232\000\032\000\000\000\000\000\017Q\232\232\000\221@\2120\246\310\236\223\322h\000\000\000\000\000\000\000\000\000\000\000\000\000\006\247\242\224\000\000\000\000\030\200=@\032\032\000\001\220\000\r\006\200\320\320\006@\001(\300^\320\320\005\r\033\332_\245 \206\356F\242\364\006\2209*\243\244b\240\005\t\004\376@\376\266\323c\030\304\306\323\033\030\206\320\332\033cm\264\377\212\201\200`\314V\3059\316\253\277\3449X\263\210/\364\320L\2318\322\302\2644\306\204\332\033\006\300m\262\271\005UNiH$\211D\256\352\216\004\202\272\2461O$M*\234\2465]/\205'4\357\262\217\031*\325\010\205\032(\343\024\240\332\301\206:\224c&61\223\010\"\260\301,\243\0100\356\3067\2628\225V,q\205\241(\036x\326\373\360p++\010\274\006\203a|@\351EW \301\205k\202\200\245Q5#\221\334)\200q\n \004\363L\367\000\227\005\027\020\020\205\334\275N\370\342\207&\036\304\006\217\273\221\237p\326\352]\346\315\307\321\217\310\246\2309\253h\216\001\322\217\022DH(\220\237\363=\352L\324$F\nz-'\203\"\377.\310\303B\224\322\2321uY\211g0\215N\250\305\030\360\314\261Xd)\241e\033\252\202B\325\334w\n\317\005x3[kJ\024D\005\2133,\311\266\265\2335\026\267w$S\244\032!O,\306L\022\235\022\255\250\373;C\316\303\017\357t\345\331\304\306@\002\304\301\344\241\336\353\223\320|8\205\327\352\352\372r\376\310\265_\365\305\201\r\205\313\310\235R\027\005\205\203@K9O\367\211\246\377\237hO<\004\263O\220\246\222\2444Q\367\276\272\326\026e%|\260\014\006\260=\324\002\223/v\235\306kN\355>\306_!1""\306\0057\224Z(\204^|\014\033?X\246\304|\311\373E\024\2119\224\270j{\315\245(r\300)\300X\205\230\\p\353\253}Q!)\224BH\216\016\355\227\354\245\017y\236\006\005L\205\234O=\277[G\320e\352a\257Z!\032:\322\025iX.\021\332_\304hs\243\370y<\347\n 0\200\317\236x\177>\010\020@<(S$\320cI\345`\246\301\307\211$\211[(\265\311Z\352|\354tX[\335\021H\236f\3679\302\306\207\016+\253\212\242\246k9/qV/\260\357U\241\217@Un\226\2247\026\203<\246Y\031H]\306\002s\306\000\334\331i\221\341\230\2434K\261!\243\323J0\034\273\206\354G\207g\316l\016y\t\273\024\243\331u\242\201\355gZ\273;Y\312\264\030~\365J\002\372\013\274`B\240(#\322^\300U\031>\204\020\\b\267\r,!-\334\227\251\225\"W\310\265\031\231\006~\216\3134\243S\007\314\211\r&^\24220\223\006D\245\241\006\004\361%\230\243\275x\211\204\311\254\007\203\351\022\361\310-ey\2601)\001k\001\267#\220aVI\0141\223\206mi\326V%\035\233[\330\351i\231\336X\310\221AT\247\031\366OT\352Y\322\264j\020\251\352ucP\203\016X\315\004A\310\352\272ki\341\\\341uhh#(\"d\t\203\3522\321\350o \244\234m\323,C\363:Q\202\\X&@\333\314=i$\322\022\207\217\t\022.\204ebD\221\201-\367\314\242\240\300J\024\253\026\220m\313a\017ZP\360\362\r\016\000\307q\335 \255M\221\t\206= ,\\\010\272\310R:\0311\241\215\334\212C*z\222\244\036\200i\335\252\335\202X\003=\311\240N;&\342\360 b\004-HQ\210\204\217f\316\235\362\"\016\300\310\201\020\"0a)b\212\321\203\004\0275$\201\231\2529\221w!e\224\231\\p\306#\"\344:\031(\025\025\341A\032\266\211\343M,K:\000c5\372\363\302a9\020\214A\250\214\315$\224\231\020B\006T\032\004U\\\333l}\225<_\230\225]\310%\232p\000&6\202\3614\035\330\014lu\343\314q\3345\240\374&*H\201\246\221\0273v\225I\246\321\007@\261\204\210\307\0256\225\203!j\335\025\266P\204\013\265\310\242\340\240\302)\322\204\036i\022\230\312HP\212M\204AS\010\030\250\375\343\200\007\001\237 \210\220\320w\216BQ\222MTr\205^I\301\202\371\245[\316\312\0258Q x\\X*\223\220xs?\313\235.\244\n\254\240\355'\206ni\006+a\256\350\260\306\024\005M\200>r\003x\033\310\326j\241\270%\261\320\3256\245\006Su\2241\007q\030\370lnQ\0066\330<\324\236\241^C\021\336Aa\202\267\274\013\r\334\020 6g\222\220""\326\351:\326\240\364\216e\355\235\211\320\336\201a58\312\344\356Fb\200\225\207\000\r\277\014\341 \202\347\242\024\034\241Z\300D\214\210\250\242\020D\010\313^\260\257\\\rN\232\244\302\251%\035B\004+.p\263\233\254A \320\214\242\020\034w\027\256A\022}\342\022\331!&\333\335Ma\250\216\006\004/\264DL\224*\332\367\242\253e\264q\3421\"\213\2160\200\221q\255ko\316\374\024\306\227\210`B6\323\2429\204\225\303\222\223\212\230\232\"\212\224\343X\236d\220P\352\026\201J\255s>\206\203A\240\347\255\226\001!\344a4\333\227\177\005\257\200\247b\240^\3574A\363\261\342\346d\200\331 \314^R\232@\311bR0D%3@BZr\232\270`\200\007\274\216\207\020\036\344@\260\331yLa\211Fj<\216\240FJ8*\305d\2604\204\206\023=PL\344fFb\243\006\336\333[\036\325%\356e\326]h\r\275sK!\020\244\350\241\t@\256\352R\341T\221\010O\212S<\2404\320\204\301\310\364\232\366*\350\323F\365\371\213]v\367G\333\213\200\243\033\352\266\267\003\016\355\247V\302\331\212\363\022\371\014\r\030\303\365L\247\324)$\340\220\202\002\254\275\365\235!a\007\226#\037J\270\n\341\001Q\242\365\303\201\211\242,$\326\033\005\307\025\366pcI\3523\245)nK\001\305\313\352\371\013N\246H\272\317X(I\260l 5\002\326i_1Mff\2010\225\210F\361~\270\267l\205\353\311@\252P\322\331\265~\3420\214\2064\363\266\371\0265[\331y;]\344\014;\341\342\356\247xi7\324\352\255i\017\330`?\246\273\226i\013\020\262\007^ZX\026\001\rG\024C\000\201\302j\213\242\003\345\017E\340\3021\240\200[Dc\302H\001\032|4G`B\033l(^w\210\3300a|\"\202\365k!\333\3678\202\3220(a\005\300\301&$Y_\345h\3759\020\2359\331#\331R1\020\330\367\212(U\205Z\271\035\"\216\210\344\233_{1\335B\347\246\n\231\310\353\202Ugw\367\002GB\304\017\274\260\352u\202\366\014\026D\276\252\321}#\034T\304\235D/\337X/\213\345\030$\177\326\333\007_\035[Gj=\244\302{'\026\332\267\273(6B\020\360EFk6\322\033BxN\t<\216\377\177a\207\034u\r\342L\347\237\203\033\336G\014\361k\025s\007\006Q7\347\332\202\273\215Py\264\200v\354h\035\273\232\332\006\302\365\234d\342\267\254\0214\220K\010\201\206\367\316\311[5P\027az\301\202\271L\226\366[\342""\036\010\242\017\216\232\264\212\373\342\211M9\251k(\246\224 \240\354\303\271I\375\323$\222\241H\307\203\240n\332\206R\026T\271\251j\335\332?\313\260\332\032\275\0334'\331\261\t\272\374\024&\n\3634k\351\350gJ\333\377\007F\273\331\037\274R\247k\344\340p\363%\313\330\2752\253\342P\222\256\360UY\030\300\325QE\373\300jg\330{\270/\271|e\002\014\351\302\306\001\227\305\316\031 \315\251{\333\204\244hg\230I\234\005n\326(\313\267\237\265\264\223Hfdg\\\276\307\311|,\"Y\2726\"\321vw\211\006\003\255%Wg4\201\023\023`\240V\354x\355P7i\246\242\245<\346\244\304\351\t\321\225\320\221I\004I\024\214\313\222\216Pg\264\352\010Q^`oy\314\rF\360\300bs\\\237\n\256\031\243\254L6Nx9\244\215\243)2J\341\034\346\010K\377\027rE8P\220?\314\366@"; + PyObject *data = __Pyx_DecompressString(cstring, 3086, 2); if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) const char* const bytes = __Pyx_PyBytes_AsString(data); #if !CYTHON_ASSUME_SAFE_MACROS if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } #endif - #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (2997 bytes) */ -const char* const cstring = "x\332\215V\313r\333F\026\035\331\224M\333\362C\321#\2663I ?3\036\207\031Jv\036\036')\210\242,N\364\244d[\232\304\203j\002M\0226\010\200h\200\"]\225\252,\271\304\022K,\261\344\222K-\265\344\222K~B>a\316mH\262c;SS$\032\215F\367\355{\317=\3674\036\347\362\325\334B\265\340\330\276\023x\212\301}\256\373\246c+\266\343+-f\231\306#EO_\n\205y\\\216\273\236\343r\317\352(\302\361|n(U\317i(\026\257\372\212\357(\236Y\253\373\271\377i\320v\336\330\364\270\356\324l\36357J\rV\343x\021X\206\234\\\341x\311R\353\217\224\037\326\337Z\264\317\341I\325\tlC1m\305\257sr\251e\032\360\305$+9\245\300\322\035i\211i\007\\a6\263:\302\024\271u\307\347X\302|\245\320\361\353p\314\024\360\3222+\334c>\247\240|\317\324}\356\321$[\331,n~\371\340\333\007Xo\300\235\227\010F(\"\250\350\026\023\202\013\305\251*\225\300\264|r\243\343r\221SJU\245\343\004\212\315\341\014\340p1\357\355\005p\326V\004\367\245\327w\231\r'\031\341\243a\271i\327\356*\206\351\021b-N\253\227\231%xn=h\300;\332\013\350\330\2048\2670\307s\014\0304\0344\024j\203\371z]\232\345m\027\2571\rx\007\374Q\272J\371^\331y\033(\227\371u8\302\033\351jl\306\333\246\360s\367\377\371#3\014\rc<\247\213\226a\nV\2618\267\251\275\377\306\364\367JM\317\335\253\007\265\032\274\2562\235k\365\240\222\273\2473\275\316\277\024\035\341\363\206\022P\300\242\323\260L\373\225\310\3353Ej\305\260]?\267\276\244z\036\353\374l\273\271\252\345\000\002\273\366\342\235\361\300\264\375o_\344\\\273&<\375+\303q}\r\026\3009\215\331N\003T\342\342\253\023~\345\334\216\237[t\332\240\236h-1\200\232[:~\267\006\240,\204V\262\253 \216\255\3632\027\201\345\373\271miN\022O\370\201k\361\237\245/\367\025y{\221\016\235X\274\257\374q\305\013\325\356,\252\205\237\0267\326\213\330\271\260\242\226\3265us\263\274\261\253m\227\3266W\213\205\215\325\215\262\266\370\244<\377\244\254\356\275y*?Y\004A\355\316Q\225\024\230\245\007\226\244A\321\363\034o\251\270S,\354\2246\326\265\265\215\245\342\3526m\276\354\261\006_6\301\342\225\242\272\263\246nj\313\245\325\342\272\272V\324\266\237./\227v\245O\262""\001\303\313(\034i\352\235\220K\266,\301\3421}\n\304\214Uu\257X\336\226[i\313\033\253K\305\362\332FysE+\254nl\027\323n\031\376\034ef\375\351\232\366L]--iE\004\270S\306\262\355u\307\346\233\245\325Mb\240\356x\034\235\272\246mv\332\270\226PL\332:o\303\247\352\326\323\215\235\242\266\016\274\312*\342+\027w\312\332N\271X\004\036o\003\273\263R.n\257\300\023m\361y\332\327\026K\353jyOc\272\316]\320O\2538m.\230e1\313\255\263#:Tr\r\231\350\364\261\243\235p\343x\300b\025n\035?4\230\373VW\363\270 \021:\036\022\024\006\243x\231\240\302f\242c\353\246\223\303\260\023\200\254\330\274\315\310\005\324L\205\351\257*@\240\002\2474\323F\001\210\n\022\345u*\026~\336.5{\025\307\261*\244X z\031na.\376\233\0168.h]\236\232\371\212\247\353y}^\307\246:\324\250\346x\035\235\243\342=\ru\010p\271\376\212B\207\267\006L1[\357\3101\227\314h\232\324\030\255\306}\023\325G\217\360\023\016i\276\207\372$/u\313\021\\6\206\216\240u\354\r\201\204ajX\372$\025\026\367\026\3670\356v\010\010\350\225&X\303\205\301\232\346\021Qu7\320q\n\2700\224\336\216K\223\216\201w\206\344\211\000)\321\003\203\351\255y\275\345\027\034\313\361\014\325X4\300l\215T\3468UZ\232B\203\267L\235\033U\303l\250\270\026)z\272\0201\227BPa\302\324\305\0075\341\203\2039\255j\332\206F\242\367'\023N\\0(\337\334\250!\000-\305\036\267\240!\217\007N5%x\000h\r\316l\216j\222\252\t\\\344]`n\333\364\251\365\271mT\315\032\261\252jZ\\n-;$\215\350\3000v\240\024\244\017\373\314\263aF\220\237G\272 \336rZ*\222l\026\346\253\216e\300-i\021\207\243\006\357\334\016\365$a5\255\032\330\272\006\036\330Pk\017t\330\366\275@\367\003\017\346Q\371\r\004\205A\355]\314iL\366\264\324~\315c\025\355\230\020x\350\324!*\334\253\013\027l2\315\232\rb\310\323V6\232\355\246w\257V1\0335\374\345HMzi6\350$7\033\242\356\354\233\r\324\217%\020\030\220\"u\322R#\266\033\370\232/\263\0022/\314\233Bc-fZtbhx8\251<\364\r\010\263I\005\202~\372\rB\214\247K\274\344\376+\356\331\034\322\320\341\236 :\322\325p\204\257\265\021Y\340\371u\213d\264\006,\r\272\220\020XB\201A\247 \005\250\027\264""\276k9>I\212\333\241^\203\265\033\320\200\300\343 \270]\363\353\177|\312=\266\034\035G\365\017\271#\320\033\\\010\004\3250\rY\232\r\323\306_\005\010T\372\004\262\004:E\373\017\333;F\200pq\367\334:\212\244\326)\2665\315\206\364\243\005\247lGC&\014@\337\260]\034\227\310\374I\212$\013d\223K\277%\234j\025UFD\221*\003\\k@\0200\273\010:\325)H\240\301\320\342\210\360)Q\210\030_v\310\020\307M\270\351\207\210kZi\216\\\323\345\244)\256\331\006_4L\321\032\234\276\226\264\335\367\207\366\\\313w\241\003\304r\251\246(:\025\327b\212\250\2465\003f\245\2215\003\207*\310\203\262\2452\354\311\303*m\211@(\017\333\343`\260-\265D6G\031\005\271\237\334N\202\336\332\301\325\303\311a\346\\w\252\253v\267F\231+\341\351\360\273H\215\236\307\205\2709\304\343x\370oL\036\243\356\271\350j<\031\317\r3\227\273^8\0336\243\363\361\335d2\271\221\374\253W\351\217\245\226/\304\371\270\224\354\366\266zz\177\252\257\2160\3708z\215YsC\331\025\361\\\234\037a\277\231.\033\236\273\324\255\207l\230\235\014gB\0266G\231\351p9\372{\374\224&O\207K\321X4\023\331I!\351\220\365\217\302;\321D\274\222,&F\357Fo\271?7\312\\\354\226\273\255p\013&2\327\243\233\360Y\215\377\323\373\272?\333o\036d\016\226\017\357\0146\267\006[\345Q\346B7?\230\370k\244\016\263\023]4\2627K\033\243\371ml45=\274v\235\376\004\317\2250\023\252\341\3260s\3667\277\373]\370$\312\017\263\227\006\227>'\020F\031e\240<\354""\3752P\313\203\362\36603>\314~\032\3752\370\333\017}\326o\376~\346/\343\227\007\227>\203\3070?5\230\372\"\301\202\031\230B|\223\303\354\265h\362\250'w\035\236\277@\177\332\022Nuw\302\311\360fX\016\375(\037-\305\247\342;I&Q\223\355\336\251\336\255\036\353\371\375\371\376\026\326\\\272\374\226\247\nee\242[\350\356\003<\021\315\301S8\335\352n\207cp\271[\035L\337\211\331\340\356\312\341\330\341\344(s\251\313\303<0=\023U\343b2\2334{\247{\363=\304y\241\373Mx\233\300\277\320]\350\232\310\352\271x*V\311T\007\\x\024m\311\005\237\367\307\373\333\007c\204\371\366\340\n\014\307\"\311\365O\367\261'F\302\213\230V\217\365\344\263^3\365\211\322R\217\214x.\265\333@X\305x&6\222\233\311/D\214t\337\\<\026O\322V\001\2264\217\274\276\017\374&.\022\234\027\272\267@\020\033i\335\"\3225\341\317\367X\361\0218V\210\375\344aO\322\362Tx+4\242\2714c\371\367\214\334$\306\"}\243L\266;\336E6.w} \241\206\317\242\205\310J\346\022\271D\017\257\303E\225\272\225\360\014\000\r\242\345\370F,\007\214p.\\@4,\362\342O\222\237z\277\036\250\007[\243s\027\221\264iX\311\017\317\035\327\306\255\230\375\237\017\243,-\277\036\315\203\265\245\344y\017\033\27530\312\022p\025\320\261\200\354\336\210(\236Q\366:\002U\346\350]^>\317\2065@\017*\317\204\317Q\266[#\204'\302\033\241:<\356\214\262W\302\263a\023\263\207\037M\205\017\302V\264\033o\305\034a\277\377\3700:\025\335B\276W\300\275\247\275\271\337\263\177\031\317~\020\324i\000\202\212%\314\177\205\177A\212\034\246\334C\355b\247\tI=\365`\362\340\366\201\254\214+2{\337\014\256\377\330\367\016\246\017N\362y2\262s8{\330D\301\276\367\342\317\247\2162W\243\323\310\332\232\024\241%\020\032l\374\300\320\345\301\3459\220f!\256\014\276x\324\2771x\274q\350I]\270\216`Y\324\212\237'\313=\220\344\223\350\001\252\374L\\K\366z\214x\373\010$n\200lE*\361\352\201\232V\340\354\307\324B4R\271\310FR\234\276\210@\365\211n)\255\367\231\360U\374q2\236\354\r\276^;|\n\261\030\001\251}\260\354\032\352t!\322\343k\311\255\204\021%3\335\345\360^TB\016\032\220.\250C*@\333QV2\375;\022\223\231\360it;j""\016\224\177\364\306z\230rqp\361Sd\375e2\226L\216\260\333'R\260\325a\232i\310\346\024\006\236Ag%\247&\303\271a\366|\3676@\034\243\316]\214\334\215f\243\346\361\303\235\301\325\\\302{\337\364\357P\201\237\035\234\375\030F\316B\252\241\356\224\3416J\363\334\014\304\311\213&\243{\250F\022\350\3544ql*\314\217\244\350l\221\246_C\241\240\262\206\2313\277\325Pi'k\346\210\334[\304\020F\264l\222\243\247\303\274\224\343h.\036;9\237(\323\022V\302e\t\356\276\351\\\226\356\247\267\021\360\276\005\376\355G\225\370l\034\200\254\345\244\205#\307\350\337\350/R\242\2104)\216\317\243\305\250F\016'\363\311\263^\276\267\324?\205I\313\007s\007y\312\360\003\230\233\300\224\227\220[y\212\375\027x\246\220T"; - PyObject *data = __Pyx_DecompressString(cstring, 2997, 1); + #elif (CYTHON_COMPRESS_STRINGS) != 0 /* compression: zlib (3018 bytes) */ +const char* const cstring = "x\332\215V\313r\333F\026\035\331\224-\331\362C\321#\2663I ?3\036\207\031Jv\036\036\307)\210\242,N\364\244d[\232\304\323\325\004\232$l\020\000\361\240HW\245\312K.\261\304\022K,\271\344RK-\271\344\222\237\220O\230s\033\222\354\330\316\324\024\211F\243\321}\373\336s\317=\215G\331\\%\273Py\374\370\261\242Zv\235\233m\305\323lWO\373l\261\270\256\226\366\030\3274\341\200~\254l\267\204\307M\223\233N\215\037\321\241\234\255\313D\247\217mv\302\215\343\001\223\227\205y\374P\347\316;]\346\n\217D\350xH\352\"\247x\271G\205\315\275\266\245\031v\026\303v\000\262b\363\026'\027P3e\256\275*\003\2012\234b\206\205\002\360\312H\224\333.\233\370\271\273\324\354\225m\333,\223b\201\350%\270\205\271\370o\332\340\270G\353r\324\314\227]M\313i\363\0326\325\240FU\333mk\002\025\3572\324!\300\025\332+\n\035\336\3520\305-\255-\307\0342\303\230\324\030V\025\276\201\352\243G\370\t\207\230\357\242>\311K\315\264=!\033]C\320\032\366\206@\30205<}\222\n\213{S\270\030w\332\004\004\364\212y\274\356\300`\225\271DT\315\t4\234\002\016\014\245\267\343\322\244c\340\275!y\"@J\264@\347Zs^k\372y\333\264]]\325\027u0\233\221\312\034\247\212\245)\324E\323\320\204^\321\215\272\212k\221\242\247\013\021\013)\004e\356\031\232\367QM\370\350`\226U\014Kg$z\1772\341\304\005\235\362-\364*\002`)\366\270\005uy<\010\252)O\004\200V\027\334\022\250&\251\232\300E\336=\314m\031>\265\276\260\364\212Q%VU\014S\310\255e\207\244\021\035\030\306\016\224\202\364a\237\273\026\314x\344\347\221.x\3578-\025I6\013\363\025\333\324\341\226\264\210\303\221\301;\247M=IX\306*\201\2451\360\300\202Z\273\240\303\266\357\006\232\037\2700\217\312\257#(\014\262\3671\2471\331c\251\375\252\313\313\354\230\020xh\327 *\302\255y\016\330d\030U\013\304\220\247\255l\230\345\244w\267Z6\352U\374\345HUzi\324\351$7\352^\315\3367\352\250\037\323C`@\212\324\211\245F,'\360\231/\263\0022/\314\033\036\343Mn\230tb0<\234T\036\372:\204\331\240\002A?\375\006!\306\323\345\275\024\376+\341Z\002\322\320\026\256Gt\244\253n{>k!\262\300\365k&\311h""\025X\352t!!\260\204\002\203NA\nP/h}\307\264}\222\024\247M\275:o\325\241\001\201+@p\253\352\327\376\370\224}d\332\032\216\352\307\331#\320\353\302\363\020T\335\320ei\326\r\013\177\025 P\351\023\310\022\350\024\355?lo\353\001\302\305\335uj(\222j\273\320b\314\202\364\243\005\247,\233!\023:\240\257[\016\216Kd\376$E\222\005\262\311\246\337\022v\245\202*#\242H\225\001\256U \010\230\035\004\235\352\024$P\347hqD\370\224(D\214/;dH\340\3469\351\207\210c\230i\216\034\303\021\244)\216\321\002_\030\246\260\272\240\257%\266\373\341\320\236c\372\016t\200X.\325\324\241\274\242\362T\\\213)\254\2145\002n\246\3415\002\233\312\310\205\274\245Z\354\312\023+m\211E\250\021\313\025\240\261%\005E6Gi\005\303\\\335\313y\363\036o\n*:\315\000\n\210\3137\350\003\312\322\217\252]F\201\3170\2071\222\264tc\364tQ\341\330\305\253q|\302\241\262i{d\244R!r\235\000\3545\002!^\013\252_|#\342\233\216B\360\216\357\214\353/\003\317GL>\246\240\255\301u\344PG\307\336\367\311[\337\364q\"\354R\263\207\276\273K\315\236o\3736i\240o\233\320\030\010\234o\273ZM6,\325A\337\365]\234#\324\354\311\257\3144\277\362\373(\260\216\334\302\307\026\005\230\026\234\374\360\223\215\267\177,,\373nz\314!\320}Y\303\255\\k\276\205\350@\022\257\005\316\267\320\030\272\016E\303\335\242c\261\325\246\336k\303y328?A\377\3213\203\314T\370 :\0335\342s\311\255$\350\256\035\\9\234\034d\306;S\035\265\2635\314\\\016O\207?Dj\364<\316\307\215\001\036G\303\177c\362\010u\307\243+\361d<7\310\\\352\270\341l\330\210\316\305w\222\311\344z\362\257n\2717\222Z>\037\347\342b\262\333\335\352j\275\251\236:\304\340\243\3505f\315\rd\327\213\347\342\334\020\373\315t\370`\374b\247\026\362\301\330d8\023\362\2601\314L\207\313\321\337\343\2474y\2743\331?\367e\272\365t\270\024\215D3\221\225\344\2236\355\364Ix;\232\210W\222\305D\357^\357.\367\346\206\231\013\235R\247\031n\301\\\346Zt\003\376\253\361\177\272\337\366f{\215\203\314\301\362\341\355\376\346V\177\2534\314\234\357\344\372\023\177\215\324\301\330D\007\215\354\315\222\023h\336\214\014\247\246\007W\257\321""\237\240\272\034fB5\334\032d\316\276\361;?\204O\242\334`\354b\377\242\364j\230Q\372\312\203\356\257}\265\324/m\0172\243\203\261\317\243_\373\177{\334\343\275\306\357g\3762z\251\177\361\013x\014\363S\375\251\257\022,\230\201)\304:9\030\273\032M\036\365\344\256\203s\347\351O[\302\251\316N8\031\336\010K\241\037\345\242\245\370T|;\311$j\262\335=\325\275\331\345]\2777\337\333\302\232\213\227\336\361T!\230&:\371\316>\200\364\2429x\n\247\233\235\355p\004.w*\375\351\3331\357\337Y9\0349\234\034f.vD\230\003\246g\242J\\Hf\223F\367tw\276\2138\317w\276\013oQ\"\316w\026:\0062<\036O\305*\231j\203\027\017\243-\271\340\313\336ho\373`\2040\337\356_\206\341\330K\262\275\323=\354\211\221\360\002\246\325b-\371\242\333H}\242\264\324\"=\236K\355\326\021V!\236\211\365\344F\362+\221$\3357\033\217\304\223\264U\200%\215#\257\357\001\277\211\013\004\347\371\316M\220\305BZ\267\210\200\r\370\363#V|\002\276\345c?y\320\225\024=\025\336\014\365h.\315X\356\003#7\210\275H\33703\326\031\355 \033\227:>\220P\303g\321Bd&s\211\\\242\205\327\340\242J\335rx\006\200\006\321r|=\226\003z8\027. \032\036\271\361g\311\317\335\337\016\324\203\255\341\370\005$m\032Vr\203\361\343:\271\031\363\377\363a8F\313\257E\363`m1y\336\305F\357\r\014\307\010\2702\350\230Gv\257G\024\317p\354\032\002U\346\350]N>\317\206U@\017*\317\204\317Q\302[C\204\347\205\327Cup\334\031\216]\016\317\206\r\314\036|2\025\336\017\233\321n\274\025\013\204\375\341\343\203\350Tt\023\371^\001\367\236v\347~\037\373\313\350\330GA\235\006 \250^\302\3747\370\027\244\310a\312]\3241v\232\220\324S\017&\017n\035\310\312\270,\263\367]\377\332O=\367`\372\340$\237'#;\207\263\207\r\024\354\007/\376|\3520s%:\215\254\255IAZ\002\241\301\306\217\014]\352_\232\003i\026\342r\377\253\207\275\353\375G\033\207\256\324\205k\010\226G\315\370y\262\334\005I>\213\356\243\312\317\304\325d\257\313\211\267\017A\342:\310V\240\022\257\034\250i\005\316~J-D#\225\213\261H\212\323W\021\250>\321)\246\365>\023\276\212?MF\223\275\376\267k\207O!\026C \265\017\226]E\235.DZ|5\271\231p\242d""\246\263\034\336\215\212\310A\035\322\005uH\005h;\032\223L\377\201\304d&|\032\335\212\032}\345\037\335\221.\246\\\350_\370\034Y\177\231\214$\223C\354\366\231\024ou\220f\032\2629\205\201g\320\\\311\251\311pn0v\256s\013 \216P\347\016F\356D\263Q\343\370\341v\377J6\021\335\357z\267\251\300\317\366\317~\n#g!\333Pz\312p\013\2459>\003qr\243\311\350.\252\221\304zl\23286\025\346\206Rt\266H\337\257\242PPY\203\314\2317UT\332\311\2329\"\367\0261\204\023-\033\344\350\3510'\3458\232\213GN\316*\312\264\204\225pY\202\273o;\227\244\373\351m\010\274o\202\177\373Q9>\033\007 k)i\342\370\321{\327{\213\224(\"M\212\343\363h1\252\222\303\311|\362\254\233\353.\365Na\322\362\301\334A\2162|\037\346&0\345%\344V\236h\377\005\363\347\234\343"; + PyObject *data = __Pyx_DecompressString(cstring, 3018, 1); if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error) const char* const bytes = __Pyx_PyBytes_AsString(data); #if !CYTHON_ASSUME_SAFE_MACROS if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) } #endif - #else /* compression: none (4941 bytes) */ -const char* const bytes = "<.1f.3fContour detection not valid: contours are not properly sorted from left to right.Contour detection not valid: no contours recognizedImage could not be read from: >No contours were found in the provided image. Can not continue analysis.Note that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the 'annotation_typing' directive to False.Number of counted electrodes does not match the expected value: count = The provided path seems not to exist.,;?add_note.csvdisableenable, expected = gc.*huggingface_hub.*cache-system uses symlinks.*isenablednpt.NDArray[np.floating]npt.NDArray[np.uint8].pngsrc/dopt_sensor_anomalies/detection.pyt.Boxt.CsvDatat.DetectionModelst.InferenceResultt.SensorImagestuple[float, float]tuple[t.CsvData, t.SensorImages]AnyBACKBONEBoxCHAIN_APPROX_SIMPLECOLOR_BGR2GRAYCOLOR_BGR2RGBCannyContourCalculationErrorDETECTION_MODELSDataFrameFinalHEATMAP_FILENAME_SUFFIXImageImageNotReadErrorInferenceResultInvalidElectrodeCountLAYERSMODEL_FOLDERMORPH_CLOSEMORPH_RECTNDArrayNUM_VALID_ELECTRODESNonePILPatchcorePath__Pyx_PyDict_NextRefQUOTE_NONERATIORETR_TREERGBSensorImagesTHRESHOLD_BWTHRESH_BINARY_accepted_boxesallalphaanomalib.modelsanomaly_detectionanomaly_labelanomaly_mapanomaly_map_resizedanomaly_scorearrayastypeasyncio.coroutinesaxaxesaxisbackbonebbox_inchesbinaryblblbrXblbrYboolboundingRectboxboxPointsbox_1box_2brcc1c2castcategorycenter_distcheck_box_redundancycheckpoint__class_getitem__cline_in_tracebackcloseclosedcmapcntsconstconstantscontoursconvertcopycoreset_sampling_ratiocpucroppedcropped_sensor_leftcropped_sensor_rightcsvcudacv2cvtColordAdBdata_csvdetection_modelsdevicedfdimAdimBdistdistancedopt_basicsdopt_sensor_anomaliesdopt_sensor_anomalies._find_pathsdopt_sensor_anomalies.detectiondtypeedged__enter__enumerateerrorseuclideanevalexistingexists__exit__extendfigsizefile_pathfile_stemfiltered_cntsfilterwarningsfindContours_find_pathsfloatfloat32folder_pathfrom_numpyfromar""ray__func__genexprgetStructuringElementget_detection_modelsget_model_foldergrab_contoursgrayheaderhspaceiignoreimageimage_npimage_rgbimgimg_npimg_pathimreadimshowimutilsindexinfer_imageinput_tensorint32is_available_is_coroutineis_duplicateis_sorteditemitemsjetkernellayersleftleftmost_x_fourthlinalgloadload_state_dict__main__matplotlib.pyplotmaxmeasure_lengthmeasure_length..genexprmessagemidpointminminAreaRectmodemodelmodel_state_dict__module__morphologyEx__name__nextno_gradnormnpnptnum_contoursnumpynumpy.typingofforder_pointsorigoutputpad_inchespandasparentpathlibpermuteperspectivepil_imagepipelinepixels_per_metric_Xpixels_per_metric_Ypltpoppred_scorept_Apt_Bpyplot__qualname__quotingrboxresizeresultresult_patternreturnrightrightmost_x_thirds1s2savefigscipy.spatialsendsensor_imagessep__set_name__setdefaultshapesidesize_diffsort_contourssqueezestemstrsubplotssubplots_adjustt__test__thresholdthrowtighttltlblXtlblYtltrXtltrYtoto_csvtolerancetorchtorch_devicetrtrbrXtrbrYtypestypinguint8unsqueezeuser_img_pathvaluevalueswwarningswrap_resultwspacex1x2x_coordsx_maxx_middlex_miny_maxy_minzip\200\001\330\013\014\330\013\014\330\005\006\330\004\023\2205\230\007\230q\240\n\250%\250u\260M\300\030\310\021\330\004\t\210\023\210A\210Q\340\004\020\220\003\2209\230A\230W\240C\240q\330\004\020\220\005\220Z\230q\240\001\330\004\020\220\t\230\030\240\021\240!\330\004\017\210r\220\026\220q\230\n\240'\250\021\250\"\250J\260b\270\001\330\004\023\2205\230\013\2401\240I\250X\260Q\260c\270\023\270A\340\004\023\220<\230z\250\021\250!\330\004\023\220<\230s\240!\2401\340\004\t\210\025\210a\330\t\016\210h\220a\330\010\021\220\025\220a\220q\340\004\024\220F\230+\240U\250!\330\004\024\220D\230\001\230\025\230n\250C\250y\270\001\330\004\022\220&\230\014\240H\250B\250d\260\"\260F\270!\340\004\r\210R\210v\220Q\220a\330\004\032\230#\230W\240A\240^\2606\270\026\270q\300\004\300F\310&\320PQ\320QR\340\004\013\2101\320\014\034\230A\330\010\014\210A\330\010\034\230A\330\010\026\220a\330\010\026\220a""\200\001\340\023\024\330\031\032\330\031\032\330\005\006\330\004\020\220\004\220A\220Q\330\004\007\200t\2109\220G\2301\330\010\016\320\016\037\230q\240\001\340\004 \320 5\260\\\320AR\320RS\330\004\005\330\010\035\230\\\320)>\270a\270q\360\006\000\005\017\320\016\036\230n\250A\330\010\023\320\023(\250\001\340\004\025\220Q\330\010\021\220\021\330\010\031\230\021\330\010\021\220\021\330\010\026\220a\200\001\330\n\013\330\n\013\330\005\006\330\004\014\210A\210T\220\021\220#\220R\220t\2301\230D\240\002\240&\250\004\250A\250S\260\002\260$\260a\260t\2702\270Q\200\001\330\016\017\330\031\032\330\031\032\330\005\006\330\004 \240\001\330\004\014\210C\210w\220a\220s\230!\2301\330\004\007\200v\210S\220\001\330\010\016\210f\320\024&\240a\320'H\310\001\310\021\340\004\016\210e\2201\220D\230\006\230f\240E\250\026\250q\260\003\2602\260Q\330\004\013\2107\220%\220q\340\004\013\2103\210i\220q\230\t\240\023\240A\330\004\007\200y\220\003\220:\230Q\230f\240E\250\037\270\005\270S\300\001\340\004\r\210S\320\020&\240a\240s\250.\270\003\2701\330\004\r\210S\220\r\230Q\230h\240c\250\036\260q\330\004\014\210C\210v\220Q\220h\230d\240!\340\004\013\2103\210m\2301\230E\240\025\240d\250#\250\\\270\023\270A\330\004\013\2107\220.\240\001\240\021\330\004\007\200u\210C\210q\330\010\016\210f\320\024,\250A\330\014\r\360\006\000\005\013\210$\210h\220n\240A\240Q\330\004\017\210q\220\003\220=\240\001\240\022\2401\240C\240t\2505\260\001\330\004\020\220\002\220$\220d\230!\330\004\007\200t\2101\330\010\016\210f\320\024,\250A\330\014\r\360\006\000\005#\240!\330\004\037\230q\340\004\010\210\005\210Q\330\010\017\210t\2201\220A\220V\2303\230l\250!\2501\330\010\016\210c\220\032\2301\230A\330\010\016\210b\220\006\220a\220u\230F\240\"\240A\330\010\016\210d\220!\2203\220h\230a\230r\240\033\250K\260}\300A\300Q\340\t\r\210T\220\024\220V\2301\330\t\020\220\t\230\030\240\021\240$\240a\330\t\020\220\t\230\030\240\021\240$\240a\330\t\020\220\t\230\030\240\021\240$\240a\330\t\020\220\t\230\030\240\021\240$\240a\340\010\r\210T""\220\032\2302\230W\240I\250W\260A\330\010\r\210T\220\032\2302\230W\240I\250W\260A\340\010\013\2103\210b\220\004\220C\220s\230\"\230A\330\014\r\340\010\032\230!\330 !\340\010\013\2101\330\014\r\340\010\026\220g\230Q\230a\330\010\025\220W\230A\230Q\340\010\017\210s\220\"\220A\330\010\017\210s\220\"\220A\340\010\020\220\007\220q\330\014\r\330\022\023\2204\220v\230X\240Q\240e\2501\330\022\023\2204\220v\230X\240Q\240e\2501\330\022\023\2205\230\002\230$\230f\240H\250A\250U\260!\360\010\000\005\010\200t\2101\330\010\016\210f\320\024,\250A\330\014\r\360\006\000\005\024\2203\220a\220q\330\004\007\200}\220C\220u\230A\330\010\016\210f\320\024*\250!\330\014\r\330\014&\240a\320'A\300\021\300%\300q\360\006\000\005\020\210q\220\003\2207\320\032?\270r\300\024\300Q\330\004\017\210q\220\003\2207\320\032?\270r\300\024\300T\310\026\310q\320PQ\330\004\017\210q\220\003\2207\320\032?\270r\300\024\300Q\330\004\017\210q\220\003\2207\320\032?\270r\300\024\300T\310\026\310q\320PQ\340\004\030\230\003\2301\230M\250\021\250\"\250D\260\003\2601\330\004\030\230\003\2301\230M\250\021\250\"\250D\260\003\2601\330\004\017\320\017!\240\022\2403\240b\320(:\270\"\320\270f\300A\200\001\330\016\017\330\026\027\330\016\017\330\023\024\330\005\006\330\004\020\220\010\230\001\330\004\022\220(\230!\340\004\014\210I\220Q\330\010\021\220\025\220k\240\027\250\005\250Y\3206M\310U\320RS\340\004\007\200w\210c\220\031\230!\2303\230c\240\031\250$\250a\340\004\010\210\004\210F\220*\230I\240Q\240m\2606\270\021\330\010\020\220\004\220A\220S\230\010\240\001\240\022\2409\250A\330\010\025\220U\230%\230q\320 0\260\001\260\021\330\010\r\320\r\035\230Q\230j\250\001\250\021\340\010\021\220\033\230A\230W\240A\330\010\020\220\007\220q\230\001\230\023\230A\230V\2401\340\010\r\210T\220\021\220!\330\010\n\210%\210q\220\001\330\010\n\210'\220\021\220'\230\026\230q\330\010\n\210'\220\021\220&""\320\030.\250e\2607\270&\300\001\340\004\007\320\007\027\220q\230\007\230s\240'\250\021\330\004\007\200x\210q\330\t\025\220R\220r\230\021\230*\240A\240U\250!\330\010\024\220A\330\010\023\2201\340\004\007\200v\210Q\340\004\t\210\031\220!\2201\220A\330\004\006\200g\210Q\330\t\025\220R\220r\230\021\230!\330\010\r\210Q\330\010\016\210a\330\010\017\210q\330\010\020\220\003\2201\330\010\014\210A\230!\240\001\200\001\330\013\014\330\013\014\330\004\017\210q\330\005\006\330\004\010\210\004\210D\220\001\330\004\010\210\004\210D\220\001\330\004\017\210q\220\001\330\004\017\210q\220\001\340\004\022\220$\220a\220w\230b\240\007\240u\250A\250R\250v\260Q\260d\270\"\270B\270f\300A\300Q\330\004\020\220\004\220A\220W\230B\230g\240U\250!\2502\250V\2601\260D\270\002\270\"\270F\300!\3001\340\004\013\2104\210q\220\014\230B\230j\250\004\250J\260b\270\001"; + #else /* compression: none (4977 bytes) */ +const char* const bytes = "<.1f.3f>>> Anomaly score: Contour detection not valid: contours are not properly sorted from left to right.Contour detection not valid: no contours recognizedImage could not be read from: >No contours were found in the provided image. Can not continue analysis.Note that Cython is deliberately stricter than PEP-484 and rejects subclasses of builtin types. If you need to pass subclasses then set the 'annotation_typing' directive to False.Number of counted electrodes does not match the expected value: count = The provided path seems not to exist.,;?add_note.csvdisableenable, expected = gc.*huggingface_hub.*cache-system uses symlinks.*isenablednpt.NDArray[np.floating]npt.NDArray[np.uint8].pngsrc/dopt_sensor_anomalies/detection.pyt.Boxt.CsvDatat.DetectionModelst.InferenceResultt.SensorImagestuple[float, float]tuple[t.CsvData, t.SensorImages]AnyBACKBONEBoxCHAIN_APPROX_SIMPLECOLOR_BGR2GRAYCOLOR_BGR2RGBCannyContourCalculationErrorDETECTION_MODELSDataFrameFinalHEATMAP_FILENAME_SUFFIXImageImageNotReadErrorInferenceResultInvalidElectrodeCountLAYERSMODEL_FOLDERMORPH_CLOSEMORPH_RECTNDArrayNUM_VALID_ELECTRODESNonePILPatchcorePath__Pyx_PyDict_NextRefQUOTE_NONERATIORETR_TREERGBSensorImagesTHRESHOLD_BWTHRESH_BINARY_accepted_boxesallalphaanomalib.modelsanomaly_detectionanomaly_labelanomaly_mapanomaly_map_resizedanomaly_scorearrayastypeasyncio.coroutinesaxaxesaxisbackbonebbox_inchesbinaryblblbrXblbrYboolboundingRectboxboxPointsbox_1box_2brcc1c2castcategorycenter_distcheck_box_redundancycheckpoint__class_getitem__cline_in_tracebackcloseclosedcmapcntsconstconstantscontoursconvertcopycoreset_sampling_ratiocpucroppedcropped_sensor_leftcropped_sensor_rightcsvcudacv2cvtColordAdBdata_csvdetection_modelsdevicedfdimAdimBdistdistancedopt_basicsdopt_sensor_anomaliesdopt_sensor_anomalies._find_pathsdopt_sensor_anomalies.detectiondtypeedged__enter__enumerateerrorseuclideanevalexistingexists__exit__extendfigsizefile_pathfile_stemfiltered_cntsfilterwarningsfindContours_find_pathsfloatfloat32folder_p""athfrom_numpyfromarray__func__genexprgetStructuringElementget_detection_modelsget_model_foldergrab_contoursgrayheaderhspaceiignoreimageimage_npimage_rgbimgimg_npimg_pathimreadimshowimutilsindexinfer_imageinput_tensorint32is_available_is_coroutineis_duplicateis_sorteditemitemsjetkernellayersleftleftmost_x_fourthlinalgloadload_state_dict__main__matplotlib.pyplotmaxmeasure_lengthmeasure_length..genexprmessagemidpointminminAreaRectmodemodelmodel_state_dict__module__morphologyEx__name__nextno_gradnormnpnptnum_contoursnumpynumpy.typingofforder_pointsorigoutputpad_inchespandasparentpathlibpermuteperspectivepil_imagepipelinepixels_per_metric_Xpixels_per_metric_Ypltpoppred_scoreprintpt_Apt_Bpyplot__qualname__quotingrboxresizeresultresult_patternreturnrightrightmost_x_thirds1s2savefigscipy.spatialsendsensor_imagessep__set_name__setdefaultshapesidesize_diffsort_contourssqueezestemstrsubplotssubplots_adjustt__test__thresholdthrowtighttltlblXtlblYtltrXtltrYtoto_csvtolerancetorchtorch_devicetrtrbrXtrbrYtypestypinguint8unsqueezeuser_img_pathvaluevalueswwarningswrap_resultwspacex1x2x_coordsx_maxx_middlex_miny_maxy_minzip\200\001\330\013\014\330\013\014\330\005\006\330\004\023\2205\230\007\230q\240\n\250%\250u\260M\300\030\310\021\330\004\t\210\023\210A\210Q\340\004\020\220\003\2209\230A\230W\240C\240q\330\004\020\220\005\220Z\230q\240\001\330\004\020\220\t\230\030\240\021\240!\330\004\017\210r\220\026\220q\230\n\240'\250\021\250\"\250J\260b\270\001\330\004\023\2205\230\013\2401\240I\250X\260Q\260c\270\023\270A\340\004\023\220<\230z\250\021\250!\330\004\023\220<\230s\240!\2401\340\004\t\210\025\210a\330\t\016\210h\220a\330\010\021\220\025\220a\220q\340\004\024\220F\230+\240U\250!\330\004\t\210\021\320\n\037\230q\240\001\330\004\024\220D\230\001\230\025\230n\250C\250y\270\001\330\004\022\220&\230\014\240H\250B\250d\260\"\260F\270!\340\004\r\210R\210v\220Q\220a\330\004\032\230#\230W\240A\240^\2606\270\026\270q\300\004\300F\310&\320PQ\320QR\340\004\013\2101\320\014\034\230A""\330\010\014\210A\330\010\034\230A\330\010\026\220a\330\010\026\220a\200\001\340\023\024\330\031\032\330\031\032\330\005\006\330\004\020\220\004\220A\220Q\330\004\007\200t\2109\220G\2301\330\010\016\320\016\037\230q\240\001\340\004 \320 5\260\\\320AR\320RS\330\004\005\330\010\035\230\\\320)>\270a\270q\360\006\000\005\017\320\016\036\230n\250A\330\010\023\320\023(\250\001\340\004\025\220Q\330\010\021\220\021\330\010\031\230\021\330\010\021\220\021\330\010\026\220a\200\001\330\n\013\330\n\013\330\005\006\330\004\014\210A\210T\220\021\220#\220R\220t\2301\230D\240\002\240&\250\004\250A\250S\260\002\260$\260a\260t\2702\270Q\200\001\330\016\017\330\031\032\330\031\032\330\005\006\330\004 \240\001\330\004\014\210C\210w\220a\220s\230!\2301\330\004\007\200v\210S\220\001\330\010\016\210f\320\024&\240a\320'H\310\001\310\021\340\004\016\210e\2201\220D\230\006\230f\240E\250\026\250q\260\003\2602\260Q\330\004\013\2107\220%\220q\340\004\013\2103\210i\220q\230\t\240\023\240A\330\004\007\200y\220\003\220:\230Q\230f\240E\250\037\270\005\270S\300\001\340\004\r\210S\320\020&\240a\240s\250.\270\003\2701\330\004\r\210S\220\r\230Q\230h\240c\250\036\260q\330\004\014\210C\210v\220Q\220h\230d\240!\340\004\013\2103\210m\2301\230E\240\025\240d\250#\250\\\270\023\270A\330\004\013\2107\220.\240\001\240\021\330\004\007\200u\210C\210q\330\010\016\210f\320\024,\250A\330\014\r\360\006\000\005\013\210$\210h\220n\240A\240Q\330\004\017\210q\220\003\220=\240\001\240\022\2401\240C\240t\2505\260\001\330\004\020\220\002\220$\220d\230!\330\004\007\200t\2101\330\010\016\210f\320\024,\250A\330\014\r\360\006\000\005#\240!\330\004\037\230q\340\004\010\210\005\210Q\330\010\017\210t\2201\220A\220V\2303\230l\250!\2501\330\010\016\210c\220\032\2301\230A\330\010\016\210b\220\006\220a\220u\230F\240\"\240A\330\010\016\210d\220!\2203\220h\230a\230r\240\033\250K\260}\300A\300Q\340\t\r\210T\220\024\220V\2301\330\t\020\220\t\230\030\240\021\240$\240a\330\t\020\220\t\230\030\240\021\240$\240a\330\t\020\220\t\230\030\240""\021\240$\240a\330\t\020\220\t\230\030\240\021\240$\240a\340\010\r\210T\220\032\2302\230W\240I\250W\260A\330\010\r\210T\220\032\2302\230W\240I\250W\260A\340\010\013\2103\210b\220\004\220C\220s\230\"\230A\330\014\r\340\010\032\230!\330 !\340\010\013\2101\330\014\r\340\010\026\220g\230Q\230a\330\010\025\220W\230A\230Q\340\010\017\210s\220\"\220A\330\010\017\210s\220\"\220A\340\010\020\220\007\220q\330\014\r\330\022\023\2204\220v\230X\240Q\240e\2501\330\022\023\2204\220v\230X\240Q\240e\2501\330\022\023\2205\230\002\230$\230f\240H\250A\250U\260!\360\010\000\005\010\200t\2101\330\010\016\210f\320\024,\250A\330\014\r\360\006\000\005\024\2203\220a\220q\330\004\007\200}\220C\220u\230A\330\010\016\210f\320\024*\250!\330\014\r\330\014&\240a\320'A\300\021\300%\300q\360\006\000\005\020\210q\220\003\2207\320\032?\270r\300\024\300Q\330\004\017\210q\220\003\2207\320\032?\270r\300\024\300T\310\026\310q\320PQ\330\004\017\210q\220\003\2207\320\032?\270r\300\024\300Q\330\004\017\210q\220\003\2207\320\032?\270r\300\024\300T\310\026\310q\320PQ\340\004\030\230\003\2301\230M\250\021\250\"\250D\260\003\2601\330\004\030\230\003\2301\230M\250\021\250\"\250D\260\003\2601\330\004\017\320\017!\240\022\2403\240b\320(:\270\"\320\270f\300A\200\001\330\016\017\330\026\027\330\016\017\330\023\024\330\005\006\330\004\020\220\010\230\001\330\004\022\220(\230!\340\004\014\210I\220Q\330\010\021\220\025\220k\240\027\250\005\250Y\3206M\310U\320RS\340\004\007\200w\210c\220\031\230!\2303\230c\240\031\250$\250a\340\004\010\210\004\210F\220*\230I\240Q\240m\2606\270\021\330\010\020\220\004\220A\220S\230\010\240\001\240\022\2409\250A\330\010\025\220U\230%\230q\320 0\260\001\260\021\330\010\r\320\r\035\230Q\230j\250\001\250\021\340\010\021\220\033\230A\230W\240A\330\010\020\220\007\220q\230\001\230\023\230A\230V\2401\340\010\r\210T\220\021\220!\330\010\n\210%\210q\220""\001\330\010\n\210'\220\021\220'\230\026\230q\330\010\n\210'\220\021\220&\320\030.\250e\2607\270&\300\001\340\004\007\320\007\027\220q\230\007\230s\240'\250\021\330\004\007\200x\210q\330\t\025\220R\220r\230\021\230*\240A\240U\250!\330\010\024\220A\330\010\023\2201\340\004\007\200v\210Q\340\004\t\210\031\220!\2201\220A\330\004\006\200g\210Q\330\t\025\220R\220r\230\021\230!\330\010\r\210Q\330\010\016\210a\330\010\017\210q\330\010\020\220\003\2201\330\010\014\210A\230!\240\001\200\001\330\013\014\330\013\014\330\004\017\210q\330\005\006\330\004\010\210\004\210D\220\001\330\004\010\210\004\210D\220\001\330\004\017\210q\220\001\330\004\017\210q\220\001\340\004\022\220$\220a\220w\230b\240\007\240u\250A\250R\250v\260Q\260d\270\"\270B\270f\300A\300Q\330\004\020\220\004\220A\220W\230B\230g\240U\250!\2502\250V\2601\260D\270\002\270\"\270F\300!\3001\340\004\013\2104\210q\220\014\230B\230j\250\004\250J\260b\270\001"; PyObject *data = NULL; CYTHON_UNUSED_VAR(__Pyx_DecompressString); #endif PyObject **stringtab = __pyx_mstate->__pyx_string_tab; Py_ssize_t pos = 0; - for (int i = 0; i < 307; i++) { + for (int i = 0; i < 309; i++) { Py_ssize_t bytes_length = index[i].length; PyObject *string = PyUnicode_DecodeUTF8(bytes + pos, bytes_length, NULL); - if (likely(string) && i >= 33) PyUnicode_InternInPlace(&string); + if (likely(string) && i >= 34) PyUnicode_InternInPlace(&string); if (unlikely(!string)) { Py_XDECREF(data); __PYX_ERR(0, 1, __pyx_L1_error) @@ -12774,7 +12802,7 @@ const char* const bytes = "<.1f.3fContour detection not valid: contours are not stringtab[i] = string; pos += bytes_length; } - for (int i = 307; i < 315; i++) { + for (int i = 309; i < 317; i++) { Py_ssize_t bytes_length = index[i].length; PyObject *string = PyBytes_FromStringAndSize(bytes + pos, bytes_length); stringtab[i] = string; @@ -12785,14 +12813,14 @@ const char* const bytes = "<.1f.3fContour detection not valid: contours are not } } Py_XDECREF(data); - for (Py_ssize_t i = 0; i < 315; i++) { + for (Py_ssize_t i = 0; i < 317; i++) { if (unlikely(PyObject_Hash(stringtab[i]) == -1)) { __PYX_ERR(0, 1, __pyx_L1_error) } } #if CYTHON_IMMORTAL_CONSTANTS { - PyObject **table = stringtab + 307; + PyObject **table = stringtab + 309; for (Py_ssize_t i=0; i<8; ++i) { #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING Py_SET_REFCNT(table[i], _Py_IMMORTAL_REFCNT_LOCAL); @@ -12910,12 +12938,12 @@ static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) { __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_dopt_sensor_anomalies_detect, __pyx_mstate->__pyx_n_u_infer_image, __pyx_mstate->__pyx_kp_b_iso88591_5_q_uM_AQ_9AWCq_Zq_r_q_Jb_5_1IX, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 16, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 193}; + const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 16, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 194}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_img_path, __pyx_mstate->__pyx_n_u_detection_models, __pyx_mstate->__pyx_n_u_data_csv, __pyx_mstate->__pyx_n_u_sensor_images, __pyx_mstate->__pyx_n_u_file_stem, __pyx_mstate->__pyx_n_u_folder_path, __pyx_mstate->__pyx_n_u_model, __pyx_mstate->__pyx_n_u__8, __pyx_mstate->__pyx_n_u_axes, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_side, __pyx_mstate->__pyx_n_u_image, __pyx_mstate->__pyx_n_u_checkpoint, __pyx_mstate->__pyx_n_u_result, __pyx_mstate->__pyx_n_u_ax, __pyx_mstate->__pyx_n_u_df}; __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_dopt_sensor_anomalies_detect, __pyx_mstate->__pyx_n_u_anomaly_detection, __pyx_mstate->__pyx_kp_b_iso88591_IQ_k_Y6MURS_wc_3c_a_F_IQm6_AS_9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad; } { - const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 239}; + const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 240}; PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_user_img_path, __pyx_mstate->__pyx_n_u_pixels_per_metric_X, __pyx_mstate->__pyx_n_u_pixels_per_metric_Y, __pyx_mstate->__pyx_n_u_file_path, __pyx_mstate->__pyx_n_u_MODEL_FOLDER, __pyx_mstate->__pyx_n_u_DETECTION_MODELS, __pyx_mstate->__pyx_n_u_data_csv, __pyx_mstate->__pyx_n_u_sensor_images}; __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_src_dopt_sensor_anomalies_detect, __pyx_mstate->__pyx_n_u_pipeline, __pyx_mstate->__pyx_kp_b_iso88591_AQ_t9G1_q_5_ARRS_aq_nA_Q_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad; } diff --git a/src/dopt_sensor_anomalies/detection.py b/src/dopt_sensor_anomalies/detection.py index 5bd5612..b4a41c4 100644 --- a/src/dopt_sensor_anomalies/detection.py +++ b/src/dopt_sensor_anomalies/detection.py @@ -176,6 +176,7 @@ def infer_image( output = model(input_tensor) anomaly_score = output.pred_score.item() + print(f">>> Anomaly score: {anomaly_score}") anomaly_label = bool(1 if anomaly_score >= 0.2 else 0) anomaly_map = output.anomaly_map.squeeze().cpu().numpy() diff --git a/tests/_models/new/model_left_hand_side.pth b/tests/_models/new/model_left_hand_side.pth new file mode 100644 index 0000000..a7eccec Binary files /dev/null and b/tests/_models/new/model_left_hand_side.pth differ diff --git a/tests/_models/new/model_right_hand_side.pth b/tests/_models/new/model_right_hand_side.pth new file mode 100644 index 0000000..61e0cae Binary files /dev/null and b/tests/_models/new/model_right_hand_side.pth differ