From 54a47a1d96eed62793709424270decbdd1f45448 Mon Sep 17 00:00:00 2001 From: Kou Kinoshita Date: Wed, 18 Feb 2026 14:16:21 -0300 Subject: [PATCH] SIENTIAPDE-1579: Added extra test files and support filters implementation --- docs/DB_CV022_WIT230 _double_date_column.csv | 33 + docs/DB_CV022_WIT230.csv | 647 ++++++++++++++++++ .../utils/repository/training_repository.py | 69 ++ 3 files changed, 749 insertions(+) create mode 100644 docs/DB_CV022_WIT230 _double_date_column.csv create mode 100644 docs/DB_CV022_WIT230.csv diff --git a/docs/DB_CV022_WIT230 _double_date_column.csv b/docs/DB_CV022_WIT230 _double_date_column.csv new file mode 100644 index 0000000..452543b --- /dev/null +++ b/docs/DB_CV022_WIT230 _double_date_column.csv @@ -0,0 +1,33 @@ +DATA,DATE2,03CV022/CORRENTE_N_M1_PV(Value),303-WIT-230(Value) +01/05/2022 00:00:00,07-01-2022 01:00:00,170,33 +01/05/2022 00:00:10,07-01-2022 01:00:10,169,605 +01/05/2022 00:00:20,07-01-2022 01:00:20,169,178 +01/05/2022 00:00:30,07-01-2022 01:00:30,166,468 +01/05/2022 00:00:40,07-01-2022 01:00:40,162,136 +01/05/2022 00:00:50,07-01-2022 01:00:50,157,804 +01/05/2022 00:01:00,07-01-2022 01:01:00,155,883 +01/05/2022 00:01:10,07-01-2022 01:01:10,155,684 +01/05/2022 00:01:20,07-01-2022 01:01:20,155,484 +01/05/2022 00:01:30,07-01-2022 01:01:30,155,284 +01/05/2022 00:01:40,07-01-2022 01:01:40,155,85 +01/05/2022 00:01:50,07-01-2022 01:01:50,154,885 +01/05/2022 00:02:00,09-01-2022 02:02:00,154,685 +01/05/2022 00:02:10,09-01-2022 02:02:10,154,486 +01/05/2022 00:02:20,09-01-2022 02:02:20,154,286 +01/05/2022 00:02:30,09-01-2022 02:02:30,154,86 +01/05/2022 00:02:40,09-01-2022 02:02:40,152,866 +01/05/2022 00:02:50,09-01-2022 02:02:50,150,87 +01/05/2022 00:03:00,09-01-2022 02:03:00,148,874 +01/05/2022 00:03:10,09-01-2022 02:03:10,148,2134 +01/05/2022 00:03:20,09-01-2022 02:03:20,148,2068 +01/05/2022 00:03:30,09-01-2022 02:03:30,148,2022 +01/05/2022 00:03:40,09-01-2022 02:03:40,148,1976 +01/05/2022 00:03:50,09-01-2022 02:03:50,154,139 +01/05/2022 00:04:00,11-01-2022 03:04:00,165,112 +01/05/2022 00:04:10,11-01-2022 03:04:10,170,42 +01/05/2022 00:04:20,11-01-2022 03:04:20,170,116 +01/05/2022 00:04:30,11-01-2022 03:04:30,170,191 +01/05/2022 00:04:40,11-01-2022 03:04:40,170,266 +01/05/2022 00:04:50,11-01-2022 03:04:50,170,341 +01/05/2022 00:05:00,11-01-2022 03:05:00,170,416 +01/05/2022 00:05:10,11-01-2022 03:05:10,170,491 \ No newline at end of file diff --git a/docs/DB_CV022_WIT230.csv b/docs/DB_CV022_WIT230.csv new file mode 100644 index 0000000..b8a886e --- /dev/null +++ b/docs/DB_CV022_WIT230.csv @@ -0,0 +1,647 @@ +DATA,03CV022/CORRENTE_N_M1_PV(Value),303-WIT-230(Value) +01/05/2022 00:00:00,170,33 +01/05/2022 00:00:10,169,605 +01/05/2022 00:00:20,169,178 +01/05/2022 00:00:30,166,468 +01/05/2022 00:00:40,162,136 +01/05/2022 00:00:50,157,804 +01/05/2022 00:01:00,155,883 +01/05/2022 00:01:10,155,684 +01/05/2022 00:01:20,155,484 +01/05/2022 00:01:30,155,284 +01/05/2022 00:01:40,155,85 +01/05/2022 00:01:50,154,885 +01/05/2022 00:02:00,154,685 +01/05/2022 00:02:10,154,486 +01/05/2022 00:02:20,154,286 +01/05/2022 00:02:30,154,86 +01/05/2022 00:02:40,152,866 +01/05/2022 00:02:50,150,87 +01/05/2022 00:03:00,148,874 +01/05/2022 00:03:10,148,2134 +01/05/2022 00:03:20,148,2068 +01/05/2022 00:03:30,148,2022 +01/05/2022 00:03:40,148,1976 +01/05/2022 00:03:50,154,139 +01/05/2022 00:04:00,165,112 +01/05/2022 00:04:10,170,42 +01/05/2022 00:04:20,170,116 +01/05/2022 00:04:30,170,191 +01/05/2022 00:04:40,170,266 +01/05/2022 00:04:50,170,341 +01/05/2022 00:05:00,170,416 +01/05/2022 00:05:10,170,491 +01/05/2022 00:05:20,170,566 +01/05/2022 00:05:30,170,641 +01/05/2022 00:05:40,170,716 +01/05/2022 00:05:50,170,79 +01/05/2022 00:06:00,170,865 +01/05/2022 00:06:10,170,94 +01/05/2022 00:06:20,171,15 +01/05/2022 00:06:30,171,9 +01/05/2022 00:06:40,171,165 +01/05/2022 00:06:50,171,24 +01/05/2022 00:07:00,171,315 +01/05/2022 00:07:10,171,39 +01/05/2022 00:07:20,171,465 +01/05/2022 00:07:30,171,539 +01/05/2022 00:07:40,171,614 +01/05/2022 00:07:50,171,689 +01/05/2022 00:08:00,171,764 +01/05/2022 00:08:10,171,839 +01/05/2022 00:08:20,171,914 +01/05/2022 00:08:30,171,989 +01/05/2022 00:08:40,172,64 +01/05/2022 00:08:50,172,139 +01/05/2022 00:09:00,172,214 +01/05/2022 00:09:10,172,288 +01/05/2022 00:09:20,172,363 +01/05/2022 00:09:30,172,438 +01/05/2022 00:09:40,172,513 +01/05/2022 00:09:50,172,588 +01/05/2022 00:10:00,172,663 +01/05/2022 00:10:10,172,738 +01/05/2022 00:10:20,172,813 +01/05/2022 00:10:30,172,888 +01/05/2022 00:10:40,172,962 +01/05/2022 00:10:50,172,981 +01/05/2022 00:11:00,172,943 +01/05/2022 00:11:10,172,905 +01/05/2022 00:11:20,172,867 +01/05/2022 00:11:30,172,829 +01/05/2022 00:11:40,172,79 +01/05/2022 00:11:50,172,752 +01/05/2022 00:12:00,172,714 +01/05/2022 00:12:10,172,676 +01/05/2022 00:12:20,172,638 +01/05/2022 00:12:30,172,6 +01/05/2022 00:12:40,172,562 +01/05/2022 00:12:50,172,524 +01/05/2022 00:13:00,172,485 +01/05/2022 00:13:10,172,447 +01/05/2022 00:13:20,172,409 +01/05/2022 00:13:30,172,371 +01/05/2022 00:13:40,172,333 +01/05/2022 00:13:50,172,295 +01/05/2022 00:14:00,172,257 +01/05/2022 00:14:10,172,219 +01/05/2022 00:14:20,172,18 +01/05/2022 00:14:30,172,142 +01/05/2022 00:14:40,172,104 +01/05/2022 00:14:50,172,66 +01/05/2022 00:15:00,172,28 +01/05/2022 00:15:10,171,99 +01/05/2022 00:15:20,171,952 +01/05/2022 00:15:30,171,914 +01/05/2022 00:15:40,171,876 +01/05/2022 00:15:50,171,837 +01/05/2022 00:16:00,171,799 +01/05/2022 00:16:10,171,761 +01/05/2022 00:16:20,171,723 +01/05/2022 00:16:30,171,685 +01/05/2022 00:16:40,171,647 +01/05/2022 00:16:50,171,609 +01/05/2022 00:17:00,171,571 +01/05/2022 00:17:10,171,533 +01/05/2022 00:17:20,171,494 +01/05/2022 00:17:30,171,456 +01/05/2022 00:17:40,171,418 +01/05/2022 00:17:50,171,38 +01/05/2022 00:18:00,171,342 +01/05/2022 00:18:10,171,304 +01/05/2022 00:18:20,171,266 +01/05/2022 00:18:30,171,228 +01/05/2022 00:18:40,171,189 +01/05/2022 00:18:50,171,151 +01/05/2022 00:19:00,171,113 +01/05/2022 00:19:10,171,75 +01/05/2022 00:19:20,171,37 +01/05/2022 00:19:30,170,999 +01/05/2022 00:19:40,170,961 +01/05/2022 00:19:50,170,923 +01/05/2022 00:20:00,170,884 +01/05/2022 00:20:10,170,846 +01/05/2022 00:20:20,170,808 +01/05/2022 00:20:30,170,77 +01/05/2022 00:20:40,170,732 +01/05/2022 00:20:50,170,694 +01/05/2022 00:21:00,170,656 +01/05/2022 00:21:10,170,618 +01/05/2022 00:21:20,170,58 +01/05/2022 00:21:30,170,541 +01/05/2022 00:21:40,170,503 +01/05/2022 00:21:50,170,465 +01/05/2022 00:22:00,170,427 +01/05/2022 00:22:10,170,389 +01/05/2022 00:22:20,170,351 +01/05/2022 00:22:30,170,313 +01/05/2022 00:22:40,170,275 +01/05/2022 00:22:50,170,236 +01/05/2022 00:23:00,170,198 +01/05/2022 00:23:10,170,16 +01/05/2022 00:23:20,170,122 +01/05/2022 00:23:30,170,84 +01/05/2022 00:23:40,170,46 +01/05/2022 00:23:50,170,8 +01/05/2022 00:24:00,169,97 +01/05/2022 00:24:10,169,932 +01/05/2022 00:24:20,169,893 +01/05/2022 00:24:30,169,855 +01/05/2022 00:24:40,169,817 +01/05/2022 00:24:50,169,779 +01/05/2022 00:25:00,169,741 +01/05/2022 00:25:10,169,703 +01/05/2022 00:25:20,169,665 +01/05/2022 00:25:30,169,627 +01/05/2022 00:25:40,169,588 +01/05/2022 00:25:50,169,55 +01/05/2022 00:26:00,169,512 +01/05/2022 00:26:10,169,474 +01/05/2022 00:26:20,169,436 +01/05/2022 00:26:30,169,398 +01/05/2022 00:26:40,169,36 +01/05/2022 00:26:50,169,322 +01/05/2022 00:27:00,169,284 +01/05/2022 00:27:10,169,245 +01/05/2022 00:27:20,169,207 +01/05/2022 00:27:30,169,169 +01/05/2022 00:27:40,169,131 +01/05/2022 00:27:50,169,93 +01/05/2022 00:28:00,169,55 +01/05/2022 00:28:10,169,17 +01/05/2022 00:28:20,168,979 +01/05/2022 00:28:30,168,94 +01/05/2022 00:28:40,168,902 +01/05/2022 00:28:50,168,864 +01/05/2022 00:29:00,168,826 +01/05/2022 00:29:10,168,788 +01/05/2022 00:29:20,168,75 +01/05/2022 00:29:30,168,712 +01/05/2022 00:29:40,168,674 +01/05/2022 00:29:50,168,636 +01/05/2022 00:30:00,168,597 +01/05/2022 00:30:10,168,559 +01/05/2022 00:30:20,168,521 +01/05/2022 00:30:30,168,483 +01/05/2022 00:30:40,168,445 +01/05/2022 00:30:50,168,407 +01/05/2022 00:31:00,168,369 +01/05/2022 00:31:10,168,331 +01/05/2022 00:31:20,168,292 +01/05/2022 00:31:30,168,254 +01/05/2022 00:31:40,168,216 +01/05/2022 00:31:50,168,178 +01/05/2022 00:32:00,168,14 +01/05/2022 00:32:10,168,102 +01/05/2022 00:32:20,168,64 +01/05/2022 00:32:30,168,26 +01/05/2022 00:32:40,168,26 +01/05/2022 00:32:50,168,105 +01/05/2022 00:33:00,168,183 +01/05/2022 00:33:10,168,262 +01/05/2022 00:33:20,168,341 +01/05/2022 00:33:30,168,42 +01/05/2022 00:33:40,168,499 +01/05/2022 00:33:50,168,578 +01/05/2022 00:34:00,168,657 +01/05/2022 00:34:10,168,735 +01/05/2022 00:34:20,168,814 +01/05/2022 00:34:30,168,893 +01/05/2022 00:34:40,168,972 +01/05/2022 00:34:50,169,51 +01/05/2022 00:35:00,169,13 +01/05/2022 00:35:10,169,209 +01/05/2022 00:35:20,169,287 +01/05/2022 00:35:30,169,366 +01/05/2022 00:35:40,169,445 +01/05/2022 00:35:50,169,524 +01/05/2022 00:36:00,169,603 +01/05/2022 00:36:10,169,682 +01/05/2022 00:36:20,169,761 +01/05/2022 00:36:30,169,839 +01/05/2022 00:36:40,169,918 +01/05/2022 00:36:50,169,997 +01/05/2022 00:37:00,170,76 +01/05/2022 00:37:10,170,155 +01/05/2022 00:37:20,170,234 +01/05/2022 00:37:30,170,312 +01/05/2022 00:37:40,170,391 +01/05/2022 00:37:50,170,47 +01/05/2022 00:38:00,170,549 +01/05/2022 00:38:10,170,628 +01/05/2022 00:38:20,170,707 +01/05/2022 00:38:30,170,786 +01/05/2022 00:38:40,170,864 +01/05/2022 00:38:50,170,943 +01/05/2022 00:39:00,170,993 +01/05/2022 00:39:10,170,967 +01/05/2022 00:39:20,170,942 +01/05/2022 00:39:30,170,917 +01/05/2022 00:39:40,170,891 +01/05/2022 00:39:50,170,866 +01/05/2022 00:40:00,170,841 +01/05/2022 00:40:10,170,815 +01/05/2022 00:40:20,170,79 +01/05/2022 00:40:30,170,764 +01/05/2022 00:40:40,170,739 +01/05/2022 00:40:50,170,714 +01/05/2022 00:41:00,170,688 +01/05/2022 00:41:10,170,663 +01/05/2022 00:41:20,170,637 +01/05/2022 00:41:30,170,612 +01/05/2022 00:41:40,170,587 +01/05/2022 00:41:50,170,561 +01/05/2022 00:42:00,170,536 +01/05/2022 00:42:10,170,51 +01/05/2022 00:42:20,170,485 +01/05/2022 00:42:30,170,46 +01/05/2022 00:42:40,170,434 +01/05/2022 00:42:50,170,409 +01/05/2022 00:43:00,170,384 +01/05/2022 00:43:10,170,358 +01/05/2022 00:43:20,170,333 +01/05/2022 00:43:30,170,307 +01/05/2022 00:43:40,170,282 +01/05/2022 00:43:50,170,257 +01/05/2022 00:44:00,170,231 +01/05/2022 00:44:10,170,206 +01/05/2022 00:44:20,170,18 +01/05/2022 00:44:30,170,155 +01/05/2022 00:44:40,170,13 +01/05/2022 00:44:50,170,104 +01/05/2022 00:45:00,170,79 +01/05/2022 00:45:10,170,54 +01/05/2022 00:45:20,170,28 +01/05/2022 00:45:30,170,3 +01/05/2022 00:45:40,169,977 +01/05/2022 00:45:50,169,952 +01/05/2022 00:46:00,169,927 +01/05/2022 00:46:10,169,901 +01/05/2022 00:46:20,169,876 +01/05/2022 00:46:30,169,85 +01/05/2022 00:46:40,169,825 +01/05/2022 00:46:50,169,8 +01/05/2022 00:47:00,169,774 +01/05/2022 00:47:10,169,749 +01/05/2022 00:47:20,169,723 +01/05/2022 00:47:30,169,698 +01/05/2022 00:47:40,169,673 +01/05/2022 00:47:50,169,647 +01/05/2022 00:48:00,169,622 +01/05/2022 00:48:10,169,597 +01/05/2022 00:48:20,169,571 +01/05/2022 00:48:30,169,546 +01/05/2022 00:48:40,169,52 +01/05/2022 00:48:50,169,495 +01/05/2022 00:49:00,169,47 +01/05/2022 00:49:10,169,444 +01/05/2022 00:49:20,169,419 +01/05/2022 00:49:30,169,393 +01/05/2022 00:49:40,169,368 +01/05/2022 00:49:50,169,343 +01/05/2022 00:50:00,169,317 +01/05/2022 00:50:10,169,292 +01/05/2022 00:50:20,169,266 +01/05/2022 00:50:30,169,241 +01/05/2022 00:50:40,169,216 +01/05/2022 00:50:50,169,19 +01/05/2022 00:51:00,169,165 +01/05/2022 00:51:10,169,14 +01/05/2022 00:51:20,169,114 +01/05/2022 00:51:30,169,89 +01/05/2022 00:51:40,169,63 +01/05/2022 00:51:50,169,38 +01/05/2022 00:52:00,169,13 +01/05/2022 00:52:10,168,987 +01/05/2022 00:52:20,168,962 +01/05/2022 00:52:30,168,936 +01/05/2022 00:52:40,168,911 +01/05/2022 00:52:50,168,886 +01/05/2022 00:53:00,168,86 +01/05/2022 00:53:10,168,835 +01/05/2022 00:53:20,168,809 +01/05/2022 00:53:30,168,784 +01/05/2022 00:53:40,168,759 +01/05/2022 00:53:50,168,733 +01/05/2022 00:54:00,168,708 +01/05/2022 00:54:10,168,683 +01/05/2022 00:54:20,168,657 +01/05/2022 00:54:30,168,632 +01/05/2022 00:54:40,168,606 +01/05/2022 00:54:50,168,581 +01/05/2022 00:55:00,168,556 +01/05/2022 00:55:10,168,53 +01/05/2022 00:55:20,168,505 +01/05/2022 00:55:30,168,479 +01/05/2022 00:55:40,168,454 +01/05/2022 00:55:50,168,429 +01/05/2022 00:56:00,168,403 +01/05/2022 00:56:10,168,378 +01/05/2022 00:56:20,168,352 +01/05/2022 00:56:30,168,327 +01/05/2022 00:56:40,168,302 +01/05/2022 00:56:50,168,276 +01/05/2022 00:57:00,168,251 +01/05/2022 00:57:10,168,226 +01/05/2022 00:57:20,168,2 +01/05/2022 00:57:30,168,175 +01/05/2022 00:57:40,168,149 +01/05/2022 00:57:50,168,124 +01/05/2022 00:58:00,168,99 +01/05/2022 00:58:10,168,73 +01/05/2022 00:58:20,168,48 +01/05/2022 00:58:30,168,22 +01/05/2022 00:58:40,167,76 +01/05/2022 00:58:50,160,151 +01/05/2022 00:59:00,161,484 +01/05/2022 00:59:10,162,817 +01/05/2022 00:59:20,164,281 +01/05/2022 00:59:30,166,777 +01/05/2022 00:59:40,167,148 +01/05/2022 00:59:50,148,45 +01/05/2022 01:00:00,117,525 +01/05/2022 01:00:10,105,3 +01/05/2022 01:00:20,105,315 +01/05/2022 01:00:30,105,6 +01/05/2022 01:00:40,105,886 +01/05/2022 01:00:50,106,171 +01/05/2022 01:01:00,106,456 +01/05/2022 01:01:10,106,742 +01/05/2022 01:01:20,107,698 +01/05/2022 01:01:30,115,81 +01/05/2022 01:01:40,122,464 +01/05/2022 01:01:50,129,847 +01/05/2022 01:02:00,137,231 +01/05/2022 01:02:10,144,138 +01/05/2022 01:02:20,145,801 +01/05/2022 01:02:30,147,464 +01/05/2022 01:02:40,149,835 +01/05/2022 01:02:50,160,808 +01/05/2022 01:03:00,171,2 +01/05/2022 01:03:10,171,36 +01/05/2022 01:03:20,171,7 +01/05/2022 01:03:30,171,103 +01/05/2022 01:03:40,171,137 +01/05/2022 01:03:50,171,171 +01/05/2022 01:04:00,171,204 +01/05/2022 01:04:10,171,238 +01/05/2022 01:04:20,171,272 +01/05/2022 01:04:30,171,305 +01/05/2022 01:04:40,171,339 +01/05/2022 01:04:50,171,372 +01/05/2022 01:05:00,171,406 +01/05/2022 01:05:10,171,44 +01/05/2022 01:05:20,171,473 +01/05/2022 01:05:30,171,507 +01/05/2022 01:05:40,171,541 +01/05/2022 01:05:50,171,574 +01/05/2022 01:06:00,171,608 +01/05/2022 01:06:10,171,642 +01/05/2022 01:06:20,171,675 +01/05/2022 01:06:30,171,709 +01/05/2022 01:06:40,171,743 +01/05/2022 01:06:50,171,776 +01/05/2022 01:07:00,171,81 +01/05/2022 01:07:10,171,844 +01/05/2022 01:07:20,171,877 +01/05/2022 01:07:30,171,911 +01/05/2022 01:07:40,171,944 +01/05/2022 01:07:50,171,978 +01/05/2022 01:08:00,172,12 +01/05/2022 01:08:10,172,45 +01/05/2022 01:08:20,172,79 +01/05/2022 01:08:30,172,113 +01/05/2022 01:08:40,172,146 +01/05/2022 01:08:50,172,18 +01/05/2022 01:09:00,172,214 +01/05/2022 01:09:10,172,247 +01/05/2022 01:09:20,172,281 +01/05/2022 01:09:30,172,315 +01/05/2022 01:09:40,172,348 +01/05/2022 01:09:50,172,382 +01/05/2022 01:10:00,172,415 +01/05/2022 01:10:10,172,449 +01/05/2022 01:10:20,172,483 +01/05/2022 01:10:30,172,516 +01/05/2022 01:10:40,172,55 +01/05/2022 01:10:50,172,584 +01/05/2022 01:11:00,172,617 +01/05/2022 01:11:10,172,651 +01/05/2022 01:11:20,172,685 +01/05/2022 01:11:30,172,718 +01/05/2022 01:11:40,172,752 +01/05/2022 01:11:50,172,786 +01/05/2022 01:12:00,172,819 +01/05/2022 01:12:10,172,853 +01/05/2022 01:12:20,172,887 +01/05/2022 01:12:30,172,92 +01/05/2022 01:12:40,172,954 +01/05/2022 01:12:50,172,987 +01/05/2022 01:13:00,173,21 +01/05/2022 01:13:10,173,55 +01/05/2022 01:13:20,173,88 +01/05/2022 01:13:30,173,122 +01/05/2022 01:13:40,173,156 +01/05/2022 01:13:50,173,189 +01/05/2022 01:14:00,173,223 +01/05/2022 01:14:10,173,257 +01/05/2022 01:14:20,173,29 +01/05/2022 01:14:30,173,324 +01/05/2022 01:14:40,173,358 +01/05/2022 01:14:50,173,391 +01/05/2022 01:15:00,173,425 +01/05/2022 01:15:10,173,458 +01/05/2022 01:15:20,173,492 +01/05/2022 01:15:30,173,526 +01/05/2022 01:15:40,173,559 +01/05/2022 01:15:50,173,593 +01/05/2022 01:16:00,173,627 +01/05/2022 01:16:10,173,66 +01/05/2022 01:16:20,173,694 +01/05/2022 01:16:30,173,728 +01/05/2022 01:16:40,173,761 +01/05/2022 01:16:50,173,795 +01/05/2022 01:17:00,173,829 +01/05/2022 01:17:10,173,862 +01/05/2022 01:17:20,173,896 +01/05/2022 01:17:30,173,93 +01/05/2022 01:17:40,173,963 +01/05/2022 01:17:50,173,997 +01/05/2022 01:18:00,174,103 +01/05/2022 01:18:10,174,218 +01/05/2022 01:18:20,174,332 +01/05/2022 01:18:30,174,446 +01/05/2022 01:18:40,174,56 +01/05/2022 01:18:50,174,674 +01/05/2022 01:19:00,174,788 +01/05/2022 01:19:10,174,902 +01/05/2022 01:19:20,175,17 +01/05/2022 01:19:30,175,131 +01/05/2022 01:19:40,175,245 +01/05/2022 01:19:50,175,359 +01/05/2022 01:20:00,175,473 +01/05/2022 01:20:10,175,587 +01/05/2022 01:20:20,175,701 +01/05/2022 01:20:30,175,816 +01/05/2022 01:20:40,175,93 +01/05/2022 01:20:50,176,44 +01/05/2022 01:21:00,176,158 +01/05/2022 01:21:10,176,272 +01/05/2022 01:21:20,176,386 +01/05/2022 01:21:30,176,501 +01/05/2022 01:21:40,176,615 +01/05/2022 01:21:50,176,729 +01/05/2022 01:22:00,176,843 +01/05/2022 01:22:10,176,957 +01/05/2022 01:22:20,177,71 +01/05/2022 01:22:30,177,185 +01/05/2022 01:22:40,177,3 +01/05/2022 01:22:50,177,414 +01/05/2022 01:23:00,177,528 +01/05/2022 01:23:10,177,642 +01/05/2022 01:23:20,177,756 +01/05/2022 01:23:30,177,87 +01/05/2022 01:23:40,177,984 +01/05/2022 01:23:50,178,7 +01/05/2022 01:24:00,178,15 +01/05/2022 01:24:10,178,24 +01/05/2022 01:24:20,178,32 +01/05/2022 01:24:30,178,4 +01/05/2022 01:24:40,178,48 +01/05/2022 01:24:50,178,57 +01/05/2022 01:25:00,178,65 +01/05/2022 01:25:10,178,73 +01/05/2022 01:25:20,178,81 +01/05/2022 01:25:30,178,9 +01/05/2022 01:25:40,178,98 +01/05/2022 01:25:50,178,106 +01/05/2022 01:26:00,178,114 +01/05/2022 01:26:10,178,123 +01/05/2022 01:26:20,178,131 +01/05/2022 01:26:30,178,139 +01/05/2022 01:26:40,178,147 +01/05/2022 01:26:50,178,156 +01/05/2022 01:27:00,178,164 +01/05/2022 01:27:10,178,172 +01/05/2022 01:27:20,178,18 +01/05/2022 01:27:30,178,189 +01/05/2022 01:27:40,178,197 +01/05/2022 01:27:50,178,205 +01/05/2022 01:28:00,178,213 +01/05/2022 01:28:10,178,222 +01/05/2022 01:28:20,178,23 +01/05/2022 01:28:30,178,238 +01/05/2022 01:28:40,178,246 +01/05/2022 01:28:50,178,255 +01/05/2022 01:29:00,178,263 +01/05/2022 01:29:10,178,271 +01/05/2022 01:29:20,178,279 +01/05/2022 01:29:30,178,288 +01/05/2022 01:29:40,178,296 +01/05/2022 01:29:50,178,304 +01/05/2022 01:30:00,178,312 +01/05/2022 01:30:10,178,321 +01/05/2022 01:30:20,178,329 +01/05/2022 01:30:30,178,337 +01/05/2022 01:30:40,178,345 +01/05/2022 01:30:50,178,354 +01/05/2022 01:31:00,178,362 +01/05/2022 01:31:10,178,37 +01/05/2022 01:31:20,178,378 +01/05/2022 01:31:30,178,387 +01/05/2022 01:31:40,178,395 +01/05/2022 01:31:50,178,403 +01/05/2022 01:32:00,178,411 +01/05/2022 01:32:10,178,42 +01/05/2022 01:32:20,178,428 +01/05/2022 01:32:30,178,436 +01/05/2022 01:32:40,178,444 +01/05/2022 01:32:50,178,453 +01/05/2022 01:33:00,178,461 +01/05/2022 01:33:10,178,469 +01/05/2022 01:33:20,178,477 +01/05/2022 01:33:30,178,486 +01/05/2022 01:33:40,178,494 +01/05/2022 01:33:50,178,502 +01/05/2022 01:34:00,178,51 +01/05/2022 01:34:10,178,519 +01/05/2022 01:34:20,178,527 +01/05/2022 01:34:30,178,535 +01/05/2022 01:34:40,178,543 +01/05/2022 01:34:50,178,552 +01/05/2022 01:35:00,178,56 +01/05/2022 01:35:10,178,568 +01/05/2022 01:35:20,178,576 +01/05/2022 01:35:30,178,585 +01/05/2022 01:35:40,178,593 +01/05/2022 01:35:50,178,601 +01/05/2022 01:36:00,178,609 +01/05/2022 01:36:10,178,618 +01/05/2022 01:36:20,178,626 +01/05/2022 01:36:30,178,634 +01/05/2022 01:36:40,178,642 +01/05/2022 01:36:50,178,651 +01/05/2022 01:37:00,178,659 +01/05/2022 01:37:10,178,667 +01/05/2022 01:37:20,178,675 +01/05/2022 01:37:30,178,684 +01/05/2022 01:37:40,178,692 +01/05/2022 01:37:50,178,7 +01/05/2022 01:38:00,178,708 +01/05/2022 01:38:10,178,717 +01/05/2022 01:38:20,178,725 +01/05/2022 01:38:30,178,733 +01/05/2022 01:38:40,178,741 +01/05/2022 01:38:50,178,75 +01/05/2022 01:39:00,178,758 +01/05/2022 01:39:10,178,766 +01/05/2022 01:39:20,178,774 +01/05/2022 01:39:30,178,783 +01/05/2022 01:39:40,178,791 +01/05/2022 01:39:50,178,799 +01/05/2022 01:40:00,178,807 +01/05/2022 01:40:10,178,816 +01/05/2022 01:40:20,178,824 +01/05/2022 01:40:30,178,832 +01/05/2022 01:40:40,178,84 +01/05/2022 01:40:50,178,849 +01/05/2022 01:41:00,178,857 +01/05/2022 01:41:10,178,865 +01/05/2022 01:41:20,178,873 +01/05/2022 01:41:30,178,882 +01/05/2022 01:41:40,178,89 +01/05/2022 01:41:50,178,898 +01/05/2022 01:42:00,178,906 +01/05/2022 01:42:10,178,915 +01/05/2022 01:42:20,178,923 +01/05/2022 01:42:30,178,931 +01/05/2022 01:42:40,178,939 +01/05/2022 01:42:50,178,948 +01/05/2022 01:43:00,178,956 +01/05/2022 01:43:10,178,964 +01/05/2022 01:43:20,178,972 +01/05/2022 01:43:30,178,981 +01/05/2022 01:43:40,178,989 +01/05/2022 01:43:50,178,997 +01/05/2022 01:44:00,169,147 +01/05/2022 01:44:10,148,934 +01/05/2022 01:44:20,119,458 +01/05/2022 01:44:30,108,326 +01/05/2022 01:44:40,108,825 +01/05/2022 01:44:50,109,324 +01/05/2022 01:45:00,109,824 +01/05/2022 01:45:10,110,323 +01/05/2022 01:45:20,110,822 +01/05/2022 01:45:30,123,3 +01/05/2022 01:45:40,141,628 +01/05/2022 01:45:50,160,252 +01/05/2022 01:46:00,169,863 +01/05/2022 01:46:10,174,353 +01/05/2022 01:46:20,176,8 +01/05/2022 01:46:30,176,19 +01/05/2022 01:46:40,176,31 +01/05/2022 01:46:50,176,43 +01/05/2022 01:47:00,176,55 +01/05/2022 01:47:10,176,67 +01/05/2022 01:47:20,176,79 +01/05/2022 01:47:30,176,91 \ No newline at end of file diff --git a/model_manager/utils/repository/training_repository.py b/model_manager/utils/repository/training_repository.py index 67abb17..2083dbd 100644 --- a/model_manager/utils/repository/training_repository.py +++ b/model_manager/utils/repository/training_repository.py @@ -47,6 +47,68 @@ def _ensure_date_column_parsed(data: pd.DataFrame, params: TrainModelParams) -> return data +def _apply_support_filters( + data_view: pd.DataFrame, + target_variable: str, + support_filters: dict, +) -> pd.DataFrame: + """ + Keep only rows where (var, target) lies between the two guide lines for each variable. + + For each variable in support_filters, the condition is lower(x_var) <= target <= upper(x_var), + where lower/upper are the two lines (intercept + slope from angle, scaled by y_range/x_range). + Global mask is AND across all variables. Matches DEMO logic in template_01.py. + + Args: + data_view: DataFrame after preprocessor transform. + target_variable: Name of the target column (y axis). + support_filters: Per-variable config with upper_line/lower_line, each {intercept, angle}. + + Returns: + data_view filtered to rows satisfying all variable conditions; unchanged if support_filters empty. + """ + if not support_filters or target_variable not in data_view.columns: + return data_view + + combined_keep_mask = np.ones(len(data_view), dtype=bool) + + for var_col, config in support_filters.items(): + if var_col not in data_view.columns: + continue + + upper = config.get('upper_line') or config.get('upperLine') + lower = config.get('lower_line') or config.get('lowerLine') + if not upper or not lower: + continue + + x_vals = data_view[var_col].astype(float).to_numpy() + y_vals = data_view[target_variable].astype(float).to_numpy() + + xmin, xmax = float(np.nanmin(x_vals)), float(np.nanmax(x_vals)) + ymin, ymax = float(np.nanmin(y_vals)), float(np.nanmax(y_vals)) + x_range = (xmax - xmin) if (xmax - xmin) != 0 else 1.0 + y_range = (ymax - ymin) if (ymax - ymin) != 0 else 1.0 + scale_ratio = y_range / x_range + + b1 = float(upper.get('intercept', 0)) + deg1 = float(upper.get('angle', 0)) + b2 = float(lower.get('intercept', 0)) + deg2 = float(lower.get('angle', 0)) + + m1 = np.tan(np.deg2rad(deg1)) * scale_ratio + m2 = np.tan(np.deg2rad(deg2)) * scale_ratio + y1 = m1 * x_vals + b1 + y2 = m2 * x_vals + b2 + lower_bound = np.minimum(y1, y2) + upper_bound = np.maximum(y1, y2) + keep_mask = (y_vals >= lower_bound) & (y_vals <= upper_bound) + + if len(keep_mask) == len(combined_keep_mask): + combined_keep_mask &= keep_mask + + return data_view.loc[combined_keep_mask] + + class TrainingRepository: """ Repository for machine learning model training operations. @@ -105,6 +167,13 @@ class TrainingRepository: process_data.fit(data) data_view = process_data.transform(data) + if params.support_filters: + data_view = _apply_support_filters( + data_view, + params.target_variable, + params.support_filters, + ) + if len(data_view) <= 0: raise ValueError('Data view is empty after transformation')