From 2be802fe1111ab7b89ec1c575262638473abc0a0 Mon Sep 17 00:00:00 2001 From: RobHanna-NOAA Date: Wed, 16 Oct 2024 12:05:40 -0600 Subject: [PATCH] setup new manual workflow checkin --- .gitignore | 1 + ...vice Development Overview-checkpoint.ipynb | 616 ++ ...STER PRODUCT DEV WORKFLOW-checkpoint.ipynb | 228 + ... Public FIM Domain Update-checkpoint.ipynb | 211 + ...vice Development Template-checkpoint.ipynb | 613 ++ .../3. EGIS Service Status-checkpoint.ipynb | 285 + ...rrence Flow HUC 8 Cluster-checkpoint.ipynb | 2140 ++++++ .../5. Service Metadata-checkpoint.ipynb | 4241 ++++++++++++ .../7. Max Flows-checkpoint.ipynb | 5719 +++++++++++++++++ ...9. Run Historic Pipelines-checkpoint.ipynb | 136 + ... Viz DB Service Development Overview.ipynb | 616 ++ .../11. RASTER PRODUCT DEV WORKFLOW.ipynb | 228 + .../12. Public FIM Domain Update.ipynb | 211 + .../2. Service Development Template.ipynb | 613 ++ .../3. EGIS Service Status.ipynb | 285 + .../4. Recurrence Flow HUC 8 Cluster.ipynb | 2140 ++++++ .../5. Service Metadata.ipynb | 4241 ++++++++++++ Core/Manual_Workflows/7. Max Flows.ipynb | 5719 +++++++++++++++++ .../9. Run Historic Pipelines.ipynb | 136 + ...IM Version 4.4.0.0 Update-checkpoint.ipynb | 1600 +++++ ...M Version 4.5.2.11 Update-checkpoint.ipynb | 2755 ++++++++ .../10. FIM Version 4.4.0.0 Update.ipynb | 1600 +++++ .../10. FIM Version 4.5.2.11 Update.ipynb | 2755 ++++++++ ...te Recurrence Flows Table-checkpoint.ipynb | 623 ++ .../Update Recurrence Flows Table.ipynb | 623 ++ .../.ipynb_checkpoints/__init__-checkpoint.py | 0 ...ng_data_in_nwm_shared_bucket-checkpoint.py | 55 + .../s3_shared_functions-checkpoint.py | 198 + .../shared_funcs-checkpoint.py | 143 + .../shared_functions-checkpoint.py | 831 +++ .../sync_s3_folders-checkpoint.py | 44 + .../viz_db_ingest-checkpoint.py | 147 + .../viz_lambda_shared_funcs-checkpoint.py | 733 +++ .../helper_functions/__init__.py | 0 .../find_missing_data_in_nwm_shared_bucket.py | 55 + .../helper_functions/s3_shared_functions.py | 198 + .../helper_functions/shared_funcs.py | 143 + .../helper_functions/shared_functions.py | 831 +++ .../helper_functions/sync_s3_folders.py | 44 + .../helper_functions/viz_db_ingest.py | 147 + .../viz_lambda_shared_funcs.py | 733 +++ ...owline Reference Services-checkpoint.ipynb | 204 + .../Public FIM Domain-checkpoint.ipynb | 256 + .../Flowline Reference Services.ipynb | 204 + .../static_services/Public FIM Domain.ipynb | 256 + 45 files changed, 43557 insertions(+) create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/1. Viz DB Service Development Overview-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/11. RASTER PRODUCT DEV WORKFLOW-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/12. Public FIM Domain Update-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/2. Service Development Template-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/3. EGIS Service Status-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/4. Recurrence Flow HUC 8 Cluster-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/5. Service Metadata-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/7. Max Flows-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/.ipynb_checkpoints/9. Run Historic Pipelines-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/1. Viz DB Service Development Overview.ipynb create mode 100644 Core/Manual_Workflows/11. RASTER PRODUCT DEV WORKFLOW.ipynb create mode 100644 Core/Manual_Workflows/12. Public FIM Domain Update.ipynb create mode 100644 Core/Manual_Workflows/2. Service Development Template.ipynb create mode 100644 Core/Manual_Workflows/3. EGIS Service Status.ipynb create mode 100644 Core/Manual_Workflows/4. Recurrence Flow HUC 8 Cluster.ipynb create mode 100644 Core/Manual_Workflows/5. Service Metadata.ipynb create mode 100644 Core/Manual_Workflows/7. Max Flows.ipynb create mode 100644 Core/Manual_Workflows/9. Run Historic Pipelines.ipynb create mode 100644 Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.4.0.0 Update-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.5.2.11 Update-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.4.0.0 Update.ipynb create mode 100644 Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.5.2.11 Update.ipynb create mode 100644 Core/Manual_Workflows/db_updates/.ipynb_checkpoints/Update Recurrence Flows Table-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/db_updates/Update Recurrence Flows Table.ipynb create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/__init__-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/find_missing_data_in_nwm_shared_bucket-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/s3_shared_functions-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_funcs-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_functions-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/sync_s3_folders-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_db_ingest-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_lambda_shared_funcs-checkpoint.py create mode 100644 Core/Manual_Workflows/helper_functions/__init__.py create mode 100644 Core/Manual_Workflows/helper_functions/find_missing_data_in_nwm_shared_bucket.py create mode 100644 Core/Manual_Workflows/helper_functions/s3_shared_functions.py create mode 100644 Core/Manual_Workflows/helper_functions/shared_funcs.py create mode 100644 Core/Manual_Workflows/helper_functions/shared_functions.py create mode 100644 Core/Manual_Workflows/helper_functions/sync_s3_folders.py create mode 100644 Core/Manual_Workflows/helper_functions/viz_db_ingest.py create mode 100644 Core/Manual_Workflows/helper_functions/viz_lambda_shared_funcs.py create mode 100644 Core/Manual_Workflows/static_services/.ipynb_checkpoints/Flowline Reference Services-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/static_services/.ipynb_checkpoints/Public FIM Domain-checkpoint.ipynb create mode 100644 Core/Manual_Workflows/static_services/Flowline Reference Services.ipynb create mode 100644 Core/Manual_Workflows/static_services/Public FIM Domain.ipynb diff --git a/.gitignore b/.gitignore index d8a06582..3e76fab8 100644 --- a/.gitignore +++ b/.gitignore @@ -49,5 +49,6 @@ terraform.rc **/buildplan **/destroyplan +**/ipynb_checkpoints Dev/env.yaml \ No newline at end of file diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/1. Viz DB Service Development Overview-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/1. Viz DB Service Development Overview-checkpoint.ipynb new file mode 100644 index 00000000..a7866a0a --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/1. Viz DB Service Development Overview-checkpoint.ipynb @@ -0,0 +1,616 @@ +{ + "cells": [ + { + "attachments": { + "IntroDiagram.JPG": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzQ5AACSkgACAAAAAzQ5AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMxIDIwOjQ3OjQ1ADIwMjI6MDM6MzEgMjA6NDc6NDUAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMxVDIwOjQ3OjQ1LjQ5MjwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgD8AXTAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+kaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiivGPjK+sXvxL8D+H9K8Q6pokGqNPHPJp908RONmCQpAJHPX1oA9norxLXfhl4/8MabPrPhL4l61qN1ZxmX7FqcjTLMF5IG5iM4HAK8+orrPBniE/F74OSSzSvp11fQS2V1JbHBhlxtLL7EENj3xnvQB6DRXOeAfCX/CD+CrHw//AGhLqP2QMPtEq7d2WLYC5O0DOAMmujoAKKKKACiiuA+OX/JE/En/AFwT/wBGpQB39Fee+EtE/wCEl/Z50jRftctl9u0OOD7RF96PdGBnHf3HcV0ngfwx/wAIZ4K03w/9vl1D7DGU+0yjBfLFumTgDOAMnAAFAG9RRRQAUUUUAFFFFABRXkfxx13XJJfD3gzwbe3FnrWt3JczW0xjeOGMEn5gQQCeeD0Qitz4KeLZvF/wxsZ9QleTUrEtZXplJLmROhYnkkqVJJ7k0AegUUUUAFFFFABRXifwh/5Lh8UP+vxP/Rkle2UAFFcd8S/h/wD8LF8P2umf2xcaT9nu0ufNgXdv2gjBGRzzkHPBAODWl4y16Twh4E1PWoYvtcmnWxkWOV8eYRgcmgDforE8Ga3P4k8E6PrV3HHFNf2kdw6RZ2qWXOBnnFbdABRRRQAUUVw/xO8eXXgSx0aWxs4bqTUtSjsj5zECMNklsDqeKAO4ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKo61rFl4f0S71bVZhDZ2cRllc84A9B3PYDua8f0ub4j/GJW1ax1l/BXheRiLNYI911coDjeTkEdOoIHoD1IB7dRXj8nwi8caeDP4f+LOttcLgrHqW6eNiPXcxAH/AT+NeuwiRYIxOwaQKA7DoTjmgB9FFFABRRRQAUUUUAFFFFABRX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W3uF3xTIUdckZUjBGR7Vm+GvC+j+D9FXSfDtn9jskdnWLzXkwzck5ck/rQBX8L+B/DXguCSLwxpEFgJceY6ZZ3x0BdiWI+pqHxV8PvCvjYxN4n0aG+khXbHKWaN1XOcb0IOM9s10lFAHNeF/h54T8Fsz+GdEt7KV12tMC0khHpvclse2a6WiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAryX4uaTeeMPFugeHNJuGgu7O0u9ZjZDjbNGFS3Oew8xq9aritFsLy5+MXibWLy0mit7axtNOspZI2VZl+aWUoTwQGZRkZ5B9KAMDxb4w/4SX9nmbUrEbL3WYI9O8joVuJZBDJH+BL/gKvT2MWkfHDwrDbriM+HrmzTHGFjeIisDVvCesW/wAXNO0iz0+eTwvf6yniF7lIyY7WeON98bEDA3yCNhnHJPXnGn8XdN8Q3XiLwrc+FLS5lvMXlj9qijLJZi4RE85yPuhQCQfUUAYzapeeIPjf4f8AE6SP/YkOo3OiaeqkbZdttKZpvcGRQoI7Re9dELiPxJ8UdQ166P8AxJPBMMkEJz8sl4yZmf0/dphOehY1V+IugX3hrwH4Wg8DaRLf3Og6jAbW3iiLkjypI9zY6DLhmY8Z61c17w1e+GfgLe+HtDhnv9SntPs0jRIzyTzTuFmlOMnrI7E9gPagDkfhTrK+B7e7uPFF0tvZ6/pQ8TCZ84WRnIlUep2vCQByc96n8PW+q+J/j1pGveIUkt5o9Kn1C205z/x427sIYVYf89G3SO34D+GvR9U+H2haz/wjw1GF5V8PsDaxggI+FUBXGOVyiNjjlRnI4qh4XsLub4n+MdbvbWeGJja2Fk00ZUPHHHudkyOVLyHkcfLQB0niPVV0LwvqmrSEBbG0luDn/YQt/SvM/hbpPw2vPCPh+0lj8Kan4ie0SedSLae6MpHmNnq+5STn0x7V0vxjjvbr4Y3+n6ba3lzLfyQ2zizt3mdImkXzG2oCSAgbt3rXt/GGmNaT/Y7DXCLS3aURHQryIuqj7qb4lDMeAFByfwNAGRJ8TIraz1iO70x11nT9SOm2+lxTb5L2RlDQsh2jCup3ZI+UBielaFx4tvTq0ehaXpMV7riWqXN7F9r2W1kG4AebYWJJDbQEJIGSAK4yx0TX7T4j6L491jS2e41lnsLqygg8w6XCygwMSBncChEjngeZjgAVqaTNf+GPHHjH7Touo3t1q13Fc6fPBbO0NwghVFRpQNsewqQd5HByM0AXbX4jynwj4s1nUNIigk8NTT28kUN4ZI7iWJAxVZDGpAJYLkrwc8cVXvfijc6Xpmh6xqnhyS30jWJ47aN1uC1ysroWXEHl5ZTtOPmDdMoK5Wz0DWrr4D6dpd9pV4NT8S62kmqxm3dWhWW7MkjyLjKL5aAEn1967fxXp11qvxF8F2yWcr6bYS3OoXMwiJjR0i2QqW6A7pCQOvy0AWrDxjfHxnbeH9b0RdOkv7OS7s3S7ExIRgGSRQoCMNwPBdT61k2fxJ1XV7LXrrRPC63MOh3tzbzSTX/lLOsLEZjPlnc5AztOFGQN+ei3hntfitr3ia/tpo9O0Hw6sUM0sTCORmZ5pSjHhiFjQHHToetc14OvdQX4LWnh/QtJ1KbXtStpGlnubCWC3ie4JdpmmdQjgB8gIWJwABQBs+O9Yt/F/g7wdb2AY2/ijVbFjG458gfv3yPYRgfWuiuvF97da1qGmeFdJi1OTSwBe3F1efZoI5CNwiVgjln28ngAZGTzXPS+Hn0Hxz8PrJbW8m0jQ9Pnt4rqG2eZftDJHEvmbAdg27jubCjJ5FZOk+HrHRr7xFY+LtD8QajNeatcXcAtPtc9pfRStuUlEbyVcD5SJAvTqRQB6V4S8SW/i7wnp2vWcMkEN9F5ixS/eTkgjjryDz3rYqK1ghtbSKC2gS2hjQKkKKFWMAcKAOBj2qWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAxvF+gy+KPB+p6HDe/YW1C3aA3HleZsVuG+XIzxkdR1rVtreO0tYreEYjhQIg9ABgVJRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAQT3PkuF2buM9aj+3/wDTP/x6mXv+uH+7/Wq1Q27jLn2//pn/AOPUfb/+mf8A49VOii7HYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqngl85C23bzjrWZV+y/1J/3v6U03cRYoooqhBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFRzTR28LzTyLHGg3M7HAArgr34nm8u3s/B2kXGsyqcGYArED9aiVSMNyJTjHc9Borzn7P8T9XyZLvT9IjboqJuYfjTl8DeMZubnx1doT1ES4/rWftZPaLI9o3tFnolFedt4D8XR8wePL1j/00Un+tN/s34m6VzbavY6og/gmjwT+OKftJLeLD2klvFno1FedRfErUNHmWHxroE+nrnBuoAXj/wDrV3lhf2up2Ud3YTpPBIMq6HINVGpGexcakZbFmiiitCwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/rh/u/1qtVm9/wBcP93+tVqze5QUUUUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACr9l/qT/AL39KoVfsv8AUn/e/pVR3BliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4f4v+cPh3dGByoEqeZg43Lnkfyqj4L+IfhWPSbfT3jXRJ40AMMybVY46hu+feui+IVp9t+H+rxYzi3Lgf7vP9KzvC+i6P4q+HujS6tp8F032VULMvzZX5Tz17VyyUvbXj2OaSl7X3ex1ttqFneKGtLuGcHoY5A38qsZz0rgbj4P+HmYtZSXlkc5HkznA/Cq0vwu+xwtIPF2qW8CDLF5gAo9zV89Vbx/EvmqLeP4no9QzXdtbLuuLiKIeruF/nXndr8NhqNus0HjPUrqBj9+KcMp/EVah+Duh7s393f3p7+bOcGjnqPaP4hz1HtH8S54j+InhWztZLWWVNVlcFRaW6+ZvPoewrF+CcjzaTrEqoYbVr0mGDORFkZIH6D8K6mPwtoHhfSbq603TYIXhgdxIVy3Ck9TWP8HLcxeAVnYYN1cyy59RnH9KztN1Y83mZ2n7Vc3md7RRRXWdQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/1w/3f61Wqze/64f7v9arVm9yi5Y/8tPw/rVuqlj/y0/D+tW6tbCYUUVFcXUFpEZbqaOGMdWkYKP1pt23ES0VgzeNNFjk8uO4e4f8AuwxM369KiPjKD+DStVceotv/AK9YfWKX8yM/aQ7nR0Vzv/CbaYn/AB9Q3lqPWaAj+Wa07HXdM1IhbK9hkc9E3Yb8jzVRrU5OykhqcXsy/RRRWpYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFV73/Uj/AHv6VYqve/6kf739KT2AoVfsv9Sf97+lUKv2X+pP+9/SpjuUyxRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAVNWtxdaPeQEZEkDrj6qa4/4O3Jl+H8cDHm0uZYSPT5t3/s1d31615f8OVu7aHxfpNgyLd296/kb+gY5GT+IFYT0qRfqYz0qRfqQ+O9f1zWvETaP4OkkB0iM3V1JE2NzDonv9O5re81Pih8NGjtrj7LcTKFlx/BIp5BHoa5fw/4b+I3hqO5FhBpjyXUhkmllbc7n3OOlbHw/wDDHinQvE1/d6stpDZXoLyQwNwJM8FR271zxc5S95PXcwi5Sl7yeu5maR4c8b/Dq0J0n7NrFm53zWoBBB9V/Cuk0b4p6JfzC01US6Re9Ghul2jPsa2PFni+x8JWMct0j3FxO223tovvyn+g964i78VaXrV5BZePvCMmmxXR2wXUwyAT0ycAj61btSfLCXyf+fQp2pPljL5P+tDsfHOoxxfD3Vrm3lV1a3Kq6MCDnjr+NZPwp17SrvwfY6VZ3A+2WkWJoWGGySSSPUc1x3xC8DReF/Dhl0bVbxbW6mSE2Mkm5GJORj8q0dI+H3ikeJtK1G+m063jsgoaa1BDyoBwrDAycVPPU9rflFz1Pa3set0UUV3HYFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP8Ad/rVarN7/rh/u/1qtWb3KLlj/wAtPw/rVuqlj/y0/D+tW6tbCZXv7hrTTrm4jXe0MTOFPcgE4rlPDtjpniCNdQ1O6/tK+bl4ZWwsPsE9P0rsJoxNBJE3R1Kn8RXGeGvDum6v4bge7g2XULuhmhbY2Qx9OvBHWuSspSqxVk9Ho/kYTTc11Oyht4bZAlvDHEo6KihR+lSVzf8AwjOoW64sPEV7GOwmAlx+dMew8Q27IkviiBTIcIHtkBY+3rWntJRWsH+H+ZXM19n8jpyARgjIrH1Xw/ol1C0t7bwwY5M6ERlffP8AjVMaDr0v/Hz4lkx6RW6r+oNPj8GWLSCTUri71Fwcj7RMSB+AqZOVRW9n99v0uJ3lpy/eQeD9SkuZtQsRdtfW1m6iC5f7zKc8H1xjrXUVzHgyJA2rzwxrHG96yIqjACr0x+ddPVYa/slf+tR0r8iuFFFQXN9aWTQi8uobczyCKISyBfMc9FXPUn0HNdBoT0UUUAFFU9O1jTNYWZtJ1G0vhbyGKY2s6yeW46q20nB9jzUkl/ZxX8NjLdQJdzozxW7SASSKuNxVepAyMkdM0AWKKrWGpWOqW7T6Ze295CrtG0lvKsihlOCuQTyO4og1Kxur66srW9t5ruz2fabeOVWkg3DK71ByuQMjPWgCzRVY6lYjVRphvbcX5h88Wnmr5pjzt37M5254zjGaj0rWdL120N1ompWmo26uUM1pOsqBgASu5SRnBHHvQBdoqtqGpWOk2Ml7qt5b2NpHjfPcyrHGmTgZZiAOSB+NTxyJNEskTq8bqGV1OQwPQg9xQA6imTTRW8LzXEiRRIMs7sFVR6knpWVp/i/w1q159k0rxDpV7c9PJtr2OR/++VYmgDYooooAKKKrajqVnpGmz6hqlzHa2luheWaVtqoPUmgCzRXFW3xg8B3mm/2hB4gjNr9sWy81oJVBmYZC8oD0Gc9Peu1oAKKKKACiiigAooooAKKyNU8VaLous6ZpWqX8dvfaq5js4WViZWGMjIGB1HXHWtegAooooAKKKKACiqun6rp+rQvNpV9bX0Uchid7aZZFVx1UlScEZ5HWrVABRWb/AMJDpf8AwlX/AAjn2n/ibfYvt/2fy2/1G/y9+7G373GM59sVpUAFFZujeIdL8Qfb/wCyLn7R/Z17JYXX7tk8uePG9PmAzjI5GR6GtKgAoorN/wCEh0v/AISr/hHPtP8AxNvsX2/7P5bf6jf5e/djb97jGc+2KANKiiigAooooAKKp6nrGmaLbfaNY1G00+DOPNup1iXP1YgUabrGm6zafatI1G0v7fOPOtZ1lTP1UkUAXKKyrPxT4f1HUW0/T9d026vUzutoLyN5Fx1yoOa1aACisbU/GHhnRbw2ms+ItJ0+5ChjDd30cTgHodrMDitO0vLXULSO6sLmG6t5BlJoZA6MPUEcGgCaiiigAoqO4uI7W1luLhtkUKF3bBOFAyTge1VtG1ix8QaNa6rpE/2iyu0EkMuxl3r64YAj8RQBdooooAKr3v8AqR/vf0qxVe9/1I/3v6UnsBQq/Zf6k/739KoVfsv9Sf8Ae/pUx3KZYoooqyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvOfC4+wfGjxRZ9FuY0uF98gEn82NejV5vqs0ej/HbT7q4dYYb+wMRdzgFhnv8AlWFbTlfmY1dOV+ZH4i1XxPqHxPfw7oOqJYRJaLMC0e4HjJ/nVWa/8ZeGfGWg2Wr63HfQahPsZFjxxnB/nVjxBp/iTTfig/iPQtIXUoZLRYl/eADpg/yqrcW3i/xT400C81TQF0+DT597uJdwxnJ/lXNK93ve/naxzyvd73v57F74gyLo3j7w74h1GJpNLgDRSOFyImJ4Y/57VU+JPirRvEnh+DRNCmXUtQvJ0MKwqSUwevtXqFzawXlu8F3Ck0TjDI65B/Cs7TPC2h6LO02laVa2srdXjjAP51vKlJtpPRm0qcndJ6M4j4iQyGPwdosjbpXu4xJ77AMn+demjjpXm3iC4i1f4zeHrO3kWUWMbyy7DnYfevSaqlrKT/rYqn8UmFFFFbmwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/1w/wB3+tVqs3v+uH+7/Wq1ZvcouWP/AC0/D+tW6qWP/LT8P61bq1sJhXOeE8wS6xaE/wCpv3ZR6Ken8q6OuYs7cN4t1+xZ3RLuGNwUOCPlwSD+NYVdJwfr+RlPSSZn3+papf6hPrOlMxsNLfYIwTi4H8Z98D9K0dW8P23i5bLUbe+kgUR/KVXOR19eCDWfJoGi6YTZyeJ7y129YftapjPPTHetzw1Dplhpb22lX/2yKJi7N5gcpntx0HH865acHOTjV1T316+X9dDKMW3afXzKX27xFonGoWo1W1X/AJb2wxIB7r3/AM81etfFWk3sDtBdKkiKSYpfkYYHTB6/hWXZz+IfENu2pWF/FYWxZhbwGINvAOMsT06VBeSWet+Dr2/1CxhW/tg8LsowRIOBgjnHI4pqrKKvB6Wur/o9/vDma228xfA2sQRWMWnXaSQXM7NLGzjCzZP8J9eK7OuV0LwjaJZ6ZeTT3TyRIkywtL+7VyAcgY45rqq3wqqRppTNKSko2kFeN+P/AAjp2jeOfB2sRyXl1qF/4pjMk95ctKY0be3lRg8IgOMKB0AznFeyVwPxM06+v9a8DvY2dxcpa+IYZp2hiZxDGEbLtgfKvPU8V1Gp31FYuua5faVq2i2llol1qUOo3RhuLiE/LZLtJ8x+Dxnjt9c4B2qAPnHwL9o8DQTePrUySaVcavdWOv265ISLzyIrkD1Qtg/7J+pr07WZEm+OXg+SJ1eN9Kv2V1OQwPlYIPcUz4U6HLH4A1LTdf02WJLrU73zLa7hKeZE8h/hYcqQfxFcz4V8OeIvD3xj0nRbuzurrQtFsrtNO1QxsU8iXYUhd8Y3oVZeTkjHGKAN/wADMnhn4leOfDkxEVtJMmu2uTwUmXExA7AOuPxrkPhvPd2fxM07xPeM6weP4b11jYcRtFKXhyfeHgVt/GrRNfOpabq/hGxuLq7vrK50K8+zxM7JFOAUclQdqqwJLHpkVsfETw3cab8PdFl8L2U13eeFLq0ubO2t0LSTJHiNowBycoxyPagA8DD+3fip428TN80VtNHolocfdEK7ph75kb9K88/Z9ml8K2ugLMxOmeL7ecoSciO9t5pF2+weIL9Sles/CrRLrQfhtpcOpo6ajcq17eiVdr+dMxkYMOxG4Lj2rhPCvgvVrv8AZm0iwNncaf4i0qSXULCO5haOSK4juZHQFWGRuBxyOj0AL8dJpPE0F/4dtmYWWh6VNrGpMp6ybGW2iJ+u5yO4UV6z4e/5FnS/+vOL/wBAFeaR+HNXl+CPi7UtRsJz4k8T29xeT2ixFpY9ybYYAuNx2oFGMZyTXpuhRvD4d06OVGSRLWJWRhgqQgyCOxoA8f8AFVpL8Uvj3L4J1O5mj8N6BZJd3drDIU+1SsEYBiP+ui/QK2ME5r0XTPhh4L0XULS/0nw7Z2l3ZktBPEpV1JBByc/NwT1zXE+OfDPijwv8Uo/iN4G00ayLi2FrqumK22SVQAAynvwqdASCo4IJxv8Ahr4l6v4j1u1sD8PfEWlwyE+fd6jD5McIwTkZGW5AHHrQBmXHxC8YeKPF2r6N8MtL0iS20WTyLvUdYkk8t5hnKIseDwQRnkcdgRmz4Y+J+o6tofiu21rS4dN8TeGYZHuLYMXhkwjMjKc52kryM9COea57R5fEPwi8X+JYZ/CmreIND1q/fULS60a38+SNnySjpnIxwMnHTIzniXwz4V1+6t/iF4x1vS5dPvPEdnJFZ6X9+ZI1iZV3AfxN8vHXg+ooAq2/xU+JGo/DGLxtp3h7Qxp9tE0l4J3lWS4CsQ7QoGwqqBj5mJJBIGMVX+Nuv6v4o+A1nrekJYxaHqEME19HOXNyjmRCix4+UgNkNn04rb0XRdUi/ZQk0iXTbxNTOkXMYsmgYTbyz4XZjdk5HGO9Y/iTw9rU/wCyRYaPBpF/JqaQWwaxS2czKRMCQYwN3A56UAW9d17xD4Z+GPheXxJo3hW8mudbtLa1ghtZJIILdoiyOFcgrMCp5HAFdH4x+IHiCLx7beCfAGmWV7rLW32u6uNRdhb20WcDIUhien/fS9cnGV8WNF1TUfh34KttP028u57bWLCSeKCBnaJFicMzADKgEgEnpmovE1vr/gb43y+NbDw/f+INH1bT1s7qPTYvNnt3UrghByR8g9vmPoKALnh34i+MJ/jDD4J8U6Tpllt09riWW1Z381hnDxsW4QjjBXIIPNbPwy8dan40vPFEWqQWkS6RqsllAbZGUsikgFtzHJ47YHtXB6BqWp63+1TBf6npEukltCYxWszBpUi3EAyAcKxJJxk4BHepvCkvib4aeNPFumN4M1fWY9Z1J7zTryyQGBtxYgSyH5YxyMk8jnjpQBs+FvipreufCDxZ4qu7XT0vtFuLmK3jijcROI4kdd4Lkk5Y5wRWr8PPFnjfxhptjr1/pekWmiXFmWCK8guppgMblByqxlgwAJJxg964PwB4d1+0/Z18dadqOjX1vqV3dXjQ2j2siyTboIwCikZYEggYHOK9A0bStbH7PFrpWnxzWWt/2AIIo5MwyRzeVgDnBVs8c4wfSgDk/E3xX8c+Ckh1PxLaeETZGZUn0qzv3fUIgTz1O1iPYH8s4q/GC98YSfELwQ2jTaQLG5v0fSllaYF5cIT9oC8FMkY284zXE6p4evbr4Lf2LpHwq1O1162MY1HUptOzJMRIMmFgDJJuOCcAKFzyeM+lfEvS9bhsvh3rum6Je6ougXMUt5aWkRecLtjzhOpPykexxmgDU8R+IdW0nxn8ONO17S9Bu9S1Oa4S6uUt3f7M6qnNszEMmQxBJBzT9c+IPiXU/H154Q+G+mabc3emxrJqF/qsji3gLchNqfMTg9RnnPHBqh4wj1HxL8QfhZrlloeqw20c91LdLcWjB7MMsW0TAZEZOD1Paq08XiD4ZfFrxDr8HhvUfEOg+JBFI7aVEJri2lQEYMfUj5m9BgjnIIoA6LwH8QdX1bxVqXg/xrpdvp3iHT4hcZtHLQXMJwN6ZJI5ZeMnr2wRXHeGvin8TPGHw+n8Q6FoGhZsTIbl7lpUWfbzshQMTkLjLMwBJwOlbngPRdb8QfFjVfiHrmkT6HbS2YsLCxu+J2TKkyOv8P3env7ZMPwZ0XVNL+Alzp+p6beWd632vFtcQNHIdwOPlIB57UAdx8PfGEfjvwLp3iFLf7M10rCWHOdjqxVgD3GRkexFR/EnxHL4W8Aajf2eWv5EFtYov3nuJTsjx64Jz9AawfgJpd/o/wAH9NstXsbmwuklnLQXULROoMrEZVgCMjmo/Hnh+98d/ETQtBkXU7LRNMhfVLjULXdFuuM7IUjlxgOuS3HOD2oAzfAGjf8ACsPiGvhFpC1lrulxXdu5PBvIECXAHuww5rqPEHirXZvGa+FPBdpYyX0VqLy+vdRLmG1jZtqLtTBZ2wSBkcD8uS8afDS90HT7TxR4c1fxNr2r6FdR3UFlfX73fmpuAlRFIyCUJ6ckDFal7LqPhP4oXXiqPQdT1PRtf0+COc2Nu0txaTR52hoR820q3OBwRzQBneHZ9dl/aYlTxRa2cN7D4SMYksnYwzp9rUiRQ3zL1KlTnlTyRity08VeMvFl9qNx4LtNFg0ewupLSOfVDMz3skZw5TZgImcgMd3Tp6Zvh99a1j9oSXX73w9f6ZpjeGDbW01zERu/0pWw+OEc/Mdmd20AkDOA3wfqGqfDm3v/AAtqPhbWb5Ir2ebTbzTbYzxXMUjl1DvnEbAtg7iB70AUfhh4mj8PeBviF4j8QWzWgtvE9/cXNsjB2R9sWYwehO47QehNbOoeMvHXhvRYfE/ijStGj0MvGbuztpJTd2UbsFDFz8khXcNwCjvgnrXN6F4I17xR8JviJomr6e+lanq/iG7uoYpwyxs2YZFKsQN0ZdMBxwRzS6ZoHg68FrZ3Pwb1G31R3SO4jawxbwkkBn88tsZByQQSTjpQB3XiDxVrs3jNfCngu0sZL6K1F5fXuolzDaxs21F2pgs7YJAyOB+XK+HZ9dl/aYlTxRa2cN7D4SMYksnYwzp9rUiRQ3zL1KlTnlTyRitXVf7S8F/Fi+8SJomoato+t2MMFxJpsJnmtZoiQuYhyUKt1GcEVU8PvrWsftCS6/e+Hr/TNMbwwba2muYiN3+lK2Hxwjn5jszu2gEgZwAD0DxMNVPhy7/sCW0ivdhKveRu8YH8XCsDnGcc9a88+F+tat4f+DNtrvim6sJNFtdM+0Qi2hk+04BJO9mcqxPQYA5Nep3UTT2c0SEBpI2UE9MkYryLw5o194k+Btz8PtQ0jU9J1O1082zS3lsUgaVXymyTo4JAOVzxQBtHX/ic3h//AISKPR9AFr5P2kaO7zfazFjdt837gkx224z3rt/D2t2viTw5Ya1p+77NfQJPGHGGUMM4PuOh+lcInjvXW8L/ANkt4F19fEX2f7OYjbD7J5u3G/7RnZ5eeeufaut8DeHD4R8C6RoTyLLJY2yxyOvRn6sR7bice1AHCeM4rHQviofEfjrRW1Tw3LYJb214bf7TFpkgZi5ePB2hsj5wD0A+ndeHtL8KTaTc3Pha20/+z9VXMzaftWKbgqT8nAOCQcYPrWdr3jyfQNbmsLvwf4iv7XapivdMsvtUcmVBIIU5Ug5HI7e9YfgWw1TRpfGXiK08NXOn2GoyxXGnaCxSOUskZEj7QSqNIcfLn+HmgDm/F1z4K1q60fwt4Ks7XTtdh1GFra6Nl9h+yrHJlyrSKpfIBG1N24nPvXuNeSeNtXv/AIleE5fDOi+ENetb67kjP2vVrH7LDY7XBMm9j8zAA42ZJzXrMalIkRmLlVALHq3vQB4nr2t+EtE+PuuyeNoYZoZNJtRAJdPe6+YFs4Co23jucVp/Di7tdN8F+NPEfhdbWLSpbme902wSRWWAJCPvoh/d7mXOzggY6U7UNWu/Cnxw1vVbjw34g1KyvNLtoYptL02S4XepYkEjjvVvwtoWo6/q3jXW7vR5tCsfENtHaW9ndrsmk2xurTSop+Unfj1wPzANu28YX83wSPjFobYagNDfUfKCt5XmCEuBjdnbkdM5x3qpc/EK+h8D+E7u106K+8Q+J7eA2tmrmKISPEJJHJOSI0BJ7noPeuPh1bxDB8ELzwSfBetnW7XSJtPci1P2Z1EbL5iS9HJXoq5JYgY71pTeH9bsvCfwy8R6fpU95f8AhexjS60vHlzNHLarFKArY+dcfdOO4oA6vb4yXQ9Y/wCErk0OS3OnymP+zY5kdH2ng72IYYzzwfauJ8C+ML+H4e+DvC3g6C3vNensY5bh7hWeDT7fJzJLtIOT0Vcgk+3XtYfFc3inTNUtbXw3rtjGNPlPm6lZG33SFcCNVPzMeTyBjjgnNedeCfDuvfDXwvonibRtJv7mK9tYovEOhCFjcBhws8SEbt6g4ZO4/MAHf6n4p8Raj4tuvDPgyDTWutMgik1PUNRV/JiaQZSNI0IZmIG77wAGOpqh/wAJT4k1vwn4n0zydO07xLobGG83CSW3eNot6yR4KsNynjJ4I5rm9f8ACOlWfxH1TxB4j8E3fiXR9ejgmgmtbN5p7GVYwrI8PDgMADnHB4I9Ox8JaHpY8JayvhzwlN4YF8HhSG6jEUk48vCyMoJKjLMMHnjOOaAIfg0PEB+HWjPrNxp0ti+nQGzFtDIsyjb/AMtWZiGOMcgDvXcXv+pH+9/SuN+E1/dL4J07QdR0XVNMvdItI7ec3tqY43Zfl/dv0ccZyOORXZXv+pH+9/Sk9gKFX7L/AFJ/3v6VQq/Zf6k/739KmO5TLFFFFWSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVHJPDF/rZUT/eYCkjureX/Vzxuf8AZcGlzK9rj5Xa9iWiiimIKKKKACiiigAooooAKKKKACiiigDHn8TafbeLLfw9OZEvLm3M8TFfkYA4K5/vcE49jTbTxTZXd7LbBJYzGJSXdQFPlthsc1ma34am1nxLcykNCn2GP7NdqeYp0kZgR9Mj8DWFFoniOTwxbyz2Ij1R7+dJ40cYEUrYZwfTHzYoA6i08aWF3otrqUcFyq3U7W6wugEisM5yM9MLn6YpF8b6W3gyXxJtn+yxKxaHYPN3D+HGev41nDw/eQ+LrlYrc/2WtubiFtwx55jERXH0UH8axF8K62NJutP+yH7M+nNOF3DJujGU2Y/8ezQB32oazBp+lxXrxySecUWKJANzs33V5OP1rndfTTPE+jyRa7oN+LmB1EcAUebub7pRwdv15471razZef4YhtbnS/7RjCxia3DYcADqv+0D7j61j6Na6lo9veSWlpqVxprldllezBp0JLbyhyeMEYBP5UmlJWYmk1ZmBpXhDXvsbT+FPFV5aojtE9pfqHMTA8qSDjj8aum0+KtsMJf6VcjPUrgn9K6nwlZT2OnXCyQPbQSXDSW8Epy8aH+8cnnOT1Nb1Y+xitm18zL2MVs2vmeaRj4p3ryot1pUHltsY7ehwD6ehFSf8IN4x1Ubdf8AGEkcR+9FZpjP4/8A1q7ux/4+L/8A6+P/AGmlXKiFJSjeTb36+ZnTpqcbybe/XzOe8MeCdI8Kq7afG0lzIMSXMzbnb8a6GiiuiMVFWR0xioqyCiiiqGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP93+tVqs3v+uH+7/Wq1ZvcouWP/LT8P61bqpY/8tPw/rVurWwmFc7MPs/xFt36C5sWj+pVs/yFdFWRrejzX81reWFwLe+tCxiZlyrAjBBFZVotxTXRpmc02tDBRtHXxtrf9t/ZNuIfL+0hf7vOM/hVnwr9kbxHr39n+UbUmHZ5IGzG05xjjrmmz/2h5xfV/ClrfSEfNcQFW3Y9iCakttcj0/ctr4V1C33/AHhDagA/lXFG0Zpy0s29nfW/+ZgrJ3f5CxaHrukiS10K9tRYuxZBcKd8OeoGBg/jVfXdNGjeBWsIpTLLcTIHkI5dywJP6VfPiPVJhiy8OXbN289hGP1qMaVrOtXlvNrrwW1rbyiVLWD5izDpub/CqlGDi4003fTrZX9RtRatG50kSCKFI16KoUfhTqKK9E6QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArj/FnhPxNrGsx6h4Y8cXXh7FuIZLf7FHdQvhmO/a5ADfNgn0UeldhRQBxPgf4bQ+EtVv9c1LVrnXtf1BQlxqN0oUhBj5EUZ2rwOMnoPSu2oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqve/wCpH+9/SrFV73/Uj/e/pSewFCr9l/qT/vf0qhV+y/1J/wB7+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiignAyeBQBXvr63060e4u5Aka9/X2Fefaz41vb9zHYFrWDOAV+8341V8V62+rao6Rv/osJKxqOh9WrEjIWRWPQMCa+Wx2YzqTdOk7R/M+swGWwpwVSqryf4FiSC/lbdLFcuT3ZGNVw0kbcFkYe+CK9X0vxHpurXJgs3YyBd2GTGRXDeM9O+w+IJHQYjuB5i/Xv+tYYnBRpUvbU58yub4XHSq1fY1IcrsJpHi/UdMZUlc3MHdJDkj6GvQ9J1e11i0E9o3ThkPVT7147WloWry6NqSXCEmMnEif3lqsFmNSjJRqO8fyJx2W060XKmrS/M9eopkUqTwpLEdyOoZT6g0+vrt9T47bQKKKKACiiigAooooAKKKKACuXj8YTPcOzaZizS8Np5wuAXLBtudmOmfeuorzhfC9zJd3MDaB5Vy+pNcx6p5y4VfM3A4HOccYoA73+0rPaD9pjw0xgBz1kBwV+vBrNvPFumW9vJJbTLdvFLHE8cZwRvcJn3AJ7Vz93oetzTnTY7NRbjVXvPtvmjGx9x4XruBb9KL7RdW1XwoNCfShamHyUN0lwAZAsiklMcjgE84oA6ufxBpVtC8s19EqJIYiQc/OOo461DF4l0+fxGmjQy+ZcSWv2pWXlSmcDnpXJy+GdZtYrEIlxKmmNLDH9kuFiknjblXJPGR0OevWtTQNAvdG1jT3eDdAunNbyOJdxifzN+CTyRzjNAHX0UUUAU7H/AI+L/wD6+P8A2mlXKp2P/Hxf/wDXx/7TSrlZUvh+b/Mxo/B83+bCiiitTYKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo3v+uH+7/Wq1Wb3/XD/d/rVas3uUXLH/lp+H9at1n206w7twJzjpVj7bH/AHW/IVSasIsUVX+2x/3W/IUfbY/7rfkKd0IqS6x5Uzx+RnaxXO/rj8KZ/bf/AE7/APj/AP8AWrOuG3XUrDoXJ/Wo6YGr/bf/AE7/APj/AP8AWqzZaj9rmMflbMLuzuz/AErBq7pcqw3TMwJGwjj6igDeoqv9tj/ut+Qo+2x/3W/IUroCxRVf7bH/AHW/IUfbY/7rfkKLoCxRVf7bH/db8hR9tj/ut+QougLFFV/tsf8Adb8hR9tj/ut+QougLFFV/tsf91vyFH22P+635Ci6AsUVX+2x/wB1vyFH22P+635Ci6AsUVX+2x/3W/IUfbY/7rfkKLoCxRVf7bH/AHW/IUfbY/7rfkKLoCxRVf7bH/db8hR9tj/ut+QougLFFV/tsf8Adb8hR9tj/ut+QougLFFV/tsf91vyFH22P+635Ci6AsUVX+2x/wB1vyFH22P+635Ci6AsUVX+2x/3W/IUfbY/7rfkKLoCxRVf7bH/AHW/IUfbY/7rfkKLoCxRVf7bH/db8hR9tj/ut+QougLFFV/tsf8Adb8hR9tj/ut+QougLFFV/tsf91vyFH22P+635Ci6AsUVX+2x/wB1vyFH22P+635Ci6AsUVX+2x/3W/IUfbY/7rfkKLoCxRVf7bH/AHW/IUfbY/7rfkKLoCxRVf7bH/db8hR9tj/ut+QougLFFV/tsf8Adb8hR9tj/ut+QougLFFV/tsf91vyFH22P+635Ci6AsUVX+2x/wB1vyFH22P+635Ci6AsUVX+2x/3W/IUfbY/7rfkKLoCxRVf7bH/AHW/IUfbY/7rfkKLoCxRVf7bH/db8hR9tj/ut+QougLFFV/tsf8Adb8hR9tj/ut+QougLFFV/tsf91vyFH22P+635Ci6AsVXvf8AUj/e/pR9tj/ut+QqG4uEmjCqGBznmk2rDK1X7L/Un/e/pVCr9l/qT/vf0pR3GyxRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWb4hujZ+H7uZThhGQD9eK0qwvGZx4Vuv+A/+hCsMQ3GjNrszfDRUq0E+6/M8sooqW2tpLu6jt4F3SSMFUV8Gk27I/QG0ldnUeA9Lkn1Fr9srFCNo/2mNb3jnTvtmh/aEGZLVt3/AAE9f6VakaDwp4YAXBMS4H+25/8Ar0zw3qH9veHWW6O+Qbopc9/8g19VSo04Ufqcvikr/P8Ar8j5KrXqTrfXY/DFpfL+vzPLaKs6haNYahPbSdYnK/hVavlpJxdmfWxkpJNHqHgm6a58NxK5yYWMf4dv510FeXWem+IdV8GXMHhjUlsZhcNvBGDINq8Bv4e9dN4Z0rXbPw3ZQSXkdtJHHh45IA7Bu+Wzz65r9CwFGM8BTrOor7W1v6nwWO93FTil1OrorJ+x63/0FYP/AAF/+vR9j1v/AKCsH/gL/wDXrb2cf51+P+RyXNaisn7Hrf8A0FYP/AX/AOvR9j1v/oKwf+Av/wBej2cf51+P+QXNaisn7Hrf/QVg/wDAX/69Lps98NUubO+njnEcaOrJHsxnPHX2odJWbUk7ev8AkFzVooorEYUUUUAFFFFABRRRQAUUUUAU7D/j4v8A/r5/9kSrlU9P/wBben/p5P8A6CtXKypfB9/5mND4Pm/zYUUUVqbBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/1w/3f61Wqze/64f7v9arVm9ygooopAFFFFAGbL/rn/wB402nS/wCuf/eNNrUkKns/9cf92oKns/8AXH/dpPYC7RRRWZQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABV+y/1J/wB7+lUKv2X+pP8Avf0qo7gyxRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABWfr1k2oaDd2yDLvGdn1HIrQoqZRUouL6lRk4yUl0PDkbcoPT1Hoa7nwFo339UnX1SHP6msfxtoT6LqL6lbxk6fctmTaP9S56n/dNQweLdUhskt7eaNYVTau1B0r5KnCGCxN6yemx9hUnPHYa1BrXcueNNZ/tDVPssLZgtjjj+Ju5pfAuo/Zdaa1c4juVwP94dP61zJJJJJyT1NPgne2uI5ojh42DKfcVzrFz+s+3ff8O33HS8JD6t9XW1vx7/AHnqV/4W07UdTN7dhiSoBQHCnHevMtTtlsNSuINyskTkBgcjFXNQ8SanqWRPcsqH+BPlFM8NaLJ4k1QLg/YIGzPL2cj+AevvXVXnTxtRQoQs77nHh4VMFSc687q2x33gmyaz8MQNINr3BMxB7A9P0xXQUiqEUKowoGAB2pa+pp01TgoLofKVajqTc31CiiitDMKKKKACsu2/5Gi9/wCuEX82rUrLtv8AkaL3/rhF/Nq2p7S9P1QmalFFFYjCiiigAooooAKK5rxX4wTwvJbK9qZ/PBIw2MYrnv8AhbcP/QMf/v4KD0aOWYuvBVKcLp+aPRqZNKsEDyuCVRSxwMnArzz/AIW3D/0DH/7+Cg/FqEjB0xv+/goadtDV5Nj7aQ/Ff5nW6Jq9lf3F1HaS+azSGXhTgLgAZrZryjSfiDYaP9o+zaW+Z5TIf3g4HYfQVo/8Lbh/6Bj/APfwVz4aNVUkqtubyOXB5JmkaKVemubyat+Z6NRXnP8AwtuH/oGP/wB/BSp8WYXkVf7NcbiB/rK6Dq/sbHfyfiv8z0WikRt8at6jNLQeSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP8Ad/rVarN7/rh/u/1qtWb3KCirlj/y0/D+tW6aVxXMiiteinyhc5aX/XP/ALxptS3f/H5N/wBdG/nUVUIKns/9cf8AdqCtDRv+Px/+uZ/mKAJKK16KnlHcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16KOULmRRWvRRyhcyKK16r3v8AqR/vf0pcoXKFX7L/AFJ/3v6VQq/Zf6k/739KI7jZYoooqyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKR2KozAFiBnA70tFAGIniuwfwumuBZRA5CiIr+8D7tuzHru4q0dd06KGJ7y8t7VpF3BJplBxnHrXPLoF8PFxtfJ/4kguP7RD5GPNIx5eOv3vmrLltbkW2m6XqegXs9pEGmuJIYkfzD5hKxZLAgfxH14HrQB2Os+IrLQvsTXu/ZeTiFHQZCk9Cfb3p8uvWcPiKHRW3m6lhafIHyqo9T61l+KtGk1xNMgjgbyN8gl6DylaJgCfxI6VgW+keIJ47fUL6x/4mMtpcJMjMCFO0Iik++CfxoA7f+0NKv7eWP7Va3EWRHIvmKwyeAp+tcLqvw9ZJpZvCt3GVViHs5Wyqn0B7fSqFroerfatTK6Xfype6dFbxSXQjjCTCQ/NsQ4VVBByOTiu38GWFzpXh9bDUISt1buyyz5yLps580HOefesK2Hp148tRXN6GIqUJc1N2PNJ9K160JFzolxx1aIhhUdrZ6xfxq9jo1zIjjKu3Cmvbz0NZXhf/kVdO/691/lXB/YtBxc7vdfr/ken/bVfayOH0n4dalfyLJ4gnW2t85NtAcs3sW7V6NZWVtp1pHa2UKQwxjCogwBU9Fd1DDUqCtBHnV8VVxDvUYUUUV0HMFFFFABRRRQAVl23/I0Xv/XCL+bVqVl23/I0Xv8A1wi/m1bU9pen6oTNSiiisRhRRRQAUUUUAeX/ABfbFxpn+6/8xXm2+vRPjIcXOl/7j/zFed2FpPqV/DZ2q7pZmCqKpH6NlElHAQb8/wA2T2VpdajdLb2ULzSt0VBmtw+HLGw41zWobeTvBbr5rD6kcCmatrEOh276J4ffG35bu8X70z9wD2UVy5kyck5J6k0HXF1a/vJ8send/ft91zqhp/hib5YdbuYW6Bp7f5f0qtqXhu9sLf7XC0d7Z/8APxbtuA+o6iue310Ph2wa70rUbmbWG02zi2RzYQtv35wMD6UCnz0Fz87a81f7rK/5mNvp8D/6RF/vj+dd3Z+GtJNtaQQ2Y1CzuIXkm1fcV8kjPbtj0NefRsFvECnIEgAPrzQVRxUK/Morb/g/5bPU+mYf9RH/ALo/lT6ZB/x7x/7o/lT6k/LnuFFFFAgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo3v+uH+7/Wq1Wb3/AFw/3f61WrN7lFyx/wCWn4f1q3VSx/5afh/WrdWthMKKKCQASTgDqTTEczd/8fk3/XRv51FWPrXiSOK+nSyAlPmN+8P3evb1rn5tYvpj8106+mxtv8q8qtmlCk+VavyPWoZTiKq5n7q8zuK0NG/4/H/65n+YrzeHWL+E/LcyN67zu/nXUeG/FMH24JqGIi67RIPu546+nSijmlCq+V6PzCvlNelHmXvLyO7ooBBAIOQehFFeqeSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVe9/wBSP97+lWKr3v8AqR/vf0pPYChV+y/1J/3v6VQq/Zf6k/739KmO5TLFFFFWSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBQ1vVP7G0ia+8kzmPAEYbbuJIAGe3WqZ1y+tbUz6rpYtlMscaBLgSbi7Bf7oxjNP8V6bNq/hu5srcEvKVGFfacbgTg9uKp33hvydF+yabJdTM1zDI32m6eUqFcE4Lk44HSgDR/wCEj0gXFxCdQh8y2UtKN33QOvPQ4746VZfU7KOSWN7qJXh2+Ypbld33c/WuPi8NXt5DZ6TfWCxQWZm8y63gidXVgAB153ZOfSq2leFdb/tLT7nU4osTDOpDfncYuIvrkflmgDtbLWtO1G6lt7K7jmmh++int0yPUe4q9XH+F9K1LTNaeNIbm20pI3HkXMqShWLZHlMPm29eG9q7CgAPQ1leF/8AkVdO/wCvdf5VqnoayvC//Iq6d/17r/Ktl/Bl6r8mLqatFFFYjCiiigAooooAKKKKACsu2/5Gi9/64RfzatSs260gz3zXcF9cWrugRhEVwwHTqD61rScdU3a6EzSorK/se6/6DV9/45/8TR/Y91/0Gr7/AMc/+Jp+zh/Ovx/yC7NWisr+x7r/AKDV9/45/wDE0f2Pdf8AQavv/HP/AImj2cP51+P+QXZq0Vlf2Pdf9Bq+/wDHP/iaP7Huv+g1ff8Ajn/xNHs4fzr8f8guzzz40Ni50r/ck/mK5zwhbXMOia1rVpbSTTW8IhgKKTtZ+Gb8BWp8YLWWzuNMEt7NdblfHm7fl5HTAFN8M6ranwlaXkl5cWa6DKTcQwDIud7EqT/LmpaS0TufcYaco5XTSW7/AFenz2+ZyOgWUOr+IbOwu5zBHcS7Gk7gn+pPFd3N4R0m1maGPS1udjbS76min8uMVyOqeMLW9jmFpoFhZyu+9LiJSJEIOc59aseJbSTW9Q0vVNPGTrKqrKOgnHyt/jSO6t7epUi5NwTT+9a9Gul/uNLxR4V03TvDX9q2zG1k84RLB54mDnvgjpisvSn/AOLe6+c/8vFt/Nqm1/XbXStZs9KtraG/sdHjMJjm5SaUj53P4/yrV07xTZy+C9Yul8O6aiQzQK0Codkmd2Cfpjj60jJSrxoR5k5Xkmndbcystdf+HOP0+HV7+KS20uO7njAzJHDkr+IqrFujvI0kUqyyAFSMEHPSuxsvF+k3+mNZyj/hHGWdZhJp6HEuOx965rX9Wg1nxdPf2kZjhmmUqp6nGBk+5xn8aZ3Uq1WVSUZQ5V/XXZ38tran0pB/x7x/7g/lT6jg/wCPeP8A3B/KpKg/MnuFFFFAgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo3v+uH+7/Wq1Wb3/XD/d/rVas3uUXLH/lp+H9at1Usf+Wn4f1q3VrYTCuM8c680K/2XathnXMzeg7L/j+FdnXjerXn2/Vrm53F1kkJUkY+XPH6V5Oa13SoqEd5fkevlGHVWs5y2j+fQqKfmBPrXq2lapo2qHyLIxSSogLKYivHTuOa8orsfAGmSPey6ixZY41Ma443k9fwFeRllWca3JFXvuezmlKEqPtJOzjt8zA8QacdL125twCE3b4/dTyP8PwrNrvPiFp26C31BByh8qT6Hkfrn864OubG0fY15R6dDqwNf2+HjPr19TvfA2vNMv8AZd02WRcwt6juv+H412deN6TefYNWtrncUWOQFiBn5c8/pXslfQZVXdWi4S3j+R85m2HVKspx2l+YVlzeKNAt9XXSp9c02LUWIAs3u4xMSenyE7v0rUry74geF/BXhj4W6nZy6RbSXF5G8dpmISXV1euDsZWwWaQuc5HQZ7DFeueOeo0VleF7e+tPB+j22sOZNQhsII7p2bJaURqHOe/zZrVoAqX2q6fpjW66lf21o11KILcXEyxmaQ9EXJ+Zj6Dmpb28g0+wuL28fy7e2iaWV8E7UUZJwOTwO1eP+PdEuPif401zTLCR1TwrpebVkYj/AImUpEiEEf3VjUH03musg8TJ4w+BV1riYD3eizmZB/BKI2WRfwYMKAN2Txr4fi0jRtTkv8WeuXENtp8vkyfv5JQTGuNuVzg8sAB3xW7XhN//AMkj+DX/AGMGj/8AoD17tQBU1LVtO0a1+06vqFrYQdPNupliX82IFRaVr+j67G76Hq1jqSJ95rO5SYL9SpOK8R+G/hqz+Muq6x468cq+pWy3z2ul6fI7CGCNQDnaDzwwGPUEkEkY9XtfDvhL4e2Wqa3pumW2kwrbmW8e3UqDHGC33RxkZPQZoA6eivG7P4gfFLxB4dk8WeHfDGhpoWGlgs7ueQ3lxEucspUhB0PBH0zVnxJ8Z5YPg3pXjjw5aQs15eR281tdKz+VywdRtZckFeD3HbmgD1usLxT418O+CrOK68UapFYRzMVjDKzs5HXCqCxx7DuK8/1j4k+OPCfiLRJvFmgaVb+H9au1tUW3nd7q0Zj8olJ+UnGSQoI4PPry/wASh4xf9obwqlvH4ellxP8A2OlyJjHt2HJuAOdw5I2cZAoA9j07x74Z1XVdP0yw1WOW91KzF9aw+W6mSAjIbkDHAPBweDxXRV5sfEN5F8eNG8P6hpejtczeHftNxqEVuTOkm9w0cchORFlc4IzWdZ/ETxx4y1/Vv+Fd6Lo8miaTcm1kudUmdXu5F+8I9hwvbGQeCD3wAD1qivH/AAz8W/EGteAvHOuX2m2VpeeHpJltrbY5A2KSFl+f5iCMEqRWxdfETVof2fV8dJb2R1M2SXHklH8nc0gUjG7djB/vUAekUV5R4v8AirrHhz4c+CvEdvY2tzca69p9rgEbniWHewiG8ENngZJ9810UWo/ES38LX13qOk6C+qtKn2K1t7qRY4YjjcZ5GHJUZJ28HHFAHa0V5FoPxT8QW/xM0/wn4vPhq8/tRH8i58P3TyCF1BO2QOc87SOg5PGcHHOaJP8AEd/2itbiWXw419HYw/akdrg262xZP9UOokxjOeM5oA9ps/FWi6h4lvvD9nfxy6rp6LJdWwVgY1bGDkjB6joTjIzWvXnegeJhN8bfGmkTabpdrFptpbStfxW+y4mDRKxEsmfmC7jjgYFYem/EP4i+OLW71r4faBoi6FBK8dudVlk8+92nBKBSAv8AwLj3OKAPYKK8luvjLcXPwK1TxrpFhDBqumTJa3FjdhnSKbzY0YHBUkbZMjkfoao6/wDFTx54b0PTPFup+HNKTwxdtEJIVlf7aiuMhzzsXPUL8xGQCe9AHtFYupeM/C+jXzWer+JNIsLpAC0F1fRROoIyMqzA8itiN1ljWSM5VgGU+oNeIahrng7RPj14ubxvFBIktpYi287TnusERndgKjbeo9M0Aeqz+NfDkGlW2pjWLWexurpbOG4tX89HmY4CZjzzn8B3q1/wkOl/8JV/wjn2n/ibfYvt/wBn8tv9Rv8AL37sbfvcYzn2xXF6t450/RvBmh6n4CtrP+z9R1qCwKtZvAoWRyrkJhCGyOCRj2NM/wCbpv8AuTP/AG9oA9Jorze08X+NvFen3GveCtO0b+xI3kWzj1BpftGoqhKllKnbGCVIXcGz1OBTr74oS3vh/wAJXHhm2tUu/FTMlu+pSFYLUqhZw+3ljkbQBjJ70AejVWvdRstNjifUby3tEmlWGNp5VQPI33UGTyx7Dqaz/Dh8SC1nTxb/AGW1wsv7mXTBIqPHgclXJKtnI6kdK5H41f8AIC8N/wDYzWH/AKGaAPR6K4DxL4y8R2XxQsPCfh7TrG6F7pj3Xm3JdRC4k27mYH7gUdAuSxUZAJIn8K+K9ek8caj4Q8ZW+nLqNvZpqFrc6dvWK4t2coTscllIbg8n/EA7iivONL8WeN/F8M+teELDQ49CWZ47NdReXzr9UYqXVk+WNWIOMhvemeHvincS/Cm+8XeJLBYp7a8ltksrQHc7iTy44+SfmLEAnp3xQB6VRXnN14r8b+GG07UfGOn6KdIvbqK2nj055fPsGlbajMzHbIASAdoXrxkVPf8Ai3xNq3jvWPDPg5NFtpdFiheeXVvMcztKm8CNIyCFAwCxJ5OMUAd/RXk3xWfxadP8GtFNpVq8ms6cs8RSV8XhfI+YMN0IbqMBjjqK6LWPFHiHRodF0FbfTtS8W6s0uzyhJDZxRpy0r5LOFClRjOWY8YoA7eiuK0PxP4htfGi+F/Glvpxubq0e7sb7TN6xTKjAPGyOSysNwOckEGs3SvFvjfxhbza14QsNEj0JZnjs11F5fOv1RipdWX5Y1JBxkN70Adtoev6Z4ksXvNFuftNvHM8DP5bJh0OGGGAPB79K0a80+A8jzfDu4lmiMEj6teM8TEEoTKcrkdcdKh+Mx8RK3hb+x7nT4rV9fsUVZ4pGc3HmnYWKsAY+mVxk9iKAPUaK4jXPFWveH7DRdIktrDVPFmszSRQR24eG1AT5mlbcWYKqFc8kknjGeKx8VeLfDGv6Ra+OLbSLjTtYulsob3SRKht7hh8iOkhbIYggMCOeooA9Arnm+IHg1Lg27+LdCWZX2GM6lCGDZxjG7Oc8Yroa8l+EHhnQdW8GahNquiadeyvrF6rPc2kcjMPNIwSwPFAHq8M8VzCs1vKksTjKvGwZWHqCOtYb+PPCEd41m/irRFuVkMbQHUYQ4cHBUruznPGK43QdNg8BfGn/AIR7Q90Oh67psl6tgCfLtriNwGZB/CrKeR6j0AFcD4e8TfDrStH8W2fjHTre/wBQfXL4iJ9OLs6F8KPOK7E5zyWGOvFAH0eCGUFTkHkEd6K5T4Xafc6X8LfD9ne3cN5NFZqDNBMJUIOSFVwSGABC5BxxxxXV0AFFFFABVe9/1I/3v6VYqve/6kf739KT2AoVfsv9Sf8Ae/pVCr9l/qT/AL39KmO5TLFFFFWSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAHoayvC/8AyKunf9e6/wAq1T0NZXhf/kVdO/691/lWy/gy9V+TF1NWiiisRhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB498cmxdaR/uSfzFcZ4M1G3i1G403UX2WeqQm3kY9EY/cb8DXX/HZsXej/AO5J/MV5L5lWtj9ByymquXQg+t/zZp6pYXGj6nPY3qFJYWKn3HYj2Ndx4f1XRIPDGiXGo6osM2k3jzm1RC0kp7Adh9awrXXNM8R6fFpvil2t7qFdltqajJA7LIO496q3ngXXIE86xgXU7U/dnsnEgI9x1FM3quNWKp13ytfc9GtG+9/VGTe3Qur+4nUECWRnAPbJzXU+GrK61PwH4gtdPga4nae2IjTqQN2TXPQeF/EFzIEh0a9Ziccwkfzrai8OHw9byz+IdZ/s6QodlpaSb5nbtuxwB9aDTEVKbgoRkr3VuuzT2WpZh8Av5cFtf6itnrF1G0lvYPGTuA7M3YnFcnCSt5GrDBEgB/Oti18f6ta6etv+4mljRkiu5U3TRKeoDVz1vITeREnJMi5P40GlBYhc3tn6fj+G292fW9v/AMe0X+4P5VJUdv8A8e0X+4P5VJWZ+YPcKKKKBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf8AXD/d/rVarN7/AK4f7v8AWq1ZvcouWP8Ay0/D+tW6qWP/AC0/D+tW6tbCYV4eMlQWVkJHKsMEexHrXuFeQ+I7JtO8SXls+fmczxlj95GOc/gcj8K8POabdOM10/U97JaiVSUH1/T/AIcp2lrLe3kVtbruklYKor0fVbmLwr4UW3tiBLt8qL1LHq38zWX4C0cKj6tcAc5SHPYd2/p+dYPirWP7X1l2ibNvD+7i9D6t+J/TFcVL/ZMK6r+Kei9O/wDXkd1b/bMWqS+CGr9e39eZ2WmyDxN4KMMp3StGYnJ5+deh/ka8zZSjlHGGU4I96674f6h5OozWLn5Z13p/vL1/T+VbHiKDw/aaffJKYI7u5BfIG6Qv1B9Rz9BWlSmsZhoVuZJxTTv5f1+JlSqvB4mdHlbUmmref9fgecHIUlVZyBwqjJPsB617hXkPhyybUfElnbJn5XE8hU/dRTnP4nA/GvXq6cmptU5TfX9P+HObO6idSMF0/X/hhsr+XC7hWcqpO1Rkn2FeJeFfFTJd/wDCReMvBPjK+8Sys+1v7DlkisIyx2xQA42jbjLY3Mc5Pavb6K908A5eTxfeSL4elsPDGrSwaxcNFcGeEwyaegB+eVCCQCR3xx3zgHf1G8On6XdXggmuDbwvKIYELvJtBO1VAJJOMAAVZooA8f8ABPwqur7w4uta/r/ifSNZ1mV9QvrWw1F7VEkkYkAx4yGC7Qc8jGO1Lofh3VPCNr498HQW2pX2mT2Ul/pV5KjSmV5YiskRcDBfeAQvU5JxzXr9FAHjF7oWrP8AC/4T2q6Xetc2GuaVLeQi3ffbIivvaRcZQLnknGO9ez0UUAeEaNaeLvgjr2rWOm+GLvxN4S1C6N1bHTFLTWrNxtKAEngKD2O0EEciu1t9V1L4oeE/EOj3fhjVPDUF1ZPbwXGqJsZ3dWH+r6gDgn1zXoVFAHh3h/xd4x8KeA4/Bt78PNcu9asrc2drc2kIeylGCEdpQcLxjPXOO2azvEHw31rw5+z1oXh2Gzn1LU49XiurqKyiabZuLk8KDwoIBPTP1r6CooA8p+O+j6nrGn+FV0nTru+aDXYZZRbQNIY0AbLNtBwPc8UeNtH1O7/aC8B6ja6ddzWNrFcC4uo4GaKElWxucDC5969WooA8x1DSdRf9qDS9VSwum06Pw60L3ghYwrJ5sp2F8YDYIOM55Fc14Iu/FHwputa8LXPgvWNcguNQlu9NvtOjUxSBwABI5wsf3QcnkEnjGK9zrznVvh94zvL++/s34nahYabeTySm0OnxyvCrsTsSYsGUDOBjoAPSgDgfhXo2oeJPAnxR011ijv8AUL+6g+RsxiYo3AY/w7iOfSqVzqHi+4+AU/gNPh/rqajZ26wT3D258lkWQHMZHMjHAG1QQMk5wK9w8E+C9M8B+Go9G0cSMgcyzTynMk8h6ux9eAPoBXQ0AeI+K9A1i5+G3wntbfSb6W4sLzTGu4ktnZ7YJCAxkAGUAPBzjFdB8eNH1vWPBdgui2Fzqlvb6lFPqOn2rESXMCg5TA5YZxwM9jjivTqKAPng6Pcaj8W/AuqeHfh1feG9EtpZPML6cIZM4GXmVAQg6BS5ycNXTXh1jwl+0Vf65J4a1bVNK1rT4bWO502384QuCgzJyAoG05JPTB5r2GigDyrQ/D9/L8efiFPd2N3Bp2o2FrDDeNCwjl/cIrbHIwxBz0PasHwTrvir4VeGW8Har4F1rWJbGSX+z73SoPNt7hXcuN7j7nLHk5IB5HFe50UAfPt78PPEGj/s0+J7S6sZbnXtcvo9QksLNDM0ZaeE7AFySQqknGcc+ma6X4zaLqmqfAS20/TNNvLy9X7Jm2t4GkkG0DPygE8d69dooAgsFZNOtlcFWWJQQRgg4FcR4c06+g+OHjO/ms7iOzubOxWC4eJhHKVRtwVsYJHfHSu+ooA4H4uadfalovh9NOs7i7eHxDZTSLBEzlI1c7nOBwo7noKjl0m8m/aMe/eyuDpr+ETatdeU3leYbvPl78Y3becZzjmvQqKAPn7QPBXh/wAKac2heMPhlf6zqVpI6w6lp9g1xFfxliUYuDhGwQCGxjHXsPQdct9AsPAukaRq3gO+u9JuIstp1jZ/azYOQGwQhyDlmG5c8g+tegUUAef/AAp0/VtPt9ZW5h1O20JrtTo1rq0ha5hi2DcDkllXd91WOQOtO+LmnX2paL4fTTrO4u3h8Q2U0iwRM5SNXO5zgcKO56Cu+ooA4G806+b9oTTtRWzuDYp4elha6ETeUshnBCF8YDY5xnNRy6TeTftGPfvZ3P8AZz+ETam7ETeV5hu8+Xvxjdt5xnOOa9CooA8m8C6trXgHwvH4O1PwlrN9e6a8kVlc2Nvvtr2MuzIxlJ2xnnkMeOvtXO+HfCeo+Mf2edS09LeB9SGtXF0kDsRFM8dxuaPPHDYZQfevQJ/BnjNmntrb4jXMWnSuSFbTInuYkJPyrPu9+GKkiun8N+HrDwp4ds9E0hGS0tE2pvOWYkkszHuSSST6mgDy7RND8F3epafFbfCPVLG/85PNe5sDFDaEHl/OLbXAxkbck8cDNaXxGi0bV9UurW88GeI59ZtYwNO1jSrR1JYplSlwhAUKzEEPxkHg16nRQB5b4n0zxQ3wt8JXGp2k+qazo2o2F/qMFqBJNKImy+0D77/Tqc1T8eaJH4rvvDfjObwle6zptqk9vfaPc2xjuxGzYWVYmIJIKk7epDD8PXqKAPNvA+ieFH1yafw/4AvtBCWzKdQvLM2pYtgGNVY7jxkk4A475rP8DavrXgHwung7UvCWs317pryRWVxZW++2vYy7MjGXO2M887iMdfavWaKAPPfgrp+qab4Dni12xlsbx9TupHikjZPvSE5XcASp7HuKs/Fax1C58P6Re6ZYT6g2k63Z6jNbWy7pZIonywRf4m56V3NFAHmniddS1HU/CvxA0HQ9QuTpbXMVzpU8PkXTwSjYXVHI+YFQwU4JDdqj1e5vviZq2gWNl4f1fTNL07UodTvbzVrVrUnyslYY0b5mLMeTjAA616fRQAV4v8PfFd54N0O+0jUPBfi24uTql1MjW2kOY3V5CVw7EDkd+le0UUAcH4U0bXNX8aXHjXxXZjTJPsn2HTNL8wO1vCW3O8jDjexA4HQDHNcj4J8TXng618Q6XqPgvxVeTXGuXlxEbbSHaGVHf5fnbAwcdemK9qooA434V6BqHh3wLFa6vbpZ3E9zPdCyjbctoskhdYgRx8oPbjOa7KiigAooooAKr3v+pH+9/SrFV73/AFI/3v6UnsBQq/Zf6k/739KoVfsv9Sf97+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAy7nUb3+1JbOwtIpvKiSR2lmKfeLAAcH+7Sfadc/6B1p/wCBR/8AiKW2/wCRq1D/AK9oP5yVqV0zlGFlyrZd+3qLcyvtOuf9A60/8Cj/APEUfadc/wCgdaf+BR/+IrVoqPaR/kX4/wCYWMr7Trn/AEDrT/wKP/xFH2nXP+gdaf8AgUf/AIitWij2kf5F+P8AmFjKNzrmD/xLrT/wKP8A8RR4XBHhXTQ3X7OucfStU9DWZ4b/AORZ0/8A691/lVuSlSdlbVfkw6mnRRRXMMKKKKACiiigAooooAKKKKACmyyLDC8j8Kilj9BTqgvlLafcKoJYxMAB3ODQBm23izSLzRLXVrW5820u5VhidVOS5OACO3NK3inSkh02Rp2C6m/l23yHk+/p6c1wf9h6ppNt4cFjZTSWV7eWr3kAU5tJVOTJjspHB98GtAaNey3GtW5tZhHpe6SwbbxIzv5vy+uCMfjQB1cvivSYdUXT5bgrO9z9lGUO0ybQ23P0YVbXWLJtcbSFlzepB57IB0TOOv8ASuCuNFv7/SdJnazmS7uPtV7KCnzRSuNyg+h6D8K1fDNvfzeJoNV1C0lgmvNOd5g6/wCrYyDCE+oA6UAcb8es/a9HwCfkk6D3FeQ/N/db8jX2BcWVtdlTdW8UxXpvQHH51D/Y+m/8+Ft/36FUpWR9Lgs7jhqEaLhe3n5nyL8391vyNWLXUL+xbdZXFxbt6xsy/wAq+sv7H03/AJ8Lb/v0KP7H03/nwtv+/Qp8x1PiKDVnS/H/AIB8tTeKPEFzGUuNW1CVcYIaZiKy2eR2LOHZj1JBNfVun6TpzLcZsbc4uHA/dD1q5/Y+m/8APhbf9+hUQqc0b2MqXEVLlvGlb5/8A+Rfm/ut+RqW23fa4flb/WL2PrX1r/Y+m/8APhbf9+hQNI04HIsLfP8A1yFXzGr4ji1/D/H/AIBYt/8Aj1i/3B/KpKBx0oqD5F7hRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/rh/u/1qtVm9/1w/wB3+tVqze5Rcsf+Wn4f1q3VSx/5afh/WrdWthMK5/xd4b/t/Tla2ZY7+3y1u7H5TnqjexwPpxXQUVM4RqRcZLRlU6kqclOL1R4gNQube6ksLiWe1uYDse3aQjH05wR9KSu817RrDWJ5Y9Qt1l2yNtboy89j1FcxceA34Gn63dW65JKyoJfwHQ/zr52vlNS/7t3XmfS0M4pNfvFZmZHI8UgeJ2Rx0ZTgj8aiWR7i+js7SNrq9mOEhTlj7k9h7mti38BvyNQ1u6uFyCFiQRfgep/lXZeE9GsNHnkj0+3WLdH8zdWbkdT1NKjlFRv967IdfOKUV+6V2WfCPhv+wNOZrllkv7jDXDqflGOiL7DJ+vJroKKK+jhCNOKjFaI+ZqVJVJOcnqwoooqyAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqve/wCpH+9/SrFV73/Uj/e/pSewFCr9l/qT/vf0qhV+y/1J/wB7+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAy7b/AJGrUP8Ar2g/nJWpWXbf8jVqH/XtB/OStStq3xL0X5ISCiiisRhRRRQAHoazPDf/ACLOn/8AXuv8q0z0NZnhv/kWdP8A+vdf5Vsv4T9V+TF1NOiiisRhRRRQAUUUUAFFFFABTJpkt7eSaZtscal2Y9gBkmn1FdBjZzBIlmYocRMcB+OhPvQBjW/ilJUMs2nXlvA0TTQyugKyqBu7E4yOeaNP8YaXqmhadq1m7vbahKsUeVwyMcjDDsQQc1zFnoc0E7jw9b6rp9u1vJHdWFzIWtxlDgRgk4O49sDFRr4a1bTJ/D76das9rcSwPqNuWx9nlRMeaPqOG+gNAHW23ieO6uowlhdi0mk8qK82Ao7Zx2OQMg8kVJ4g8QNoEAnfTrm6h43PCV+Uk4A5I7muWg0eWLX4bjQrTU9IuxcBrqDzS1lIhbLnbnGSOhABrqPFdpPe+HJ4LSMyys8ZCjvhwT+goAsWmswS+TFe7bC7nz5dpPKgkYDuADz+FWF1Kxkumtory3e4VSxhWVS4A74zmuM1TSrxtR1e2/s6Wa51C5ils75QCsKKiDBbqu0qxx3zVHRrV74pDZabJFPb6rNPLfbRtdAWBAbqScgYoA74arZAWwnuoIZbkZijeZdz/wC7zz+FSQ6hZ3F3LawXcEtxD/rYUlBeP6gHI/GuJ0Gwn0ry49X0Wa8ee2t0iZUVxFtGCrEn5cHmp/Dlheaf4n8m3guDYr5pY3sCboMnIWOUcuCc8HPFAHb0UUUAU9O+7c/9fD/zq5VPTvu3P/Xw/wDOrlZUfgRjQ/hoKKKK1NgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCje/64f7v9arVZvf8AXD/d/rVas3uUT206w7twJzjpVj7bH/db8hVCindhYv8A22P+635Cj7bH/db8hVCijmYWM+4bddSsOhcn9ajp0v8Arn/3jTaskKu6XKsN0zMCRsI4+oqlU9n/AK4/7tJgbn22P+635Cj7bH/db8hVCip5mVYv/bY/7rfkKPtsf91vyFUKKOZhYv8A22P+635Cj7bH/db8hVCijmYWL/22P+635Cj7bH/db8hVCijmYWL/ANtj/ut+Qo+2x/3W/IVQoo5mFi/9tj/ut+Qo+2x/3W/IVQoo5mFi/wDbY/7rfkKPtsf91vyFUKKOZhYv/bY/7rfkKPtsf91vyFUKKOZhYv8A22P+635Cj7bH/db8hVCijmYWL/22P+635Cj7bH/db8hVCijmYWL/ANtj/ut+Qo+2x/3W/IVQoo5mFi/9tj/ut+Qo+2x/3W/IVQoo5mFi/wDbY/7rfkKPtsf91vyFUKKOZhYv/bY/7rfkKPtsf91vyFUKKOZhYv8A22P+635Cj7bH/db8hVCijmYWL/22P+635Cj7bH/db8hVCijmYWL/ANtj/ut+Qo+2x/3W/IVQoo5mFi/9tj/ut+Qo+2x/3W/IVQoo5mFi/wDbY/7rfkKPtsf91vyFUKKOZhYv/bY/7rfkKPtsf91vyFUKKOZhYv8A22P+635Cj7bH/db8hVCijmYWL/22P+635Cj7bH/db8hVCijmYWL/ANtj/ut+Qo+2x/3W/IVQoo5mFi/9tj/ut+Qo+2x/3W/IVQoo5mFi/wDbY/7rfkKPtsf91vyFUKKOZhYv/bY/7rfkKPtsf91vyFUKKOZhYv8A22P+635Cj7bH/db8hVCijmYWL/22P+635Cj7bH/db8hVCijmYWL/ANtj/ut+Qo+2x/3W/IVQoo5mFi/9tj/ut+QqG4uEmjCqGBznmq1FF2Fgq/Zf6k/739KoVfsv9Sf97+lEdwZYoooqyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMu2/5GrUP+vaD+clalef6P4s1K7+Jl9o0mkiOWNFWeXedqxqWIYfUMK9ArsxdCdGcVPqk/wJi0wooorjKCiiigAPQ1meG/8AkWdP/wCvdf5VpnoazPDf/Is6f/17r/Ktl/CfqvyYupp0UUViMKKKKACiiigAooooAKKKKACiiigAooooAKZFDHCpWFFRSSSFGOT1NPooAKKKKACiimyyLFE8j52oCxwM8UN21E2krsq6d/y9D0uH/pVysbRtWsry6uorWYSs0pkG0HhcL1/GtmsMPOM6d4u6OfC1IVKScHda7BRRRW50hRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/1w/3f61Wqze/64f7v9arVm9yhyoz/dUt9BS+TJ/zzb/vk1Zsf+Wn4f1q3TSuK5l+TJ/zzb/vk0eTJ/zzb/vk1bvFufL3WsmGXquAc1kHU7wHBl5/3R/hT5QuV5hidweDuP8AOmUrsXdnY5Zjkn3pKoQVZsVZpyFBJ29h7iq1SQzyW7l4W2sRjOAeKANPyZP+ebf98mjyZP8Anm3/AHyarQ31/PII45Msf9kf4VtRK6RgSvvbu2MVPKO5neTJ/wA82/75NHkyf882/wC+TWpRRyhcy/Jk/wCebf8AfJo8mT/nm3/fJrUoo5QuZfkyf882/wC+TR5Mn/PNv++TWpRRyhcy/Jk/55t/3yaPJk/55t/3ya1KKOULmX5Mn/PNv++TR5Mn/PNv++TWpRRyhcy/Jk/55t/3yaPJk/55t/3ya1KKOULmX5Mn/PNv++TR5Mn/ADzb/vk1qUUcoXMvyZP+ebf98mjyZP8Anm3/AHya1KKOULmX5Mn/ADzb/vk0eTJ/zzb/AL5NalFHKFzL8mT/AJ5t/wB8mjyZP+ebf98mtSijlC5l+TJ/zzb/AL5NHkyf882/75NalFHKFzL8mT/nm3/fJo8mT/nm3/fJrUoo5QuZfkyf882/75NHkyf882/75NalFHKFzL8mT/nm3/fJo8mT/nm3/fJrUoo5QuZfkyf882/75NHkyf8APNv++TWpRRyhcy/Jk/55t/3yaPJk/wCebf8AfJrUoo5QuZfkyf8APNv++TR5Mn/PNv8Avk1qUUcoXMvyZP8Anm3/AHyaPJk/55t/3ya1KKOULmX5Mn/PNv8Avk0eTJ/zzb/vk1qUUcoXMvyZP+ebf98mjyZP+ebf98mtSijlC5l+TJ/zzb/vk0eTJ/zzb/vk1qUUcoXMvyZP+ebf98mjyZP+ebf98mtSijlC5l+TJ/zzb/vk0eTJ/wA82/75NalFHKFzL8mT/nm3/fJo8mT/AJ5t/wB8mtSijlC5l+TJ/wA82/75NHkyf882/wC+TWpRRyhcy/Jk/wCebf8AfJo8mT/nm3/fJrUoo5QuZfkyf882/wC+TR5Mn/PNv++TWpRRyhcy/Jk/55t/3yaPJk/55t/3ya1KKOULmX5Mn/PNv++TSMjqMsrAe4rVqve/6kf739KLBcoVfsv9Sf8Ae/pVCr9l/qT/AL39KUdxssUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVyviD4iaF4fnNq8r3l70FtarvbPofSr/AIyuLq08F6rPYOUuI7ZijDqPf8q4L4Var4Pj0qNHkhh1pubh7sjdI2eqse1YVKjUlBO1zCpUakoLQ0h4x8b6v/yA/Ci20TfdkvZMH8uKBbfFO6HzX2l2gPYIDj8cV6IjpIgaNlZT0KnIp1Hsm95Mfs295M8zTw98SLa9kvYdV0p7mVQjuYeWA6AnFTf2n8TtN+a50rT9SQdfKbax/lXo1FN02/tP7w9lbaTPP7X4rQW062/inSLzRpCcb3UtH+ddzZX1tqNolzYzpPA4yskbZBrN8Q6l4etbGRfEVxZiAghkmIJP4da8/wDhVf20/jPXbfQPNj0TYJIYZD905xkDt3qOeUJqDd7/AHk87hNRbvf7z1miiiuk6APQ1meG/wDkWdP/AOvdf5VpnoazPDf/ACLOn/8AXuv8q2X8J+q/Ji6mnRRRWIwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKoazq8Gjae1zPyeiIOrH0qZzjCLlJ2SKhCU5KMVdstXFzDaQmW5lWJB1Zjiufu/HWlQMVi8y4/3FwP1rg9V1m81e4Ml1ISufljB+VR9K2NO8EXOo6fDdpeRosq7gpQkj9a8GWY1683HCx2PoI5bh8PBSxUtyxo3ibSNJuLp4bOZftMm8ng7R6fTrXV6d4m0vU2CQXAWQ/wSfKTXm+t6LNod6tvO6ybk3K6jANZwJBBBwR0IripY+vhX7KUVZdNjWnkuB9ilhvdXS2x7fRXAeFvF0sUyWWpyb4mO1JW6ofQ+1d/X0eGxMMTDmgeFisLUw0+SYUUUV1HKFFFFABRRRQAUUUUAFV7y/tbCHzbyZIl9WPWs/xFr8Wh2eeHuJOI4/6n2rzG+1C61K5M15K0jk9zwPoK8vG5jHDvkiry/I9bA5bPErnk7R/M7658e6ZCxWFJpvcDAqKL4hWLNiW1mQeowayofh/dTQJKL6IB1DAeWeM/jXO6pp0ulajLZzkM0Z+8BgMPWvNrYzMKS55qy+R6dHB5dVfJB3fzPU9O17TtV4tLhS/9xuG/KtGvEUdonDxsVYHIIOCK7zwn4sa7kWw1J8yniKU/xex9668HmiqyUKqs/wADixmUujF1KTul952VFFFe2eGFFFFABRRRQAUUUUAYnjHUbnSfCl5e2T+XPEFKtjOPmAryZfiP4of7l2G+kIP9K9N+Ipx4C1H/AHV/9CFebeAdVh0bStZ1CeATpF5SsMcgEkEj3r6TLYU/qkqkqak72++xw13L2iSdtBjfEXxSoy1ztHqYQP6Uz/hZXiX/AJ/V/wC/YpfGF3qv2NHF6L7Rbs7oJ1QDBH8LY6MK43fXuUcPh6sOZ04/d/wEcspTi7czOx/4WV4l/wCf1f8Av2KP+FleJf8An9X/AL9iuO30b62+p4b/AJ9r7kR7Sp3Z2a/EbxS4yl1uHqIQf6UN8R/FCffu9v8AvQgf0qHwdcau8ci294tjpdufMurmRAQg9Bnqx7Cr/jfWLfW/DOn3trD5cYuZIkZgNzgAcn3NcTp0FWVP2Ubd+3roa3ny83Mz0nwLqt3rXhSC91CTzJ3dwWAx0bAroq4/4XHPgK1/66Sf+hGuwr5DGRUcROMVZXZ6VJtwVwooorlNAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo3v+uH+7/Wq1Wb3/XD/d/rVas3uUXLH/lp+H9at1Usf+Wn4f1q3VrYTCs7UdO84GWAYk7j+9/9etGsfxHrqaJp+8Ya4kyIkP6k+wqKlSNKDnN6IunTlVmoQWrMW6vILJc3MgT0B6n8KyJvFMKn9zbvJ67m2/41z9zdTX1201y5eSRssTXcJ8PbJ41b7bcAsAei/wCFeGsZi8VJrDqyXpf8T3ngsJhIp4ltt+tvwMeHxTCx/fW7x+m1t3+FbVhPHqbBbNxIe47j61wl5bPZX01tKMPE5Q/gaW0vJ7G5Se1kaORDkEVzUs1r05Wq6r7mdNbKKFSN6Oj+9HsNnZpaR4HLn7zetWKx/Dmuprmn7zhbiPAlQfoR9a2K+lp1I1YKcHoz5ipTlSm4TWqCiiitDMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKr3v8AqR/vf0qxVe9/1I/3v6UnsBQq/Zf6k/739KoVfsv9Sf8Ae/pUx3KZYoooqyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCpq1r9u0W9tcZ8+3ePH1UivMfh34V0LxX8PYF1WxSSe3mkj85flcc5HI+tes1518KP9DuPEuldPsupOVHoCSB/KuepFOpG/mYVIp1I38wb4TmzctoXiTUrEdk8zcBQPBvjmDi38aMy/wDTSLJq38R/Fd9pcdrovhvL61fNlAgyY0HU/jjH51Z8Oa/P418B3KQTfZdVWJ7eY9DHLjGfao5aXO4Lcjlp8zitzLHhXx9ICP8AhMkx0JWEUh+HPiC941bxnfSKeqxfKK53w5pvjv4e+fdSaeNTs5T++gSYswx/EPeu60H4leH9bYQPObC76Nb3Y2MD6Z6VEPZy0ndPzbJh7OWk7p+bZW0z4T+HLKZZ7yObUZhzvupCwz9KzvhfDHL4g8V30KKkbX3kxhRgALngfpXoVzcJFYzXG4FEjZ9wPGAM15z8FtQspfDt1D9pjN/LdPPLDn5sHHPvWjjCNSKStuW4xjUiku56ZRUJvbUHBuYf+/gpPttr/wA/MP8A38FdnLLsdVmTnoayPDlxCvhrTwZYwfIXgsPStD7ba/8APzD/AN/BWedO8PEkm3sMnrwtbQtyuMk+n6/5iszT+0wf89o/++xR9pg/57R/99isz+zfD3/PvYfktH9m+Hv+few/JaOSn5/d/wAELSNP7TB/z2j/AO+xR9pg/wCe0f8A32KzP7N8Pf8APvYfktH9m+Hv+few/JaOSn5/d/wQtI0/tMH/AD2j/wC+xR9pg/57R/8AfYrM/s3w9/z72H5LR/Zvh7/n3sPyWjkp+f3f8ELSNL7TB/z2j/77FH2mD/ntH/32Kzf7N8Pf8+9h+S0f2b4e/wCfew/JaOSn5/d/wQtI0vtMH/PaP/vsUfaYP+e0f/fYrN/s3w9/z72H5LR/Zvh7/n3sPyWjkp+f3f8ABC0jS+0wf89o/wDvsUfaYP8AntH/AN9is3+zfD3/AD72H5LR/Zvh7/n3sPyWjkp+f3f8ELSNL7TB/wA9o/8AvsUfaYP+e0f/AH2Kzf7N8Pf8+9h+S0f2b4e/597D8lo5Kfn93/BC0jS+0wf89o/++xR9pg/57R/99is3+zfD3/PvYfktH9neHv8An3sPyWjkp+f3f8ELSGweLNHn1qfSftiRXsLAeVIdu/PQqe9cN4v1VtS1yRFP7m3JjQevqfzq7aaP4Nk8YX94zJJqsTHyoZcKseBxsA4P161yzsXkZj1YkmvG4k9nRVOlSvqru6t93ke/klF+0lUmtVt8xtdLoni2+tJLOzbY1srBCAvOCa5quq8D6N9s1A3065htz8ue7f8A1q+YwftXWUaTs3+R7mN9iqDlVV0vzN3x3p32rRlu0GXtmyf909a84r2eXyL+C5tdyvgGOQD+Ekf/AF68fvbV7K+mtpBhonKmvQzeilUVVdfzR5+TVm6bpS3X5Mgr1DwbqralooSZt01udjE9x2NeX11HgvVrTSZL6fUrqO1tVhDvLK21VwfX8a58rquGJS6PQ6M1pKphnLqtT0iiuW8M/Efwz4ta+/sbUY3SylEbySEIrkjOVz1Fb39r6b/0ELX/AL/L/jX2B8YW6Kqf2vpv/QQtf+/y/wCNH9r6b/0ELX/v8v8AjQBboqp/a+m/9BC1/wC/y/40f2vpv/QQtf8Av8v+NAFukZgilmOABkmqh1fTgpP2+1Pt5y/41ylv8RvD3ifRdSi0fUE+3QRuklrIdsiEcHjv9RUTlyRcuxcI881Huctrmpvq2rzXLE7SdsY9FHSs+iivgZzc5OUt2foUIRhFRjsjs/Dfi2+uNVtrK62NCw8sbV5HHFTfEHTsrb6gg6fu5P6f1o8B6NgPqk69fkhz+prpdTgh1rRLmGFlkDBgpHZh/wDXFfSUaVWvgnGq7t6o+YrVqVDHKVJWS0fzPIacjtG6uhKspyCOxpHUo7KwwVOCKSvmdj6rc9d8P6n/AGtosFy3+sxtk/3h1rTriPAWo29vYXUV1cxQgSBlEkgXORz1+ldZ/a+m/wDQQtf+/wAv+Nfc4Oq6tCM3vY+CxlJUsROC2uW6Kqf2vpv/AEELX/v8v+NH9r6b/wBBC1/7/L/jXUchboqp/a+m/wDQQtf+/wAv+NH9r6b/ANBC1/7/AC/40AW6Kqf2vpv/AEELX/v8v+NMl1rTooXk+3Wz7FLbVmXJx2HNAGL8SDj4f6l/ur/6EK8Ah1C4gtJ7aKUrDcY81B0bHSvWfEPj7w94x+G+qnRNQjknjVfNtmO2WMhwDlf6ivNPC2mWuo3dzc6kW+w6fAbidVPLgHAUfUkV9bk8owwkpS2T/wAjgxCbmrEml3+rwaHqEVpbvPp0ifv90e6OM9mB6A1qDw5pmj6RaX/iF72U3cYkjitY/lAPTLnvWLrXi2+1dfs6MLPT04is4BtjUe47n3NdvqjeLLex0m58Os8tqdOiEkCEPzg8lDXdWlUi1tHmeutune25nGKfnY5r+0vB4+T+x74j+99p5/lVuDw7pPiCzuZvDrX0M1vEZWjuY8oQOwcd6U+IfGAbadDh8z1OmLn+Vbvh5/F93dzz68Xt7FLSbEL7Ywx2HGEHWsqlSdOPMpW/7ev+FhqKbs1+Bxl/da1/wjNlb3FrJBpi5aN0TCyn+8xHU/Wst9QuJLGOzeVjbxsXSPsCepqzo3ivUdFPlxSie0biS0nG6Nx6EHp+FWPFNhZwCy1TSUMVjqUZkSEnJhcHDLn0z0rvi+SfJKK1bs13/wAzNq6uj2T4VHPw/tf+usn/AKEa7KuL+Exz8PbQ/wDTWX/0I12lfC47/eqnq/zPSp/AgooorkNAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo3v+uH+7/Wq1Wb3/XD/AHf61WrN7lFyx/5afh/WrdVLH/lp+H9at1a2EwryjxVqDah4guCc7Ym8pQewHH88mvV68QZi7FnJZickk5zXhZzNqEId7/h/w57+SU05zn2t+P8Awwldj4H1DUbnWnjlnmuIBEd/mSFgnoRn8q46vTNDtIvDHhd7u7GJWTzZfXP8K/yH1NeblsJSrc17KOrPTzOcY0eS15S0Rz/j/T/I1aK9QYW5XDf7y8fyx+VcnXputoniPwZ9pgHzbBOgHOCOq/zFeZUsypqFfnjtLUeWVXOhyS3jozZ8K6g2n+ILcjO2VvKYDuDx/PFer14grFGDISrA5BBxivb69PJptwnDtb8f+GPLzumlOE+9/wAP+HCvMvFy+PfDHhzUvFP/AAmFrL9gR7k6U2mRi3eMH/V+Z/rN2P4s8nHAr0xmVFLOQqqMkk4AFeZfEXwbYT6FqPitPEeoI9nE1/DDdXYubBmUblUwSZTaSABtwckEc17x8+eiaZeHUNJtL1omhNzAkpibqm5Qdp9xnFWqwfDniSPUvCugahrDwafe6vbRSJbSSBC8jR7yiA8k4ycdcVvUAeP+DE8f+NtKvNUX4hzaciajc20dumj2sgVY5Co+Yrk8V6NqviDTfCGg29z4p1eOMKEha4kTDXEmP4UUZLHBO1RXlHww8Ax+IPDmoX7+JvE2nFtXvF8jTdVeCEYlPIQcZPc10uoRxw/tC+HYNXfzLOLw/MumPcNkteeaokIJ6v5QHv1oA6zw9468OeKrqa10TUlmuoF3SW0sUkMqr/e8uRVbHI5xjmqV58UvBmn3j2t5rccVwl+dOMRhk3faBtyoAXkDcvzD5eRzWP41WNvjB4B+wBP7UWW6M23732TyTu34/h3Yxn+Lpzmqnwo0+1HjD4hah5KG7bxBLD5pHzBAqnaD2GWP149KAPUK8Z+HMXxD8deANN8RzfEieze983MCaNaOE2SunXaM52Z/GvZq8J+Cnw/j1j4T6HqjeJ/E9k0jTH7LZas8Vuu24kGBGOADjJ9ST60Aesa/4x0LwjHap4i1NYZrgYijWJ5JZiMZKxxgsevYYGateH/Euj+KtNN9oF8l5bq5jcqpVo3HVWVgGVuehANcpr2s61qXxOTwt4buNP0uaDTBe3Go3Vr58xRpCojiTcox8uSSSOnFcboD6lCPjENL1U6vqcUSBLuGFYy84tWDbUTgMGBXjklecnNAHos3xQ8HQ6q+nf2ystxHKIZDb28s0cb5xtaRFKKc8ckVzUPjS30H4xeMY/EOsTRadDbWAtbZ3eQB2jYsIolySxxkhRk4zXR/DNtHtvhT4ffSHt47FbCIs6EBQ+0byx/vb92c981z/huzt5f2jfGt3JCjXEGn2KRSEcorIdwH12r+VAHceG/FOi+LtLOoeHL+O9tlkMbMqsrI46qysAynkcEDrXM/GHx5efD3wJ/ammW8c15cXSWkJm/1cTMGO9uRwAp79SKpeBcQ/Gz4nW0QCQrLpsoRRgb3t2Lt9SRk11njCLw1eaGNM8ZtaDT9RlFuq3bhFeTBYANkYbCkg5ByOOaAOU0HQPilFqdhf6v4603ULJnR7qxj02NEMZwWEcoXcTjoTjNdJ4r+IPhXwR5Q8UazDYvMMxxFWkkYdM7EBbGe+MV5HMt18GfHnhzTfCniWXWND1q8W1k0O7mEslsGYDfHjoBu9B0wd3UNsG8TN+0d4y/sefQY9VVIVthrqSsxt9o/1Gxhgfd3fUe9AHscXjjw3ceEJfFFvqsU2jQoXkuolZ9gHXKgbgR6YzWfbfFXwXeTTQ2muJPJBp39pyrFBKxS32B95wvXawO373PSvMb3wdqvhb4Z/FC41bUNImOqIs5tNJ3CO1l+Yv8AK3K53JxntXpnwu0mxs/hB4ctYLdFhudKgmmTaMSNLGGcn1yWNAGzZeLND1DwifFFnfrJowge4N3sYARpnedpG7jaeMZ4rkNd8RaT4g1DwLqul+NL3SbO9vmNtbQ2koXVsFR5bggFV4PLDBDEjsR5G13faJ4M8QfB+0lb+0pfEMVhZE8kWlwfM3fTCHP/AF0/Gu/+I+mW+i+LPhJplimy2s9TEES+iqIwP5UAeheKvH3hfwSkR8T6xBYNKMxxkM8jD1CIC2PfGKl07xt4b1Xwq3iWz1e3OjICXvJMxIuDg53gEHPGCK8x8JHTpv2mfGf/AAk3lnVkSBdIW5xxDt+by898bDxzy3vUf7QbRjw34fXTGsU01tfQX5YZtt+P+W4Tkr13Drx64oA9D8MfFDwb4x1J9P8ADmuw3d2ilvJMbxswHUqHUbvwzXVkZUjJGR1FeOX/AIO8Za/4t8IazrWq+ELVNJvEkt20tZo5J4sgvEpYkMCoOAPU17JQBxXh3xT4Y0j4d6dq0fiO/wBT0e4nMMGpaiJZZpXaVkCt8gbhgVGVAAA7c1c034leENX16PRtP1qKa9mDGBfLdUn29fLkKhH/AOAk14rZwRXX7I/hW3uEDxS6uiOp/iU30gI/KvSfjHFHbaT4SmgjSOS18TWAgZVA8sbiMD0GOMdKAPSq8fvfHPjPx74z1Tw/8MGs9N0/SH8m91u8j8zMuSCsakEHBDdQc4zkZGfYK8J+COu2Hg7XPFXgnxNcxWGrLq0lzE10wj+1IygfKT14UMB1IfIzzgA9H8GaR440q8ul8Z+JbTXrVox5DRWa28iPnnIUAEYqrffGn4eabq7aZd+J7VblX2NsjkkRT6GRVKD86veONUFx4B8SweH76ObVItLndI7aUNKp2HBAByD6e9cR8OR4MP7OKed/Z5svsLnU/NC587Dbt/fdn7vfGMdqAPR9d8Y6D4b8OLr2saikOlvs23UaNKrb/ukbASQfWsyL4q+CJ/FX/COReIbV9V8zyhCA+0vnGwSY2Fs8Y3ZzxXg2oLer+xfZfbw4BvwYN/XyvObH4Zzj2xXcftCaRYaN4B8KjTLSK2NjrdvDbtGgVo08uQ4BHTJRT9QKAK3xk+J1pF420nwna+LLrQbKKZ/7durGKRZ4BtVkVWC5OQT93PJGeldXoEmnp8QfDsVj4/1e/jl0Bbi30q8jkf7bCxYrcySEBd3sQG4HTocr4n/8l6+GX/Xa4/8AZasan/ydtpH/AGLDf+jpaAOs174q+CfDGtjSNc8QW9rfcbodjvsz03lVITg5+YirWnfEHwvq+laxqWm6qtxZ6J5n2+ZYZMRbFLNj5fnAAJyuc9s15p8Bn0Y6d4wn1w2q62dYuDqRu9odY+Mbs/wbvM6981z/AMMUtrj4W/FuPRUVrWRr1bRIhwUMEmwKPTGMUAe5R+NNAl8FnxZHf50QRGb7V5Mn3AdpOzbu6j0qG78f+GbHRtI1a71MRWOtSRxWExgkxMzjKjG3K5HdgAO9eRWWr6dH+xkyPewB/sMlvtMg3eaZmwmOuec49OelUfGNnDqPwT+E1ldKWgub+xikUHGVaMgj8jQB7JZ/E3wbf6LqOr2uvW7adpsohurkqyojnoASBuznjbnNN8MfFDwb4y1F7Dw3rkN5dopYwmOSJiB1Kh1G78M1jfF3xQPBvhTSoNO0/TZJL7UYbK2+3Rj7NadSJCox93aMdMde2D55rkOr6b+0Z4EGu+JLTWdTYv5i21ilv9njYEBTgktnLY3HtwOaAOpH7QfhyP4n3Oh3N7BFokNsVS9+zTmR7vzFXytoXgAb+cY4HPr1GlzQt8aNciXxdd3Uy6fEW8PPA4htB8n71XPykn0HPznOcDHNafKkf7XOqK7qrSeGVVAT94+bEcD8AT+FQ2H2gftJ+N/sWftP/CPxeTj+/tj2/rigDrdc+MHgLw5q7aZq/iO3ivEba8ccckvln0YopCn2JGK3bzxboVh4TbxNPqUR0ZYxKbyEGVSpIAICAk8nHAry74A/8I23wguDqBs2vDNOdc+2bd2d5x5u7nbs29eM5964vQhKP2WPHRiDf2WdSkOnbs48rzIvu57Zz+OaAPaX+MHgKPV7fTJPEtqt3cqjRqUfaN4BUM23ahwRwxBHeuhn8RaTbeJLXQJ71E1W7heeC2IOXRfvHOMfgTk4OOhrxj4naLptj+yjp6WtlCnkW9jNGwQZEjlN75/vNubJ75Net6O+lSR6I921k2stpymAybPtBj2rv25+bbnbnHHTNAG/RRRQAUUUUAFFFFABRRRQAVXvf9SP97+lWKr3v+pH+9/Sk9gKFX7L/Un/AHv6VQq/Zf6k/wC9/SpjuUyxRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXnPhgmw+MHiq0A/wCPiJLhF9Tx/ia9Grzq8P8AZ/x7s5Ogv9PKn3Iz/hWFXRxfmY1d4vzOcsv+E00/xpqGv3PhVr66mJjhZ5BiFM9F59KueFLfxVB8SH1JvDradY6hxeRiQFAcff69c10XjvxZrej+IdI0fw9DbvPqAbBn6ZBAArC1zxd4/wDC9tDea1aad9neZYyIzknNczUYPd6M52owe70Z6Xquq2Wi6bLfanOsFvEMszfyHqa8v1LxX4C8V3aRa1pF1apK22K/kg2DPruH/wBetb4vL/oGizXSs2mx3ym7A6be2aueOdV8MyfDy7Uz2csUkGLWONlLbv4doHIrWrJttaWXfqaVJNtrSy79TnPEPhHWPCfhe/vdA8TTPpnkHfbXHzgo3Hyn8a5nRPCvimaz0a60fQ0tZUKyJqUc4UuhOfnGf6V1XiOW6sv2f7K3vdwuJ0iiYN1wWyP0Ar0vQ7X7F4fsLbGPJto0I9wozWaoxnPtojNUozn20Q5NLsyi+baQF8fMfLHJ70v9lWH/AD5wf9+xVuivS9pPuzv5n3Kn9lWH/PnB/wB8Cq5i0MEgixBHUZWtM9DWTotlavodmz28bMYlJJQc8VLqVL2TNoJcrlJvp+v+Q7y9D/6cfzWjy9D/AOnH81q59gtP+faL/vgUfYLT/n2i/wC+BR7Sr3Dmp+ZT8vQ/+nH80o8vQv8Apx/NKufYLT/n2i/74FH2C0/59ov++BR7Sr3Dmp+ZT8vQv+nH80o8vQv+nH80q59gtP8An2i/74FH2C0/59ov++BR7Sr3Dmp+ZT8vQv8Apx/NKPL0L/px/NKufYLT/n2i/wC+BR9gtP8An2i/74FHtKvcOan5lPy9C/6cfzSjy9C/6cfzSrn2C0/59ov++BR9gtP+faL/AL4FHtKvcOan5lPZoX/Tj/30lGzQv+nH/vpKufYLT/n2i/74FH2C0/59ov8AvgUe0q9w5qfmU9mhf9OP/fSUbNC/6cP++kq59gtP+faL/vgUfYLT/n2i/wC+BR7Sr3Dmp+ZT2aF/04f99JRs0L/pw/76Srn2C0/59ov++BR9gtP+faL/AL4FHtKvcOan5nE20PhKLxRfgsh1ViTEZSNpyvHlkcf1rja9Wh8KaTHrMmqNbLLdOQVZxkR46BR2rzzxLpraR4juICMQzEzQHsVPUfgf0xXhZ17etCNWq78uny6H0eX18P7XkpN6pb91vbyKNtbyXd1HbwLukkYKo969QlaDwp4YwuCY1wv+25rm/A9rZwyPqN7cQo4+SJXkAI9TiqfjPWhqWpC3t33W9vwCDwzdzXFhnHCYZ138UtEViVLGYpUF8MdWWfBOrv8A25PDcPn7Zlsk9X60eO9LaPVYrqBCwuRghRn5h/8AWrl7S5e0vIriM4aNwwr1WbX9Lisobm6uIxuUOq9W6elVhXDE4WVGpK1ne5OLU8Lio1qUb3Vrf18jyeWKSCQxzI0bjqrDBFbvhPRbHX5b6x1a1ju7OSDbJFIMg5YY/lVfxRqtnqmpm7tUaNQmHZuM47113gHTHtNFa8nQpLeMHVSOQg+7+fX8aywFBPGe47qPU1zDENYP31aUuhV8KfCjwv4PN+NNsxLFeSiTy7jEgiwMYXPaui/4RzRf+gVaf9+VrSor6w+QM3/hHNF/6BVp/wB+Vo/4RzRf+gVaf9+VrSooAzf+Ec0X/oFWn/flaP8AhHNF/wCgVaf9+VrSooAzD4b0YqQNLtBkdRCvFcda/C3w74R0fVL/AE2087U5o3kkvJuXOTkgeg9hXolNkjWWJ45BlXUqw9QaiceaLj3LhLkkpdjxGrmk6dJqupw2kQ++fmP91e5qK/sZNK1S40+fO6BvlJ/jQ/db8q7fwVBY6dYNeXN1brPP0DSDKr6V8Zh8K54j2c9Lbn22JxSp4f2sNW9jT8Q6hH4e8PrDa4WRl8qEDtxyayPh/qRZbiwkbJz5qZ/Wud8TaudY1d5FP7mP5Ih7ev41X0O/Om6zb3OcKrYf/dPWu2eP/wBsjKPwrT5HFDL/APYpRl8Utfn0NDxZpMlt4jkW3iZ1uP3iKi569f1rBdGjco6lWU4IPUGvWb/X9KsAHuLiNpMcKnzNXmOvX9td6pPeW0bJHIchT1J/+uayzDD0qc3KErtvbsa5diatSCjONklv3Ol8C6VZ6hb3kl9aQ3AV1VDIgbHBz1/Cus/4RzRf+gVaf9+Vqv4T0t9J8PQxTjE8uZZR6Me34DA/CtqvpMHTdKhGD3PmcZVVXESmtrmb/wAI5ov/AECrT/vytH/COaL/ANAq0/78rWlRXUchm/8ACOaL/wBAq0/78rR/wjmi/wDQKtP+/K1pUUAZv/COaL/0CrT/AL8rTJvDOjyQui6baxllIDrCuV9+latFAHkut/DXw54F+HWrzaRaZvZUHnXkp3SPlwTz2GewrzTwzr0ejX8v2yIz2N3EYLmIHkoe49x1r3f4pHHw31T/AHF/9DFfN0dvcTW0txFCzww481wOEz0zX1uTRjLCyjLZv9Ecda/OmjpdX8KPb2b6pod3FqelAbjKjASQj0dDyD711GtaRJfx6NNpmv21lfjTYQbaaUxFhzghuh+lefadpWpahp99dWSMLW1j3XEhfauP7ue59q2l8QaDrdhaQeJba5iubSEQR3dow5QdNyn0rvqRqXVpX5eyV9V1X+VjNWNr+yPHo+UamhT+/wD2lHj/ANCrR8NaPNZ6vcXGseILW6vPscwS1hmMzH5Dkk9BXJ/2f4MIz/wkF+B12/Zuf51JHr/h7w9FO3hy3urm+liaEXV2wAQMMEhR3rKcZzi4xW/aNvxZSsnd/mRaR4Rub21XUdVuItL0rG43M7DLj/YXqxqHxPrltqU1taaVG0Wm2EflW4f7zc5Lt7k1nXum6pb6NZahdBnsZwRC4fcqkH7p9D7VSa3uEs0unhYQSMVSQj5WI6iu6MeafPKV7bdl/wAEztZWR9E/CM5+HVp/11l/9DNdtXD/AAfOfhvZ/wDXWX/0M13FfC43/eanq/zO+n8CCiiiuQsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/AK4f7v8AWq1Wb3/XD/d/rVas3uUXLH/lp+H9at1Usf8Alp+H9at1a2Ewrxa9tRY6hcWgTyxBK0aruzhQfl5+mK9prgfiDojxSf27aqWjChbxByQB92QD2HB9seleXmmHdajzR3ietlWIjRrcstpfmZ/gzR/7S1gTzJm3tcO2Rwzdh/X8K0PHusebcppcDfJFh5sd27D8B/Os7R/GD6Rpa2tpZwupyxlLnLk9/wCX5VgyyvPM8szFpJGLMx7k14cq9OnhVRpvV/F/ke7HD1KmLdaqtI/D/md38P8AUPNsrjT5TkxHegP909R+f86oan4GltrW+vI5wwjJeGFVySue59cVz+jarLo2pJeQrvIUqyFsBgex/Q/hVrVPFmp6lG6zXAggI+aOL5Vx7nqa1jicPPDKFZNyjdIzlhcRDFOpRaUZWb/r+tzNsrUX1/b2hTzBcSLGyhsZUn5ufpmvaa4H4faI8sn9u3SlYypWzQ8Eg/ekI9xwPbPrXfV6+V4eVGjzS3keNmuIjWrcsdo/mIyq6lXAZWGCCMgiuMt/hB4EtrtZ4/D8RCSeYsEk8rwK3qIWYxj/AL5rtKK9U8gzNT8OaTrN9pt5qdklxcaVMZ7N2JHkvjGRg8/Q5HAPUCtOiigDO0PQNM8N2L2ei232a3kmedk8xny7nLHLEnk9ulReIfC+i+LNPFl4i06G+gVt6CQENG395WGGU+4INa1FAGF4d8FeHvCss82h6csE9wAJbiSV5pXA6AySMzY9s4q3pPh/TNDn1CbS7byJNSumu7o+YzeZKwALfMTjoOBge1aVFABXn0XwL+HkMYjh0OeNB0VNUuwB+Hm16DRQBzOsfDrwtry2H9qaX5r6dCILaVLiWORIwMbd6MGYexJ7+tXtC8J6H4Znu5dB06Oya8EQnEbNtYRpsTCk4GFGOAM9Tk81sUUAcgfhT4KOrHUV0GKOZphOyRyyJC0gOQ5iDCMnPOdtbtr4f0yy8QX+t21ts1HUEjjuZvMY+YsYIQbScDAPYD3rSooAzbHw9pena9qms2Vt5eoat5X22bzGPm+UuyP5ScLhTjgDPfNM8ReGNG8WaX/Z3iPT4b+0DiQRy5+VgCAwIwQcEjI9TWrRQByHhr4U+CPCOoC+8P8Ah+C2u1zsneR5nTIwdpkZivHpirPir4c+E/G0kUvifRYb2WIbUm3vHIB6b0IJHJ4ziumooA5qz+HnhXT/AAnd+GrHR4oNJvARcW8buDLkAZL53E4A5znitzTdPtdI0q003T4vJtLOFIII9xbYiKFUZJJOAByTmrNFAHPzeBfDdx41h8WzaYja5Anlx3fmOMDaV+5naThiMkZ/IVa1fwvo+valpd/q1n9oudJm8+yfzXXyn45wpAboODkVrUUAc14q+HnhTxs0TeJ9FgvpIRtSXc0cgHXG9CGx7ZxU9p4H8NWXhVvDVvo1sNGbO6zdS6MSc5O7JJzznOa3qKAON8PfCTwN4V1dNU0Lw/DbXseSkzTSSlMgg7d7ELwSOK7KiigDm4vh/wCGYfCdn4aj0zbpFlMJ7e2+0S/I4kMgO7duPzEnBJH4Vpa14f0zxFBbQ6xbfaI7W6ju4R5jJtlQ5VvlIzj0PHtWlRQAVzfin4e+FPGhRvE2i299JGNqzEtHIB6b0IbHtnFdJRQBzfhT4feFvBHnHwvpEdg04CyuJHkZwDkAs5JxWVefBb4eX2sHVLnwvam5Zt7bXkSNj6mNWCH8q7migDG8QeEtD8U+HxomuWC3GmgoRbo7RKu37uNhBAHpR4m8J6J4wsILLxHZfbLe3uFuok8149siggNlCCeGPB45rZooAx9U8J6LrOvaZrWpWXnahpLM1lN5rr5RbGflBAboOoNOl8L6PN4uh8TyWedYhtfskdz5r/LFktt2529WPOM89a1qKAPCvFsXh268X313q3wW17VNYhuHSC6trdntbwBiEkdlYL8wAJ3KxGec4rrvg14N1Lwx4Z1K58RwRW+pa5fSX09omCsCt0jPb1P447V6PRQBwi/BP4drPdzJ4Xtle7Rkk2ySAAEYOwbsR8cZXFbNz4C8N3ekaPplxpu+z0SWObT4vPkHkvGMIchstj/aJ966KigDL8ReGtH8WaO+l+IrCO+s3YMY5MjDDowYEFTyeQQeTWFpvwm8EaPdaZc6ZoMVtPpcjS2kiTS5V2ABZvm+c4A+9npXY0UAcx4l+HHhLxfqltqXiLRoru8tQBFP5jxsADkAlGG4A9jnqfWtG38L6PaeKrvxJb2ezVryFYJ7jzXO9FxgbSdo+6OQM1rUUAcVrXwe8BeIdYfVdV8N28t5I26SSOSSISN6sqMFYnuSDmt6/wDCuial4Vfw3dafH/Y7xLCbSImJQikEAbCCOQOhrXooAxNW8H6FrvhVPDeq2Pn6SiRxrb+c64WPGwblYNxtHf61IPCuijW7DVxYJ9v062NpazlmJjiPVeuD9Tk8nnk1r0UAFFFFABRRRQAUUUUAFFFFABVe9/1I/wB7+lWKr3v+pH+9/Sk9gKFX7L/Un/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVHPcQ2sDTXU0cMS8tJIwVR9SaAJKKqW2q6deBjZ39rOFIDGKZWwT0HB71YjnimVmhlSRVJVirAgEdRQA+imxyxzRLJC6yRsMqynII+tMjuYJpCkM8cjqAxVXBIB6HH4UAS15z4/IsPiD4R1IkKvntAzH3/wD1mvREljkZhG6sUOGCnO0+h9KyfEvhmw8U6X9i1JWwrbo5EOGjb1BrOrFyjZbmdSLlGyOK+JC31n448N6za6bc30FmHMggXJzkHFYfjjxHqXjXSrbTrTwzqdvItyr7pI+PT+tdCvhfx9oACaD4gh1C2X7sN8vzAemef6Uv9v8AxKtFxP4Zs7nH8Uco5/DNckk3e91fyucsk3e91fyuegXdlb39m9rewpPBIu143GQRXL2Xwt8J2GoLeQ6cWdG3IksrOin2UnFYi+MvH887QQ+ErdZVUFlaflQeh60//i6Wq/Kf7N0lD1Od7D8s1s5wk78rfyNpSi3rFv5C/FrF0nh7SFIzd6igKD+7kD+tejVxPh/4dix1hNZ8QanNq+pR8xvJwkZ9QK7arpqV3KStcumndyatcKKKK2NQPQ1Q0L/kA2X/AFxX+VXz0NUNC/5ANl/1xX+VT9o2X8J+q/Jl+iiiqMQooooAKKKKACiiigAooooAKKKKACsSLxRavo2pahNFJANNkkjnib7wKen1GCPrW3XI6v4dvbnxQn2VF/su+ZJb878YaLlRjvu4B+lAGqvijTotPjutSnisRISNssgJBAyQcdCM8ipNV16HT9ETUraM3ySvGkKxOB5hdgBgnjHNczqNlqsMctj/AGPcXVld6hPNcPbNHu8okFVG5hjd39q1/EVtc3XhS3Gn6bL5kU0EoswUV1VHBK9duQB60ASN4p+zQXn9pafLa3Ntbm4EG8N5iDurDjrxWXqinxbFHp1/p8mm3jRG4spvMWQcYznHTqOKXVbHUvEMN/dHTZbTGnyW0FvO6eZKzHJPykgDjHWmeHNEMOu2l5a6NcaOkFs0Vx9okU+eTjAAVm6EE5OKmcIzi4y2ZUJyhJSjujhLpLnS7w2WrxG3nU4BP3ZPdTS9eleyalpNjq9sYNRto54z2YdPoe1cfdfCyyLk6dqV1aDsmQ4H5183Xyiad6Tuj6bD5zBxtWVmcXTJZ44V3TSBQPU10Ol+AJdRu9Rhl1mZFsbr7MSiDL/u0fPt/rMfhXUaT8PNE0yZZ5Y3vZ15D3DbsfQdKxp5TXk/e0NqmcUIr3dWct4W8KXGu3Md7qMTQ6ahDKjjDTntx2X+depgBVAUYA4AHagAKAAMAdAKK+jw2GhhocsD5vE4qpiZ80wooorpOUKKhu7y3sLZri9mWGFSAzucAZOBTLvUbSwERu7hIvObZHuP3zgnA9eATQBZooByAR0NZupeIdK0i4SDUbxIZZF3qhBJK5xngdKANKisy88R6RYQW811fxIl0CYSMt5gHXGM+tXLO+ttQtEurKZJoHGVdTxQBg+MPC39vWqXFmRHqFuD5THo47qfavMGkeC5a1vomtbpDhopOPy9RXuFvcQ3duk9tIssTjKupyCKo6v4f0zXYfL1K1SXH3Xxhl+hry8bl8cQ+eOkj1cFmM8MuSWsTyGiuxn+FkIYmw1e6gXsjgOB+dV2+GYhQyaj4glWIEAlUCj868V5Vib2se4s3w1r3OSmuY4f9a/zHgL1J/Cuw8HeEbie6i1bWYjFHGd1tbN1J/vt/QV0Oi+BtF0WQTRQGe4H/Lac7mH09K6OvUweVqlLnqas8rGZq60fZ0lZBRRRXtHhhRRRQAUUUUAFFFFAHH/FU4+Gmq/7i/8AoYryX4aaL/wkmg+INMEwhEvkMzYyQoYk4Hc17F8R9OvNW8A6jZabA09zKqhI16n5ga8Dg+Hvjq2JNtpN3ET1KSAZ/I19JlsoPCSg5qLvfXysYTXvXsafjdNYt9MSytdIn0zw7ZsFjVsZmc/8tHPdj+lcHvrrJvAXj64j8ufTb2VOu15QR/OqzfDXxguN2izLk4GXUZPp1r26NajThyucfv8A+CZOLb2Oc30b63j8PfFgvFtTo03nshkCbl5UHBPX3qb/AIVn4y/6Ac//AH0v+NbfWqH86+9E8j7Gl4GOtNbTQjSJdW0G6by7qAdAf7ynsw9a0/iFoC+F/BelWEcxlja8lliLDDhGUYDD1HSsGHwD49tk2W+mXsS5ztSUAfzps/w+8d3WPtOlXc23p5kgOPzNcTdN1lU9pFLt3/Euztax7T8Gzn4aWf8A11l/9DNd3XHfCzSr7RfAVtZarbtbXKSyFo26gFiRXY18jjGpYibXdnTH4UFFFFcpQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAUb3/XD/d/rVarN7/rh/u/1qtWb3KLlj/y0/D+tW6qWP/LT8P61bq1sJhSMoZSrAEEYII60tFMRwGvfDhjPJd+GbhLZnJZ7OYfuicfwkcr/AC+lcld6X4i0/AuvDl7ISxANqBMDjv8ALkj8cV7ZRXnVstoVXzWs/I9OhmeIorlvdeZ4naaX4i1DItfDl7GQwBN0BCBnv82CfwzXW6D8OGE8d34muEuWQhks4R+6Bx/ETy38vrXf0UUctoUnzWu/MK+Z4isuW9l5CKoVQqgAAYAA6UtFFeieYFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVe9/1I/3v6VYqve/6kf739KT2AoVfsv8AUn/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVzPxB3HwdOI0SRjLDhJDhWPmLwa1NU1+w0eeCG8aUy3AYxxxQtIzBcZOFB9RS2+pWGrbYACxdPNEU0RU7Q2MkMPUUAYWpQ3MOl2pvbK0s5G1K2wLVshhvHXgVzGj3ElndX+lxMwGuXU3l4J4KyESH2+SvUnjjmUCRVcBgwyM4I6GmLaWyMrLBGpQsVIUcE9T+NAHHaTM9l8F7R7T5SlgqqV/hHTP4Cse7uIvDfjW41aL/U21taWsqjukivt/8AHwv516FdLYQaeLW4EcdtKPJCAYXBHTjpWVpmpaFOU09GMr7AFkuIConCdMMQA2OvH1oA5C1ubrSY7+0gmkju7zUzvKyrGS3lBiN7cL/Pimf8Jhq6eHdPuItQWeeWee0uDGA4jiWQr9o6fw8c9816ILfStYsRL5FvdW87bwWQEOemfrU0em2MW4R2kCblKkLGBkHqKAJbXH2SLbN542DEpOd/HXj1qWmKscEISNQiRrwqjoB7U23uIru3Se3cPG4yrCgDkNL0TV4PH13qU19G/mKvmwgHAjJYKB7jaPzrtKz4P+RhvP8ArhD/ADetCs6cVFOx2YyvKtOLlbRJaK3QKKKK0OMKKKKAA9DVDQv+QDZf9cV/lV89DVDQv+QDZf8AXFf5VP2jZfwn6r8mX6KKKoxCiiigAooooAKKKKACiiigAooooAKzL3W4NP1MW11iOEWz3LzMeEVSAf51p1zfiPQ7vVLqZ7YIVfT5Lcbmx8zEEfhxQBdi8VaLPb3E0d8pS3K+ZmNgRu+7hSMnPbGc01PFuhyWBvI79XhEph+WNi28clduN2R9K57xDpkun6rFrUhjWG2S2CoSQJGQvlTgHAw3B9ay7LQtQ1iNtbhjljzqE8ywWl01uzo6hdwcfT8eaAO5l8TaPCIC96pFwA0ZRGYYJxk4B2jPHOKTRfEVrrl7qlvarIG065+zuWQjcdoORke/6Vyk/hHULa0tP7Nglh1BVYfbIb9wULPuIkDZ81fY+9dL4f06807UtZN2qGO7uxcRyq33sxopBHbBQ/nQBuUUUUAYPhv/AJCfiT/sK/8AttBW9WD4c/5CfiT/ALCv/ttBW9QAUUUUAFFFFAFTVNPh1XSrmwuQDHcRlGz7964BZr3VLS5uLlZI5vDtlJbq2CCbkjBYeuEA5/2q9KpNq88Dnrx1oA4LTLrTNT8bq9vqssRtDteE3j/6TMV5Hlk42r9Otaeo6jYab8QEfU7mG3R9MIVpjgMfM6DNdM0UEW6UxICoLFgozWdJruiuumvNPEw1MhbMsmfMJGeOOOPWgDg5G+zaro1x9uXSbaWa/kgmmjBURsVKjDcDPUV1vgzzP7DuxI4nX7VKY7lV2i4UnO8D8ccelbUVzZXzzxRlJTayeVICvCtgHHPsRT7u7ttMsZLm6dYbeFSztjhQPYUAeeWtvNcaPar9pvIUttEedI4ZGQeYJDgnHU+1V7zVLiXTxc6hqN3basbm2W2hjkZRJCxTJ2jgg5bJ7V6iAhUEBcEenasibwxp0+q/b5WuGO9ZPINw3klx0by84zwD+FAHF2N/rE/iJ/Nuxb3hupkmjEzuyQjdtPlY2gAbSD3qjI4ufDt7Y3ty14IjBNLeW15I8bESYJYHlGxyV6flXrPloHLhF3HgtjmkEMaqwWNAG6gKOaACHaYU8s7k2jac5yKfQBgcUUAFFFFABRRRQAUUUUAFFFFABRRRQAV5X8aNJ8W64ujW/hm5hsbaG9ikad5CC85cLGuB2BOTXqlYXiv/AI9NN/7Clp/6NFAFWwkvJfE2lvqkKwXraUxnjRtyq+5dwB7jNdPWHN/yPtr/ANg+T/0Na3KACiiigDItvEdpPY6lcyK8P9mSyRXCP1UqM5+hBBH1psHifTm0+K7vp47BJQCqzyAHkA4PocHpWRr3h++ufEQWxj/4l+qiNdRYNjZ5RyDjvuX5PyqprFrqcU15ZxaXcTWl/eFpprcIWSEIAQuSMFumewzQB1Go65bWWgPq0GLyAKGj8hgRJk4GD071WtfEo+1m31izbS3MRmRppVKsoIB5HTGR+dQa3pr6h4Faw020ktd0aJHbqQjRKGHAweCAOxqnqvgyEaNdm3+16hezRrEGvLlpmCbgSoLHgHGT64oA6E63pYe3Q6hbBrn/AFIMozJ9PWpDqlgNQ+wm8gF3jPkeYN+PpXIa5o169zrVrBphuP7VjRLW5QqFtsLj5s8rg/MMVJFpl/Fa6jpT6fJJdXMkzxalldq7lwrEk5BHTGKAOoh1jTbiOeSC/t5Et8+cyygiP6+lMOv6Stgt62pWotWbas3mjaT6Z9a4Wy8MXs9pKupQ6nIIbEWxX9xCxbcD+7MajdjbkFj/ADqZtJ1WbTYprqLUvPt7lmtbiCKBZ9pXB82P/VuD06dgaAO3fV7OIu01zBHCqqwlaVQCGzj+X40ja1pi6el82oWwtXO1ZjKNpPpmuQTQdWuri2k1KyiZs2hlCABPkLbvl7YyOKgntpNC1uW91CBHtGvboxWpdF3K6JhwGIHGGB78mgD0C3uIbuBZrWVJon5V42DKfoRUlc54BhaDwRp6NCIcqzCMfwgsSBXR0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAUb3/XD/d/rVarN7/rh/u/1qtWb3KLlj/y0/D+tW6qWP/LT8P61bq1sJhRRRTENk/1bfQ1Sq7J/q2+hqlQAUUUUAFFFU5tX023Yi41C1iI6h51X+ZoAuUVQj13SJTiLVbJz6LcIf61eR1kUNGwZT0KnINAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBdj/1a/QVDe/6kf739Kmj/wBWv0FQ3v8AqR/vf0pPYChV+y/1J/3v6VQq/Zf6k/739KmO5TLFFFFWSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcr4hs9QuvGejHTblrQrb3G+byRIB9zjngZqj4jt9Rju5CjTzuunos80KbWdfNG/GO+3PAruKytW1o6fdwWdrateXtwrOkIcJ8q9Tk/UUAcPKZLKefU/DkV2+lwTxxwxLG43NIhRyqnnAYxk+4Y1HFZX7aRf22oXd1appTJaR3EsTyrP828syjllOQCRXaT+IpY7C3lt9Hu5ZpC++AgJ5QX7xLHj6etTXniC3t/C/wDbccTzwtGrpGOGbcQAPzNAHPeH2fULSOKawxa2izsFhVwk4PyqUD8gEFuCeKo6bG66hb2ejahd6hp5Ro59Ov7c7rRdjfMJCAcg4XGTXW2GvNJdS22qWLabLHEJRvkVlKZxncOnPar82o2Nqszz3UMQhUNKWcDaD0J+tAHkVzGYfC1pYW8Ulr5GnyGMfZZZGaYM3yxr0D8Dk+vFX7+UzWMU2qfbP7Xe6tDbOquv7ohM5PQDO7IPOa9BHiTTGvDGJ4jCtt9qNzvHlhd23r9ary2nhx/ESySzxf2gwEohM5w2Bw2zOM474oA5XRk1Q+LIvtUqJfC9kNyFt5fMaH5sBnLbNmNuMD04rrfCu77JfY/1P2+byf8Adz/jmrej6xY+IbB7rT5BJF5jwkjrlSQau29vFa26QW6BI0GFUdqAKcH/ACMN5/1wh/m9aFZ8H/Iw3n/XCH+b1oVMdjat8S9F+SCiiiqMQooooAD0NUNC/wCQDZf9cV/lV89DVDQv+QDZf9cV/lU/aNl/CfqvyZfoooqjEKKKKACiiigAooooAKKKKACiiigAooooAQqGGGAI9CKUAAYAwPQUUUAFFFFABRRRQBheHP8AkKeI8HP/ABNP/baCt2sHw1zqHiI+uqn9IIR/St6gAooooAKKKKACiiigA615omm3T/2rbm3mA8PlmsyUOJCz+aNvrhQF4+lel0UAeaxRxeVp134igulsb6Ga5ZBG5C3DuCA4XkHbwM+hqCfTL+58N6zNqENxJfJpiLB5qsxBIPbucYzXqJAPUZooA8uuk1aLT2t9Qw1zHfA6lcSRSPDNCVJjYKpBC9AVB4I5rS8P6dPdatpZ1AyT28UVzJDiN44wPMTZwxJ4GcZ5xXf4B6iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKwvFf/Hpp3/YUtf8A0atbtYXiv/jz07/sKWv/AKNWgBZv+R9tf+wfJ/6GtblYc3/I+2v/AGD5P/Q1rcoAKCcAmigjKkUAcXa+KNabSrXWbldOaxnmEZt4lcTAM+wYJYgnvjFWDr2uvJqt1bQWMllps7xtAVcTSqgBOGzgH04qnbfD6PT7HTbqxitY9asJjIZ9nyzBidyt68Hr2NWho2vxNq1pbfY0ttSuHf7QXYvErgA/LjBIoAS78YSyasLXTJ9Og/cRzRx37lHuw4yBHyAPTvyelbmqapLp2jpeeQBIzxq0THO3cwBGR6ZrG1fw1c3tsummy06/04RLHF9qX57fauMg45PftWld6JJL4ZttLin3PB5I8yTncEYE/wAqAEj8W6VJq32BZJRJ5rQeYYWEfmKMlN2MZxVHUPHdhbaJeahaW93crbqrLi3YLMpbG5TjBFPk8NXLi3Alj/d6sb45B5TB4+vNZI8F6j9n1GC3MFjBPCVS3ildonfeG3bTwnToPWgDoB4t0wX0No5nRpWWPzGhYRrIRkIW6BuRx70ll4w0i/vTbQyyqdrsskkLJG+z74DEYJHeucu/BOq3urRXc/2RpEvo7oTSSOzIgIJjVei9PvDrWlL4PnuLGwtZJ0VYBdLIyjkiVSBj6ZoA0o/F2mSWktx/pKRx4277dwZs/d2DHzZ7Yq1bXGm+I7LzDCsyRvtaK4iw0TjsVPQ81hX3h7WNW0WGyvjax/YnjeAwyOvmlOOSMFQR6VpeH9Ck0vTLuOUiKe8kLsUkaQodoUfM3JPHWgCn4e8Uzat4hvNOFvEsNruUiMENAVbaFftlhyMdq6mvP9O8FazYeINOvba4trWC0O25jhZh9vHI3v8A7QyT3ya9AoAKKKKACiiigAooooAKKKKACiiigAooooAo3v8Arh/u/wBarVZvf9cP93+tVqze5Rcsf+Wn4f1q3VSx/wCWn4f1q3VrYTCiiimIbJ/q2+hqlV2T/Vt9DVKgAooooA8o8ZazJdeMptN1G9uLfTICqlLcZzlQckZGeT+FWbHTPh68Q3ajNIe/nsyH9FFLJqWm6Z8VNVk1nb9mljEZ3R71yVQ8j8K3hZ+A7/5l/sznssoj/TIoAx59K+HixnF9s945nY/yNczcanZ+H9Rjm8I6neugbLrMuEb27Z/EV350jwJa/O39nDH9653foWrl/HOreHptIg0/QFh3pOJHMEO1cBSOuBnrQB6pG2+NW6bgDTqZB/x7x/7g/lT6ACiiigAooooAKKr3eoWdgYRfXcFsbiVYYfOlCeZIxwqLk8sT0A5NWKACiiigAooooAKKKKACiiq41CzbUW09buA3qRiVrYSjzFQnAYrnOCQefagCxRRRQAUUU2SRYomkkOFQFmPoBQA6iqGia3p/iPRbfVtGuPtNjdKWhl2Mm4AkdGAI5B6ir9ABRRRQAUUUUAFFFFABRRRQAUUUUAFFZ1tr2m3mvX2i21zv1DT0jkuYfLYeWsgyh3EYOQOxNaNABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBdj/wBWv0FQ3v8AqR/vf0qaP/Vr9BUN7/qR/vf0pPYChV+y/wBSf97+lUKv2X+pP+9/SpjuUyxRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXNeLtNt9TWGO/0STU7YK2JLaTbPC57qcjHHcGulooA4yG01Gx8Mx6dqGnXWr2czSKUecPPFHnMasSfmwOCc5+tSano2ozfDB9Lmi+03flIphRhyocHaCfRRiuvooA89HhyWQajNoejzabFJZeU1vcMAZ5AwZcYJAwMjPvSyadq93rsmsPpMq28clq/2V2UvMqJIrcZxkFwQCecV6DRQB55rXh7UtX1q21iz097aOztxIthIU2XLiTOxwO+OR6HFH/CO6tJ4in843phub9bxCqQCNEwPlLlTICMYwDivQ6KAMPwnZz2GkS2t1bNA8dzKecYcFywYY7YNblFFAGfB/wAjDef9cIf5vWhWfPZXX9oSXVpcpH5kaoyvHu+6Tz/49R5Gq/8AP7D/AN+f/r1CbXQ6ZxjNpqS2Xft6GhRWf5Gq/wDP7D/35/8Ar0eRqv8Az+w/9+f/AK9PmfYj2a/mX4/5GhRWf5Gq/wDP7D/35/8Ar0eRqv8Az+w/9+f/AK9HM+wezX8y/H/I0D0NUNC/5ANl/wBcV/lTTBquD/psP/fn/wCvR4fJPh2xz18lc/lSveRbio0XZp6r8maNFFFWcwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFVbzU7LTyovbqKAv93zGxmq3/CR6N/0E7b/v4KDWNGpJXjFv5GnRWZ/wkejf9BO2/wC/gqvf6voWo6dcWc+pwCO4jaNisoBAIxwfWgfsK38r+5jPDP8Ax8a6T/Fqsn6Rxj+lb1eM/CDR5fDV/rV74p8Qi6l+0vb2QkuMgwgj95jPVsD34r1P/hI9G/6Cdt/38FAewrfyv7madFZn/CR6N/0E7b/v4KUeI9HJAGpW2T/00FAewrfyv7maVFAORkdKKDEKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArC8V/8eenf9hS1/wDRq1u1heK/+PPTv+wpa/8Ao1aAFm/5H21/7B8n/oa1uVhzf8j7a/8AYPk/9DWtygAooooAKKKKAOQaTW7/AFrXDaa1JbR6e6CG2FvE0bfIGwxK7uT6EU27+IUFhY2lzcWnyywRyy5mCkbuyL1fGD6VduPC94+p6hPa61NbQagymaBYUPRdpwxGRkVV1LwDDeyTra6hLZwXFulu6LGjEKgwNrEZX3x1oAbH4wvIG1aS8sk8q3vFgtiZlRSpQNlmP3fXv6VWtvHN3qepWr6RYPdQPBMZoFdRtdGAyHI568etaF14L8+aSSPUXQtOtwivCjqrhNhyCOQR69D0qC08CTWEhms9euo52MpdzGh3CRgzDGO2OPSgB+pfECysIbe4W3L28sSSszyhGAboFXqxHOas2njK3u9WurVYAkFru8yVplDrtXdkx9duO9Urv4ewSo8NnqE1rBJbR2zqI0dsJ0KsRlc55x1q5L4PS61OK4vrxp4YQQsXkorHKFSC4G4jBPFADtC8Y22t30dssIiM8Jntysyyb0H94D7p5Bwa6Ouf0HwpHodwJFufOSKLyYE8lE2J7lRljwOTXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/wBcP93+tVqs3v8Arh/u/wBarVm9yi5Y/wDLT8P61bqpY/8ALT8P61bq1sJhRRRTENk/1bfQ1Sq7J/q2+hqlQAUUUUAeZSyaSnxU1Vde8n7NJGFHnrld21Mc9uAea3v+EM8IX37y1EZB7wXRI/mawpLLTL74rana62qeTNGBGJHKZfamMHjnrWzP8L9DlOY5byH2WQED8xQBJ/wgPhWD5p1JUf8APS5IH8xXMeOV8NWmkQ2mg/ZftAnDOYTvO0Kerc9yOM10Efws0ZGzJdXr+29R/wCy1g+O9B0PQtJt4NNRVvXmBYNIWkKbTzjsM4oA9Rg/494/9wfyp9MhGIIweDtH8qfQAVzXivUfEdnJCNCbRLO12Fp77WJW2Kc8IqKQScc5LAV0teWeK7Jbf4sf2p4m8LX/AIj0htPSLT/s1n9sS1mDEvui7Fvl+cj0GfQA6T4feMp/FltqkF+LFr3Srs2002nS+ZbT/KGV0OSRwcEEnBH5dfXlXgt9Z0CDx3rEnhO5t5GuUuLLSoo9hlQQLtRCAQT0B27gGyBmvTNNupb7SbS7uLWSzmngSWS2l+9CzKCUPuCcH6UAcVqsUOofHnQ4ZkjuRY6NcXARgG8h2ljVXx/CTggH2qtZeMPGPiDxZ4l0TQbLSYV0e8ES316shTYVyF2q2XcnPIKgDHUmrPkRaV8e4vsCeSNX0WWa9VTxNJFIio5H94KxGfQ1znhjxJceHvH/AI9aTRNS1Gyk1Vf3um25uHjkEQ4aMfNgjGCAeQc44oA67wz4t1vUofEGl6ppdsPEuhYDW9vKVt7reheFkZhlVbBHOcY59KxH8f8AiHQvEWjWniW58MXcWqXqWTWulTv9ptXkOEYh2O9c8EhVxmsrUPDvijXPDHjzxFaafcadqmvpbxWNg7BJ1tocAhsH5XkUv8ueOBVLUbODUH8Jw+D/AId32jW1nr1jPezz6X5EiKsnTpuYDks5+UAdeaAOr1/xp4qT4mT+EfC2nadcynTEu4przeqQsXKs0hU5KYAAVRklhzjNWZPE/irUdbPhzQLbSP7V020gk1m+ufMa1hmkTIjiQEO2cE5JGFxnJ4pbTT71fj9qGotZziyfw/FCtyYm8tnExJQNjG7HOOtcv4j8HabpvxL1fWfEng248S6VrKwvDPZWzXEtnKibGRo1O7a2AdwHHT6AHQ/8J/qsHg3xbLqFjaQeIfDCN58SMz28p8vzI3Xo21gehORWfeeOvHNh4JtPGdxpGkf2QIIri6sQ0guzEwGXVs7FPO7Yc4HfNE+hWB+EPi1PC/g270J7y1liitHgxPdYj+VvLUkjJZgAeeOnNaHifTb64/Z7m06CyuJb46JFELVImMpcIoK7AM546YoAzfiFN4kuPHPguTQ7zS1tLi7drMTwyt8/2dyTJtcBl29AMEHvV7xVDNZeM/h7qWp/ZE1A3slrdXduhjRi9u/yAsSdpYcKSeab4qtdQsrbwJrEOlXt9Fo86teW9pCZJ0VrcpkR9TgnkDmneOpYvEl54I02+tZl0zVtRL3VldIY2cJC7qki9R8wBKn05oA9Bu7hbSynuXVmWGNpCFHJAGeK4bwh4j8Y+K7XTdeij8Ppod625rZHle5hj5xmTOwuOMrtGPWuhXX78+KdS0s6Ddi0s7NLiHUM/u7lznMS8feGPX6gcZ85gsVvPGuj6l4C8L694bu3v0fWTc2zWlrJbc+YGQnY7n+EoDzyTQB1d34n8Ta34r1LR/BVtpccGkFI7y/1PzHVpmXd5UaIQeARkk9+nrV8KeL9f17XPGeieJLCyspdDit1RbVmfeZYnZmLE8qdoK8AgNg5NVbG41D4f+NfEa3Xh/VNS0rWrsX9rd6Zbm4KyMgDxyKOV5Xg9OetUfANze6j8SvidPf2D2NzNHp5FqzBnRTbybA2Mjdt25AJwSRk0Ab/AME/+SMeHf8Arg//AKNetDxR4o1K01+w8N+F7S3udZvonuWe7YiC1gQgGRwvzNliAFGMnuKrfCCxu9M+Eug2epWs1pdRQuJILiMxuh8xjyp5HBrA+I/hGCfx5pvinUfDL+JtLWwawvLOBPMmg+fekyR5G/BLKQOcHvQBt6X4l8TNrmpeFdZh0uLXo9P+3afdW6yG1nTds+ZCdykPgEbuh4NZ9r8SNS1bR9GsdLsoI/Fd5dtaXtpOpaOxMJH2iR1DA7QCNo3c715NP8I23hvSH1TWfD/gLUtGFtaEec9i0c90CdxjjiyXPKL1AycVh6bo/iHw7rVp8RbrT7i4vtcl8vW9MtrcySWts+0Q7FUbi0QRd/GTlvSgDrNQ8TeIdW8VX2g+CbfTg2lKn2+/1MSNGsjruWJEQgscYJOcDPc1DZ/Ej7H4R1/UfFNktrf+HZjb3sFs+9JXIXyzGTg4feuAeQTzXK634O0vSfiJreo+J/Bdz4j0zWHjuLa8srVrmS2cJteN41O7BIyGAxzj6ad34ItNf+FGsaf4U8NP4YnuZkmtre7QRtM8TK6s6hjtDFSvJyOpoA6TRJ/iDeXFrd6xb6DY2UxDTWK+c9xCh7ebnYWHGRtx70/wJ4pvfFH/AAkn9oRW8f8AZWvXWmweQrDdFFt2lsk5b5jkjA9hUOj+O73U7q0sbnwfr9leyOEuTPa7be34+ZvOztdfTbkn0Fc/oN7qPgLxL4p0258M6xfw6pq0uqWNzp1sZo5TKq7kZs4jIK/xEDr2xQBDqXinxH4n+EfjK7tG060m0+41G0kJik+a2ijYZXD8S9MN93/ZrT0TxFqvhH4Twaz4qayvIYrG1FjBp0LpJJuVVRGLMwLElRkYHU4rK8G6Brlz8IfGumX2myWWqandamIreZSgZpUwpUsBlSTw3Q0X2mXvj34KroUWiX9lqelwWn+japbtAlxLFjdGpP3lIUjd0+Ye+ADXufFPjTw02n6h4vsNGOk3lzFbTpp7yedYmRtqMzMdsgBIB2hevGRVvUPFHiPVvGF/oHgm201RpSRm+v8AUxI0YkcbliREIJO3BJ3YGfz5bRdF8HXeo2EVv8J9Ssr7zk817iwMUVqQeX80ttcDGRtyTxwK1oZtR8B/ELxDPcaFqepaRr0sV3BdaZbtcNDKECvHIi8gHGQ2Mf0AKvw+n1Sf4zeNTr9pBa36Wtikq28heJsK2HQkA4IwcHkdO1d54t13/hGvCOp6wI/Ne0t2eOM/xydEX8WIH41xngNNauvix4v1nV9EutKt723sxaidD8yqrDlh8pbGCVBO3ODyK6T4jwXE/wAPNWNnGZZoI1uVjUZL+U6yFQPUhCKAM+O307R9U8GaZ4kN5qmvTPcvbXzSsVScQl5icuMKQSFXBA4AAxmsLw3cjxB8Y9cu9W8OaoZ7GWGGynuTFs01fs4YghZSQZCxOVDZDKDjkDa11JNY+IHw91fTIZbrT1a8me5ijLRxpJanYWYcLkkAZ6mr3hizurfx741uJ7aaKG5u7VoJXjIWUC0jUlSeGAIIOO4xQBta7rcOg2KXE1reXjySCKK3soDLLI5BOAOg4BOSQBjk1m6R44sdVTVUksdQ0680lBJdWN7EqyqhUsrDaxVgQpwQ3bnFUviFda1bQaV/ZY1NdPe7I1OTSIBLdJFsYrsXBOC+0EqCcdK5fw/p11b694xvms9ajsbnRIhBcaw7vJKR52eW+7jI+TqAQSAWoA3ofi1pE+h2+tx6TrZ0aRFeXURaKYrfPXfhtx2k4YoGAIIzwa1Na8e6XouuWWkSQXt3d6hatc2q2cQk84AgbRznJzn0ABJIArgNB17ULr4Haf4bsPDOqT6lfaQLSBhbE2hWRNolab7gXByQTuzkY71f1F5PCvxS8KRCzudTWx8OSwTfZI98gVWjXeqdW5A4HOCcA4xQB0GoeL7PxB4T8U2AtL3TdRstNmaexv4gkqq0TbXG0srKcHkE9Kz/AA1c6JHonwuttUs5ptSn0xTpsyHCQMtmpkLfMOqZA4bn061BPb6l4n1LxT4ij0i9srQ+Hn0uyhurcx3F0/zuzeWfmAyQqgjJyaj07SNSS6+EBfT7pRp9hIl4TAw+zMbAKBJx8h3fLg454oA6e7+IFpHqV3Z6Vo2sa39hk8q7m022V44ZOMpuZl3MM8qm4jvVnXPGKaNftZwaHrOrTRxCWb+zrUOsSnOMszKCeD8qkt7VzHhjVL3wLZ3mgav4d1e6eO9uJ7W702za4ju45ZWkBLLwjjfgh8D5eppuvz6zP441O01SPxR/Z2yIaTHoamOKbKDzPMmXlG3kj5mVQB680AQ/EHxLpeo+HvAfiK1nL6bL4jtZ1kCEtt8qbjaOd3bHXPFdXpvjmzvvEEWi3umappF5co0louowKi3SqMtsKswyByVODjtXnI0jW7L4U/D2OPQr65vdN8QRXFxZLE3mIimckncBtHIwzYHIyRmurlu7zxp458PS2ejalYafosst3c3eo2jW5d2iaNYo1bBb75JIG3jqaAKvgbW7Hw94f8Zalqkpjt4vFWoA7ULM7NKAqqo5ZiSAAO5rptK8Z2mr6t/Y17pmqaNezwNNBFqEQjNxGMBijIzDI3DIyGGc4rz6XwprF74P14Jp195tv41n1RLZGa3muoBNnMT5BBKksrA9QMGuk8Kadot54ltr6Cw8X/arOOQxTa7JdeXDuG1lAmbBJB/hB6daANjwRe3ijVtA1SeW5utEvPIS4mYs88DqJIWY922ttJ7lCepNdVXHeDsXvjHxjq8HNtNfQ2cb9naCEK5HsHZl+qmuxoAKKKKACiiigC7H/q1+gqG9/wBSP97+lTR/6tfoKhvf9SP97+lJ7AUKv2X+pP8Avf0qhV+y/wBSf97+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAD0NZ3h/8A5F2x/wCuK1onoazvD/8AyLtj/wBcVqftI2X8GXqvyZo0UUVRiFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHmHxdOLjTP91/5ivN99eifGJsXOl/7j/zFeaBskADJPQVSP0fJv9xp/P8ANk++r1jpGpakM2NjNMv95U+X8+lakVnYeGLSO61uFbzUpV3w2LH5Ix2aT1+lZmoeKdW1Jv3126Rj7sMPyIo9ABQdftqlV/uVp3e3yXX8C3L4S1+JCzabIwAz8jBj+QNY8ivDIY5kaN16qwwRSRaleQSB4bqZGByCrkVvxazqPiLTZ7W80s6rNGv7q6RMSxHtlh1HsaAc69PWdmvLS33t/mjn99Pgf/SIv98fzrch8FXjwRrcXUNtfTIXhspQRI4H8q52ElbqMNwRIAfzoNYV6dW6g72PpeH/AFEf+6P5U+mQ/wDHvH/uj+VPqT8pe4UUUUCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArC8V/8AHnp3/YUtf/Rq1u1heK/+PPTv+wpa/wDo1aAFm/5H21/7B8n/AKGtblYc3/I+2v8A2D5P/Q1rcoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/AK4f7v8AWq1Wb3/XD/d/rVas3uUXLH/lp+H9at1Usf8Alp+H9at1a2EwooopiGyf6tvoapVdk/1bfQ1SoAKKKbIu+NkyV3AjI7UAcjrGq+CrrVo21OaJ7u2cAOivwQehKjBANdPe6jaadZG7vZ0hgGPnJ656Y9a8p+yXHg6bGraRp+o2RuMee213b2HOR0zgiuj+KDq+g6cR/q2uAcdONpoA6vSfEGl64H/sy7WYx/eXBUj3wQDiqLWfh3UvFkjukc+q2qKXVtxCjscfdJGR9OK5PwrPp8/xNuX0VVSya2IRUXaOAuePqKv6JIkfxY1syMqjyTyxx3SgDvKKRWDKCpBB6EGloAKKKKACiiigDG1fwvZ6vrWmau811a32mOTFNbS7N6MVLxOCCGRtoyOvoQear+HPCv8Awj+t+INQ+2faP7avBdeX5W3ycIF25yd3TOeK6GigAooooAKKKKACiiigArGufC9neeLLTxBdzXU1xYxslrA0v7mFmBVpAoH3ipxkk8dMVs0UAFFFFABXO6L4T/sjxx4m8RfbfO/t77L/AKP5W3yPIjKfeyd27Oegx710VFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABQRkYPIoooAp6VpNlomnJYaXD5FrGzFIg7ME3Ekhck4GTwo4A4AAq5RRQAVX1C1+3abc2m/y/tELxb8Z27gRnHfrViigDK8L6J/wjfhPTNF+0fafsFslv52zZ5m0YztycfTJqvceGvP8AH1l4l+17fsthLZ/ZvLzu3urbt2eMbcYx361u0UAFFFFABRRRQAUUUUAFI6h42RsgMMHaSD+Y5FLRQBU0vS7LRdLg07S4Bb2tuu2OMEnHOSSTkkkkkknJJJNW6KKACiiigAooooAux/6tfoKhvf8AUj/e/pU0f+rX6Cob3/Uj/e/pSewFCr9l/qT/AL39KoVfsv8AUn/e/pUx3KZYoooqyQooooAKKKKACiiigAooooAKKKKACiiigAorP1jXtM0C2S41m8jtInbaryHAJ9Kxv+Fl+Dv+hgs/++j/AIU7MLnU0Vy3/Cy/B3/QwWf/AH0f8KP+Fl+Dv+hgs/8Avo/4UWYro6miuW/4WX4O/wChgs/++j/hR/wsvwd/0MFn/wB9H/CizC6Oporlv+Fl+Dv+hgs/++j/AIUf8LL8Hf8AQwWf/fR/woswujqaKhtLuC/s4rq0kEsEyho3XowPepqQwooooAKKKKACiiigAooooAKKKKACiiigAPQ1neH/APkXbH/ritaJ6Gs7w/8A8i7Y/wDXFan7SNl/Bl6r8maNFFFUYhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB5R8Z2xc6V/uP/ADFcj4QghF1dateqGttMi84qejv0QfnXVfGtsXWk/wC5J/MVX8K2EL+E7SCHTxf2+qSt/aM3mbfs2w/L9MD5qrofcYWr7PK4eenyu7/he3mcXuv/ABFreEVri8upDhQep/wrYPgi7iO271XSbeToUa6BIPpxTmt9F8N6gup6R4hF1c2cwaOAQkbwDgjP0zWh4r8Valp+t5torKa1u0We2eS1VmKsOmcckHig7p160pxhh1aNuqa29V2MHVPC2paVYm9c29zaBgrTW0wkVSegOOlXdCu5rXwJr0ttK0UgntwGQ4P8VbHiLU/OsNM8O6zfRWLyp9qvpIoQFjJGUj2j2xSado+gp4M1iGPxEHgkmgMk3kEeWRuwMd8/0oMZYqUqC9stXJbJtNcy8upi2/jq9htYxLbwXF5ChSG8lGZIwfeuehkLXcZJyTICT+Ndxpfh3SE017jSI18T3BmWN4yDH5SHq2P61yviCztNM8YXFnp8m+3inUIQ2cdCVz3wSR+FM6sPVoOpKFKNn/XTdb9l1PpGD/j3j/3R/Kn0yD/j3j/3B/Kn1B+bPcKKKKBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVheK/8Ajz0//sJ2v/o1a3awvFf/AB5af/2E7X/0atACzf8AI+2v/YPk/wDQ1rcrDm/5H21/7B8n/oa1uUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/1w/3f61Wqze/64f7v9arVm9yi5Y/8tPw/rVuqlj/AMtPw/rVurWwmFFFFMQ2T/Vt9DVKrzDchA7iq/2Z/VaAIaRlDqVPQjBxU/2Z/VaPsz+q0AcVb/DPQoLxZ2e7nCtu8qWRSp+uFB/Wug1nRLLXdPNnfoTHkMpU4ZD6itX7M/qtH2Z/VaAOX0HwTpnh2+N3ZSXMkpjMf75wRgnPYD0qvq/w90nWdUlv7ia8jlmILCKRQucY7qa7D7M/qtH2Z/VaAMzR9Jg0TS4rC0aRoos4MjZY5Of61dqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAhoqb7M/qtH2Z/VaAIaKm+zP6rR9mf1WgCGipvsz+q0fZn9VoAnj/ANWv0FQ3v+pH+9/Sp1G1AD2FQXv+pH+9/Sk9gKFX7L/Un/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB5H+0V/yItl/1+D/ANBNfNeK+lP2iv8AkRbL/r8H/oJr5rrop/CYz3DFGKKnFldMyqttMWdPMQCM5Zf7w9R71ZIJY3UqB47SZ1PRljJBp39m3v8Az5XH/fpv8K7nXvGmsfarKPwncXUenLYwpGscBALogEmOOcHOTWM3j7xekSSvqdwschIRygAbHXBxzildj0Odawu0Us9pOqgZJMRAH6VXPSvSPAvjHXtY8Y2lhqeoPc2syyLJE6ghhsPWvOphiWQDpuP86EI+zvAX/JP9E/684/5V0Fc/4D/5J/on/XnH/Kugrme5utgooopDCiiigAooooAKKKKACiiigAopksscETSzOERRlmY4AFcVrPj0hzFo6DA4Mzjr9BXNiMVSw8b1GdWHwtXEytTR3B6Gs7w//wAi9Y/9cVrzG41/VLliZb6XnsGwKjt9Y1C1Ci3vJUC9AG4FeU85p83wux7Cyap7Nx5ldtfr/mex0V5/pPjy4hZY9VTzo/8Anooww/xrubO8gv7Zbi0kWSNuhFenh8XSxC9x69up5GJwdbDP31p36E9FFFdZyBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHkHxwbF1pH+5J/MVy3g6Z7/AEvWdBjkZJbuASwANjdJHzt/EV0vx1bF3pH+5J/MV5ZZX8+n30N3aOY5oXDow7EVa2Pv8upurlsIrfp6p3Q5iVYqwwQcEHsa9J0LTpNW0XwhM9u1wkF7IsrkcJEDnk+lYOo6XD4wt31nw2q/bwN19pq8MG7vGO4PpXNjW9UtbBtMF3cQ2+4loMlRnvxT3OurfFQSg7ST1T6aNfrp3LGvXsl94gv7maTzXknc7s9Rnj9K19Jb/i3HiE/9PFr/ADauQ8yuq8H32qpa39np+jRapbTBZZ1mX5E2ZIOcgDqaDbER5aKS6OPls0Z1nY6x9hkv7C2uxbKMPNECFx9RVOCTN3ETyTIvJ+td7a+OtFaOyvpXuLKWygeL+y7dP3ExOcHOeBzzXncUu++jbGN0oOPTmgVCrVqOXtIcv9P7/Vaan1nB/wAe0X+4P5VJUdv/AMe0X+4P5VJWZ+YvcKKKKBBRRRQAUUUUAFFYN5f6xN4jm03SWsokgtY53e5jdyxdnGBhhjGz9aXy/Ff/AD9aR/4DSf8AxdAG7RWF5fiv/n60j/wGk/8Ai6PL8V/8/Wkf+A0n/wAXQBu0VheX4r/5+tI/8BpP/i6PL8V/8/Wkf+A0n/xdAG7RWF5fiv8A5+tI/wDAaT/4ujy/Ff8Az9aR/wCA0n/xdAG7RWF5fiv/AJ+tI/8AAaT/AOLo8vxX/wA/Wkf+A0n/AMXQBu0VheX4r/5+tI/8BpP/AIujy/Ff/P1pH/gNJ/8AF0AbtFYXl+K/+frSP/AaT/4ujy/Ff/P1pH/gNJ/8XQBu0VheX4r/AOfrSP8AwGk/+Lo8vxX/AM/Wkf8AgNJ/8XQBu1heLP8Ajy0//sJ2v/o1aPL8V/8AP1pH/gNJ/wDF1Bc6V4g1KS1TUbvThbw3MVwwggcM2xgwAJcjt6UAWJv+R9tf+wfJ/wChrW5WHN/yPtr/ANg+T/0Na3KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCje/wCuH+7/AFqtVm9/1w/3f61WrN7lFyx/5afh/WrdVLH/AJafh/WrdWthMKKKKYgooJwCT0FR+fH/AHv0oAkoqPz4/wC9+lHnx/3v0oAkoqPz4/736UefH/e/SgCSio/Pj/vfpR58f979KAJKKj8+P+9+lHnx/wB79KAJKKj8+P8AvfpR58f979KAJKKj8+P+9+lHnx/3v0oAkoqPz4/736UefH/e/SgCSio/Pj/vfpR58f8Ae/SgCSio/Pj/AL36UefH/e/SgCSio/Pj/vfpR58f979KAJKKj8+P+9+lHnx/3v0oAkoqPz4/736UefH/AHv0oAkoqPz4/wC9+lHnx/3v0oAkoqPz4/736UefH/e/SgCSio/Pj/vfpR58f979KAJKKj8+P+9+lHnx/wB79KAJKKj8+P8AvfpR58f979KAJKKj8+P+9+lHnx/3v0oAkoqPz4/736UefH/e/SgCSio/Pj/vfpR58f8Ae/SgCSio/Pj/AL36UefH/e/SgCSio/Pj/vfpR58f979KAJKKj8+P+9+lHnx/3v0oAkoqPz4/736UefH/AHv0oAkoqPz4/wC9+lHnx/3v0oAkoqPz4/736UefH/e/SgCSio/Pj/vfpR58f979KAJKKj8+P+9+lHnx/wB79KAJKKj8+P8AvfpR58f979KAJKKj8+P+9+lHnx/3v0oAkqve/wCpH+9/SrAOQCOhqve/6kf739KT2AoVfsv9Sf8Ae/pVCr9l/qT/AL39KmO5TLFFFFWSFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAeR/tFf8AIi2X/X4P/QTXzXX0p+0V/wAiLZf9fg/9BNeE+C9Itdd8WWlhqG82z7mkEbYLBVJxnt0roh8JlLcoaLb2N3q0MGqzzW9s5wzwx72B7cV6d4g8Y6F4W8XSacnho3MmjwNpkU7XbDdEVOcj1+Y1zOl6zoEPiyxk0W3uPD/lM6y3Bb7UWzwBtP8AP3qj8Tf+Sn6//wBfbfyFPdi2R0Fl8S9B0+3s4bbwltSySVIQb1jgSjD59am8zwt4o+Hc8kljc6JBod2iwtA5uGc3BJYEH3jFeYV6Z8ONQXTfAHie4k1J9NH2uzXz47cTHnzONp9fWhq2oJ3MD4bhV+I9iIyWQGUKSMEjY2K5Sb/XSf7x/nXoPgfSPsfiCDxLearp6WSGZ23zhZSMMM7PU+lefSkNI5HQkkU1uLofZ3gP/kn+if8AXnH/ACroK5/wH/yT/RP+vOP+VdBXM9zZbBRRRSGFFFFABRRRQAUUUUAFFFUdau/sOi3VwOGSM7fqeKmclCLk+hUIuclFdThvGXiB769awtnxbQnDYP32/wABXMR481N3TcM0hJZiWOSeSaSvhK1aVao6kj7+hQjQpqnE9atF0K9cpaR2krgZIVB0rz7xTpo0zXpo0XbFJ+8jAHGD2/Or/gSznl1s3MZKxQoQ5/vZ7VuePtO+0aXHeoPnt2wx/wBk/wD169usni8E6vLZp/geFRaweOVLmumuvf8Ar8zzutzwxrr6PqCh2JtZTiRfT3rDorwqVSVKanHdH0FWlGrBwnsz29WDqGU5BGQR3paw/B96174bgLnLxZjJ+nT9K3K+7pVFVpqa6nwFam6VSUH0YUUUVoZBRRRQAUUUUAFFFFAGdrGsx6KtpJcRO0NxcpbtIvSItwGPtnA/GobvxBDa64um+WWfyxJJIWCrHltqg+57D2q1rOmx6xo11YTcLPGVDDqrdmHuDg/hXK22haxNosl1qcCnVbi8geWNZAQscTADB9wC340AdLaeItJv782VpexyXIBPlYIbA6nkdq0q5Pw0t/LrVzf6zotza3lxlVkZ42jgiB+VFw2eepOOSfYV1lAHjHx6bF3o/wDuSfzFeQ76+mvGfgCw8ayWr39zPAbYMF8ojnPrn6VzH/CiND/6CN9+a/4VaasfY5dm2Fw+FjSqN3V+nmeJWt7PZXKXFpM8MyHKujYIrph49a9jCeIdIsdVYf8ALaRNkh/4EOtej/8ACiND/wCgjffmv+FH/CiND/6CN9+a/wCFF0dNTNsuqO8r39Hf7zzgeKvD0PzWvhK23jkedMzjP0qjq3jTVdVtvsnmR2ll2tbVfLT8cdfxr0TR/gzo+oremW/vF+z3ktuu0jkKcA9OtaP/AAojQ/8AoI335r/hRdERzPLU+bVvzu/zPDN9S2z/AOlw/wDXRf517d/wojQ/+gje/mv+FOj+BWiRyK41G9yrBhyvb8KfMjoeeYK27+49Mt/+PWL/AHB/KpKai7I1QdFAFOrM+Be4UUUUCCiiigAooooAw7X/AJH7Uv8AsHW3/oyatysO1/5H7Uv+wdbf+jJq3KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAw5v+R9tf8AsHyf+hrW5WHN/wAj7a/9g+T/ANDWtygAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo3v+uH+7/Wq1Wb3/XD/AHf61WrN7lFyx/5afh/WrdVLH/lp+H9at1a2EwooopiGyf6tvoapVdk/1bfQ1SoAKKKKACiuZ8QeNrTRb37BBby319gEwxcBc9AT6/QGsweJvGV0N1n4aWNT0EwbP6laAO5orhh4g8dRcz+Hbdh6Rg5/RzUtn8Q1jvEtfEGlz6Y7nAdgSv1IIBA/OgDtKKOvSigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALsf+rX6Cob3/Uj/e/pU0f+rX6Cob3/AFI/3v6UnsBQq/Zf6k/739KoVfsv9Sf97+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKAPI/wBor/kRbL/r8H/oJrxb4af8j5Z/7kv/AKAa9p/aK/5EWy/6/B/6Ca8X+GYJ8e2QAydkv/oBrePwmUviKfhOd7fxhFJHqVtpjB2/0m6QugGemADyeldb46+HvirWfHmr6hpejyXVpdXBlgmSWPEiED5hls4rzua0ufPk/wBGm++f+WZ9fpXQQ+LNegurKdLd91lYNYRjymwYyCMn3+Y81Tve6JJR8K/Gxxjw/Oc9MSxc/wDj1dj4W0LW/B/gXXRrFza+HJru6tvs89/tlSQLv3ABNxzyK5rStW12y8HrqaOscWju9tHHKjbpPtAIY59q5W81q6vdGsdMnIMNi8rxnnJMhBOf++RRqx6IqXJ3XcxLrITIxLqMBueo9jUR6Gig9DVEn2H4Kk1FfAuii2gt3j+xx4LyEHp9K3PN1f8A59rX/v63+FUPAf8AyT/RP+vOP+VdBXG1rudsaiStyr8f8zO83V/+fa1/7+t/hR5ur/8APta/9/W/wrRopcvmP2q/lX4/5md5ur/8+1r/AN/W/wAKPN1f/n2tf+/rf4Vo0UcvmHtV/Kvx/wAzO83V/wDn2tf+/rf4Uebq/wDz7Wv/AH9b/CtGijl8w9qv5V+P+Znebq//AD7Wv/f1v8KPN1f/AJ9rX/v63+FaNFHL5h7Vfyr8f8zLnm1YW8ha3t1AQ5KytkcdsDrXFR33iW68G3Z163VbbC+VLJ8srDcMZH+Nek1leJrRrzw3eRRjL+XuUepHP9K58RSc6crPozsw2LhTfK4LVrXtbseSU6NGlkWONSzsQFA7mmKwZQw6EZrsPAmjfaLxtRnX93CcR57t6/hXxuHoyr1VTXU+uxFeNCk6j6HS2NvB4W8MlpsbkXfIf7znt/SnaXeJ4l8NsZgN0itHIo7H/OK5jx1rP2i6XToG/dwnMmO7en4UngDUfI1GWxdvknXcn+8P/rfyr6COLhHErDR+BK3z/rQ+dlg5ywrxMvjb5vl/Wpy1zbva3UsEgw8bFT+FRV6RqvgyPVNZe7M/lRuBuVRyWrz6+tXsb6a2l4aJyp/xrxMVg6mHd5LS+h7mExlPEq0XrbU734esTotwPS4P/oIrrK5vwJatB4ZSVxg3EjSD6dB+grpK+swUXHDwT7HyOOkp4mbXcKKKK6zjCiiigArB8Q6pfWV/plnp8trA168gaW6UsqhV3cAEcmt6sbWvD8Ot6lpk13HDNb2byM8Uqbg25Nox9KAM+z8X+TDcRagovLqG5+zxjT03faDtDfKCeMA85NWR4z02U2wtIru6aZPMdIYdzQLu2kuucjDAjAyeKdqGgvE1hPoCW1vJYs+yFkxGwYYI46euaxLvwPdS20Cxm0a7LySSXg3xyQu7lmKFTyOeh9KAL0Xju3W5vIruwvUaK+NlbqkW5p227uOfY9cCrq+L9Pk+yLFHcvLdFh5Qi+aLYcPvycLtzz+mawtQ0LWrHWbWXTjFceZqf2kO6n5QYWVt/oCccj1rVsfC00V0Lm7nRpJknNwEBA3S4+77ADFAFi28Y6Xcs5b7RbwiNpYp54iqTov3mTuce4BpR4ttPsRuJLO/iYuqQwPBiSct93YM4OQD1IxjnFZTeD7++sYbDU7uAQWVu8NtJCh3PkYDMD0wB0HWpNU8N6rrlhbjU3s/OsZlkgSMuEkwpU7jnIyD26UAXm8Zaf8AuVhgvJ55N2+2ihzLCFOG3LnsT2z7ZqzH4ktJ9YbT7eG6lMbCOWdIsxxOVDBWPUHBB6Y561zlx4GnbS44IILDzi7uZMyK9uzd0cHcce/Wrj+FLxvENterJbo0RjMl5GWWaYKMFXAO1s88n1oA66iiigDC8Lf6vVv+wpcfzFbtYXhb/V6t/wBhS4/mK3aACiiigAooooAKKKKACiiigAooooAw7X/kftS/7B1t/wCjJq3Kw7X/AJH7Uv8AsHW3/oyatygAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMOb/kfbX/sHyf+hrW5WHN/yPtr/wBg+T/0Na3KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCje/64f7v9arVZvf8AXD/d/rVas3uUXLH/AJafh/WrdVLH/lp+H9at1a2EwooopiGyf6tvoapVdk/1bfQ1SoAKKKKAPLbvSrvVvijqkWnXzWNxEgkWVc84VBjj61siy+INp8qX9pdKOhO3P6qKx7uy1S9+KOqrod4tpdJGHDsThhtQYPB9fTtWx9o+IdoNptbO7x/FlefyZaAAxfEOYbfPs4P9rCf4Gub8Z6FrVlpcN9r2rfbHaYRrEuSq5BOR0Hb0roxf/EKb5RplnD/tZXj83Nc54z0/xJHpcN34jv45UaYIkEZ4UlSc4AA7e/WgD1qD/j3j/wBwfyp9Mg/494/9wfyp9ABRRXK3Hii9i+LVn4XWKA2U+kPfNIVbzA6yhAAc4249s+9AHVUUUUAFFYXi7xOnhXRY7sWkl9c3NzFZ2lrG4QzTSNtRdx4UZ6nsBWzbPNJaxPdRCGZkBkiV94RscqGwM4PGcDNAElFFFABRRRQAUVW1KS8i0q7k0yGOe9SF2t4pG2rJIFO1SewJwM1S8L3Gt3fhmyn8V2UFjq7oTc29u+5EbccYOT2wepxnGTQBrUUUUAFFc94m8Uv4Zv8ASvtOnNNpt/cpaS3iTAG3ldgseUIyyknkg8ehroaACiiigAoorlvh74nvfFnh24v9Rigiliv7i2UQKwXbG5UHknnA5oA6miiigAooooAKKKKACiiigAorL8NeIbLxV4dtNa0sSi0u1ZovNXa2AxXkZOOlalABRRXK3Hii9i+LVn4XWKA2U+kPfNIVbzA6yhAAc4249s+9AHVUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAXY/9Wv0FQ3v+pH+9/Spo/wDVr9BUN7/qR/vf0pPYChV+y/1J/wB7+lUKv2X+pP8Avf0qY7lMsUUUVZIUUUUAFFFFABRRRQAVDdytBZTyp96ONmGfUDNTVHcRfaLWWHO3zEK59MjFAHJafqut2unaXqmpXsV7bXzxxyQrAIzD5nAZSOuDgEHtU9947tra5ntY7OdrgRStb5KATNGCSMbsjp1IFP0/wzqKW9hZ6rqEM9nYMrxxwwFC7L93cSTwOvHcVnx/D+Zb6OR9Qi8qOSZspbgSSiRWHztnkjdx9KALI8eQ2mh2F7qljPG09tHPPgoBFu+rc9+Bk11iOskauhyrAEH2rh7r4fXdzarC2pW+42SWjStbbmQJnBTJ+XIPNdtbRGC1iiZtxjQKTjGcDFAHk/7RX/Ii2X/X4P8A0E1852F/daZfRXmnzvb3ELbo5EOCpr7H8ZeDNO8b6XFYas8ywxSeYPKbBJxiuK/4Z68Jf89r7/v7WsZJKzM5RbZ4d/wsrxd/0GZf++V/wo/4WV4t/wCgzL/3wv8AhXuP/DPXhL/ntff9/aP+GevCX/Pa+/7+1XPEXLI+f9X8X69r1otrq2pS3ECtvEZwBn14rFr6a/4Z68Jf89r7/v7R/wAM9eEv+e19/wB/aOeIcrPmWg9DX01/wz14S/57X3/f2j/hnrwl/wA9r7/v7T9pEORnbeA/+Sf6J/15x/yroKp6RpsWjaPa6dbMzRWsYjQseSB61crB7moUUUUgCk3LjORjpnNLXmupW8t1PeeHYZHD2V1LqKYY5CYDoPpvYigD0h5Y4xmR1Qf7RxSCaIx+YJEKf3twx+deX3051uay1ZbX+0EvdVSGO2aQKrpHA4IzyPvFj+FOVI7vTb8fYRp0Dara28mmFsmNg4DMccYYEYx1FAHp6SJKu6N1ceqnNCSxyZ8t1fbwdpziuPv7GDT9auNP0qdNNgudNkaYg4SJtwCOfTqR71B4ciuNI8S21lqWj29pLPbuILzT5y0VztClt6HkHng896AO4JAxkgZ6e9MkmhjO2WRFJ7MwGa8/8a317d6666XY3902jRLcIbUIU8/O7a2WH8AI7/eps0ia94tubq10WPWIZ9NtpI2knCCINvPcH/IoAyfFWjnw/rTADFjdMXgfshPVD/StOy8azafpyWlrYwqqLgNuPX1rT0nQ/Ov7jR9dIu9ul26yckjdufkfT19q5/WPA+saMzPpinU7MchM4lQf1r5/E4StQm6uG67n0WFxlDEU1SxXTYx5JGlkaSRizsSWJ7mpbK7exvobmL70Thh71nvfLA2y6guLdx1WWIjFNXUYpGCwRzzMegjiJzXgqFRSvZ3PoHOk42urHY6j451K7ylrttUP9zlvzrF0ywuPEmti0R3fJ3XMxOdi9+fU9Km0jwlruuOpkgbTLM9ZJh+8Yey9vxr03RdDstBsBa2Ee0dXc8s59Sa9rD4TEYmaqYlu3meHiMZh8LB08Mld9UXoIUt4I4YVCxxqFVR2Ap9FFfSHzIUUUUAFFFFABRRRQBwWu63e6f4hn/tK/vtKgWRVs5UthJaOuM5kIBI5yDkjtTYPFeqWvirXbfUZ430xpPJ0+VVx5MogR9pPcNuJGe4xXR3vhyS8muF/tS5SyuifPtCqsrZGCASMqD7GornwZp11pmr2ExkMOqOHbBwYiI1QFT2xsBoA5y917UktdPutTu9TtLGSyjkF3YWwkBlJ+bzBgkDkdBjrXYQrJrHh23MWpkPNGrfbLMBd/uoOcA1Th8MTWdvbQ6brF1bpDAkDgqriQKMA4YHB9xWvp9hBpmnw2VopWGFdqgnNAHF6Bqep21laObq61rUL9pljguJEijRY3ILbgvHAA6HJNaKeNbi7kWPTNHe4dbY3E4ecJ5e1yrIODlsqcdAfarf/AAiUcVnaR2N9Pa3Fm8rRXChSwEjEspBGCOf0rP8A+EMuItaBsdQntLP7B5EjoQXmYyFmyCOM56jkZoAni8XrcT7NMtpLua5dBbxyShFIMe8knB2gD6810lnLNPaRyXVv9nmI+eLcG2n6jqKw28HWscgl0+5ms5o2VoHjwfK2psxgjBBHrW3ZW72tokU1xJcuv3pZMbmP4cUAT0UUUAYXhb/V6t/2FLj+YrdrC8Lf6vVv+wpcfzFbtABRRRQAUUUUAFFFFABRRRQAUUUUAYdr/wAj9qX/AGDrb/0ZNW5WHa/8j9qX/YOtv/Rk1blABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYc3/I+2v/AGD5P/Q1rcrDm/5H21/7B8n/AKGtblABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP93+tVqs3v+uH+7/Wq1ZvcouWP/LT8P61bqpY/8tPw/rVurWwmFFFFMQ2T/Vt9DVKrsn+rb6GqVABRRRQB5ddRaxL8UdUPh6aOK6SMMfMxh12pkcjHpWwNc8dWvy3Ogwz4/ij5z+TGrV94a1W28ajXNEnh23G1LiObsvAOPb5R7119AHDHxH40lGIPDiI3q4P9WFc54zTxTLpcNz4iaGK384KlvGRw2DzxnsD1NeuVyHirw7q/iXVILXz4YdJjIkY/x7uQfx5+lAHWQf8AHvH/ALg/lT6RVCKFHQDApaACvKfFWixa/wDtA6VY3c08do3h+VriOGQxmdBN9wsMEKTgnBGcY6E16tXF+JPAFzrfjiz8T6fr82lXdlYtawCK3WT5i+7c244ZcEgrj3BBAoAxIdFsfAPxg8P6f4Xje007xBa3a3dhG5MKPCqukoUn5ScleP8AGvT65PQPBd1ZeJJPEPiTW31vVvINtA4tlt4baInJCRgnknGWJJ47Vp+F9FvdB0uW11LWrnWZXuZZluLkYZVZsiMcnhRx/IAYAAOZ+JMpudd8G6VJE8MMmu290b5x+6DxEssPHO98YGcDrz2rkfi3pF4/j+01TxToup+IfBMdnse002Vx9nlySZHRSpPHfI4xzxiuz+K6OmhaLqHlu9vpevWV7dNGhYxwpJ874HOADk+1S654e8S+IL1dT8K+PptH0+7gQ/Z10+O5VgR99GYgrkHt9aAPO/GXijTtO+EfhnTPhvd3w0jV9Q+yb7Z2a6SMuWeJN5yH3NtGT04zg5qvpOly6D498OXfw88G+LNFt5LpbfWV1KNjDPC5UGRv3j4ZeW7DgdK74fBjw+vw3g8Ixz3SLbz/AGuK/RgJkuP+eg7DjjHp781c8P8Ag7xZp+qW0+v/ABBvNYtLUkpaLYRW4k4IHmOpLOOc/UUAcBpng6x8ZfHjx7Z6400ulxfZnms45miE7+WAhYqQSFG7jPUg9q2L2zj8D/tFaPe2yGLTfE1gdPk5JAmiA2de5Cxgd+WrtNA8E/2H498R+Jf7Q8/+3PJ/0bydvkeWuPvbjuz9BimfEXwInj7QbeyW/bTLu0u0u7a8WLzDE65/h3DPB9euD2oA898LQ/8ACR2nxL8fSrldQhubGwY/8+8URGR7NtT8VNY663qdj8AfAOiaNfNpsuv3q2Mt4jYaGNpWBIPbkjn0B9a9j0vwbb6R8NU8IWc+2NbB7Q3Hl9WdSGk257sxbGe/WsM/CTTLv4V6f4L1a8luP7PO+C/gTypI5NzEOoy2PvEYycj07AD9G+GPhnwA0uvaJDdi+trWQyyS3bv9p+XJLgnGcjsBXjGjQxeNvCt3r/iDw34x1rxJfNM9pq1ghNvaMCQixASgbQRyCpxyBXuHhfwd4l0jUI5fEPjm7160hjaOO0kskhBzxl2BJkI9TWLZ/CfWvDs9xB4I8d3mh6RPK0p097CK5ERbqI2c/KPw/OgDN1a41y5/Z/0jUfFUUkOt2F3bTyW9yrLLcPFc7UTABO9wFxx1b05r1qzna6sYLiS3ltnljV2gmxviJGdrYJGR0OCR71574+gMOjeFfDCXdxqWqSapZurSgtLKkUitJM5AwAByT05rr7nRb2fxlY6zHrVzDZW1tJDJpij91OzEYkbnqPofYjnIB5TpenaLo+vRx/FPSL6PX5NSL2viN3d4J2MhMSpIp/d8YGxgBgHPXFdHPpdr4/8Ai3r+l+I1luNJ8O21osOnl2WGaWdWcyuARuIACjPA5rQvfh/rmuRLp/ifxg+o6Ms6TNapp0cMkoRgyq8oY5GQM4UE461d13wRd3XioeJPDOuvomqPALa53WwuIbmMHK7oyV+YZ4YHpxQBy/hPQLPw3+0BqthpjTC0/wCEfjeKGWVpBADP9xC2SFyCQM8ZOOOK1fgr/wAiTe/9hi9/9GmsvwrpU+k/tA6rHe6lPqd1N4filnupwql2M2OFXAVQAAAPTuSSe18FeFf+EP0SbT/tn2zzbya68zyvLx5jltuMnpnGe9AHJ/FfV7n/AISDwz4bW11S60/UmnmvrfSiFnuEiVSIgxZcKS2WwQcD3qn4S06TTviHZjwx4S1rw/oF1azR6nbX6oLcuADE6KJHwx+ZT04I6812/i3wjH4ojsp4b6bTNV02UzWGoW4DNAxGGBU8MrDgqetJoeh+IrK/ku9e8VHVT5Biit47BLeFCSDvKhizN8uPvYwTxzQB5jcwS6b4kn+ENneCHR9TuVuY51cBrW0kDyS2Y9HYodv+w5Par/i64hvPiRF4VuvD+rar4d0jS4pV0rSUUJJIzEK0gLplFVcBeRnOa6VvhfFN4Qu9PutVeXXLq9/tI62IAJEug2UdU3HCqoChd2NuRxmr2t+CbzUdUsNd0vXW0rxDbWwtZr2K1DxXUeclXhZvu7skfNkZ6mgDiNM1DVfBek+Mr7SNB1bSdCt9NF1p1nqgUiC5AYMEAd8Rn5WIz64xXT+F/hp4ebStL1fWIJNW1t0iu5dTup3aVpSA2VOflUHgKOMcHPNb2meG746dqNr4r1ltfGoJ5UkbWywQpHggqqLnruOSST09KxtK8CeIdGS20+y8cXX9iWrp5VrJYxtOI1IxF5+fu4GPu5x3oAr+BFK/FP4jBgQftlmcEdjBkVS8H6Rp+veIviPpusWkd5Zz6xH5kEoyrYjVhn6EA/hW5qXgXUf+Exu/EXhbxG2i3GoxRx6hE9mtzHP5Y2o4BYbWC8Z5Ht1qfwR4H/4Q241qU6rNqTatdi6Z54wHVtuDkg4Yk5PAUDOAKAPOPBkNj4L/AGcX8Y6Jp0MWuPpsga6VMsxMpVS3qAcH/gNVLrRmj8NxXnhzwZ4vj8XRqk0WtzmMtNLkFvMPnnKNyNuMYPSvR/Dnw6fRdBvPDV9rB1Pw1LDLBb6fJahHhR2LENKGy+MkDgYz7DDdO8EeKNOhg09PHt0+k25VY42sI/tPljGIzPnkYGM7c+9AGZqlkvjn4rHQPEAlbR9L0mO7fTw7JHcTysRl8EblULgA9yao6X4asPC/7Q9laaOJYrKTw9LIls0rOkB85QQm4napxnb0BzjrXXeJPBM+qeJLXxHoGsyaJrNvAbVphAs8c8JbdskjJGcHkEEY/LFPR/h5dWHxBXxdqXiGbU71rFrSVZLcIpywYbAGwijH3cEkkksc0AdxRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBdj/ANWv0FQ3v+pH+9/Spo/9Wv0FQ3v+pH+9/Sk9gKFX7L/Un/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQBieKhqZ0pP7IjllPnL56QSCOVou+xj0PSuatvGUGl6ZKEmvTcPdJAlrqyN5lsWUnLEZLKdpIPPpXZappcWq26JJLNBJG++KaB9ro3qD/AENZ7eEbOS1ZZri5ku2dX+3M/wC+DLnaQfYEj8TQBnWfi6+1JrK3sLOEzzPMkjyF1j/d7TuXIBIO7imy+M2n0xWjtv3ywGS6RZCDCwkCbc/XP4Vt2mgWdhNazebLJPB5gEssmWkaTG4n1PAqmfC+iWkmqs8hibVpFkn3TY5GPu56DIzQBGniW8a3u9U+yw/2RamVWbefNPl5BbHTBIPFZlv4/uJrG7lSxW5kjthcx/ZkkIVSwBVsqMkAg8dRnFbi+FrEXcrJcXH2W4Lu9iJf3LM/3m2++c+maLXwpBawzIl/fM8kYijlac7oEByFQ9hn86ALHh7VjrOmfaGktpGDlSbctt/JgCD7GsnxfYa7qF5aNouEjs1M/MhXzJMjC8e2evHNbekaPDo8MqxyyzyzP5ks0zZZ26c/hWhT2A44L4uNw85dgm7csGExjzANucZ+4SfqKqW83jVmgFxFNGpvSWYeWcQ46N+PcV3lFFxWOMiHjCa2Ks7wuTlmYISG2tkLxjbu24zzTdZ0/WLvWdIuZLZ5Y47QrcKmCFlLKem4eh5rtaKLhY4t7G+jh1BpdIurq8ZZP3i3WxJwW+VevHH8j610Hhq2uLTw5ZwXpczqnzh+oOScd+B0HsK1KKLhYKKKKQwooooAKrLptmupSX628Yu5YhE82PmZAchSfTmrNFAGdb6TpVvFBb21tAiWMhljjQD9yxB5x2JDH86ZdaDo+redNcWsM/2lUEjj+MKcryPQ9657brTeKPEv9kzWCRAQ7xdRO7Z8rttYYFcpceIdT03wbA+n3Txvp+mi5bbKkUQbLH5t2WcHGAoH40AeoWWg6Zp9vNBa2kaxzDEoYbt49DnqKjsdG0nRJd9pDFbvJwCzcnuQM/Tt6Vyl1quqi7udSXU5RFb3ttFHaqq+WyyKm4HjJ+9kc8VnXF3Pf3WiX93qzSzXFzc77EldsO2GUAADkYHBz1zQB6Ra2trD50trGg+0v5kjL/y0OMZ9+KisNH0/SyTp9rHASgQ7Bj5QSQPzJ/OvN4vEOsxRKtl58YsYbdYEEkaxS7gCd4Y7mznAx0rtvDj3d3eapdXd5LKqXkkEUBwEjVSMY9T70AbS2sK3b3SxqJ5ECM+OSozgfqaloooAY8MUoxJGjj/aXNJHbwxf6uJE/wB1QKkopWQ7sKKKKYgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACqupfbP7Luf7L8v7YImMHmDKl8cZ9s1NPPFbRGW4kWNF6sxwKwLvxxpFsxWNpJyP+ea8fmaxqV6VL45JG1KhVrfw4tnGfBrxZ4h8VXWuPqemRafZ213Isg5LNclvmUZ6BcfrXq1cbZ+NtGtTIINPe3WWQyyGNR8znqx9z61vad4j0zUzttrlQ/9x/lNZ08XQqO0Zq5pUweIpq84OxqUUUV1HKFFFFABRRRQAUUUUAFFFFAGHa/8j9qX/YOtv/Rk1blYdr/yP2pf9g62/wDRk1blABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRWJ4w1K40jwreXtkwSeIAqSM/xAV5QPiZ4mb7txGfpCK9LC5dWxUHODVr21MKleNN2Z7lRXhx+JficDJnQD3hFJ/ws7xL/AM/UX/foV1/2Hie6+/8A4Bl9bp+Zsah8QdUg+N8HhpdAZ7tozHFN5n7toGIbzT9ACMetetV4C3jnVn1hNVb7Ob6OIwrP5I3BCclfzq5/ws7xL/z9Rf8AfoUf2Hiu6+//AIAfW6fme5UV4cPiZ4nP3bhD9IRSH4meJl+9cRj6wij+w8T3X3/8APrdPzPcqK57wPq11rfhWG+v3Dzu7gkDHQ4FdDXjVabpVHTlutDqjJSSaCiiisygooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAo3v+uH+7/Wq1Wb3/XD/AHf61WrN7lFyx/5afh/WrdVLH/lp+H9at1a2EwooopiGyf6tvoapVdk/1bfQ1SoAKbIxWNmVdxAJA9adSNnadgBbHAPrQB5Np2saprd+32rxSdMuHm2rbFWCj06fL7YPpXXePtYvtG0K3FhN5c08ojaUDkDGTj0zXOaj4a8T+ILxVvtH0+xDS7nu4dgYj3IYk/lXUeNfDt1rmhQQ6ewa4tpA6q5xv4x19aAMzwxf6vY+M7rQdUvzfIsPmB2ySDhTwTz0NXNH1W9uPiRq9jNcO9rFDmOI9FI29PzNZfgvw1r9j4nk1HXImG6FlMjzK7MxIx0J7ClvtK8Vab40v9V0KwhuEuV2hpJFxjjsWBzkUAeg0VR0aTUZdKifWoY4bw58xIzkDnjue3vV6gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCuun2S6k2orZwC9eIQtciJfMZAchC2M7c846VYoooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALsf+rX6Cob3/Uj/AHv6VNH/AKtfoKhvf9SP97+lJ7AUKv2X+pP+9/SqFX7L/Un/AHv6VMdymWKKKKskKKKKACiiigAooooAKKKKAPPvHFzd6jrP2LTrK+ujplv9pVrQIQtyTmMNudeig9M/epstyNf8SW15b6JBqyTaUknlzTBBES5yOQec8fhXew2dvbzTywxKj3Db5WA5c4xk/hUNppNjYSF7O1jhbaVyi44J3EfmSaAOa8OWN1peuWNlfSBpY9NkJVGJVMyghQT1ABxn2rsai+zQm7F0Y188J5YkxztznH51LQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUARrBEskjrGoaXHmMBy2BgZ9aqTaFpVxs8/TraTy12JuiB2r6fSr9FAFf7BabCn2aLaWViNgwSOh/DAqIaNpovGuhY24uGJLS+WNxJGM5+hq7RQBTfSdPknhmksoGkgGInMYyn09Ksxwxw7vKRU3sWbaMZJ6mn0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABVHV9Wg0ewa5uDnsiDqx9KvV5d4w1VtR1uSNW/c2xMaDsT3NcOOxX1alzLd7HfgML9Zrcr2W5R1bW7zWLgvcyHZn5YwflWtTT/BN3qOnw3cd1CiyruClTkVzVdPofi69tHs7JljNsrBDhfmwTXy+HlRqVW8Td3/M+qxMK1OklhbK35GTrWjT6JeLb3DK+5dyuo4NZ6sVYFSQR0Ir0Xx3p32rR0u0GXt2yf8AdPWvOaMdh1h6zjHboPA4h4mgpy32Z2nhbxfIsyWOqSb0Y7Y5W6qfQ13leH16j4P1ZtT0VVmbdNbny2J7jsa9fK8ZKb9jUd+3+R42bYKMF7emrLr/AJm/RRRXvnzwUUUUAFFFFABRRRQBh2v/ACP2pf8AYOtv/Rk1blYdr/yP2pf9g62/9GTVuUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcx8RTjwFqP+6v/oQrzbwDqdvpGl6xqF1bidIvKU8AkAkgke9ekfEg4+H+pf7q/wDoQrwGHUrm3s57WGUrDcY81P72ORX1WVUvbYOVPvL/ACOCu+WqpeR2PjG81UWqZuY7zR7s77e4jiAzj+FsdGHpXHb60dM1PVYdDv7a3t2udOkTMweMskR7MD2NaS+HNM0nSrS/8R3N1/pcYkihtYsjaemXPAPtXsU5Rw8eSXfS3X5dzmlFzdznN9G+t37d4LHy/wBn6kR/f+0Ln+VWYfDmk69Z3Mvhq4vFmt4zK0N1H8pA64ccZrR4mMdZxaXmL2d9mTeDbnVnWSK1uIrTTYD5t1cyxgrGPqepPYVf8cataaz4a0+9soBHGLmSJXKgM4UD5jj1rl76+1geGrK0mtXttN5dGWPasxz95j3NZj6jcyafHZPKTbxOXROwJ6msFh+esq2mj6fr3f5F81o8p7t8LjnwFa/9dJP/AEI12Fcb8Kjn4f2v/XWT/wBCNdlXxeO/3qp6v8z0qX8NBRRRXIaBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP93+tVqs3v+uH+7/Wq1ZvcouWP/LT8P61bqpY/8tPw/rVurWwmFFFFMQ2T/Vt9DVKrxG5SD3FR/Zk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAq0Va+zJ6tR9mT1agCrRVr7Mnq1H2ZPVqAKtFWvsyerUfZk9WoAfH/q1+gqG9/1I/wB7+lTgbVAHYVBe/wCpH+9/Sk9gKFX7L/Un/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEc7lLeRx1VCR+VeKyOZJGc9WJJr2m6UtZzKvJMbAflXilfO51f3Pn+h9Jkdvf+X6hXU+CNG+26ib2dcw25+XP8T/8A1q5q3gkurmOCFd0kjBVHua9RYweFPDHGCYl4/wBtzXDl1BTm6s/hjqd+ZYhwpqlT+KWhpzLBf29xa7lcYMcgH8JIrx28tns7ya3kGGicqa6rwTq7nXLiG5fJvMvkn+MVH4800w6tHdxIStyuDgfxD/61deNksXhliIrVOz/r7jkwMXg8S8PJ6NXX9fecnXXeALtLe+uo5pUjR4wcuwAyD7/WuTkjeFykqMjDqrDBFdD4L0u01XU501C1juYo4s7ZFyASeD/OvPy+6xUD0Mxs8JM9F+32f/P3B/38FH2+z/5+4P8Av4Kzv+EQ8Pf9Aez/AO/Qo/4RDw9/0B7P/v0K+1PhzR+32f8Az9wf9/BR9vs/+fuD/v4Kzv8AhEPD3/QHs/8Av0KP+EQ8Pf8AQHs/+/QoA0ft9n/z9wf9/BR9vs/+fuD/AL+Cs7/hEPD3/QHs/wDv0KP+EQ8Pf9Aez/79CgDR+32f/P3B/wB/BR9vs/8An7g/7+Cs7/hEPD3/AEB7P/v0KP8AhEPD3/QHs/8Av0KAIbGaObx5qbQyJIv9n2wyjA/8tJvSt+uZ0bTbLS/HGqRafbR20bWFsxWNcAnfNzXTUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAcr8Szj4e6n/ur/AOhCvD/C2l22pXlxPqTMLCwhNxcBPvMBwFH1JFe3fE84+HWqf7q/+hCvB/DOuxaPfTLfRGaxvIjBcxr1KHuPcHmvq8p5/qc+Te/6I4q6XtFct6z4uvdUjNpBtsdNXiOztxtQD3/vH3Ndpq03iu00/SbjQVaeyOnRB4VVZAGweqGuK1jwlPa2b6no9xHqek43faImG6Iejr1BrqtY0m6vY9Gn0fXba0vRpsINrLOYWI5wQeh+ldlV0fc5LW13X59n5siKlrczv+El8ShtreHrXzPU6YN38q6Dw5P4uvbmebWY2tdPS0l/dFFiDHYcYUcmsX+zPiN90XjFf7/26PH57qv+HNIvrXWJ7nXdetri6+xzBLSO4Mzn5DkkjgVhW9l7N8vLfy1f/AKinfqcfo/izUdHHkh1urJuJLO4G6Nx6Y7fUVN4o06ztvsep6QGjsNRjMkcTHJhYHDJnuAelQ6R4RvL+1GoajLHpml9Wu7g43D/AGF6saj8T63a6hJa2Wkoyabp8flW/mfefnJc+5NekuR106X/AG9bb/h7/Mys+XU9s+E5z8PbT/rrL/6Ga7SuJ+EZz8OrT/rrL/6Ga7aviMb/AL1U9X+Z6FP4EFFFFchYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAUb3/XD/AHf61Wqze/64f7v9arVm9yi5Y/8ALT8P61bqpY/8tPw/rVurWwmFFFFMQUUjHahI7Cq/2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNFVvtL+i0faX9FoAs0VW+0v6LR9pf0WgCzRVb7S/otH2l/RaALNV73/AFI/3v6VOp3ICe4qC9/1I/3v6UnsBQq/Zf6k/wC9/SqFX7L/AFJ/3v6VMdymWKKKKskKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKp3uq2un3VnBdMyNey+TCdvBfBOCe2cHFMk1m0j1j+zMu1zsEjBV4RScAk9ulAF+iooru3nYrBPFIw6hHBI/Kse48W2NvfXNu1veOLRts80cBaOM4zyfYGgDdryHxHpraR4iuLcjEUpM0B7FSeR+B4/KvQr3xZY2d4bZYbu6ZYVnZraHeqoehzn2qPX9GtvFugxSW0oWTaJrW4A6ZH8jXBjsL9ZpWW62PQwGK+rVuZ7PcwPA1lbRyPqN5NCjL8kSu4BHqaqeNNaGoaiLW3fdb2/cHhm9a5e4Fxp141lqsRtrleMN91/dT3p1fNVMROFD6ty27+Z9PTw0J1/rPNzdvIms7l7O8iuIzho3DCvV5ta0yOyhurqeIBlDqDy3TsK8ipssyRJumkCgD+I0YTGzwykoq9x4zAwxTjKTtY2/FOp2Wp6obqzVlXZh2bjOO9dZ4A0x7XRWvZ1KyXjBlBHIjH3fz5P41yvhbwtca/cx3d9E0OmIdwVxhrg+mOy/zr1RVCqFUAADAA7V7GX4ecqjxNVWb2PEzHEwjTWFpO6W4tFFFe4eEFFFFABRRRQAUUUUAYdr/wAj9qX/AGDrb/0ZNW5WHa/8j9qX/YOtv/Rk1blABRRRQAUUUUAFFFFABRRRQAUVmp4j0aW6FtHqlq85fZ5aygnd6fWpZ9Y021vEtbm+t4rh8bY3kAY/hQBdoqGS8toVlMtxGghUNKWYDYD3PpTLHUbPUoTLp91Fcxg4LROGANAHNfFI4+G+qf7i/wDoYr5tjgnlt5Z4oneKHHmOBwmema+kPiqcfDTVf9xf/QxXkvw20R/EugeINMSUQ+Z5DM+MkKGJOB3OK+pyqsqODlN7c3+RzVY807HK6dp2p31jfT2Cv9lto91y+/amPQ9ifat0a74f16ws4fEcd1a3dpCIEu7UhgyDplT3qXxp/atrpaafY6Rc6Z4etGAUyLgzv/z0kPcnsO1cJvr2Yf7RHnena269f8jG3Lodp/ZnhHGR4ougvXabY5/nUkOueHPDcc7+H0u76/liaEXNzhUjDDBIUdTXD76N9V7Dm0nJtfL9EheiNu+sdVg0eyvbwSNYzgi3ffuUYPI9j7VRaCdLVLlonEDsVWQj5WI6jNdR4Ik1d7WW1k0i41bQLptlxCgzsP8AfQ9mFafxA8P/APCL+CtKsBMZo2vJZYmYYbYyjAYdj61l9Z5aqou12+nb/MfJpc9N+D5z8N7P/rrL/wChmu4rhPg2c/DSz/66y/8AoZru6+Lxv+81PV/mdsPhQUUUVyFBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP93+tVqs3v+uH+7/Wq1ZvcouWP/LT8P61bqpY/8tPw/rVurWwmFFFFMQ2T/Vt9DVKrsn+rb6GqVABRRRQAUVwniTxhqS+I20PRDb20iYD3FwyjkjPG7jv7k0ieGPF14ge58UGMsP8Alg7Y/TFAHeUVwv8Awh/iiEZh8VzO3pI74/Ums+XxT4h8KX0UOt3NpqUDHDCJ1LqPwwR+IoA9KopFYOoYdCMiloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigC7H/q1+gqG9/wBSP97+lTR/6tfoKhvf9SP97+lJ7AUKv2X+pP8Avf0qhV+y/wBSf97+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKyta1z+yJbOFLOa8nvHZI44iB0GSSSfSksvEVpcWtzLe/wDEve0kEVwly6r5bEAjnOOQQaADxNpbatoU0MHF1EVntm/uyody/qMfjXMQW19c2cGuX1jcR3N5qEc0tvsy8UKKwCkD8T+NdlLqunwrC019bRi4/wBSWlUeZ/u881Vh8S6RNPexC+gQ2MnlTF5FUK2M460Ac74LFhdaxdal/Zs1jfXClUhayeFYYQeF3EAFj1J/wp8ep/2ZqniC1lsL6aa6uMwLHauyS5jAHz42gZ9TXVNqdgsUMjXtuEn/ANUxlXEn+7zz+FOh1GyubiWC3u4JZof9bGkgLJ9QOlAHnEmlDS9RFrqjaugGkwW6vpySFXcAhgSgx3713vhyG6tvDOnw6goW5jt0WRR2IFTJrGmyW8txHqFq0MJxLIsylUPuc8UsmradDbxTzX9tHDMcRSNMoV/oc80AM1TRrDWrYwalbJOnbcOR9D2rj7n4WQBydN1W5tl7I2HA/Ou1Oo2S3qWbXkAuXG5YTIN7D1A61ZrCrh6VX443N6WIq0fglY84T4X3jNibXWC/7EQBra0n4caNp0yz3Ikv515DXByB+HSutorOGDw9N3jE1qY3EVFaUhFUKoVQABwAO1LRRXWcYUUUUAFFFFABRRRQAUUUUAYdr/yP2pf9g62/9GTVuVh2v/I/al/2Drb/ANGTVuUAFFFFABRRRQAUVn6vrVto0UL3KTSNPJ5cccKb2ZsZwB+FUz4u05dMu7yZLmH7IyrNBJCRKC33fl75zxQBuUVk2niSxuln80TWbW8fmyJdR7GCf3vcUum+IrTU7n7OkVzBIy741uIinmL6r60Acj4MkK2sWda0xF+1zf6K0aeb/rW4znOfwps15a23hLUUuxpr6kJpmvIL5iryckgLj5iSNuCK7GO10aTVJ4ks7cXVvtkkbygCN2SDn8DVqW2sJpEu54rd2T7srKDj8aAOInEOoLqf2+5bSzLDYuJCu8QvgkBge2eDnj1rT8JXF02uX9vejTrpxCjrqGnDaki7mARxkgMMZ49a6FrnT5NQlsHaJrhoRJJGQDlM4BPtUtrDZ2lvizSGKHOf3YAXP4UAc98SNPu9U8AalZ6dA1xcyqoSNOrfMK8BtvA3jqzZjaaTfwFuCY2C5/I19SmWMIHLqFPRieKUuoYKWAY9Bnk16eEzGeFpunGKabvqRKCk7ny7P4O8f3URiudO1KaMnJSSTI/LNVf+FdeMP+gDdfkP8a+otT1O30mz+0XW4qWCKiLuZ2PQAdzT7C+g1Kxiu7Rt8UoypIwfofeutZ5WW0F+JHskfKl14E8VWUBmudEuY4wyruIHViAO/qRU3/CuvGH/AEAbr8h/jX0h4x/5Ftv+vm3/APRyVu0/7dr/AMq/EPZI+W7fwZ4+tI/LtdN1GFM52xvtGfwNNufBHju82/a9K1Cfb93zH3Y/M19TUUv7bq3vyIfskcb8KtMvdH8AWtnqls9tcpLIWjfqAWJFdlRRXjVajq1HUfV3NErKwUUUVkMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/AK4f7v8AWq1Wb3/XD/d/rVas3uUXLH/lp+H9at1Usf8Alp+H9at1a2EwooopiGyf6tvoapVdk/1bfQ1SoAKKKKAPMZdHsdc+Kmq2epkiMxBkKvtO7anT14zxWqfhlDCf9B1m8tx6EA/yIrIudBg8RfFDVrO5lkhCxiRXjIyGCp6/WtUeBdctTiw8U3Kp2Vt4x+TUAL/wrVpOLrX7uVe424/mxrB8a+E9K8OaLbtaSySXUk4UmWQEldpzgDHGcVvHwX4lmG248Vzhe+1nP9RXPeMvB8Ph/R4rxr6e7upZwjNJgDG0npyew70AesQf8e8f+4P5U+mQf8e8f+4P5U+gAoorK1/xPo3he0juNe1CKzSVtkQbLPK3oiKCzH2ANAGrRWVoHiXSvE9pLc6LcPNHDJ5cgkgkhZGwDgq6qehHatWgAoriU8SX8/xJ1+3mvfsuieGrGGa4gjtvMe6aVHfcSAWwoThVGSfXpXJ+BPFtr4w8ba1e6hr+tRzW2o3UGn2MKTxWotUjwHddm3fyzYc7gQvHagD2KiuQ0XxP4b0XwJo98fEF5faZdyrbWuo34kkmuHd2ChztB6gjJAAAFWdK+IvhTWtbTSNN1iOa9kUvEhjdFmUdTG7KFkHB+6T0oA6aiuc17x/4Z8NX4sdY1Py7vZ5hghgkndE/vMsasVHHU4rE+JfiJZ/glq+u+GNUYK9uj217ZzFSP3iglWGCD1B/EUAd9RXEahrWr6R408KRi9E+ma2rWstpJEN0UixNIJVk6knGCDkemK7cnAyeBQAUVy9n8SfCd/rUWlWWrrPczSmGIxwSmKRx1VZduwng8Bqsa/468OeGLyKz1nU1hu5V3pbxRPNKV/vFI1ZgOvJGOD6UAdBRXO6b400HxPBqkXhzVEvZbCBHnMKsBH5iFkwxABOAehJBGDg1m/CC+u9T+Eug3mpXU13dSwuZJ7iQyO58xhyx5PAoA7SiszXfEWk+GbAXuu30dnAziNCwJaRj0VVAJY+wBNVNK8beH9c0y9vtK1D7TFYAm6RYZBLFgE8xFd+cA4G3JxxQBvUViS+MdBh8KQ+JH1BTpM6o0U6Ruxk3kKoCAbixJxtxn24o1/xloPhgW41u/FvJcgmGFYnllkA6kRoCxA7nHFAG3RWdo/iDSdf0gapo9/DdWRzmZGwFx1DZ5UjuDgisiw+JPhPVdUi0/TtW+0zTSeVG8VvKYXf0Eu3yyeOzUAdRRWdo+v6Zr327+ybn7R/Z95JY3P7tl8uePG9PmAzjI5GR6GsTVviJoll4S1PW7K5a5SxlmtMLbTH/AEmMH5CAuQMjBb7vvQB1lFcr4H8dWHi7wvDqHmGK5is4Z78PbywxQu6bm2tIAGUENyCRgDnkZdpPxJ8Ja3q0em6ZrMctzNnyQ0Ukaz46+W7KFfp/CTQB1FFYPiDxv4d8L3ENvrepLDczqWjt44nmlZf72yNWbHvjHBrlvBPidfEfxX8Vtp2rPf6StnZPaoszNFGSrb9qnhTkc8A5HNAHo9FQ3l5Bp9jPeXkixW9vG0ssjdERRkk/QCsXS9U13WrPRtSgsbSwsrovLdQXTu06wlSYiuAAHPyllOcZIBJGaAOgorlbXXtZ1T4galpenx2UOlaM0Md486u007yReYBHggKFDJyQc89OtdVQAUUUUAFFFVdTuXstIvLqIKXggeRQw4JVSRn8qALVFct4Z1nXvEXhvwxrCJpyRX1sJ9TUiQMN0eVEIyf4uu4nj3rqaACiiua8Y+I7vw9N4dWyjhcaprUOnzeapO2N0kJK4Iw3yDk5HXigDpaKK5rwV4ju/EcOuNfRwxnT9au9Pi8lSN0cT4Utkn5vUjA9hQB0tFI5YRsYwGfHyhjgE/XnFZPhjX18RaS1y1ubS6gme2u7Rm3G3mQ4ZM4GR0IOBkEHvQBr0UUUAFFFFABRRRQAUUUUAXY/9Wv0FQ3v+pH+9/Spo/8AVr9BUN7/AKkf739KT2AoVfsv9Sf97+lUKv2X+pP+9/SpjuUyxRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAc54m0e41bVtF8mS5hihmkaWa2l2MgKYHI55NUtR8PR6TNYXVtaXGpRR3LTXis/mSysU2q53H5tuAMeldhRQB5lc6DqNtGl1Z2t9Dey+Z5UKxxzQbC+5YpFb7uM9V5GTzT9Ugk0/XI3vtHacTatHMqxKpEn7kg7cnkgg8GvSqY8UcjIZEVih3KSM7T6igDitO8P3Tana3Mln5MTNeSxI2P8ARhJt2DHY8E8dM1Q/sHU7zT7eystOksLuztLiKe5YgLOzrgKGBywJ5yemK9HooA4HV7K61PTbVtM0q60z7HPG1wFgiLyqFIwqtlWwTnmqD+Hr6302O6iXVftjzTyRZggdSHx8kkWAqgkZ45HPPNem0UAcCNN1S38S2lxbW06yzSQvdwyQxvajC4Z0c/OjAdADjjpXfUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYdr/wAj9qX/AGDrb/0ZNW5WHa/8j9qX/YOtv/Rk1blABRRRQAUUUUAc14vsry+uNFSwmltnW93NPFGrmMbG5wwI/MVzV7aaja6Xr8WsfaL7URPbyfa0g+We3WQbNqqMAqN2QO/PevSqKAOOvZYfEGpvdW9hcXdlb2M0UytEYzMXx8ihsZ4BNQeGYZ7fX4l0nU9SvdKMRWW31KI5tSANux2AY57jJFdRrmqDRNCu9SMJmFtGX8sNt3e2e1VLLXrj7dHaazp66fJOheF1uBKjgDLAnAwQOaAMXX9OmvNQ1ZDbyvFNJYj5QRuAY7uR6d6ytR0jyPt0S7rS0t9Q3wQyWbXFu6mMZDIvOM5wR0NdXeeNdDtNJu79b1Jo7MqJVjzkEnA49Ce/Srv/AAkOk/b4rE30P2mZQyRk8nIyPx9utAHns9rOrJfPonkXM+kxRbUjkZUAk+YHBDYC87c5xxTdE0me5mms7mG4uLH+2IJVza+REyGH5iqDom7159a7rQfFml6/ADb3EaT7SzwM/wAyAEg/y/CrEPibRbiC5mh1GBo7UZmbdjYPX3/CgDjLWyS0mjj1uxmfRoZrlIofKZ1Ri42fKATjGcHtVfULHUJdel8pBCsnkf2cXs5ZJo4wBkK4cKhznIYfnXdv4k0dNMTUH1CEWrtsWTPVvTHXNaMM0VxCk0EiyxuNyOhyGHqDQBynj62lvtMs7OWSeCykl3XF1bRF5YmUZQgAEjLdSKk+H17qFz4fMGqaaNOe1k8qKMRsoePs/J/i6+2a6qigDC8Y/wDItt/182//AKOSt2sLxj/yLbf9fNv/AOjkrdoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/rh/u/1qtVm9/wBcP93+tVqze5Rcsf8Alp+H9at1Usf+Wn4f1q3VrYTCiiimIbJ/q2+hqlV2T/Vt9DVKgAooooA8tu9FfXfihqtvDeSWcscYlSWMZIIVB6j1rX/4R7xvajbaeIYpVHTzSSf1U1q6l4QS58SxazYahJY3O5fOCDIkAwPUYyAB3FdNQBwg0Xx9NxNrltGvqpwf0Sud8ZeF73StKiv9T1aW/neYR4bJCgqT1J9vavXQQenNczrng/8A4SDW4ri+1CU2UYH+hqOM/XPf6ZoA6OD/AI94/wDcH8qfQAAABwB0ooAK87HlP+0S/wDawXfHoSf2V5g4yZG84pnjf0Bxzt9q9ErH8ReE9D8V28UPiDTo7wQtuiclkkiPqrqQy9B0I6UAX7rU7CwheW+vbe2jjZUd5pVQKzYCgkngnIx65qzXMD4c+E/+Eem0NtHjfT7idbiaKSWR2lkBGGZyxYngdTyOOldPQBwHgQTJ8RPHMerFJNWE9o0ksA2xNbmNvICqeQQN4bJOT3xVH4Yf8g34h/8AY16l/JK3rDRtU0n4ravqkdotxpeuW1uJLhZlDWskCuACh5YMGGCM4PWtzS/DmlaNFqMem2vkrqd3LeXY8xm8yaTG9uScZwOBgDsKAPDjbw3n7OXgC2uo1lgm1q1jkjYZDKZ5AQfqDXffFlVgufAdxCqpMniuyhVwoyqOHDKPYgD8hXTL4G8Op4f07Q107GnaZOlzaQefJ+6kRiytu3bjgknBJFX9Y0DTNe+w/wBrW32j+z7yO+tv3jL5c8edj/KRnGTwcj1FAHGR6pr/AIl8Y+IrTQ9T0/w/ZaPNHbzztZie5uH8vduO5gqoAcAkHofw4KNkf9lnxSYbgXUX2+48ucKFEi/aVwwC4AB64AxzXrer/DrwprutNq2qaPHNeyKFlkEsiCZRjAkVWCyDgDDA9KnbwR4dbwze+HzpwGl30rzXFuJpAHZn3schsj5hnAIFAHL+PhPIfA0WkukWtNqKGymmGYowIGMu9RywKZGAQckcjFd1dXFhdtc6TLeQidrctLAsqiRImyu/b1A684xXN61oepar4/8ADTw2awaRoZkuXu2mBMrtE0axKnXjOSTgY6ZNbjeGdHfXrnWmsIzqN1afYppyTl4c52Yzjr3xngelAHB6Zca58MG0Dw9rC2Or+Hbq8i02wvYQYrmB3J8sSR8q44+8pHqavfD94n+Inj43pjOrLqMa4J+cWoiXysZ/h69O9bej/DbwnoOoQ3um6SFuLfPkNNcSzCDPXYHYhP8AgIFT694C8NeJdQjv9Y0xZbyNPLFxFNJDIV/us0bKWX2ORQBxPgtrJ/il8VjpnkmD/QgfJxt8zyJPM6d9+7Pvmtz4J/8AJGPDv/XB/wD0a9VPA/hv+x/id4+ii0p7HSJ49NisysBjhkVbdlcRnGDgnBx0J5rt9E0TT/Dmi2+k6Nb/AGaxtVKwxb2faCSerEk8k9TQB5v4yGtSfHnQY9Nn0qAro0zWB1WF5IzP5oEgQKynzNm3nPTd7VveHvDWvwfEi48Q+ItR0d5pNLFm9tpkEkW/EoZJHDu2cYdQffHauk8QeGNG8VWC2ev2Ed5Cj749xKtG395WUhlPuCKqaX4F8O6LZ31tplg0K6hH5d1L9olaaVcEYMpYv3OMHjNAHlWg/YP+FmWkRD/8IS2r3LaIWUeSdS2ruAP9zd53l9t27HQVrWq+Jpfjn4w/se60SG8SC0WAapbyyObby8/utrrhd+d3X5se1eh3HgzQLrwrb+HJtOX+yrYRiGBJHQxlCCpV1IYEEZznJ5yeTSeIPBXh/wAUSW8ut6cJ57YYhuEleKVB6CRGDY9s0AeYeL/D2u6F8OPHl/eX1jPLqtxbS3cOkxOiQKCiznaWYgtHhmyehJr1/Tn02DSLMaY1vHp5jRLXySBGVI+UL26YxVfRvDGjaBpMmmaTp8NvZzMzSxYL+azABi5bJYkAAk54FZWmfDPwho+qxajpujJBPDIZYQJ5DHE5GCyRltinnsBQBifCgpbXfjy2lkQTJ4qvJ3XPKpIEKsfY4P5GsTwJcRXXwh8d3FtIssM2oaq8bqchlKZBH4V3WrfDrwprmtNq2p6RHLeyKElkWWRBMowAJFVgsgwAMMDwK0tG8NaRoFjc2WkWSW9tdTyXE0W5nV3f7xwxOAfQce1AHl/it7g/staL9kdVibTtNS6ZtxURYiD7tvO319s1rax4Y8X+ItM0uDUNW8KQ2Ftd211ay2NnMjKUYFPKYylRkfKMDoeK6/RPA3hzw7a3trpGmLDbXyhLiB5XljZfm+UK7EKvztwABzVPTfhj4P0jUYL2w0ZUmt5PMgD3EsiQt6ojMVQ/QCgDH8FNE/xb8efbiv8Aaiy2yxBidwtfKBXbn+HcTnHfr2qp4KksZPjt4/OmmFkEVkJTDjHm7W35x3z19855zXXa94F8OeJr6G91nTVlu4V2JcxTSQyBf7peNlJHJ4JxzU2ieD9A8OX1xd6HpsdlNcxRxS+UzbWVM7RtzgdTyBkk5OaAMz4ohW+GurJIzLFIsUcxX/nm0qB//HSaoeLwF+LHw7AGAJtQAA7f6I1dhq+l22uaLeaXfpvtryF4JVBwdrDBx781laT4bd7bRLnxOIbzWdFEiW95DI4B3KYzIV4G5kxkEEAk4J60Acv4J8KaBZfE/wAYXNpo9nDPYXluLWRIQGgD2iF9p7ZLNn1ya3viBdWA0my07ULK81F9SvFggsLSfyftLhWfa7llATCknJ5xjnpW/aaRY2Oo39/aweXc6i6SXT72PmMiBFOCcDCqBxjpUGveHNK8TWKWmt2guYo5BLHh2Ro3HRldSGU8nkEdaAPMPDts+jeK/F+kQaVBodo2gpdHTba88+NJD5il+gCMQBkDqAD34paZ4V8Pf8M+W3iO4lcapa6P9og1Xz2822lRPkRGB+UBgF2Dr3ySTXo8ng3RtH07VLnRdPZL2fTntWcSSSPKo3MAdxJZtzH5jljwM8CsDwN8N9BfwV4duNa0R0v4bOB5red5UQTKo+Z4MhC+R1Zc0AZd9Zp4j+KHg+HxCzo114clkubcOY/PfMbNG2MEjOSV77cHjIq1b2Fn4c8aeKNC8O5h0k+H/tc1kjExW1wS6jaOibkGSo9M1o+JPDKa/wDF3Sm1HTZrnTU0a4RpwrqsUvmxlcSLjY+ASMEHrXT6T4S0PQ9OurLTLERQ3mTcs0jvJNkY+aRiWbjjk8UAeZeHvv8AwV/687n/ANIjWz4X8O6L48l1zVPFtumq38WrXNoIZ2YrYxxPtREXPyEqAxYckt1rtLfwjolodENvZbP7BRk079658hWTy2HLfN8vHzZ/OquqeAPDWsapJqN7pxF3MAJpLe5lg84Dp5gjZQ//AALNAHKeJ7DSfEnirUbCPwrJ4hn0qCKG4e91D7PbWhZN6hM5O8qwJcLkcc9q5a4nl1f4QfDI6lqMwaXxDbQvdibD7R56AiTrnAA3de9eq33gLw1qOrHUrvTA10yLHIVmkRZlUAKJEVgsgAAGGB6Us/gTw1c6DYaLcaWkunafcfaLa2eR2VJPm5OT8w/eNw2Rz06UAcve6FpfhD4leFf+EWi+wTapNPDfWsLnbcwrCzeY6k8lXC/N1+bknNcrJfX9n4I8RQ6a5jN/48uLOdhcGD9084DDzQCY92Au7Bxur1XRPBWgeHtQkvtLsSt3JH5RuJ7iSeQJ/cVpGYqv+yMCpk8JaEml6lpp06OSz1S4kuryCUtIsssh3Ox3E4yQDgYA7YoA47wv4Q1fRvGlnf2Ph/TvDum+RLFfwWWqPcLdEgGNihiUb1YfezkhjmtnwsNnxF8bxxACH7RZyEL0802y7vxwE/n3rR0fwZovh2drrR7SUXIjKIbi9mmCj+6PMZto4HQUvhLQbjRNNuH1OWOfVNRuXvL6WLOwyNgBVyAdqqqqM9lz3oA3qKKKACiiigAooooAKKKKALsf+rX6Cob3/Uj/AHv6VNH/AKtfoKhvf9SP97+lJ7AUKv2X+pP+9/SqFX7L/Un/AHv6VMdymWKKKKskKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMO1/wCR+1L/ALB1t/6MmrcrDtf+R+1L/sHW3/oyatygAooooAKKKKACiiigDH8W2NzqXhLUbOxj824lhKxoWxuPpmsm+tdY17a504WP2WCTylnkV/NkZdoHHGK66igDzCPwtrkj6jK1nN++0xIF+03SuzSLKGwAPlVcdMVY1Pw/rt7q6TLZS4Gow3IAuVSJYwVzlRyz8d8j0r0eigDz2z8P602lWVj/AGbBZyWEc584urLMzhgBj3zk5qpbeFNUmurmW/067khk09IvnvgJfNWQMCmPlQDtj05r02igDzuTQPET/Yr6V7t2tXlVYUkiE+xwMFmxtJ4P4Guv8M6a+keHbWzlBDoGLAtuwWYtjP41q0UAFFFFAGF4x/5Ftv8Ar5t//RyVu1heMf8AkW2/6+bf/wBHJW7QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAUb3/XD/d/rVarN7/rh/u/1qtWb3KLlj/y0/D+tW6qWP/LT8P61bq1sJhRRRTENk/1bfQ1Sq7J/q2+hqlQAU2Td5beXjfg7c+tOpGBKEIcNjgkdDQB4paLp8+rSJ4tutSt75p8NINu1frnkc56DFdv8Srqe28PWkFtM6JPMEcqeWUKeM1Uu/BnijWpo4td1i2ls1k3nyx8w+g2jsT3roPFfhn/hIdFjtIJhBLA4eJm6HAxg/wCNAHN+FIG0T4hXmjWl3JPZiDcQ7A5bCnPHGRkiruhSyN8VtbRnYr5H3SeOCmKZ4O8D6h4f1tr6/uLaRTEyBYmYnJI9QPSjUvCXiIeKbzVdB1G1thcgA7yQ2MDIxtI6igDuqKo6NBqFvpUUWsXKXN2ud8kYwDzx2Hb2q9QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAF2P/Vr9BUN7/qR/vf0qaP/AFa/QVDe/wCpH+9/Sk9gKFX7L/Un/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYdr/wAj9qX/AGDrb/0ZNW5WHa/8j9qX/YOtv/Rk1blABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYXjH/AJFtv+vm3/8ARyVu1heMf+Rbb/r5t/8A0clbtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP8Ad/rVarN7/rh/u/1qtWb3KLlj/wAtPw/rVuqlj/y0/D+tW6tbCYUUUUxDZP8AVt9DVKr9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FAFCir9FADY/9Wv0FQ3v+pH+9/SrFV73/AFI/3v6UnsBQq/Zf6k/739KoVfsv9Sf97+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDDtf+R+1L/sHW3/oyatysO1/5H7Uv+wdbf+jJq3KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAwvGP/ACLbf9fNv/6OSt2vMvjb4j17wx4dtL3SLGK+s3uI47iJgdyvvVkII7Erj8a7vw9JqU3h6yl10RrqEkQedIhhUY87R9OlAGlRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf9cP8Ad/rVarN7/rh/u/1qtWb3KLlj/wAtPw/rVuqlj/y0/D+tW6tbCYUUUUxBRTZP9W30NUqAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9FUKKAL9V73/AFI/3v6VNH/q1+gqG9/1I/3v6UnsBQq/Zf6k/wC9/SqFX7L/AFJ/3v6VMdymWKKKKskKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMO1/5H7Uv+wdbf8AoyatysO1/wCR+1L/ALB1t/6MmrcoAKKKKACiiigAooooAKKKKACiiigAooooAhu3aOyndDhljYg+hxXyzJ8bvHCyuo1GLCsQP3C+tfUt9/yDrn/rk38jXwzN/wAfEv8Avt/OtaaT3M5tnf8A/C8PHH/QRi/78LR/wvDxx/0EYv8Avwtee11ehfD7U9WsBqV/Pb6Ppf8Az+XzbQ3+6vVq0tFEXZpzfGnxncx+XcXlvKmQdr26kZByD09ak/4Xh44/6CMX/fhar/2H8ObQmO78Vandv/ftbEBP/HjmnL4B0XWlI8H+K7e7ueq2d/H9nkb2B6E0vd7D1Jv+F4eOP+gjF/34Wj/heHjj/oIxf9+FridU0q+0XUJLLVbWS1uIz80cgwfqPUVTquWIrs+lvgn4413xjLq39vXKzC2EflhUC4znPT6V61Xgv7Nf+t176Rf+zV71XPPSRrHYKKKKkoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/rh/u/1qtVm9/1w/3f61WrN7lFyx/5afh/WrdVLH/lp+H9at1a2EwooopiGyf6tvoapVdk/wBW30NUqACiiigAoqnqGrWGlReZqN1Hbr23Hk/QdTXE6z8UY41KaLbbz/z2n4H4L/ia6qGDr4h/u4/PoUot7HoVFeOaZ8WNXs7krqkcV9CW7KI3UexAx+Yr0HRPHeha5tSC7EE5/wCWNx8jZ9j0P4GtsRl2Joayjdd1qDg0dFRRRXnkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAXY/8AVr9BUN7/AKkf739Kmj/1a/QVDe/6kf739KT2AoVfsv8AUn/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAYdr/yP2pf9g62/wDRk1blYdr/AMj9qX/YOtv/AEZNW5QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBBff8g65/65N/I18Mzf8AHxL/AL7fzr7mvv8AkHXH/XJv5Gvhmf8A4+Jf99v51tT6mczsPA+iWCWN74r8Rx+ZpWlkLHAf+Xq4P3Y/oOpqxoupT/EX4n6Vb+JCZbKecILVDtjjTBwqgdBS+NnOl+BPCGhRfIj2jajOB/HJIxAJ+gU/nWH4Em1G38daVLotvHc3yzgwwyNhXODwT2q91cnyOgvPEfga1vp7f/hBYW8qRkz9rfnBxUuow+GdY+G2o65oegDSLyxvYYVeOdn3BwSev0ru9P0Swu5r99d8J+G7eURO8W29yZJs/dPPANcv4zXVLP4fXVvB4c0jTdMkuomuJbC58w7xnaCM/WpuMzfDuqR/EDTR4T8RSKdSVD/ZOoSfeDgZ8pz3U159c281ndS21zGY5oXKSIw5VgcEUWtzLZ3kN1bOY5oXWSNh1Vgcg12PxYhjPjRdSgQImq2cF9gf3nQE1ezJ3R6B+zX/AK3XvpF/7NXvVeC/s1/63XvpF/7NXvVYT+I1jsFFFFQUFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/wBcP93+tVqs3v8Arh/u/wBarVm9yi5Y/wDLT8P61bqpY/8ALT8P61bq1sJhRRRTENk/1bfQ1Sq7J/q2+hqlQAVxnxJ8TXnh/SbePTX8qe6cgy4yVUDnHvyOa7OvMvjJ/wAe+l/70n/stehltONTFQjNXX/AKhrI81n1Ce6mae6meWVjlndiSfxp9o0d1dRQzXKW0cjYaaQEqg9Tjmuv+HejaJNper67r1s93HpYDiLqpG0knb3PHQ8V0N/4G8L+OrJ9S8G3sNrcnlo0H7vPoydUP0/I19VVx1KlUdOSaS0vbRM3cknY57WvhXfRWKah4bvI9atmQMRFgOfUrgkMPxz9a4JleKVo5VaORDhlYYKn0IrpEn8XfDTVdjebbIzfdb57ef6dj+GDXdQXehfE7w3qN3e6aLTVtPgLNJEefukqQe4yDwahYitQSlUfPB/aW/zX+QrtHJeCfFus2uuWGnLePJaSyrEYpfmABOOM8j8K9xr538KJjxdpR/6eY/5ivoivGzunCFaLirXRFTcKKK47xH4p1n/hLbfwt4QtLOXUmtTeXV1fl/ItYd21cqnLMxzgZHT8vBMjoH17TY/EkWgPc41OW2N0kHltzEG2lt2NvXjGc1o15Lpc2vP+0PZReKLazjuovD0oSaxZjFOhmU7grfMpzkFST06nNetUAR3FxBaW7z3U0cEMYy8kjBVUepJ4FZ2m+KvD2sXRttI13TL+4UZMVreRyuPwUk15z8e9H1LUNP8AD97HYXOqaFp16ZtXsLUnfLH8uDgckABxx03Z46jU+Hf/AArDxBcRav4FsLCC/s0O5I4vJnhDDady9xg4zyPegD0eivLY/HvjTxdqGqv8ONJ0eTSdJuGtmudUlkDXkijLLEEwF6jBbjkH1Arax8ZLn/hSSeNdCsbeO9FyttPaXgZ1ik3YYfKVJ7EexGRQB63RXnV94j+INr4I1zxG2maLAIbZbvTbJvNkmWMHc4nwVG7ZyAh68Gotf+KU1l8GNN8W6TBbz6pqggitbVwzI1w5w6YBBONsmOewoA7WTxRo0XiqLw3JfourzQG4jtdrZaMZ5zjHY8ZzxWrXnI1+8i+OGjaDqGmaS91N4fFzcX8dsROsm9wyI5YkR5XO05+tVJPiB4v8VeJtU034a6Tpb2ekTG3udS1d5BHJKOqIqYPBHXn14yKAPUaK878QePtf0hPD+gW+kWlx4y1pWP2XziLa3CglpGYclcAkAc4B7jBd4Z8b+IYvHreDfHtjp0GpzWn2yzutLdzBOgJBXD/MGGD+R9sgHfXFxDZ2stzdzRwQQoZJZZWCrGoGSxJ4AAGSTWTY+M/C+qXiWumeJNIvLl/uw299FI7fRQxJqv8AEP8A5Jh4p/7A93/6JevJb25+Hk/wL0+0h/se58SPo8CWsWniN70XvlKF+584YP1z75oA98oriF8S6xpfi7wb4avUgkbUtOme/lcEyCWKNT8pBA5YnPB/Cr1/4nvbX4paR4bjigNnfWE9zJIyt5gZCAADnGOfQ0AbGj6/pmvfbv7JuftH9n3kljc/u2Xy548b0+YDOMjkZHoan1TU7TRdJutS1ObybS0iaWaTaW2IBknABJ/AV5H8P7nxVJf+OLPwpb6bEqeK7+WW81Pe8ZJKgRoiEEn5ckkgAFcA5ONTWfFF54h+D3je11uyjsdY0m3uLS9ihctGzeXuV0J52spBGeaAO8fxRo8cmjo95htaGbAeU/74bA/p8vykH5sVrV55a+KL3RYfhtpFrFA9vrVqIrhpFYugS2VhsIIAOeuQaVfFfi3xHr2uWng+PQoItFujaPHqhlaW4cAEsAhHloc4BIbOD9KAOxude02z16x0W5udmoagkkltD5bHzFjGXO4DAwD3IrRryrx3d6lbfGLwO+mWKXeoSWd6iRPJsjVii5ZmwSFXknAycYHJrd0PxR4jt/HzeFvGNvppkuLNryxu9N3qjqrBWRlck7hnOQcYoA7iiuAi8UeL/FE+oXHgm00ePS7G4kto5tUMpe9kjOHKbCAi5yAxznHSmyfE6S58E6PqOk6V5utazdGwt9OlkwsdwrMsm9gPuJsYkgcjHTPAB2Gsa/pmg/Yf7Wufs/8AaF5HY237tm8yeTOxPlBxnB5OB6mtGvF/iBL4wTUvA9v4qg0iW3fxVYSR3WmGRBG4LDy2SQknIYkMD/CcgcV6D8Q9dudB8GXUmmc6peMtlp6g8tcSnYmPpkt9FNAGzDrmk3LWy2+qWUrXbyJbhLhGMzR53qmD8xXByB0wc1PfX1ppllJealdQ2lrEMyT3EgjRBnHLHgcmvN7vQrfwz4z+Fei2nMVkL6INj75FodzH3JyT9a1PjZ/yRjxF/wBcE/8ARqUAd3RXDeOfGeteHfGHhbRtD063vzrZu0dJSVYNGilCGBwqgtljtY7QcDNNg8TeKtC8XaXpXjO20qay1hmhtbzSxInkzKpby5FcnIYA4YenIFAHd1n6br2m6vfahaafc+dPpswgu08tl8tyM4yQAeD1GRXJ/wDCUeKvEmv6ra+CbbSYbDSLg2k15qnmt9onUAuiKhG0KTgsSeegNZfwouL+fXfHk2o2S29//aq+bbJLvUOIgMBsDIOODjoaAPUKK8s1n4g+KPChgvvEj+FjbNcxxT6VZ3Tm8iV2C5VmOJCuckBBxk5wKTxv/wAJZ/wuTwpHpV5pMcUkd8bFbiCVguIY/M83a43HJO3bjGTnNAHqlFcZrHibXRr1n4W8O29hPrhs1vL66ug4tbaPO3IUHcxZgcLkcDk1Fpfjq8sJNfsPG9va217oVqt9JPYljDc27BiHRW+ZSCpUqc89CaAOyvLuDT7Ge8u38u3t42llfBO1VGScDk8DtUel6naa1pNrqWmTedaXcSywybSu9CMg4IBH4ivNNW1v4gap8O9R1uXSdGh0y706WQad5kv2yOFoz8xkPyFgpzs2j0zniur+F3/JKPDP/YMg/wDQBQB1VFcj4m8U6pB4ls/C/hSztrnWLm3a8llvWYQWsAbbvbb8zEtwFGOh5qvpfijxDpvjOz8N+NbbTzJqcUkmn3+mb1jlaMbnjZHJKsF5zkg/yAO2orzbTPF/jbxLrXiXTtBstFgXR9RktY7y+EpR1AG1dqtlm6lmyoAK4BycdF4B8VT+LPD80+oWsdnqVjeS2F9BE+5EmiOG2n0OQfx79aANnVdb0rQrdJ9b1Oz06GRtiSXdwkSs2M4BYjJwDxUGl+KvD2uXTW2i69pmozqhkaK0vI5WCggFiFJOMkDPuK4P42XOn2Z8G3OsqrWEWvxNcB4jKCgR85QAlvpg1veEPEHgTVbq7k8IQW0U9vDuneLS3tmEZPTLRrkZA4GelAHUalq+m6NbfaNX1C1sIc4826mWJfzYgUzS9c0nW42k0XVLLUEX7zWlwkoH4qTXnnw/0TTPGOjHx94wtoNRvNSeWWBb0CSKwtldlWNFb5VwFyWxkknmun8Mv4Ck1qeTwdPoDahJD+/XSpoi7RgjlljPIBIGSO/vQB0VlqFlqMcj6feQXaRStDI0EquEdfvIcHhh3HUVRHizw4dSGnDX9LN8W2i1+2x+bn02ZzmvNfCGnalq3wr8d6focvlahc6zqUcDb9nzFhxu7Z6Z96ueDf8AhXer2tt4duvDdjo+uWiJv02+s1iuFdf40cjMnIJDKSSOTQB6pRRRQBdj/wBWv0FQ3v8AqR/vf0qaP/Vr9BUN7/qR/vf0pPYChV+y/wBSf97+lUKv2X+pP+9/SpjuUyxRRRVkhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBhX+jao2uyalpGowWxmt44JEmt/MzsZyCDuGPvmmfYfFf8A0G7D/wAAD/8AF10FFAHP/YfFf/QbsP8AwAP/AMXR9h8V/wDQbsP/AAAP/wAXXQUUAc/9h8V/9Buw/wDAA/8AxdH2HxX/ANBuw/8AAA//ABddBRQBz/2HxX/0G7D/AMAD/wDF0fYfFf8A0G7D/wAAD/8AF10FFAHP/YfFf/QbsP8AwAP/AMXR9h8V/wDQbsP/AAAP/wAXXQUUAc/9h8V/9Buw/wDAA/8AxdH2HxX/ANBuw/8AAA//ABddBRQBz/2HxX/0G7D/AMAD/wDF0fYfFf8A0G7D/wAAD/8AF10FFAHjvgrw78RNP8Qazd6pqUcHh2SWZksZl3M4OfmQZPlgnnqfpXzpP/x8S/77fzr7mvv+Qdc/9cm/ka+GZv8Aj4l/32/nW1PqZzO48dqdR8HeDtbj+aM2BsJCOiyROTj8m/Suw8E+Fr3wl4Vi8RP4Yh1PWluVlgV7oK0ULDCvgH1P61xngjVLHUtIvPBuvzrBZ37iWzuX6W1yOAT6K3Q112sfEObwndvY6l4XaDV1tYrVrgzkxyxxkEMo6EHHUU3fYStuZvxI+H+pDXbK60TSkto79Io5YIrkOI7tgSydfXvXbWHho6VpmkeGJPCVtqFlqCRy6ncte/6udM788/wjB/GuFvfi3Yvdpc6doBtpG1JdQuC1wW8xxngenWrUXxl0y0UwWnhpo7SV55LiM3RJdpQA2D26UWlYNDi/GPhK+8PeK3sTabI7qUtZLG4cSIWwuCK0vixIkfjCDTI3D/2VYW9mxH95UGa7GfVLOG203xprGlf2bbaZa+RoumyyFpLmTJIc552rnOa8dvr2fUdQnvbyQyT3EjSSOe7E5NUrsTPb/wBmv/W699Iv/Zq96rwX9mv/AFuvfSL/ANmr3qsZ/EaR2CiiioKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCje/64f7v9arVZvf9cP93+tVqze5Rcsf+Wn4f1q3VSx/5afh/WrdWthMKKKKYhsn+rb6GqVXZP8AVt9DVKgArzL4yf8AHvpf+9J/7LXpteZfGT/j30v/AHpP/Za9PKv98h8/yZcPiM7wKjyfDXxikas7NbkBVGSf3bV5nY6le6VeJd6ZdS2s6fdkibB+nuPY12Hgzx1ceDZZgtql1aXDAzR5w4x3U/0Ndnc+GvBnxLt5Lzw7cLp2qY3PGqhTn/bj7/7y/rX0cqv1WtN1o+5K2u62tqjW/K9TA8TfEW1174Y2mmXhW61q42tOyR4WHa55/wB4qBwPU9KsfCRT/ZHig4ODZqM4/wBmSrum/BrT9Hd77xbrET2cI3FI/wB0p/3mJ6ew61Pq/wAQ9Mt9Nl0XwdYxx2uwxmfZtXBGDtXqT7mua9KpTeHwcW03dvZLVP8ATYWjVonE+F0x4q0z/r5T+Yr6ArwbwwhbxZpoUZP2hP517zXHn38WHp+pNXcK871xdR8J/FRvFEOjXuraTqenJZ3X9nxGaa2lRyVbyxyykHBwOMZ+volFfPGR5dpcus638d7bW5/D9/p2lJoclvBNdQlWY+apy/ZCecITuwMkDOK7jwzrd7rlpeS6jotzo7297LbRx3JyZkQjEo4Hytn9OCRzWzRQByvjPxTrHheawm0zwve6/ZTCQXf2D5poCNuwhP4gcvx7Dn1880LS9W8W/G7TvF9j4SvfCunWcEi3st8nky3rFWABj78kc88DJPAFe20UAfN9l4E0/wAH6xqun+Mvhvq3ieKW8eaw1PSomn3RN0R1VlCke/cnsAa6Hx94XeT9n02Phbwhe6ZLcXyznSIlaeZPnI3ELuOSqqxHbOK9vooAbLGk0TxSqHR1Ksp6EHqK8A8GeCdfX4gaf4W1bTbpPDfhbUrvUbS6lhYQ3AYr5Cq5GGYMS3Hq3pX0DRQB5rf6VqD/ALTGmaolhctp6eHmhe7ELGJZPNkOwvjAbBBxnPNYHhybxD8JNd17S7vwpq2u6PqWoSX1leaPAJ2BfA2uvGOAo5IwQcZBr2migDxL4k+GNQ8San4Z8a3fhG51S1gt3h1LQS/+kIhJKsAuCzAsSQO4A6ZNbHw50Xwy3icX2h/DbVvDbW8DkX+qI0J3nC+WqF2JyrMc9tvvXqtFAGD47t57z4deJLa0hknnm0q6jiiiUs0jGJgFAHJJJwAKpfD3w9ZaT4H0Bzo9vZaiNLtluG+yrHMH8pdwfgNuznOec5rq6KAOA8f2uoad4z8K+LbDSrrVLfSzcwXsFkhknEcyAK6p/FtKnIHPP5Zttc6r4g+N2i6x/wAI9qdhpMOl3EKT3lu0bMxIPzD+DPAAbDHB46V6jRQB5D4M1jVfBt94xXVfCmuz2d74lvbm0nsrFpWkyV/g4O0gKVf7p+bkYqR/Dus3Hw5+IGr32lzQap4kSWWDTkXzJkiWLZEhC5y5AyQPXHWvWqKAPLrvSdSbVvhQ66fdFbCJxdsIWxbf6Kq/vOPk545xzxVLx9b2mtX1+dI8IeI7XxdBuisNWsbZoVkYcIzTghGj4GQ/OOMV69RQB53f6brEnxW8CXl5bSzm1067S+uoYmMSStGo5bGBlgcZ61a1bT72T45eH7+O0nezh0q5jkuViYxoxZcKWxgE+ld1RQB4Tp3gvQfC1zf6X4t+Hd9rUn2qWWz1OwsmuluYnbcqsVPyMudvzYHHWuk1rw5cWGh+E9d8KeF5Lc6FePcyaGjKJRFKrLIFwcFxkNjPqK9SooA8h8a6tq3jG/8ABv8AZPhXWobCz8SWVzdT3lm8Tx7S3Pl/e2AFiznCj5eTnjpLn/ip/jDb2v3rDwtb/aZfRryYERqfdY9ze28V3VUdN0Ww0iW9k0+DypL+5a6uWLs5kkIAJyxOBgAADgY4AoA5X4iaXq5vvD3iXw/ZtqF1oN28klkjBXmhkjKSBM8FgOg71heKdY1T4l6GfCukeFdd02LUJY1vr7VrT7MlvCrhm25J3sduAAMc9a9VooA8t+Jd5dWHxb+HN1YWL380R1Nvs0bAPIvkJv25IBbbuIBIyQB3qzcTX3xC8aeHmh0LU9M0fQ7lr+4udUtTbtLKEKxxxo3zHliScY4+men1rwn/AGv448M+Ivtvk/2D9q/0fyt3n+fGE+9kbduM9Dn2roqAPMPD93qPw81rX9Kv/DurahY32pzajYXumWxuFcS4JjfB+QqeMtgH26ml4Y03xVdaT8SZG02fR9W1SZ3sUfI+YwYXbJ0JHALDgNnBr1yigD591bTVufhdFpHhv4b6jZapGbX+0LmfTdsmVlj3lJMFpiWAORxt3EkYxXonjxb3TvHXhDxHDpd9qNjp32yG7WwgM0sfnRoEYRryRlDnHSu+ooA8h8Y+F7Sbx7b+LNa8IXPiDR9Q06OGa3jgMlzYyqchjEDkgq20gZII/O7Y+D9E1zwf4msfDPhC48Mm/szbRT3kHkNcMQSDsyWChtvUAnJ44r1GigDyqbxTr938NrnQB4L1mPXl057SRHtyLUER7TIsoJDjHIVcsTx712Hw5tbix+Gfh21vYJbe4h0+FJIZkKOjBRkEHkH2rpaKAPPvElrqXhr4mQ+MrHSbvV7C403+z76CxUPPAVk3pIqZBcckEDnjNNhW+8c/EPQ9Z/se/wBL0jw+s8iyalCYJbqeVNgCxn5gqjJJOMnAxXodFAHCfDfT72x1jxs97Zz2yXPiCaaBpomQSoVXDrkfMvHUcUnws0690/8A4TL+0LO4tftPiq+uIPPiZPNibZtdcjlTg4I4OK7yigDzr4tJeRy+EtQs9L1DUo9P1yO5uI9PtmnkWNUbJ2rW5oPjmLxBqgsV8N+I9P3IW87UtLeCLjtuPGT6V1NFAHlmiS6x8L7Ofw3f+HNS13w8ksjadeaXD9pdInYt5MsWd3BJG4ZBB7dk8G6bLffGCfxLpvhS68PaINC+wAXdqlq0s/niTPlA5+7xkj+H6V6pRQB5r4DGq+GfBvia6fQ764uRr13PDZbDHJPG0i/Mm7GRjJHY461leMtSuviRo0WlaN4L1+x1hbiKS31LU7AWyaeVkUtIJC2ScAjC5zXr9FABRRRQBdj/ANWv0FQ3v+pH+9/Spo/9Wv0FQ3v+pH+9/Sk9gKFX7L/Un/e/pVCr9l/qT/vf0qY7lMsUUUVZIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEF9/yDrn/AK5N/I18Mzf8fEv++386+57xS9jOqjLGNgAO/FfI0vwr8atM7DQLjBYkcj1+ta02kZzOOrstK+IUy6ZHpPijT4de02MYjW44lhH+xJ1FM/4VV42/6AFx+Y/xo/4VV42/6AFx+Y/xrW6ZGpbz8MbsmQprtgf+eSOsg/M09PFHgzw/+88NeG5L28X7lzqsm9UPqEHFUf8AhVXjb/oAXH5j/Gj/AIVV42/6AFx+Y/xpadx6mFrviDU/EmpNfaxdNcTHgZ4VB6KOgFZtdf8A8Kq8bf8AQAuPzH+NH/CqvG3/AEALj8x/jTuhWZ6P+zX/AK3XvpF/7NXvVeOfAjwprfhmbWP7c0+Wz88R+Xvx82M56V7HWE/iNY7BRRRUFBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf8AXD/d/rVarN7/AK4f7v8AWq1ZvcouWP8Ay0/D+tW6qWP/AC0/D+tW6tbCYUUUUxDZP9W30NUquyf6tvoapUAFZuteH9N8Q2yw6pbiUJkowJDIfYitKiqjOUJc0XZgeTa58I7qEtLoNytwnUQTYVh7Buh/HFef3mm6noGoKZorixuYzlW5Rh7g/wCFfTNQXlja6hbmC+t47iI9UkUMP1r3MPnVWHu1lzL8TVVGtz511DWtZ8STxDVb6e8KAKit0H/ARxn36muq0L4e6zqEatJELGA/xz8MfovX88V6lpfhnRtFYvpmnxQOTnfyzD6E5IrVrStnVo8mGhyr+umwOp2Oc8PeCdN0CVbhN1xdgY86Tt64Hb9a6OiivCq1qlaXPUd2Ztt7hRRRWQgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAux/6tfoKhvf9SP8Ae/pU0f8Aq1+gqG9/1I/3v6UnsBQq/Zf6k/739KoVfsv9Sf8Ae/pUx3KZYoooqyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorAbxFey6peWmn6LJcpZyiJ5fPVAWKhuAfYipbvXp0unttN0yS/lhAM4WRUEZIyFyepoA2qKxP+EptFhimlimije0e6beuCip1BHrTtK1241CeJZ9Lmtop4/MgnEiyI468kdDgigDZooqk+obNajsSnDwNMXz0wQMfrQByMvjq7sta1B7m1dtNVZFtGKbQ7x4z8/Oc/N2/hqxF8QBJeRW/wBkjJZgpZJ8+Zl9v7vj5sdT+NWdQ8W6G+mXH26CVrcBSUMY+dGJAcDPIyp/KprDWtOv/EQSys8nyGxcsoAI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Bx0HhC4stCv9KsjCkcc4udMlJO5HB3AP64YYz6Grtn4eubePRmkeNpreaSe8YfxyOp3EfifyrpKKACiiigAooooAKKKKAMDQP+Rj8Uf9hCL/ANJIK36wNA/5GPxR/wBhCL/0kgrfoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCG7/AOPKf/rm38qzvCf/ACJ2kf8AXnF/6CK0bv8A48p/+ubfyrO8J/8AInaR/wBecX/oIoA16KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKwvFv/IIg/6/IP8A0YK3awvFv/IIg/6/IP8A0YKAN2iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsDxf8A8g/T/wDsLWX/AKPSt+sDxf8A8g/T/wDsLWX/AKPSgDfooooAy08N6PH4ifXk063XVJI/La7CfOV9M1cv7KPUdPns5iwjnQoxXqAa5G28aa1N8Wp/C0nh2ZNLjt/MXVDnaTtz9MZ4x1rqtYbbot2ftX2T9y3+kD/llx978KAM9/Cli9xPNvlDTPC7fNwDHjGPrgZp0vheyk0uGzDyobe4+0wzKfnjfcW4P4kfQ1whjOmaZfWkmn2sE9xYufO065LQ3OCOXXqrEHrz1NO+ziwuNTgXTINCdNHmcR28pK3wK/e6AZQg+/zelAHpGnadFpsEkUJZhJK8pLerHJoOnRHWBqOW80QeRjPG3dn86w/B+jx2FuLj+wrLTZHhQeZbSbzIMZ54FYt7fazHpnilbWzhltluph57XRVlGxc4XHb60AbOo+EY1s5pNPDy3W0+WrS7MEyiTIOOCCOOKTw74ZuLeT7fq80jXhuWnCmQPjKBMEgAHgdgKy7XX75pmsbWe1sMNK5uJUyH2Kny8n7x3ZJ9BVO117WH8/W47q3AWxtppotmVlJJB28/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YUXbtKZ6nPXPrUE3h3UtUkN9qclvHekwoscOTHHGkm8jJ5JNAFm98W29sFeCIzxPBHMrhsZDyiPH4ZzVjWfEUWizMk0DSKts05ZT6EDH69ax5/BNw2q6nJb3kaWdzAv2aFkz5EokD591LAHH1q4NL129nlvb2SytrtYDDbrEplQgkElt3rjGKALmg61PqwYywQCPYHjntbgTROD2yMYYelbNcz4b8OTabq0+oT21lYGWEQm2sSfLfByHOcc84rpqACiiigAooooAKKKKACiiigAooooAwNA/5GPxR/2EIv8A0kgrfrA0D/kY/FH/AGEIv/SSCt+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAIbv8A48p/+ubfyrO8J/8AInaR/wBecX/oIrRu/wDjyn/65t/Ks7wn/wAidpH/AF5xf+gigDXooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArC8W/8giD/r8g/wDRgrdrC8W/8giD/r8g/wDRgoA3aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKwPF/wDyD9P/AOwtZf8Ao9K36wPF/wDyD9P/AOwtZf8Ao9KAN+iiigDlYPiLoVx8RZfBUbzf2tFEZDmP5DhdxGfXHNbWv3M1l4ev7m2bZNFAzI2M4IHBqRdH01NXbVUsLddQdPLa6EQ8wr6buuKkv7WG90+e2ujiGVCjkHGAevNAHJXnia/Om6WkDrHdm5RL0hegDhSPbdn8jWXY+Ib6W+t0iv8AUZL+4vHjjt5oAts6q53ANjsmT1zxXVJoeiXVxcTQTLI8jQyS7JgcGPG36dBn1xS/2No19pqabDcLIIZ/tMbRzAyRuG3bgR05P60AZGhX9zqOuz+ffar+7u5UCCAC32qcAbsU7xZrElj4gihlvdQtbRbJp3NjAJDkNjLcHAxXTaXb2drDLFYyrIpmZ3w4bDMcn6VHNHpqax9quLiJbkweRseUDKk56GgDm38ZXOj+G7K61CKK5kmRpAWnCO8YPykIoYkkYJwMDuauxeMmmuGZNMkFhHJFHJdGUAqZACMLjkfMAeaG8D6UyLDBdXUKbHhKRz43RsSxjz1ABJ6UzT/BkNtqc7z3czweZG6Wol+VgigKXHqCKAKl14xu30Od9IspJngiLzSvKAYsuyjjHzfdJ7cVtare3Ttpen2k32eXUN2+4ABKKqbjtB7mqU/hHRpv9BjvZoCyFJoYbja0y7iwDDrwSa1dUtNPuoIrW6uhbyxkNBIsoSSNsYBU/wCc0AY82uXnh29k0+58zVCfK8hyQr/O23DHGODz06VHdePDZqiXWnCGcXDwTebcbYo2XH/LTbjJDDGcfWteLwxZrH+/lnuZzMkz3Er5dyhyoJ9B6VHeeFLW78/bdXcAuZWlmWKX5ZNwAIIPGMKKAKE3j22XWmsILV5gsogaRNzYcgeilSvIyd3FKmu6lP8ADe61e4Rba9WCV18o78YJAI49ulX7fwvZ2moGWxubm3i3K8lpFLiNmAwCR15AGexxU8OhWi6HcaSJJJLWXepBfJQMclQe3WgDnbfUrq3sI7mO+1OQtcQxsL+AINrHnbxV9vGqwRi5vNPkis5o3e1mEgYy7OxX+Entya3bzTYL62ign3FIpEkXBxypyKx5PCmj2+8308jWxR4oYZ5sRwh/vBPQmgBreK7mOT7HNpRTU2kVYrb7QCrhgTu344wAc8Vl2vjO5t45pNQtJnnWWZRbq6gACVUAzjnr19K2l8JWhgcteXcl0zrIt40uZUKjAwemMEj8aZF4J0yKMKWuJCGZi8kpLMWcOST/ALwoAjXxZcNIbNdKzqYuGh+zfaBtwqBy2/HTDDt1NSy+I5ZfBx1a3t/s88jCJI5jny3MgTJx1AJzUWu+G5pWa60cbbyS485pDOY2UlAh2sAcAgDIxzV3SfD8Vp4Vj0a9/wBIQxlZcsTuLHJ569+tAFS7bUfDtncXcuqfbVMRIiuFAIfIwVxj5eeRUN3JqmhC1uJdSe9S7k8qWORFGxmUlWTHQAjoc8VdtPD1ilxKLu8m1GXyjCFupd5jQ9QB78c9adb+F7aK4WS4uru7EQYW6XEu5YARg7ffHGTk0Ac7pHijU303SbbUpVGoyXEfmOFAE8LKxDAfUYP0rUj1i+bwjpV6ZM3FxcRpI23qC5B4+lX5PCelyyaRI8b+ZpDbrZw5yOMYPqOelJD4WtYbxJPtF09vHIZIrN5MxRsc8gfiePegDC0/WtRi8SRwazPe2U8twYvKngBtZhyVEbr0OAOvfIruKw7bwtbW9zG32q6ltoXEkNpJJujiYHII78dua3KACiiigAooooAKKKKACiiigAooooAwNA/5GPxR/wBhCL/0kgrfrA0D/kY/FH/YQi/9JIK36ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAhu/+PKf/rm38qzvCf8AyJ2kf9ecX/oIrRu/+PKf/rm38qzvCf8AyJ2kf9ecX/oIoA16KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKwvFv/IIg/wCvyD/0YK3awvFv/IIg/wCvyD/0YKAN2iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsDxf/yD9P8A+wtZf+j0rfrA8X/8g/T/APsLWX/o9KAN+iiigDiLbxP4rl+Lk+gTeHtnh1Lfemp88ttz16HJ4x1710PirP8AwiWqbev2V8flWtSOiyIUdQysMEEZBoA8x8i4tL/ytQsbHSz/AGXK9vJZE4uyUwyMT0K8HHfPtV+20++s/Bctw1hYWrNaxATWG7zDGSN+Sf8AZyeK7yS2hm2ebEj7Pu7lB28Y4/CnhVVAoUBQMAY4xQBgaYvh+HWIV0byzPJASfszZTZxy+OM+meetZMGn3N5421iRdP064gS5iDS3O4yr+6Q/L2rr7axtLLf9ktood5y3loF3H3xUqxojMyqAznLEDrQB5xcPLHq8NxC7b7W/vZgAeoUAkflmtrw1cG+8W3uoby0d5aRyxegj3EL+nP411f2aHdnykzknO0d+v50qQxRkGON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X/GgDdorC/4RSH/oLaz/AODGX/Gj/hFIf+gtrP8A4MZf8aAN2sLxb/yCIP8Ar8g/9GCj/hFIf+gtrP8A4MZf8aT/AIRG0aSNp77VLhY5FkEc19I6kg5GQTg80Ab1FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9k=" + } + }, + "cell_type": "markdown", + "id": "1be801a7", + "metadata": { + "deletable": false + }, + "source": [ + "
\n", + "

HydroVIS Visualization Workflow

\n", + " \n", + "

\n", + " Viz EGIS services (except inundation) are now stored in a PostgreSQL database. While a version of the on-prem loosa viz pipeline does still run on a Windows virtual machine in HydroVIS, we're moving in the direction of a serverless pipeline based on a central RDS database with processing taking place in on-demand lambda functions. In order to maintain the stability of the DB and lambda functions in the pipeline, we have developed a workflow to minimize the need to work directly with either the database or the automated lambda functions. Instead, services can be developed with structured query language (SQL, and more specifically PostgreSQL) inside of a Jupyter notebook like this one. A good tutorial resource can be found here to learn more about writing SQL. \n", + "

\n", + "

\n", + " In other words, this new framework replaces the process.py and product python files of the on-prem loosa library with SQL files that do the same work in less code (a SQL file is just an executable text file that stores SQL code with a .sql extension, similar to a .py file). That said, the entire pipeline is still python-based, and while we're encouraging the use of SQL wherever possible due to the reduction of code and built-in data validation / QA-QC... we do still have the ability to use Python for post-processing as well, and can continue to evaluate that on a service-by-service basis, depending on requirements.\n", + "

\n", + "

\n", + " There are 3 main categories of SQL files in the viz workflow (explained in detail through the rest of this notebook):\n", + "

    \n", + "
  1. Parent SQL Files (pre-processing, e.g. max flows)
  2. \n", + "
  3. Service SQL Files (processing, e.g. loosa product files)
  4. \n", + "
  5. Final SQL Files (post-processing, e.g. hucs hotspots)
  6. \n", + "
\n", + "

\n", + "

Almost all development of vector services can/should be done in these SQL files (primarily #2 Serivce SQL Files and occasionaly #3 Final SQL Files, such as HUC hotspot layers). We're still working out the right approach for raster services, and will be collaborating on that approach in the coming weeks.

\n", + "
![download.jpg](attachment:download.jpg)![download.jpg](attachment:download.jpg)![download.jpg](attachment:download.jpg)" + ] + }, + { + "cell_type": "markdown", + "id": "5c13bfd9", + "metadata": {}, + "source": [ + "
\n", + "

Getting to Know The Database

\n", + "

The VizProcessing PostgreSQL database now serves as our primary source of authoritative and pipeline input data. Similar to the folder structure of the on-prem EGIS pipelines, we now use database schemas to categorize available database tables.

\n", + "
" + ] + }, + { + "attachments": { + "derived_schema.JPG": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzg5AACSkgACAAAAAzg5AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMxIDIwOjE1OjE4ADIwMjI6MDM6MzEgMjA6MTU6MTgAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMxVDIwOjE1OjE4Ljg5MzwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQg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sLmOYkyRCZxGxPU7Adue+cdeaveTH9n8jb+727MZPTGOtAJHNG8k0zT7hGN3DqSQruNxO0yMCwUyrklcAnOMD3FX9V09LXw9qbxzXDubKVSZrh5AfkPO0nAP0Aq7DpNnCJAI2l82Py3M8rSkp/dy5PHPSmx6NZxwSQgTNFLEYmSS4kcbDwQAWOPwxQFinPE+lXmnNDPdTtPK8MqyTM4k/dO+cHhTlB90DqaoWD6jdafZ3sNvqL3cxjmeR7lPJZWILLs8zAXaSB8uenfNdLLbRTyQSSrua3cyRnJG1trLn34Zh+NVk0aySYSJHIuH8wRiZ/LDZznZnb156daLBYx50lax1y9N5dCW1klaALMwWPagYDaDgjPY5FWY1axbTLlru4c3BK3HmysysPKZ8hTwuCv8IHHFahsLZre5hMf7u6LGZdx+bcMH6celPa0gZYA0eRbnMYJPy/KV/HhiOfWgLHNrPcwT6beRrcJBdXKpm4vWZpFcEjMWCg7HggjFdVWbHoGmxtCywOfs7BoQ0zsIsf3QTgD2HHAq9DCsCFULkFi3zuznJOepJ49ugoQIkooopjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALP2ZPVqPsyerVNRWd2ZczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1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Mp8v8H+4KZWZqtgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApk8zwWjvEcNuUcgH19afUN5/x4v8A7y/1qo7ilsVP7Suv+ei/98L/AIUf2ldf89F/74X/AArK1a7ew0W9u4QrSW9vJKoYcEqpIz7cVm+GvFNhrunWCtqFi2qzWUVzcWcMyl49yKx+TJYD5h19RXRaPYw1On/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACsr+1tO+wm9+32v2VZPLM/nLsD79m3dnGd3y49eOtMvNd0nTr6Cy1DVLK1urjHkwT3CJJLk4G1ScnJ4470WiF2bH9pXX/PRf++F/wo/tK6/56L/3wv8AhXGeI/FepeGoJ9SvNEjbRreZI5Zxe/v9rMq+YsQQqRluhcH2Fb+p6hBpOk3eo3Z2wWkLzSH/AGVBJ/lRaPYNTU/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuU03VdXuE8PPfPpds9/bvLd2zMyzFtgZVhGfm25+bP1GKvxeJNDnvorKDWdPku5wTFAl0hkkAzkqoOT91unofSlaPYNTc/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuV0zxtoet6zf6Rpuo2xvrSTygjSo3mnYGLIobLKucHpggjtVjwprcmv+HIL25jSK7Vnguoo87UmjYo4GecblOM9sUWiGp0X9pXX/PRf++F/wo/tK6/56L/3wv8AhVWinyrsF2Wv7Suv+ei/98L/AIUf2ldf89F/74X/AAqrRRyrsF2Wv7Suv+ei/wDfC/4Uf2ldf89F/wC+F/wqrRRyrsF2Wv7Suv8Anov/AHwv+FH9pXX/AD0X/vhf8Kq0Ucq7Bdlr+0rr/nov/fC/4Uf2ldf89F/74X/CqtFHKuwXZa/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACqtFHKuwXZa/tK6/56L/AN8L/hR/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fZo+1XH/AD3l/wC+zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQ1GlzBJcSQJNG00YBeMOCyZ6ZHUUaBZFr7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q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" + }, + "ff45029f-5975-4100-ad2f-678565db8a6d.jpg": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzg5AACSkgACAAAAAzg5AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMxIDIwOjE1OjE4ADIwMjI6MDM6MzEgMjA6MTU6MTgAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMxVDIwOjE1OjE4Ljg5MzwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQg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sLmOYkyRCZxGxPU7Adue+cdeaveTH9n8jb+727MZPTGOtAJHNG8k0zT7hGN3DqSQruNxO0yMCwUyrklcAnOMD3FX9V09LXw9qbxzXDubKVSZrh5AfkPO0nAP0Aq7DpNnCJAI2l82Py3M8rSkp/dy5PHPSmx6NZxwSQgTNFLEYmSS4kcbDwQAWOPwxQFinPE+lXmnNDPdTtPK8MqyTM4k/dO+cHhTlB90DqaoWD6jdafZ3sNvqL3cxjmeR7lPJZWILLs8zAXaSB8uenfNdLLbRTyQSSrua3cyRnJG1trLn34Zh+NVk0aySYSJHIuH8wRiZ/LDZznZnb156daLBYx50lax1y9N5dCW1klaALMwWPagYDaDgjPY5FWY1axbTLlru4c3BK3HmysysPKZ8hTwuCv8IHHFahsLZre5hMf7u6LGZdx+bcMH6celPa0gZYA0eRbnMYJPy/KV/HhiOfWgLHNrPcwT6beRrcJBdXKpm4vWZpFcEjMWCg7HggjFdVWbHoGmxtCywOfs7BoQ0zsIsf3QTgD2HHAq9DCsCFULkFi3zuznJOepJ49ugoQIkooopjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALP2ZPVqPsyerVNRWd2ZczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1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Mp8v8H+4KZWZqtgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApk8zwWjvEcNuUcgH19afUN5/x4v8A7y/1qo7ilsVP7Suv+ei/98L/AIUf2ldf89F/74X/AArK1a7ew0W9u4QrSW9vJKoYcEqpIz7cVm+GvFNhrunWCtqFi2qzWUVzcWcMyl49yKx+TJYD5h19RXRaPYw1On/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACsr+1tO+wm9+32v2VZPLM/nLsD79m3dnGd3y49eOtMvNd0nTr6Cy1DVLK1urjHkwT3CJJLk4G1ScnJ4470WiF2bH9pXX/PRf++F/wo/tK6/56L/3wv8AhXGeI/FepeGoJ9SvNEjbRreZI5Zxe/v9rMq+YsQQqRluhcH2Fb+p6hBpOk3eo3Z2wWkLzSH/AGVBJ/lRaPYNTU/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuU03VdXuE8PPfPpds9/bvLd2zMyzFtgZVhGfm25+bP1GKvxeJNDnvorKDWdPku5wTFAl0hkkAzkqoOT91unofSlaPYNTc/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuV0zxtoet6zf6Rpuo2xvrSTygjSo3mnYGLIobLKucHpggjtVjwprcmv+HIL25jSK7Vnguoo87UmjYo4GecblOM9sUWiGp0X9pXX/PRf++F/wo/tK6/56L/3wv8AhVWinyrsF2Wv7Suv+ei/98L/AIUf2ldf89F/74X/AAqrRRyrsF2Wv7Suv+ei/wDfC/4Uf2ldf89F/wC+F/wqrRRyrsF2Wv7Suv8Anov/AHwv+FH9pXX/AD0X/vhf8Kq0Ucq7Bdlr+0rr/nov/fC/4Uf2ldf89F/74X/CqtFHKuwXZa/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACqtFHKuwXZa/tK6/56L/AN8L/hR/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fZo+1XH/AD3l/wC+zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQ1GlzBJcSQJNG00YBeMOCyZ6ZHUUaBZFr7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q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" + } + }, + "cell_type": "markdown", + "id": "c856a244", + "metadata": {}, + "source": [ + "![download.jpg](attachment:ff45029f-5975-4100-ad2f-678565db8a6d.jpg)![derived_schema.JPG](attachment:derived_schema.JPG)" + ] + }, + { + "attachments": { + "ingest_schema.JPG": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzE4AACSkgACAAAAAzE4AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMwIDEzOjQ0OjM3ADIwMjI6MDM6MzAgMTM6NDQ6MzcAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMwVDEzOjQ0OjM3LjE3ODwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQg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FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEV1aw3luYblN6Eg4yQQQcggjkH3FVho1j5MsUkckyzKFczTPIxAOQAWJI554781eopqTWiYrIowaNYwXP2hYmeby2iMksryMUbaSpLE5Hyjr/AFNJDoljBG0caTeUyGPy2uJGRVIwQFLYHHp0q/RT55dwsiCSxt5o4Ekjytu6vENx+Vl6H3/GnXNrDeW7QXMYkjbqD+hB7H3FS0UrsChDotjDdrdLE7zopQSSzPI209RlicjimR+H9NiaFlgc/Z2DQhpnYREf3QThR7DjgVpUU+eXcLIoPolhJ54aJ8Tv5jqJnA35B3AZwrZAORg0+10mzs7prmCNvPdNjSvKzsw9yxOegq5RRzyta4WRUu9Mtr591x52duwiOd0DD0IUgH8abNpFnPKspjeKRUEYaCV4jtHRfkIyB2HartFHNJdQsio2l2bWUdr5OyGIhoxGxQofUMCCDyec5OT61FFoWnRLOEgY/aChmZpXZnKnKkknOQa0KKOeXcLIrXenW180bXCNvizskjkaN1z1AZSDg9x7UyTSbSWKJHWXMOfLkE7iQZ6/ODu5+tXKKOaS6hZFaLT7eBY1i81QjmT/AFzksxGMsc/N/wACz29Ks0UUm29wCiiikMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAv0UUV7JyBRT/Kf+6aPKf8Aumq5ZdhXQyin+U/900eU/wDdNHLLsF0Mop/lP/dNHlP/AHTRyy7BdDKKf5T/AN00eU/900csuwXQyin+U/8AdNHlP/dNHLLsF0Mop/lP/dNHlP8A3TRyy7Bd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82D/AJ+I/wBf8KPNg/5+I/1/wo1AWik82D/n4j/X/CjzYP8An4j/AF/wo1AWpIf9ctRebB/z8R/r/hUkEkTTqFmRj2AzSewLckooorwjtCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCC+/5B8n1X+dY1bN9/yD5Pqv8AOuU8RrdP4V1VdOMgvGsphAYiQ4k2HbtI5znGMV7WD/gnHV+M0qZNNFbW8k9xIkUMSl5JJGCqigZJJPQAd683m8VxarLK2iay1zHF4VuZne3nJVZx5eCSOBIMnj7y7hnGRlXku9ISRINT1GZr3wvc30r3F48hE6eXiRATiM/vW4TaOBxwK6uYzsehxX1pcTeVBcwyyeUs2xJAT5bZCvgfwnBwehwakaeJJo4XlRZZASiFgGfHXA74yK8/0eGyT4mW1zf3s6Xd5odo9usuoSqLiQGXeAhfD4XaxXBAJLYySTp69FLeeJNVt1eSJ18Pn7M8SguC8j+YACCD9yLt6UXA7CivKp/El/a6NoUGk+J7KOzksDINTvr6CBJJVIHk7/s7odufugK/+1wa2v8AhINVk8aRaXJqaJp02wSXttGjLFdGHP2RWZSMEYlDMCeQv8QFHMgsdw88Uc0cTyoskufLQsAXxycDvin15pojonhHw8ItUfUbu21mKIq5j3Wz/MkkWEVcERs5IbJ5PbAr0umncAooopiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKs6f8A8f8AF9f6VWqzp/8Ax/xfX+lTL4WNbmvRRRXzZ6AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAQX3/ACD5Pqv86xq6HPBGAQeoIzSYX+4n/fAr0KGKjShytGE6blK5z9FdBhf7if8AfAowv9xP++BW316HZkexkc/UD2VvJfw3rx/6TCjxpICQQrEFh7glVPPpXT4X+4n/AHwKML/cT/vgUfXodmHsZHP0V0GF/uJ/3wKML/cT/vgUfXodmHsZHMT2Vvc3VtcTx75LV2eEknCMVKk46Z2swz6E+tT10GF/uJ/3wKML/cT/AL4FH16HZh7GXc5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP8AvgUYX+4n/fAo+vQ7MPYyOforoML/AHE/74FGF/uJ/wB8Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP8AvgUYX+4n/fAo+vQ7MPYyOforoML/AHE/74FGF/uJ/wB8Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+rOn/8f8X1/pWvhf7if98ClBCnKqgPqFFJ42DVrMaoyEoooryjpCioPt1v/wA9P/HTR9ut/wDnp/46ax+sUf5l96L5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt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pNuYNPgWGMtuYAklj6knkn61niMTTqxkle7d9rffq/kVTpyi0W6KKK843CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z" + } + }, + "cell_type": "markdown", + "id": "09ceb5f7", + "metadata": {}, + "source": [ + "![ingest_schema.JPG](attachment:ingest_schema.JPG)" + ] + }, + { + "cell_type": "markdown", + "id": "a073a2a5", + "metadata": {}, + "source": [ + "
\n", + "

Several other schemas exist within the database:\n", + "

    \n", + "
  1. admin - this schema stores service metadata, as well as logs and tracking information about the pipelines.
  2. \n", + "
  3. cache - this holds the max flows tables and some interim tables used by some services.
  4. \n", + "
  5. fim - this schema stores data specific to FIM.
  6. \n", + "
  7. publish - this schema is where the attribute tables of the services themselves are written to, as a result of the SQL file scripts that will be explained in this notebook.
  8. \n", + "
  9. dev - this schema will be used for development.
  10. \n", + "
\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "dd0bac23", + "metadata": {}, + "source": [ + "
\n", + "

1. Parent SQL Files

\n", + "

These SQL files are used for pre processing NWM data. In most cases, the SQL code creates a table of maximum streamflows for a given forecast. Normally these files will not need to be altered or touched, unless a new data pre-processing needs to be done.

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "ae1327e4", + "metadata": {}, + "source": [ + "An example of some SQL that calculates the maximum streamflow for each feature id in the short range configuration (this is equivelant to the max_flows pipelines on-prem). \n", + "For development purposes, a pandas dataframe is returned by the run_sql_in_db function \n", + "and respresents what the resulting DB output would look like." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2d26ebf", + "metadata": {}, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import *\n", + "sql = \"\"\"\n", + "SELECT\n", + " forecasts.feature_id,\n", + " round((max(forecasts.streamflow) * 35.315)::numeric, 2) AS maxflow_18hour\n", + "FROM ingest.nwm_channel_rt_srf forecasts\n", + "GROUP BY forecasts.feature_id;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "a15c905c", + "metadata": {}, + "source": [ + "
\n", + "

*The actual automated parent SQL file that creates the srf max flows table in the database uses a SELECT ... INTO statement to write the output of the above query into a new table in the database on each run (as opposed to just returning the results of the query to the client, like we're doing in this example). We're leaving the INTO part out of this notebook for now, as to not write any data as part of this tutorial, but that's how we're able to query this same data from cache.max_flows_srf in the following steps.\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "5661fe7a", + "metadata": {}, + "source": [ + "
\n", + "

2. Service SQL Files

\n", + "

The service SQL files do the main data transformations and processing to create the actual attribute tables for the for map services (akin to the product files on-prem, although now we have one SQL file per service). The results of running this SQL is a table that is used as a data source for the pro project layer, just like the feature classes created by our on-prem process.py files. There are many SQL statements that can be used to get the desired table, including join, where, group by, etc. See the PostgreSQL tutorial mentioned in the intro for more help on these statements and queries. In the examples below I will slowly build the SQL code for the srf max high flow magnitude service, highlighting different SQL statements that will probably be used for most services.

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "c713eeda", + "metadata": {}, + "source": [ + "An example of selecting fields from the table we just \"created\" in the last step." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a2ec878", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " cache.max_flows_srf.feature_id,\n", + " cache.max_flows_srf.maxflow_18hour\n", + "FROM cache.max_flows_srf\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "029f2619", + "metadata": {}, + "source": [ + "An example of using AS to create aliases for table names and fields (AS is optional)\n", + "Notice that when I select the fields now, I am using the Alias from when I imported the table. Aliases are useful to help write clean and readable SQL code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d7cc20ca", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow\n", + "FROM cache.max_flows_srf AS maxflows\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "34ff8bc6", + "metadata": {}, + "source": [ + "An example of using JOIN to join two tables together, selecing fields from both tables.\n", + "Notice that on the join we first indicate what table we want to join to, and then which field to use as the joining key. There are multiple types of joins in SQL (inner, left outer, right outer, etc.), but we can primarily get away with the simple JOIN statement (short for inner join) which only returns rows in which the join key is present in both tables." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07566a7a", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "3fe88fa0", + "metadata": {}, + "source": [ + "An example of using WHERE to select specific data (WHERE is basically a way to filter your results)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab03df6b", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "WHERE thresholds.high_water_threshold > 0 AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "9884a473", + "metadata": {}, + "source": [ + "An example of using CASE to calculate a field using conditional statements. This is basically how you do an IF statement in SQL.\n", + "In addition, you can cast a value to a specific data type (like TEXT) with the \"::\" syntax, as shown below. This is needed in the example below because one of our recur_cat categories is \">50\", so every numeric value needs to be cast as text so that it doesn't throw a data type error (this is one example of SQL being a little more stringent than Python, but ultimately in a good way that forces an extra layer of validation)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a86c264", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "WHERE thresholds.high_water_threshold > 0 AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "6c9881d8", + "metadata": { + "tags": [] + }, + "source": [ + "
\n", + "

Adding Geometry

\n", + "

\n", + " Now that we have our main data table, we need to add the spatial component in order for ArcGIS Server to render directly from the output of our SQL (this also allows us to use geopandas to do some mapping in this notebook). We can do this by joining to the derived.channels table and adding the geometry column to our select statement, along with the other fields that we want. This step should be pretty similar for all the services.\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "c42f83a3", + "metadata": {}, + "source": [ + "This example also uses a temporary table by using the WITH statement. Sometimes it's nice to keep individual chunks of SQL / JOINs seperate (instead of one long nasty SQL statement that's tough to troubleshoot), so instead of saving an intermediate table somewhere in the database and referencing it, we can just create a temporary sub-query using WITH and use that in the primary SELECT statement. In this case, the sub-query is the high flow magnitude query that we just ran in the last step, and we're joining that to the channels table so that the channels table gets to rightfully be the authoritative source for the channel data." + ] + }, + { + "cell_type": "markdown", + "id": "b220c4b1", + "metadata": {}, + "source": [ + "You'll notice below that we don't currently have a reference time column anywhere, and that's because we automatically manage reference_time within the database infastructure. We also need an oid column for ArcGIS Server, so when developing, we can just manually add those columns by adding the following lines to the SELECT statement:\n", + "\n", + "
    \n", + "
  • '2022-03-25 00:00:00 UTC' as ref_time
  • \n", + "
  • row_number() over (order by channels.feature_id) as oid
  • \n", + "
\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d540683e", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "WITH high_flow_mag AS (\n", + " SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + " FROM cache.max_flows_srf AS maxflows\n", + " JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + " WHERE thresholds.high_water_threshold > 0::double precision AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + ")\n", + "SELECT \n", + " channels.feature_id,\n", + " channels.feature_id::TEXT AS feature_id_str,\n", + " channels.strm_order,\n", + " channels.name,\n", + " channels.huc6,\n", + " channels.nwm_vers,\n", + " high_flow_mag.max_flow,\n", + " high_flow_mag.recur_cat,\n", + " high_flow_mag.high_water_threshold,\n", + " high_flow_mag.flow_2yr,\n", + " high_flow_mag.flow_5yr,\n", + " high_flow_mag.flow_10yr,\n", + " high_flow_mag.flow_25yr,\n", + " high_flow_mag.flow_50yr,\n", + " channels.geom,\n", + " to_char(now()::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') AS update_time,\n", + " '2022-03-25 00:00:00 UTC' as ref_time,\n", + " row_number() over (order by channels.feature_id) as oid\n", + "FROM derived.channels_conus channels\n", + "JOIN high_flow_mag ON channels.feature_id = high_flow_mag.feature_id;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "c8b73323", + "metadata": {}, + "source": [ + "With the geom column now present, we can return a geodataframe from the run_sql_in_db helper function, and map the output using the map_column helper function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46c451ad", + "metadata": {}, + "outputs": [], + "source": [ + "gdf = run_sql_in_db(sql, return_geodataframe=True)\n", + "sub = gdf[gdf['strm_order'] >= 4]\n", + "column = \"recur_cat\"\n", + "colormap = {\n", + " '2': '#cc33ff',\n", + " '4': '#e600a9',\n", + " '10': '#ff0000',\n", + " '20': '#ff9900',\n", + " '50': '#ffff00',\n", + " '>50': '#72afe8'\n", + "}\n", + "title = \"Short Range Max High Flow Magnitude\"\n", + "\n", + "ax = map_column(gdf, column, colormap, title=title)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95535f43", + "metadata": {}, + "outputs": [], + "source": [ + "sub = gdf[gdf['strm_order'] > 4]\n", + "\n", + "ax = map_column(sub, column, colormap, title=title)" + ] + }, + { + "cell_type": "markdown", + "id": "a595b1a9", + "metadata": {}, + "source": [ + " Once you're ready to map your output in Arc Pro. Just use the save_gdf_shapefile_to_s3 helper function to save and upload a shapefile that you can download and use in your pro project. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1f4add1", + "metadata": {}, + "outputs": [], + "source": [ + "save_gdf_shapefile_to_s3(gdf, \"tyler_test\")" + ] + }, + { + "cell_type": "markdown", + "id": "aadaf7de", + "metadata": {}, + "source": [ + "
\n", + "

3. Final SQL Files

\n", + "

The Final SQL files are for processing / summary that happens after the main service table is created. HUC Hotspots are the only current example of this type of processing. Below is a theoretical example of a HUC Hotspot layer for the SRF Max High Flow Magnitude Service table that resides in the database (created using the same SQL that we just wrote above).

\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0bf40cff", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "WITH srf_max_high_flow_magnitude AS (\n", + " SELECT maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + " FROM cache.max_flows_srf maxflows\n", + " JOIN derived.recurrence_flows_conus thresholds ON maxflows.feature_id = thresholds.feature_id\n", + " WHERE thresholds.high_water_threshold > 0::double precision AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + " )\n", + "SELECT\n", + " hucs.huc10,\n", + " TO_CHAR(hucs.huc10, 'fm0000000000') AS huc10_str,\n", + " hucs.total_nwm_features,\n", + " count(hfm.feature_id) AS hfm_features,\n", + " count(hfm.feature_id)::numeric / hucs.total_nwm_features AS high_water_features_percent,\n", + " sum(CASE WHEN recur_cat = '2' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_2,\n", + " sum(CASE WHEN recur_cat = '4' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_4,\n", + " sum(CASE WHEN recur_cat = '10' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_10,\n", + " sum(CASE WHEN recur_cat = '20' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_20,\n", + " sum(CASE WHEN recur_cat = '50' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_50,\n", + " sum(CASE WHEN recur_cat = '>50' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_morethan50,\n", + " hucs.geom\n", + "FROM derived.huc10s_conus AS hucs\n", + "JOIN derived.featureid_huc_crosswalk AS crosswalk ON hucs.huc10 = crosswalk.huc10\n", + "JOIN srf_max_high_flow_magnitude AS hfm ON crosswalk.feature_id = hfm.feature_id\n", + "GROUP BY hucs.huc10, hucs.total_nwm_features, hucs.geom\n", + "order by count(hfm.feature_id) DESC\n", + "\"\"\"\n", + "\n", + "gdf = run_sql_in_db(sql, return_geodataframe=True)" + ] + }, + { + "cell_type": "markdown", + "id": "6ea8a1e6", + "metadata": {}, + "source": [ + "We can map polygons as well with the map_column helper function, as long as geom column is present (currently available in the db for huc10 and huc8)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e2db58d", + "metadata": {}, + "outputs": [], + "source": [ + "column = \"high_water_features_percent\"\n", + "map_column(gdf, column, categorical=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40ab019e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "65b5a02f", + "metadata": {}, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b2c256d", + "metadata": {}, + "outputs": [], + "source": [ + "from sqlalchemy_schemadisplay import create_schema_graph\n", + "from sqlalchemy import MetaData\n", + "\n", + "graph = create_schema_graph(metadata=MetaData('postgres://user:pwd@host/database'))\n", + "graph.write_png('my_erd.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a84834f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/11. RASTER PRODUCT DEV WORKFLOW-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/11. RASTER PRODUCT DEV WORKFLOW-checkpoint.ipynb new file mode 100644 index 00000000..6d241a08 --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/11. RASTER PRODUCT DEV WORKFLOW-checkpoint.ipynb @@ -0,0 +1,228 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4f3d72f8-df5f-4335-b81a-9a3996e27348", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 1: Create the raster product processing file in the raster_product_development/products folder

" + ] + }, + { + "cell_type": "markdown", + "id": "64369f01-e501-4a87-8d73-b94cb03432aa", + "metadata": {}, + "source": [ + "

Step 2: Tweak the following variable per the service you are developing

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07050a1f-6b4a-499c-9086-eae485ae463b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "SERVICE_NAME = 'mrf_gfs_10day_snow_water_equivalent_change'\n", + "PRODUCT_FILE_NAME = SERVICE_NAME # The name of the file in the raster_product_development/products folder. It's not always the same as the service name.\n", + "FILE_FORMAT = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.land_1.f003.conus.nc'\n", + "FILE_STEP = '24H'\n", + "FILE_WINDOW = 'P10D'\n", + "REFERENCE_TIME = '2024-06-13 00:00:00'\n", + "RUN_OPTIMIZE_RASTERS_STEP = True # Set this to true when you are ready to create Pro Project for service" + ] + }, + { + "cell_type": "markdown", + "id": "26bf0bfe-a3ee-4a73-81a3-9bff14338dd2", + "metadata": {}, + "source": [ + "

Step 3: Click the \"Restart Kernel and Run All Cells...\" icon above (i.e. the double play icon) to test/execute your script

" + ] + }, + { + "cell_type": "markdown", + "id": "3937b328-6575-4bc7-8a07-b4cc4d6f0e96", + "metadata": {}, + "source": [ + "When processed successfully, you will see \"ALL DONE!\" printed below and your raster outputs will be found at s3://hydrovis-ti-fim-us-east-1/processing_outputs//YYYYMMDD/HH/workspace/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d4967e1-755b-47e9-be49-4d18f22a05dd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "REFERENCE_TIME_DATE = ''.join(REFERENCE_TIME.split(' ')[0].split('-'))\n", + "REFERENCE_TIME_HOUR = REFERENCE_TIME.split(' ')[1].split(':')[0]\n", + "\n", + "# The name of the product file as found in the raster_product_development/products folder (often the same as the product/service name)\n", + "RASTER_PROCESSING_EVENT_METADATA = {\n", + " \"reference_time\": REFERENCE_TIME,\n", + " \"product\": {\n", + " \"product\": SERVICE_NAME,\n", + " \"raster_input_files\": {\n", + " \"file_format\": FILE_FORMAT,\n", + " \"file_step\": FILE_STEP,\n", + " \"file_window\": FILE_WINDOW,\n", + " \"product_file\": PRODUCT_FILE_NAME,\n", + " \"bucket\": \"nws-shared-data-226711853580-us-east-1\"\n", + " },\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"hydrovis-ti-fim-us-east-1\",\n", + " \"output_raster_workspaces\": [\n", + " {\n", + " f\"{SERVICE_NAME}\": f\"processing_outputs/{SERVICE_NAME}/{REFERENCE_TIME_DATE}/{REFERENCE_TIME_HOUR}/workspace\"\n", + " }\n", + " ]\n", + " }\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ea46c3f-5279-4f2d-9b93-08428f1fd0d0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "!pip install isodate\n", + "from raster_product_development.lambda_function import lambda_handler as run_processing\n", + "\n", + "print('Running processing...')\n", + "output = run_processing(RASTER_PROCESSING_EVENT_METADATA, None)\n", + "print('... Done!')\n", + "if RUN_OPTIMIZE_RASTERS_STEP:\n", + " import boto3\n", + " import botocore\n", + " import json\n", + " boto_config = botocore.client.Config(max_pool_connections=1, connect_timeout=60, read_timeout=600)\n", + " lambda_client = boto3.client('lambda', config=boto_config)\n", + " print('Optimizing output rasters...')\n", + " for output_raster in output['output_rasters']['output_rasters']:\n", + " lambda_client.invoke(\n", + " FunctionName='hv-vpp-ti-viz-optimize-rasters',\n", + " InvocationType='Event',\n", + " Payload=json.dumps({\n", + " \"output_raster\": output_raster,\n", + " \"output_bucket\": output['output_rasters']['output_bucket']\n", + " })\n", + " )\n", + " print('... Done!')\n", + "print('ALL DONE!')" + ] + }, + { + "cell_type": "markdown", + "id": "e70f2d13-7e65-4a35-b572-79b32637ed5c", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 4: Create a Pro Projecto to symbolize the newly created raster data

" + ] + }, + { + "cell_type": "markdown", + "id": "e756266a-a5b2-48fb-bc8a-241d19768cc1", + "metadata": {}, + "source": [ + "Instructions on connecting your ArcGIS Pro to the raster data in S3 data can be found here: https://docs.google.com/presentation/d/1i7-QZhW7DUg3AV9davUy_m4pRutH0nD1iWCMILBm31I/edit#slide=id.p" + ] + }, + { + "cell_type": "markdown", + "id": "692671de-829f-44e5-9e71-4467cf1b5f12", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 5: Save .mapx file of your ArcGIS Pro Project and also create service configuration .yml file

" + ] + }, + { + "cell_type": "markdown", + "id": "f163ad73-e9aa-4e58-8ce8-9517e63740f0", + "metadata": {}, + "source": [ + "Commit these two files to your branch of the repo by creating a subfolder for your service here: https://github.com/NOAA-OWP/hydrovis/tree/ti/Core/LAMBDA/viz_functions/viz_publish_service/services" + ] + }, + { + "cell_type": "markdown", + "id": "09cb2e12-fdbf-4fde-b4ef-5996da7d395a", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 6: Commit your product script to your branch of the repo

" + ] + }, + { + "cell_type": "markdown", + "id": "43f39478-72ac-422c-94ad-7da5e35ac612", + "metadata": {}, + "source": [ + "That script should go here: https://github.com/NOAA-OWP/hydrovis/tree/ti/Core/LAMBDA/viz_functions/image_based/viz_raster_processing/products" + ] + }, + { + "cell_type": "markdown", + "id": "1db967d3-977f-49f7-922b-a9be6234c14c", + "metadata": {}, + "source": [ + "

Step 7: Create a pipeilne product_config .yml file and commit it to your branch of the repo

" + ] + }, + { + "cell_type": "markdown", + "id": "91081787-99df-40fc-bada-8c7b8cfa60d5", + "metadata": {}, + "source": [ + "That script should go here: https://github.com/NOAA-OWP/hydrovis/tree/ti/Core/LAMBDA/viz_functions/viz_initialize_pipeline/product_configs" + ] + }, + { + "cell_type": "markdown", + "id": "325e8340-29ba-4946-a59b-976257076551", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 8: Push your branch of the repo and create/submit a Pull Request

" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/12. Public FIM Domain Update-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/12. Public FIM Domain Update-checkpoint.ipynb new file mode 100644 index 00000000..02611fa0 --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/12. Public FIM Domain Update-checkpoint.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "850b3abf-a9f1-4e19-86cf-facfd80f7910", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "LAST_PUBLIC_FIM_PERCENT = 10\n", + "NEW_PUBLIC_FIM_PERCENT = 30\n", + "NOAA_GEOPLATFORM_SUBLAYER_INDEX = 9" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "edaea545-4504-4f71-9d83-2576d59c3f34", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "# Adjust the get line with geometry as needed\n", + "r = requests.get('https://services2.arcgis.com/xxxxxx/arcgis/rest/services/Updated_FIM_Implementation/FeatureServer/'\n", + " f'{NOAA_GEOPLATFORM_SUBLAYER_INDEX}/query?')\n", + "geojson = r.json()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c62f2d71-e12c-44d4-8774-061e8dee79e9", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "from shapely.geometry import shape\n", + "features = [f for f in geojson['features']]\n", + "geom = [shape(f['geometry']) for f in features]\n", + "df = gpd.GeoDataFrame({'geom': geom})\n", + "df = df.set_geometry('geom')\n", + "df = df.set_crs('EPSG:3857')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57b0734e-d48a-4441-aa56-9d5eb023af5f", + "metadata": {}, + "outputs": [], + "source": [ + "df.to_postgis(f'public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain', get_db_engine('viz'), schema='derived', if_exists='append')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "052af1b7-3fec-464d-b062-1183590715a4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "sys.path.append(os.path.dirname(os.path.abspath('')))\n", + "from helper_functions.shared_functions import execute_sql, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce4fc53e-1501-489c-9efd-0e9e19ba5727", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "WITH unioned AS (\n", + " SELECT geom FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain\n", + " UNION\n", + " SELECT geom FROM derived.public_fim{LAST_PUBLIC_FIM_PERCENT}_domain\n", + ")\n", + "\n", + "SELECT\n", + "1 as oid,\n", + "ST_Buffer(ST_Union(ST_Buffer(geom, 1)), -1) as geom\n", + "INTO derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain\n", + "FROM unioned\n", + "GROUP BY oid;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f008b27-5499-4adf-8cd5-844bda366387", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql_to_dataframe(f\"SELECT ST_NPoints(geom) FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f35cad99-0174-460e-873d-6a30cc38a8a5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_ondeck;\n", + "SELECT *\n", + "INTO derived.public_fim_domain_ondeck\n", + "FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain RENAME TO public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bb797856-e530-410e-9b83-ceb182b99ab9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import execute_sql, move_data_from_viz_to_egis, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17b174ce-c4ea-4703-9d80-d3946f5a2eac", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "move_data_from_viz_to_egis('derived.public_fim_domain', 'reference.public_fim_domain_ondeck')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b288760-01c8-47ed-8524-bae3e746994d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain RENAME TO public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "''', 'egis')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f909d2ea-7c64-4ee3-a4af-c8c4fef24a41", + "metadata": {}, + "outputs": [], + "source": [ + "execute_sql('''\n", + " UPDATE derived.channels_conus c\n", + " SET public_fim_domain = ST_Intersects(c.geom, f.geom)\n", + " FROM derived.public_fim_domain f;\n", + "''')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/2. Service Development Template-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/2. Service Development Template-checkpoint.ipynb new file mode 100644 index 00000000..4754c519 --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/2. Service Development Template-checkpoint.ipynb @@ -0,0 +1,613 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c43bda9f", + "metadata": { + "deletable": false, + "editable": false + }, + "source": [ + "

Visualization Service Development

\n", + "\n", + "This is a jupyter notebook for developing visualization services. Create a file like this for each service that is being developed. This is where we will track progress as well as be able to debug code. Please refer to the \"Viz DB Service Development Tutorial\" notebook for practicing and learning how to interact with data stored in the viz database. To ease the work of development, helper functions have also been created to run SQL code, create maps, and upload shapefiles to an AWS S3 storage bucket. While these function should help in most cases, you can run other python code inside this notebook as well to do more complex operations.\n", + "\n", + "In order to enable a few tools/extensions that we want to use for this notebook please do the following:\n", + "
    \n", + "
  1. Run \"!pip install nodejs geopandas contextily\" on the next cell
  2. \n", + "
  3. Click on the \"Commands\" tab on the left or press (Ctrl+Shift+C)
  4. \n", + "
  5. Click on \"Enable Extension Manager\"
  6. \n", + "
  7. Click on \"Enable\"
  8. \n", + "
  9. Click on the \"Extension Manager\" tab on the left (looks like a puzzle piece)
  10. \n", + "
  11. Install the \"jupyter-widgets/jupyterlab-manager\" extension.
  12. \n", + "
  13. You will be prompted to rebuild the notebook. Click on \"Rebuild\". This may take a bit of time but you will be prompted when it finishes.
  14. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15c75a4e", + "metadata": { + "deletable": false, + "editable": false + }, + "outputs": [], + "source": [ + "!pip install nodejs geopandas contextily" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b4d70e51", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7e451b667f194817854241dfa80ec049", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Update service metadata in first notebook cell', description_tooltip='update…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2487da941557442297dcd771ffe54005", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Have Corey or Tyler add any new dependent datasets to the DB', description_t…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f3b3a9f56c404f9c86ecf51fc394b881", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Create SQL for service data', description_tooltip='create_sql')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "34ddd325f5ca4485b9b5516f395ec4fb", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Check SQL output for accuracy', description_tooltip='check_sql')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1fe3c2eb1d3b403d92937dd6bf29fee6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Update SQL to save a table in the dev schema', description_tooltip='save_sql…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b14cdd43b963423d9c4404f7748fb7cd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Create a pro project for the new service', description_tooltip='create_pro_p…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d0f1619f789243e99f0b9f6ece071597", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Setup a code review meeting with the team to go over the service', descript…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "35215cd4e7444cd3accfdd7505088b61", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Complete code review', description_tooltip='finished_code_review')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "470d2107c3d140f6afa171587967d08d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Implement any service changes from the code review', description_tooltip='i…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "aafc93e374884a7e9e54dbe9a0a73b26", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Add notebook to repo', description_tooltip='add_notebook_to_repo')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3f63efaa4298443db84ee01078939be8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Admin Task - Add SQL to repo (Adding INTO statements)', description_tooltip…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "01f7b248f0214a70b44ac802598480c0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Admin Task - Add pro poject to repo (Updating to use Query Layer)', descrip…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "bd72ff9a6ddd4cf3a058823f2dece7f9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Admin Task - Implement service into the TI environment', description_toolti…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from helper_functions.shared_functions import *\n", + "import pandas as pd\n", + "\n", + "service_name = \"srf_max_high_water_arrival_time\"\n", + "folder = \"nwm\"\n", + "configuration = \"short_range\"\n", + "summary = \"Short-Range Maximum High Flow Magnitude Forecast\"\n", + "description = \"\"\"\n", + " Depicts expected high flow magnitudes derived from the operational National Water Model (NWM) (v2.1) \n", + " short-range forecast. Shown are reaches that are expected to have flow at or above bankfull over the next 18 hours. \n", + " Reaches are colored by the annual exceedance probability of their maximum forecast flow over the next 18 hours. \n", + " Bankfull flows and annual exceedance probabilities were derived using a 40-year retrospective analysis of the NWM (v2.1). \n", + " Updated hourly.\n", + "\"\"\"\n", + "tags = \"short range forecast, maximum, high flow, magnitude, national water model, nwm\"\n", + "credits = \"National Water Model, NOAA/NWS National Water Center\"\n", + "\n", + "load_checklist(service_name)" + ] + }, + { + "cell_type": "markdown", + "id": "d47f59b5", + "metadata": { + "deletable": false, + "editable": false + }, + "source": [ + "

Create SQL for Service Data

\n", + "\n", + "First we need to create some SQL that will give us the table with the fields that we want. This is similar to the product scripts in the on-prem workflow. If additional datasets are needed, please contact Corey or Tyler about getting those into the DB. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d145fe37", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'run_sql_in_db' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_31280/3700748656.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \"\"\"\n\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mrun_sql_in_db\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msql\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'run_sql_in_db' is not defined" + ] + } + ], + "source": [ + "sql = \"\"\"\n", + "WITH reference_time AS (\n", + " SELECT max(ingest_status.reference_time) AS reference_time\n", + " FROM admin.ingest_status\n", + " WHERE ingest_status.target::text = 'ingest.rnr_max_flows'::text\n", + " )\n", + "\t\n", + "SELECT ingest.rnr_max_flows.feature_id, \n", + "\tingest.rnr_max_flows.feature_id::TEXT AS feature_id_str,\n", + "\tName, \n", + "\tto_char(REFERENCE_TIME, 'YYYY-MM-DD HH24:MI:SS UTC') AS reference_time,\n", + "\tSTRING_AGG(FORECAST_NWS_LID || ' @ ' || FORECAST_ISSUE_TIME || ' (' || FORECAST_MAX_STATUS || ')', ', ') AS INHERITED_RFC_FORECASTS,\n", + "\tMAX(forecast_max_value) * 35.31467 AS MAX_FLOW,\n", + "\tINITCAP(MAX(REPLACE(VIZ_MAX_STATUS, '_', ' '))) AS MAX_STATUS,\n", + "\tINITCAP(MAX(WATERBODY_STATUS)) AS WATERBODY_STATUS,\n", + "\tMAX(VIZ_STATUS_LID) AS VIZ_STATUS_LID,\n", + "\tStrm_Order,\n", + "\thuc6,\n", + "\tto_char(now()::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') AS update_time,\n", + "\tgeom\n", + "FROM INGEST.RNR_MAX_FLOWS\n", + "left join derived.channels_conus ON INGEST.RNR_MAX_FLOWS.feature_id = derived.channels_conus.feature_id, reference_time\n", + "GROUP BY INGEST.RNR_MAX_FLOWS.FEATURE_ID, feature_id_str, Name, reference_time, Strm_Order, huc6, geom;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "f95586e8", + "metadata": {}, + "source": [ + "

Check Outputs Through Pandas DataFrame

\n", + "\n", + "When we use the \"run_sql_in_db\" function, a pandas dataframe is returned. This allows us to inspect the results a little better and dig to make sure the output is what we expect" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a621e82-a811-401d-8dff-341767d00109", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "WHERE thresholds.high_water_threshold > 0 AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "11d13321", + "metadata": {}, + "source": [ + "In this example, we can take the dataframe and inspect all the features that have a recurence category of 2%. Interestingly, we will find that many of the features that have a recurrence category of 0, also have recurrence flow values of 0." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "682af5a3", + "metadata": {}, + "outputs": [], + "source": [ + "df.loc[df['recur_cat'] == \"2\"]" + ] + }, + { + "cell_type": "markdown", + "id": "0ede9df0", + "metadata": {}, + "source": [ + "Maybe we need to just remove any features that have a 2% flow of 0 or set the recurrence category to \"Not Available\". We can write some queries in the dataframe to pick out all the features with a 2% flow of 0 to see how extensive this issue is and what the range is for streamflows." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d21ed782", + "metadata": {}, + "outputs": [], + "source": [ + "df.loc[df['flow_50yr'] == 0].sort_values('max_flow')" + ] + }, + { + "cell_type": "markdown", + "id": "affca7a8", + "metadata": {}, + "source": [ + "

Comparing Dataframe to Testing Datasets

\n", + "\n", + "We could also compare the table to a test dataset to ensure that what we are seeing is what we expect. In this case, the outputs are not the same because the same reference times are not being compared" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4bdb322", + "metadata": {}, + "outputs": [], + "source": [ + "test_dataset = pd.read_csv(\"test_datasets/srf_max_high_flow_magnitude_example.csv\")\n", + "\n", + "test_dataset.equals(df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "921e5435", + "metadata": {}, + "outputs": [], + "source": [ + "display(df)\n", + "display(test_dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "d3d47161", + "metadata": {}, + "source": [ + "

Check Outputs Through Mapping

\n", + "\n", + "Previously, if we ever wanted to check outputs, we would have to run our python code, create the outputs, and then bring them into Arcgis Pro to verify. With the \"run_sql_in_db\" function, we can add a keyword argument (return_geodataframe=True) to return a spatially aware dataframe. With this dataframe, we can now plot the outputs directly in the notebook through the plot method. To ease the development, we have created a simple function to map a column (map_column). More complex aps can be created directly through the plot method if desired.\n", + "\n", + "In the first example, we will retrieve the table that is used for srf max high flow magnitude. We can then use the map_column function to create a map with the same categories and symbology to make sure the outputs look how we expect." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e6aba7f8", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "WITH high_flow_mag AS (\n", + " SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + " FROM cache.max_flows_srf AS maxflows\n", + " JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + " WHERE thresholds.high_water_threshold > 0::double precision AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + ")\n", + "SELECT \n", + " channels.feature_id,\n", + " channels.feature_id::TEXT AS feature_id_str,\n", + " channels.strm_order,\n", + " channels.name,\n", + " channels.huc6,\n", + " channels.nwm_vers,\n", + " high_flow_mag.max_flow,\n", + " high_flow_mag.recur_cat,\n", + " high_flow_mag.high_water_threshold,\n", + " high_flow_mag.flow_2yr,\n", + " high_flow_mag.flow_5yr,\n", + " high_flow_mag.flow_10yr,\n", + " high_flow_mag.flow_25yr,\n", + " high_flow_mag.flow_50yr,\n", + " channels.geom,\n", + " to_char(now()::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') AS update_time\n", + "FROM derived.channels_conus channels\n", + "JOIN high_flow_mag ON channels.feature_id = high_flow_mag.feature_id;\n", + "\"\"\"\n", + "\n", + "gdf = run_sql_in_db(sql, return_geodataframe=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca88af6e", + "metadata": {}, + "outputs": [], + "source": [ + "column = \"recur_cat\"\n", + "\n", + "map_column(gdf, column)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b9411806", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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9JCdd9773vfy17/+lZdeeomzzjoLgH379vHmm2/ysY99DLfbzb333sv9999PV1cXQgjOOOMMPvaxj3HHHXdgMpnYtWsX27dvp76+nk9/+tMsX76cZ599lltvvZWOjg6Ki4v59Kc/zTvf+U5aWlq46667eOqpp8jn85xwwglcdNFFKIrCL3/5S374wx9SVFSo2XD11VdTXV3N/v37ufTSS1myZAmZTIb777+f1tZWLrnkEnbu3MnNN99MU1MTfr+f888/n3e961386U9/oqmpiYaGBlwuFzfffDN2u/2w/pBjVw2cCTwPvBP4GbB8kscwtfQzsPF4XFaCl6RhfHldiO890smbrTIrYTA1fgt/7Mry82e7+cLJQUq9slD+WOTzefL5vDFfCIfD/bJw9Tp3NpvNaLnal768Wt9GV1eXsYRbft9PHT04o2di60GcoqIiEokEHo+HQCAw44tGSpIkScO47z5IDF2mQyQSmP/yF5RPfGJMD7V//35ef/11jj/+eNrb26moqAAKwZyOjo4xbXukRnRKwmw2U1lZybJlywiFQkCh20ImkyGdTo8o20Rf6mQ2m/F4PGQyGWw2G263G6fTSTwex2w2H3LZSS6Xo729naqqKpYsWcLzzz9PMpkkn8/z2muvYbFYOP7449m3bx+33XYbH/zgB/nlL3/JZZddxu9//3s2btzI1q1bueOOOzj55JP51re+RUdHB7/73e948cUX+c53vsOqVau46aabWLNmDT/96U9paGjg5ptv5qmnnuLKK6/ku9/9Lrt27eL6669n69atbNy4sV93oNdee81Y/75hwwby+TxdXV389a9/NZ7fNddcw5w5c/jpT3/KRz/6UX7xi1/wxBNPsHXrVh588EFWrFjBWWedNYXdDK6isPypFjgL+DLQBGwHWqdoTJNrzpw57N+/X3Z/kqRhJLOF732LPLE9KIfVxKnzXGRz8I+tsibKWDU3N/Pkk0/ywgsvsHv3bhKxMEIpZMXoxaNTqRThcJhMJjPg/g6Hg7KyMuNESCaTGRDskaaGnjnTN8hmt9upqakhGAzKII0kSdJRSl/xoqoqanPzyO7UOrbj1ng8zoUXXsgNN9xgJGVMhSEzavrSAy0lJSWUlJQAhQK/jY2NAEaHp77F/gbbTt+f9To2epAml8uxZcsW9uzZw/z581m0aBGdnZ3k83mKi4tZt24df/rTn9i7dy9VVVX861//4vjjj2fWrFm0trby5S9/mcWLF9PR0YHX60VVVVpaWtA0jfXr13PmmWfi8XjYunUrTzzxBA899BB+v5/Pfe5zOJ1O6urqmDVrFg0NDbz66qt8/OMf57TTTsNkMhGPx/mv//ov9uzZM2CZlKZplJeXY7FYePXVVzn77LPZt28f3d3dnHjiiTzzzDN0d3ezevVqYrEYFRUVlJeX87e//Q2/38873/lOLrnkEiMQNjXswHXAaxQybJ4HvgI8AKwFAsAJwNenaHwTz+l0smDBAnbv3o2iKFRWVk71kCRpWir1Wrn+rFKs5ul/8KRp2pQd5K2d6+XVpgxdCZXdHSnmlDiHv5M0qGXLluF2uwtzjX33E9r6bfatfgzV6icajRp/53w+T2lpab/5iJ416XK5jDmLXnRamn704I0kSZJ09NCDMoqiGMfa+n7aVFo6siyT8vJRP34ul+PCCy/kggsu4NxzzwWgtLSUlpYWKioqaGlpMWIhE21M50IdDgdz5syhsrLSKOp3uGem7HY7TqcTj8dDdXU1r776Kt/85je58sorufbaa9m6dStOp5Pi4mKsVivHHnssANu3b6epqYm9e/fyzne+E6vVisfj4bXXXuPrX/86P//5z3n88cfJZDJG3Zvi4mJsNpuxpEsIQUtLC+Xl5UahZI/HwznnnIPD4UBVVUpLS42zO8XFxVgsFqNNeV+apuF0Olm1apWxjOn5559n9uzZLFiwgMbGRjKZDH/5y1+44447uOOOO8jlcsZSspKSEtxu91j+HONoBfAj4CIgDXwaKANKgZl9kKEXwi4rKyMWix3yrKwkSQXTPUij11Kb6m6AF64swiRgZ3uGDXuPrs5640kIQTAYpLq6upAZY8pjyUdwdz1l3Eb/eyeTSaLRqDHRy2azRvFgn89nZO/KII0kSZIkTY1sNstbb73F1q1byWazpNNpstmssc/W/ymKgqqq5M89F22Y42XN7UY577xRjUfTNC6//HIWLFjAlVdeaVx+5plncueddwJw55138v73v39S5pdDnqpQVXXYgm36ga3JZMLv99PV1UVHRwdmsxm/3z/igm96HZsNGzbw2GOPkc1mSSQSrF+/nk996lPGY82dO5clS5awYcMGdu7cSU1NDStXrgTg/vvv59FHHzXqxQgh+Oc//9lvrAdPygKB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zz6bSy+9lJ6eHjVT5pZbbiGZTKIoCnV1dRgMBm644QZgTwDlj3/8I0uWLOGdd97htttu46677uLWW28lm80iyzJ//OMf6e7uJp/PY7Va+cc//sGZZ56JLMvcd9993HLLLZxxxhkkEgnOP/98stksX/ziF7n//vv51a9+RTwex2q1smzZMvx+P9/97neJxWJMmzaN733veyxZsoSrr74aq9VKIBDg5ptv5vTTT2fp0qU89thjyLLMN77xDU4++WSuueYa7HY7bW1t3HrrrSxYsICenh6uuOIK9Tnavn0727dv57bbbuPCCy/krbfeUlNhf/azn/HDH/4QjUZDQ0MDt99+O729vfz85z9Ho9Ewd+5cLrzwQtavX88dd9zBOeecA+wJRj3//PNcdNFFxONxNfPo+eef56233iISifDtb3+b+fPnc/PNN+NwOGhtbeW0007j8ssvp7u7G4Cqqir+67/+ix07dqAoCn/6059Yu3Ytf/jDHwC4+eabOfXUU/nqV7+Kw+Fg586dXHHFFUybNk19TOeddx4rVqwgFosRDAbVz6+TTjqJHTt2cOONNzIwMMCvf/1rSkpK+MUvfsEPf/hDwuEwf/rTn5g7d656W9/4xjfYunUrTz75JLIsq6/bq666CrPZzJQpU8jn82zYsAGAn/70p/tkSgnC0VLoEZFKpT5R9p8gCIJw7On1ejU7pb6+Hp1Op2ZKG41G7HY7vb29h/1+A4GAWs5+MEwmE4qiMDQ0RDqdRlGUg6pUyGazmM1mjEYjQ0ND+2S2C8Jn2UEHahYuXMhzzz2Hz+fj/PPP509/+hMAl1xyCXPmzKGnp4cf//jHLFy4kF27dvGDH/yAuXPnctFFF3H55Zej0+mIRqOcf/75PPfcc/z2t78F2CeI8POf/5zvfOc7TJw4ke985zs0NjbyzDPP8Le//U0trdi1axewp0fGwMAAP/7xj3G73SxYsIB33nmHbdu2kclkePvtt6mpqSESiQB7xt/dcccd3HbbbcTjcS688EK+//3vc/755+Pz+fjCF76Aoijce++9tLW1cccdd9DX10coFMLv9/OjH/2I6667jtLSUp544glOO+00br/9dm6//XZ+97vfUVxczJVXXslll13G7t27+f73v8+sWbM49dRT+f73v7/Pc5pKpQgEAkyePJmmpibi8Th/+ctfWLJkCclkkiuv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Rkdhz0nP17/+df7jP/6DO+64g0WLFgFw7rnnotPpuPPOO/n973/PjTfeiNfr5cc//jHPP/88jY2NFBcXc8cdd6ipcIqicMstt/Daa6/R0tLCAw88QCgUwmazMWHCBLW0Z+/HUuhXkslkOOmkkzjrrLNIJBLcf//9/O53v+Omm27iJz/5CW+99Rb/9m//hsfjYcKECerYuRNPPFFNybvwwgsBuO+++7jvvvt48sknKS0t5ec//znnnHMOBoMBWZbVx7j3cZx88sn86le/oqysjJ/+9KeMHz+eSCTCgw8+yH/+53+STCY588wzmTt3Lr/+9a/JZDJ861vfwmw2q7d333338fvf/56mpiZmzJiB2Wxmzpw5+P1+8vk8J510Eh6Phw8++ICtW7cyffp0YM/Ot8/n4+GHH+aBBx6gr6+P+fPnY7Va+dGPfsTf//53vvnNb2I0GrnhhhvU7ILCcRdKnKZOncpVV11FX18fFRUVnHDCCftk0ySTSX71q18RiUSYM2cON910EwBtbW3IssyVV17J7373O77zne/w29/+dtg48L6+vo99bc6dO5fy8nJ8Pp/a9Ljw2rzzzju5+eabmT17Ntdccw2wpy9OS0sLzz77LPfee++wbKvJkydz2mmnceONN3LSSSdRVlbGKaecwltvvcXNN9/MOeecozaHPuuss7jjjju46667eO211/j617/OggULqK6uVo8/Ho9zySWXcOedd3LBBRcwYcIE/vM//5Nf/epXDA0NcdZZZwF7erdceeWV6mj6XC5HOp3mueee47//+78ZHBzkvPPO44ILLgD2ZKA89dRTdHd388ADD5BMJnnkkUe49957iUajnHLKKdTU1LBo0SLy+Tw6nY5FixYhSRJr1qzh4Ycfxmq18tBDDwHwy1/+kvvuu4+zzz6bM844A4vFQn9/v1oCduONN+Lz+fjpT3/K/fffz3333cff//53ysrK+PnPf84dd9zBgw8+yLx585g5cyZjxoyhtraW2traYX+PH/3oR3zrW99ixowZfPWrXwX27L4EAgFuvfVW7rrrLuLxOIqikEqlKC8v55vf/Ca33HILFouF3/zmNzz44INqRs+DDz4IwKJFi5Bledh77Re/+AX3338/Z555JgsXLsRms6kT1hwOB1arle9///v8/Oc/V5+DXC7Hd77zHW666SbOOOMMTj31VABu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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "column = \"recur_cat\"\n", + "colormap = {\n", + " '2': '#cc33ff',\n", + " '4': '#e600a9',\n", + " '10': '#ff0000',\n", + " '20': '#ff9900',\n", + " '50': '#ffff00',\n", + " '>50': '#72afe8'\n", + "}\n", + "title = \"Short Range Max High Flow Magnitude\"\n", + "\n", + "map_column(gdf, column, colormap, title=title)" + ] + }, + { + "cell_type": "markdown", + "id": "c6af0109", + "metadata": {}, + "source": [ + "

Configuring Pro Project

\n", + "\n", + "When we developed on-prem, we would have to run the python code to create the shapefile or feature class and then setup the pro project accordingly. For hydrovis development, we can follow the same model using the notebook. We have created a helper function called \"save_gdf_shapefile_to_s3\" to do this. The function will take the geodataframe, save it as a shapefile and then also upload it to S3. You can either download the shapefile from the S3 bucket or from the file explorer within jupyter notebook (under the folder \"shapefiles\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5834791c", + "metadata": {}, + "outputs": [], + "source": [ + "save_gdf_shapefile_to_s3(gdf, \"srf_max_high_flow_magnitude\")" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/3. EGIS Service Status-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/3. EGIS Service Status-checkpoint.ipynb new file mode 100644 index 00000000..f15a9305 --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/3. EGIS Service Status-checkpoint.ipynb @@ -0,0 +1,285 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "20585edd", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install arcgis==2.0.0 isodate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac1774b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from IPython.display import display, HTML\n", + "display(HTML(\"\"))\n", + "\n", + "import pandas as pd\n", + "from arcgis.gis import GIS\n", + "import requests\n", + "import numpy as np\n", + "from datetime import datetime, timedelta\n", + "import isodate\n", + "import os\n", + "\n", + "import urllib3\n", + "urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n", + "\n", + "PORTAL = \"portal\"\n", + "IMAGE_SERVER = \"image\"\n", + "VECTOR_SERVER = \"server\"\n", + "PRODUCTION_HOST = \"maps.water.noaa.gov\"\n", + "STAGING_HOST = \"maps-staging.water.noaa.gov\"\n", + "TESTING_HOST = \"maps-testing.water.noaa.gov\"\n", + "\n", + "suffix_mapper = {\"testing\": \"_alpha\", \"staging\": \"_beta\", \"production\": \"\"}\n", + "priority_services = r\"helper_files/hydrovis_services.csv\"\n", + "column_mapper = {'testing': 'testing_rest', 'staging': 'staging_rest', 'production': 'prod_rest'}\n", + "host_mapper = {'testing': TESTING_HOST, 'staging': STAGING_HOST, 'production': PRODUCTION_HOST}\n", + "rest_folders = ['nwm', 'rfc', 'owp']\n", + "\n", + "def check_service_status(environment, tiers_to_check, display_portal_items=False, check_map_render=True):\n", + " print(f\"Connecting to {environment} portal\")\n", + " \n", + " portal = f'https://{host_mapper[environment]}/portal'\n", + " gis = GIS(portal, verify_cert=False, username=\"hydrovis.proc\", password=\"WaterIsFun1@\")\n", + "\n", + " df_status = pd.DataFrame()\n", + "\n", + "# df_status = df_status[~df_status.index.str.contains('retrospective')]\n", + "# df_status = df_status[~df_status.index.str.contains('Sample')]\n", + "# df_status.index = df_status.index.str.replace(\"\\xa0\", \"\")\n", + "\n", + " column = column_mapper[environment]\n", + "\n", + " tier_services = {}\n", + " \n", + " services = pd.read_csv(priority_services)\n", + " \n", + " df_status = services[[\"service_name\", \"tier\", column_mapper[environment], \"acceptable_delay\"]]\n", + " df_status = df_status.rename(columns={column_mapper[environment]: \"rest\"})\n", + " \n", + " df_status['portal_check'] = \"unchecked\"\n", + " df_status['rest_check'] = \"unchecked\"\n", + " \n", + " if check_map_render:\n", + " map1 = gis.map(\"Test Map\")\n", + " df_status['map_check'] = \"unchecked\"\n", + "\n", + " df_status['server'] = None\n", + " df_status['reference_time'] = None\n", + " df_status['update_time'] = None\n", + " df_status['update_status'] = None\n", + " \n", + " df_status = df_status[df_status['tier'].isin(tiers_to_check)]\n", + " \n", + " token = gis._con.token\n", + " df_status = df_status.set_index(\"service_name\")\n", + "\n", + " print(\"Getting status for each tier service\")\n", + " \n", + " for service in df_status.iterrows():\n", + " row = service[1]\n", + " base_service_name = service[0]\n", + " full_service_name = f\"{base_service_name}{suffix_mapper[environment]}\"\n", + " acceptable_delay = row[\"acceptable_delay\"]\n", + " rest_url = row[\"rest\"]\n", + " print(f\"Checking {full_service_name}\")\n", + " item = None\n", + " try:\n", + " item = [resource for resource in gis.content.search(full_service_name, item_type='Map Service', max_items=10) if f\"{full_service_name}/MapServer\" in resource.url][0]\n", + " df_status.loc[base_service_name, \"portal_check\"] = \"Pass\"\n", + " except:\n", + " try:\n", + " item = [resource for resource in gis.content.search(full_service_name, item_type='Image Service', max_items=10) if f\"{full_service_name}/ImageServer\" in resource.url][0]\n", + " df_status.loc[base_service_name, \"portal_check\"] = \"Pass\"\n", + " except:\n", + " print(f\"{full_service_name} does not exist in the portal\")\n", + " df_status.loc[base_service_name, \"portal_check\"] = \"Fail\"\n", + "\n", + " if df_status.loc[base_service_name, \"rest\"]:\n", + " rest_url = df_status.loc[full_service_name, \"rest\"]\n", + " else:\n", + " continue\n", + "\n", + " if display_portal_items and item:\n", + " display(item)\n", + "\n", + " if '/server/' in rest_url:\n", + " df_status.loc[base_service_name, \"server\"] = \"server\"\n", + " else:\n", + " df_status.loc[base_service_name, \"server\"] = \"image\"\n", + "\n", + " params = {\n", + " 'token': token,\n", + " 'f': 'json'\n", + " }\n", + "\n", + " # TODO: Check REST not as admin\n", + " query_url = f\"{rest_url}/0/query?where=oid>=0&outFields=*&returnGeometry=false&resultRecordCount=1&f=json\"\n", + " \n", + " if base_service_name == \"rfc_5day_max_downstream_streamflow\":\n", + " query_url = f\"{rest_url}/1/query?where=oid>=0&outFields=*&returnGeometry=false&resultRecordCount=1&f=json\"\n", + " \n", + " if environment == \"testing\":\n", + " query_url = query_url.replace(r\"/nwm/\", r\"/NWM/\")\n", + "\n", + " tries = 0\n", + " ref_time = None\n", + " while tries<3:\n", + " tries += 1\n", + " res = requests.get(query_url, params=params, verify=False).json()\n", + "\n", + " if 'error' in res:\n", + " print(f\"{base_service_name} does not exist in the rest - {rest_url} ({res})\")\n", + " df_status.loc[base_service_name, \"rest_check\"] = \"Fail\"\n", + " if \"Failed to execute query\" not in res['error']['message']:\n", + " break\n", + " print(f\"Attempting {base_service_name} again - {tries} out of 3\")\n", + " else: \n", + " tries = 3\n", + " \n", + " df_status.loc[base_service_name, \"rest_check\"] = \"Pass\"\n", + " \n", + " try:\n", + " attributes = res['features'][0]['attributes']\n", + " except:\n", + " try:\n", + " attributes = res['attributes']\n", + " except:\n", + " print(f\"Failed to get data for {full_service_name} - {res}\")\n", + " continue\n", + "\n", + " update_time = attributes.get(\"update_time\")\n", + " try:\n", + " update_time = datetime.strptime(update_time, \"%Y-%m-%d %H:%M:%S UTC\")\n", + " except:\n", + " update_time = datetime.strptime(update_time, \"%Y-%m-%d %H:%M UTC\")\n", + " df_status.loc[base_service_name, \"update_time\"] = update_time\n", + "\n", + " if base_service_name == \"rfc_max_stage\":\n", + " df_status.loc[base_service_name, \"reference_time\"] = \"Pass\"\n", + " ref_time = update_time\n", + " else:\n", + " possible_times = [\"ref_time\", \"Ref_Time\", \"Ref_time\", \"reference_time\", \"valid_time\", \"Valid_Time\", \"Valid_time\"]\n", + "\n", + " for possible_time in possible_times:\n", + " ref_time = attributes.get(possible_time)\n", + " if ref_time:\n", + " try:\n", + " ref_time = datetime.strptime(ref_time, \"%Y-%m-%d %H:%M:%S UTC\")\n", + " except:\n", + " ref_time = datetime.strptime(ref_time, \"%Y-%m-%d %H:%M UTC\")\n", + " df_status.loc[base_service_name, \"reference_time\"] = ref_time\n", + " break\n", + "\n", + " if ref_time and acceptable_delay:\n", + " acceptable_delay = isodate.parse_duration(acceptable_delay)\n", + " issue_delay = acceptable_delay + timedelta(hours=1)\n", + "\n", + " acceptable_threshold = ref_time + acceptable_delay\n", + " issue_threshold = ref_time + issue_delay\n", + " now = datetime.utcnow()\n", + "\n", + " if now <= acceptable_threshold:\n", + " update_status = \"GOOD\"\n", + " elif now <= issue_threshold:\n", + " update_status = \"DELAYED\"\n", + " else:\n", + " update_status = \"ISSUE\"\n", + "\n", + " df_status.loc[base_service_name, \"update_status\"] = update_status\n", + "\n", + " if check_map_render and item:\n", + " try:\n", + " map1.add_layer(item)\n", + " map1.remove_layers(item)\n", + " df_status.loc[base_service_name, \"map_check\"] = \"Pass\"\n", + " except Exception as e:\n", + " print(f\"{full_service_name} failed to load in a map - {e}\")\n", + " df_status.loc[base_service_name, \"map_check\"] = \"Fail\"\n", + "\n", + " df_status = df_status.rename_axis('Service Name').sort_values([\"tier\", \"server\", \"Service Name\"])\n", + " df_status = df_status[[\"tier\", \"server\", \"portal_check\", \"rest_check\", \"map_check\", \"reference_time\", \"update_time\", \"update_status\", \"rest\"]]\n", + " \n", + " df_formatted = df_status.style.format(make_clickable).applymap(bold_cells).applymap(color_cells)\n", + "\n", + " display(df_formatted)\n", + "\n", + "def color_cells(val):\n", + " if val in ['Pass', 'STARTED', 'GOOD']:\n", + " color = 'green'\n", + " elif val in ['Fail', 'STOPPED', np.nan, \"ISSUE\"]:\n", + " color = 'red'\n", + " elif val in ['DELAYED']:\n", + " color = 'yellow'\n", + " elif val in ['unchecked']:\n", + " color = 'orange'\n", + " else:\n", + " color = 'white'\n", + " \n", + " return f'background-color: {color}'\n", + "\n", + "def bold_cells(val):\n", + " return 'font-weight: bold'\n", + "\n", + "def make_clickable(val):\n", + " if isinstance(val, str):\n", + " if 'http' in val:\n", + " return '{}'.format(val,val)\n", + " \n", + " return val" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd943581", + "metadata": {}, + "outputs": [], + "source": [ + "tiers_to_check = [1]\n", + "environment = 'production'\n", + "\n", + "check_service_status(environment, tiers_to_check)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d29cae0", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/4. Recurrence Flow HUC 8 Cluster-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/4. Recurrence Flow HUC 8 Cluster-checkpoint.ipynb new file mode 100644 index 00000000..c62c798a --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/4. Recurrence Flow HUC 8 Cluster-checkpoint.ipynb @@ -0,0 +1,2140 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "6ecc5560-8eb4-4f23-8d28-5570a5e13ccb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Change the sys path to pull from the parent folder for imports\n", + "import sys\n", + "sys.path.append('../')\n", + "from helper_functions.shared_functions import *\n", + "\n", + "# Oct 2024: moved to teh AWS_keys.py file\n", + "# db username and password moved. Untested\n", + "\n", + "# Get a db_engine for writing back to the database.\n", + "viz_db = get_db_engine(\"viz\")" + ] + }, + { + "cell_type": "markdown", + "id": "bd046af0-42f0-4f0c-9cc5-b18022d42467", + "metadata": {}, + "source": [ + "#### Download the most recent CONUS thresholds" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0463a447-e7f5-402a-8bf3-83e4aa1fbc97", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_0rf_1_1rf_1_2rf_1_3rf_1_4rf_1_5rf_1_6rf_1_7rf_1_8...rf_3_2rf_4_0rf_5_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_thresholdcluster
08610.000.000.000.000.000.000.000.000.00...0.450.641.110.010.332.3422.84111.050.3510.0
117917.5331.2134.9838.4340.1042.3743.1944.5744.57...63.4570.9074.1550.5473.4690.09112.71130.6538.4310.0
218145.4266.0980.4890.4693.5895.3596.15107.18107.18...129.32141.77147.76110.91149.81174.70205.37227.6590.4610.0
318369.2375.4081.5589.3491.7995.9196.44106.58106.58...137.26148.13159.78113.19157.55192.08242.08284.2489.3410.0
418567.8474.5382.2788.8691.5395.3696.37106.32106.32...135.49147.80159.15112.33157.18192.25243.22286.3388.8610.0
..................................................................
277672911700201120.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
277673011700202240.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.010.010.001.0
277673111700204900.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
277673211700238870.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
277673311710000720.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
\n", + "

2776734 rows × 29 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_0 rf_1_1 rf_1_2 rf_1_3 rf_1_4 rf_1_5 rf_1_6 \\\n", + "0 861 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "1 179 17.53 31.21 34.98 38.43 40.10 42.37 43.19 \n", + "2 181 45.42 66.09 80.48 90.46 93.58 95.35 96.15 \n", + "3 183 69.23 75.40 81.55 89.34 91.79 95.91 96.44 \n", + "4 185 67.84 74.53 82.27 88.86 91.53 95.36 96.37 \n", + "... ... ... ... ... ... ... ... ... \n", + "2776729 1170020112 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776730 1170020224 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776731 1170020490 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776732 1170023887 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776733 1171000072 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "\n", + " rf_1_7 rf_1_8 ... rf_3_2 rf_4_0 rf_5_0 rf_2_0_17c rf_5_0_17c \\\n", + "0 0.00 0.00 ... 0.45 0.64 1.11 0.01 0.33 \n", + "1 44.57 44.57 ... 63.45 70.90 74.15 50.54 73.46 \n", + "2 107.18 107.18 ... 129.32 141.77 147.76 110.91 149.81 \n", + "3 106.58 106.58 ... 137.26 148.13 159.78 113.19 157.55 \n", + "4 106.32 106.32 ... 135.49 147.80 159.15 112.33 157.18 \n", + "... ... ... ... ... ... ... ... ... \n", + "2776729 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776730 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776731 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776732 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776733 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "\n", + " rf_10_0_17c rf_25_0_17c rf_50_0_17c high_water_threshold cluster \n", + "0 2.34 22.84 111.05 0.35 10.0 \n", + "1 90.09 112.71 130.65 38.43 10.0 \n", + "2 174.70 205.37 227.65 90.46 10.0 \n", + "3 192.08 242.08 284.24 89.34 10.0 \n", + "4 192.25 243.22 286.33 88.86 10.0 \n", + "... ... ... ... ... ... \n", + "2776729 0.00 0.00 0.00 0.00 1.0 \n", + "2776730 0.00 0.01 0.01 0.00 1.0 \n", + "2776731 0.00 0.00 0.00 0.00 1.0 \n", + "2776732 0.00 0.00 0.00 0.00 1.0 \n", + "2776733 0.00 0.00 0.00 0.00 1.0 \n", + "\n", + "[2776734 rows x 29 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT * FROM derived.recurrence_flows_conus\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a4933e54-e649-4770-8dab-b87600de418b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "df.to_csv(\"kathren_data/recurrence_flows_nwm_v3_CONUS.csv\")" + ] + }, + { + "cell_type": "markdown", + "id": "2427c6a6", + "metadata": {}, + "source": [ + "Get current huc8 cluster crosswalk and updated crosswalk from CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3eaebac2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
clusterbankfull_rf
huc8
101000210.0rf_1_3
101000310.0rf_1_3
101000410.0rf_1_3
101000510.0rf_1_3
101000610.0rf_1_3
.........
22040003NaNNone
22040004NaNNone
22040005NaNNone
22040006NaNNone
22040007NaNNone
\n", + "

2398 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " cluster bankfull_rf\n", + "huc8 \n", + "1010002 10.0 rf_1_3\n", + "1010003 10.0 rf_1_3\n", + "1010004 10.0 rf_1_3\n", + "1010005 10.0 rf_1_3\n", + "1010006 10.0 rf_1_3\n", + "... ... ...\n", + "22040003 NaN None\n", + "22040004 NaN None\n", + "22040005 NaN None\n", + "22040006 NaN None\n", + "22040007 NaN None\n", + "\n", + "[2398 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cluster
huc8
101000610.0
101000710.0
101000810.0
101000910.0
101001010.0
101001110.0
109000510.0
4020300NaN
4060106NaN
4060107NaN
4070001NaN
4070002NaN
4080300NaN
40900058.0
41201048.0
4120200NaN
415010110.0
415010210.0
415020010.0
415030210.0
415030310.0
415030410.0
415030510.0
415030610.0
415030710.0
415030810.0
415030910.0
415031010.0
415040110.0
415040210.0
415040310.0
415040410.0
415040510.0
415040610.0
415040710.0
415040810.0
415040910.0
415050010.0
415060010.0
80202019.0
90100062.0
90100074.0
90100084.0
90203154.0
90203164.0
90300102.0
90300114.0
90400011.0
90400021.0
101500016.0
121004047.0
170101061.0
\n", + "
" + ], + "text/plain": [ + " cluster\n", + "huc8 \n", + "1010006 10.0\n", + "1010007 10.0\n", + "1010008 10.0\n", + "1010009 10.0\n", + "1010010 10.0\n", + "1010011 10.0\n", + "1090005 10.0\n", + "4020300 NaN\n", + "4060106 NaN\n", + "4060107 NaN\n", + "4070001 NaN\n", + "4070002 NaN\n", + "4080300 NaN\n", + "4090005 8.0\n", + "4120104 8.0\n", + "4120200 NaN\n", + "4150101 10.0\n", + "4150102 10.0\n", + "4150200 10.0\n", + "4150302 10.0\n", + "4150303 10.0\n", + "4150304 10.0\n", + "4150305 10.0\n", + "4150306 10.0\n", + "4150307 10.0\n", + "4150308 10.0\n", + "4150309 10.0\n", + "4150310 10.0\n", + "4150401 10.0\n", + "4150402 10.0\n", + "4150403 10.0\n", + "4150404 10.0\n", + "4150405 10.0\n", + "4150406 10.0\n", + "4150407 10.0\n", + "4150408 10.0\n", + "4150409 10.0\n", + "4150500 10.0\n", + "4150600 10.0\n", + "8020201 9.0\n", + "9010006 2.0\n", + "9010007 4.0\n", + "9010008 4.0\n", + "9020315 4.0\n", + "9020316 4.0\n", + "9030010 2.0\n", + "9030011 4.0\n", + "9040001 1.0\n", + "9040002 1.0\n", + "10150001 6.0\n", + "12100404 7.0\n", + "17010106 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "sql = \"\"\"\n", + "SELECT *\n", + "FROM derived.huc8_rf_thresholds\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "\n", + "df = df.set_index(\"huc8\")\n", + "display(df.sort_index())\n", + "\n", + "updated_df = pd.read_csv(\"temp_corey/clusterless_huc8s_fixed.csv\")\n", + "\n", + "updated_df = updated_df.set_index(\"huc8\")[[\"cluster\"]]\n", + "\n", + "updated_df = updated_df.replace(\"\", np.nan)\n", + "updated_df['cluster'] = updated_df['cluster'].astype(float)\n", + "\n", + "display(updated_df)" + ] + }, + { + "cell_type": "markdown", + "id": "dd1e631b", + "metadata": {}, + "source": [ + "Update the crosswalk in DB with the new crosswalk table from CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ed5575db", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "8.0\n", + "8.0\n", + "nan\n", + "Here\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "9.0\n", + "2.0\n", + "4.0\n", + "4.0\n", + "4.0\n", + "4.0\n", + "2.0\n", + "4.0\n", + "1.0\n", + "1.0\n", + "6.0\n", + "7.0\n", + "1.0\n" + ] + } + ], + "source": [ + "import math\n", + "\n", + "for huc, row in updated_df.iterrows():\n", + " cluster = row['cluster']\n", + " print(cluster)\n", + " if math.isnan(cluster):\n", + " print(\"Here\")\n", + " cluster = \"NULL\"\n", + " sql = f\"\"\"\n", + " UPDATE derived.huc8_rf_thresholds\n", + " SET cluster = {cluster}\n", + " WHERE huc8 = {huc}\n", + " \"\"\"\n", + "\n", + " run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "9819d067", + "metadata": {}, + "source": [ + "Check Current Cluster Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0e6bf52a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bankfull_rf
cluster
1.0rf_2_9
2.0rf_1_6
3.0rf_1_6
4.0rf_1_5
5.0rf_1_6
6.0rf_1_1
7.0rf_3_2
8.0rf_1_0
9.0rf_1_1
10.0rf_1_3
11.0rf_1_3
NaNNone
\n", + "
" + ], + "text/plain": [ + " bankfull_rf\n", + "cluster \n", + "1.0 rf_2_9\n", + "2.0 rf_1_6\n", + "3.0 rf_1_6\n", + "4.0 rf_1_5\n", + "5.0 rf_1_6\n", + "6.0 rf_1_1\n", + "7.0 rf_3_2\n", + "8.0 rf_1_0\n", + "9.0 rf_1_1\n", + "10.0 rf_1_3\n", + "11.0 rf_1_3\n", + "NaN None" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT bankfull_rf, cluster\n", + "FROM derived.huc8_rf_thresholds\n", + "GROUP BY bankfull_rf, cluster\n", + "ORDER BY cluster\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "df = df.set_index('cluster')\n", + "df" + ] + }, + { + "cell_type": "markdown", + "id": "f8daac42", + "metadata": {}, + "source": [ + "Check the current high water threshold value for a specific cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c88f9f9f", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT rf.feature_id, rf.high_water_threshold, rft.bankfull_rf, rft.cluster, cc.geom\n", + "FROM derived.recurrence_flows_conus as rf\n", + "JOIN derived.featureid_huc_crosswalk AS crosswalk ON rf.feature_id = crosswalk.feature_id\n", + "JOIN derived.huc8_rf_thresholds AS rft ON rft.huc8 = crosswalk.huc8\n", + "JOIN derived.channels_conus as cc ON cc.feature_id = crosswalk.feature_id\n", + "WHERE rf.high_water_threshold IS NULL;\n", + "\"\"\"\n", + "\n", + "gdf = run_sql_in_db(sql, return_geodataframe=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "aeece450", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idhigh_water_thresholdbankfull_rfclustergeom
\n", + "
" + ], + "text/plain": [ + "Empty GeoDataFrame\n", + "Columns: [feature_id, high_water_threshold, bankfull_rf, cluster, geom]\n", + "Index: []" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d619b54e", + "metadata": {}, + "outputs": [], + "source": [ + "map_column(gdf, \"cluster\", legend=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "bd78861d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_0rf_1_1rf_1_2rf_1_3rf_1_4rf_1_5rf_1_6rf_1_7rf_1_8...rf_3_2rf_3_3rf_3_5rf_4_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_threshold
017928.6150.1168.2873.7578.6582.1784.7688.0292.72...135.08138.42146.35157.86105.31180.67243.77340.27425.5395.93
\n", + "

1 rows × 32 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_0 rf_1_1 rf_1_2 rf_1_3 rf_1_4 rf_1_5 rf_1_6 rf_1_7 \\\n", + "0 179 28.61 50.11 68.28 73.75 78.65 82.17 84.76 88.02 \n", + "\n", + " rf_1_8 ... rf_3_2 rf_3_3 rf_3_5 rf_4_0 rf_2_0_17c rf_5_0_17c \\\n", + "0 92.72 ... 135.08 138.42 146.35 157.86 105.31 180.67 \n", + "\n", + " rf_10_0_17c rf_25_0_17c rf_50_0_17c high_water_threshold \n", + "0 243.77 340.27 425.53 95.93 \n", + "\n", + "[1 rows x 32 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT *\n", + "FROM derived.recurrence_flows_conus\n", + "WHERE feature_id = 179;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "a0f6f80c", + "metadata": {}, + "source": [ + "Update the specific clusters with the new recurrence flows" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "74888239", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Updating 1 cluster with rf_2_9\n", + "Updating 2 cluster with rf_1_6\n", + "Updating 3 cluster with rf_1_6\n", + "Updating 4 cluster with rf_1_5\n", + "Updating 5 cluster with rf_1_6\n", + "Updating 6 cluster with rf_1_1\n", + "Updating 7 cluster with rf_3_2\n", + "Updating 8 cluster with rf_1_0\n", + "Updating 9 cluster with rf_1_1\n", + "Updating 10 cluster with rf_1_3\n", + "Updating 11 cluster with rf_1_3\n" + ] + } + ], + "source": [ + "cluster_dict = {\n", + " 1: \"rf_2_9\",\n", + " 2: \"rf_1_6\",\n", + " 3: \"rf_1_6\",\n", + " 4: \"rf_1_5\",\n", + " 5: \"rf_1_6\",\n", + " 6: \"rf_1_1\",\n", + " 7: \"rf_3_2\",\n", + " 8: \"rf_1_0\",\n", + " 9: \"rf_1_1\",\n", + " 10: \"rf_1_3\",\n", + " 11: \"rf_1_3\"\n", + "}\n", + "\n", + "for cluster, value in cluster_dict.items():\n", + " print(f\"Updating {cluster} cluster with {value}\")\n", + " sql = f\"UPDATE derived.huc8_rf_thresholds SET bankfull_rf = '{value}' WHERE cluster = {cluster};\"\n", + " run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "f461a100", + "metadata": {}, + "source": [ + "Check New Cluster Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8abcbccc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bankfull_rf
cluster
1.0rf_2_9
2.0rf_1_6
3.0rf_1_6
4.0rf_1_5
5.0rf_1_6
6.0rf_1_1
7.0rf_3_2
8.0rf_1_0
9.0rf_1_1
10.0rf_1_3
11.0rf_1_3
NaNNone
\n", + "
" + ], + "text/plain": [ + " bankfull_rf\n", + "cluster \n", + "1.0 rf_2_9\n", + "2.0 rf_1_6\n", + "3.0 rf_1_6\n", + "4.0 rf_1_5\n", + "5.0 rf_1_6\n", + "6.0 rf_1_1\n", + "7.0 rf_3_2\n", + "8.0 rf_1_0\n", + "9.0 rf_1_1\n", + "10.0 rf_1_3\n", + "11.0 rf_1_3\n", + "NaN None" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT bankfull_rf, cluster\n", + "FROM derived.huc8_rf_thresholds\n", + "GROUP BY bankfull_rf, cluster\n", + "ORDER BY cluster\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "df = df.set_index('cluster')\n", + "df" + ] + }, + { + "cell_type": "markdown", + "id": "d4bf730c", + "metadata": {}, + "source": [ + "Update high water threshold column in the recurrence flows table from the new cluster values" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f4a8305c", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "UPDATE derived.recurrence_flows_conus AS rf_conus\n", + "SET high_water_threshold = CASE\n", + " WHEN hrft.bankfull_rf= 'rf_1_0' THEN rf_1_0\n", + " WHEN hrft.bankfull_rf= 'rf_1_1' THEN rf_1_1\n", + " WHEN hrft.bankfull_rf= 'rf_1_2' THEN rf_1_2\n", + " WHEN hrft.bankfull_rf= 'rf_1_3' THEN rf_1_3\n", + " WHEN hrft.bankfull_rf= 'rf_1_4' THEN rf_1_4\n", + " WHEN hrft.bankfull_rf= 'rf_1_5' THEN rf_1_5\n", + " WHEN hrft.bankfull_rf= 'rf_1_6' THEN rf_1_6\n", + " WHEN hrft.bankfull_rf= 'rf_1_7' THEN rf_1_7\n", + " WHEN hrft.bankfull_rf= 'rf_1_8' THEN rf_1_8\n", + " WHEN hrft.bankfull_rf= 'rf_1_9' THEN rf_1_9\n", + " WHEN hrft.bankfull_rf= 'rf_2_0' THEN rf_2_0\n", + " WHEN hrft.bankfull_rf= 'rf_2_1' THEN rf_2_1\n", + " WHEN hrft.bankfull_rf= 'rf_2_2' THEN rf_2_2\n", + " WHEN hrft.bankfull_rf= 'rf_2_3' THEN rf_2_3\n", + " WHEN hrft.bankfull_rf= 'rf_2_4' THEN rf_2_4\n", + " WHEN hrft.bankfull_rf= 'rf_2_5' THEN rf_2_5\n", + " WHEN hrft.bankfull_rf= 'rf_2_6' THEN rf_2_6\n", + " WHEN hrft.bankfull_rf= 'rf_2_7' THEN rf_2_7\n", + " WHEN hrft.bankfull_rf= 'rf_2_8' THEN rf_2_8\n", + " WHEN hrft.bankfull_rf= 'rf_2_9' THEN rf_2_9\n", + " WHEN hrft.bankfull_rf= 'rf_3_0' THEN rf_3_0\n", + " WHEN hrft.bankfull_rf= 'rf_3_2' THEN rf_3_2\n", + " WHEN hrft.bankfull_rf= 'rf_3_3' THEN rf_3_3\n", + " WHEN hrft.bankfull_rf= 'rf_3_5' THEN rf_3_5\n", + " WHEN hrft.bankfull_rf= 'rf_4_0' THEN rf_4_0\n", + " WHEN hrft.bankfull_rf= 'rf_2_0_17c' THEN rf_2_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_5_0_17c' THEN rf_5_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_10_0_17c' THEN rf_10_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_25_0_17c' THEN rf_25_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_50_0_17c' THEN rf_50_0_17c\n", + " ELSE NULL\n", + " END\n", + "FROM derived.featureid_huc_crosswalk AS fhc, derived.huc8_rf_thresholds AS hrft\n", + "WHERE fhc.feature_id = rf_conus.feature_id AND fhc.huc8 = hrft.huc8;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "d16a5a08", + "metadata": {}, + "source": [ + "Check the new high water threshold value for a specific cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "17c8760a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idhigh_water_thresholdbankfull_rfcluster
0428937132.92rf_1_310
142894193151.54rf_1_310
2428942114.91rf_1_310
3428938716.68rf_1_310
442894233170.93rf_1_310
...............
786101000350512.01rf_1_310
787101000350617.03rf_1_310
788101000350777.47rf_1_310
789101000351081.63rf_1_310
790101000351248.46rf_1_310
\n", + "

791 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " feature_id high_water_threshold bankfull_rf cluster\n", + "0 4289371 32.92 rf_1_3 10\n", + "1 4289419 3151.54 rf_1_3 10\n", + "2 4289421 14.91 rf_1_3 10\n", + "3 4289387 16.68 rf_1_3 10\n", + "4 4289423 3170.93 rf_1_3 10\n", + ".. ... ... ... ...\n", + "786 1010003505 12.01 rf_1_3 10\n", + "787 1010003506 17.03 rf_1_3 10\n", + "788 1010003507 77.47 rf_1_3 10\n", + "789 1010003510 81.63 rf_1_3 10\n", + "790 1010003512 48.46 rf_1_3 10\n", + "\n", + "[791 rows x 4 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT rf.feature_id, rf.high_water_threshold, rft.bankfull_rf, rft.cluster\n", + "FROM derived.recurrence_flows_conus as rf\n", + "JOIN derived.featureid_huc_crosswalk AS crosswalk ON rf.feature_id = crosswalk.feature_id\n", + "JOIN derived.huc8_rf_thresholds AS rft ON rft.huc8 = crosswalk.huc8\n", + "WHERE rft.huc8 = 1010006;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "6fa3a209", + "metadata": {}, + "source": [ + "Check recurrence flows for specific reach to make sure the new value is correct" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7ec81d73", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_0rf_1_1rf_1_2rf_1_3rf_1_4rf_1_5rf_1_6rf_1_7rf_1_8...rf_3_2rf_3_3rf_3_5rf_4_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_threshold
017928.6150.1168.2873.7578.6582.1784.7688.0292.72...135.08138.42146.35157.86105.31180.67243.77340.27425.5373.75
\n", + "

1 rows × 32 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_0 rf_1_1 rf_1_2 rf_1_3 rf_1_4 rf_1_5 rf_1_6 rf_1_7 \\\n", + "0 179 28.61 50.11 68.28 73.75 78.65 82.17 84.76 88.02 \n", + "\n", + " rf_1_8 ... rf_3_2 rf_3_3 rf_3_5 rf_4_0 rf_2_0_17c rf_5_0_17c \\\n", + "0 92.72 ... 135.08 138.42 146.35 157.86 105.31 180.67 \n", + "\n", + " rf_10_0_17c rf_25_0_17c rf_50_0_17c high_water_threshold \n", + "0 243.77 340.27 425.53 73.75 \n", + "\n", + "[1 rows x 32 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT *\n", + "FROM derived.recurrence_flows_conus AS rf_conus\n", + "WHERE feature_id = 179\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "cbfd07a4", + "metadata": {}, + "source": [ + "Temporarily move the high water threshold table to the egis reference schema" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2a352b42", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "move_data_to_another_db(\"viz\", \"egis\", \"derived.recurrence_flows_conus\", \"reference.recurrence_flows_conus\", stage=False, add_oid=False, add_geom_index=False, columns=[\"feature_id\", \"high_water_threshold\"])" + ] + }, + { + "cell_type": "markdown", + "id": "69d06bf8", + "metadata": {}, + "source": [ + "Update the high water threshold on the channels table" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "4fbbd0a3", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "UPDATE reference.channels_conus AS cc\n", + "SET high_water_threshold = rf.high_water_threshold\n", + "FROM reference.recurrence_flows_conus AS rf\n", + "WHERE cc.feature_id = rf.feature_id\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql, db_type=\"egis\")" + ] + }, + { + "cell_type": "markdown", + "id": "2ef7e539", + "metadata": {}, + "source": [ + "Check to make sure the high water threshold on the channels table is what we expect" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "0922cdbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idstrm_ordernamehuc6nwm_versgeomhigh_water_thresholdrf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17coidfeature_id_str
042893711Unnamed Stream0101002.10105000020110F00000100000001020000000E00000046...32.9245.3770.0487.47110.49128.214364214289371
\n", + "
" + ], + "text/plain": [ + " feature_id strm_order name huc6 nwm_vers \\\n", + "0 4289371 1 Unnamed Stream 010100 2.1 \n", + "\n", + " geom high_water_threshold \\\n", + "0 0105000020110F00000100000001020000000E00000046... 32.92 \n", + "\n", + " rf_2_0_17c rf_5_0_17c rf_10_0_17c rf_25_0_17c rf_50_0_17c oid \\\n", + "0 45.37 70.04 87.47 110.49 128.21 436421 \n", + "\n", + " feature_id_str \n", + "0 4289371 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT *\n", + "FROM reference.channels_conus\n", + "WHERE feature_id = 4289371;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql, db_type=\"egis\")" + ] + }, + { + "cell_type": "markdown", + "id": "6a14735f", + "metadata": {}, + "source": [ + "Remove the temporary recurrence flow table from the reference schema in the egis db" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "10d2e0dc", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "DROP TABLE reference.recurrence_flows_conus;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql, db_type=\"egis\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7375ac93", + "metadata": {}, + "outputs": [], + "source": [ + "import boto3\n", + "from datetime import datetime\n", + "import json\n", + "import os\n", + "\n", + "NWM_DATA_BUCKET = \"hydrovis-ti-nwm-us-east-1\"\n", + "RNR_MAX_FLOWS_DATA_BUCKET = \"hydrovis-ti-rnr-us-east-1\"\n", + "NWM_DATA_BUCKET = \"hydrovis-ti-nwm-us-east-1\"\n", + "\n", + "def kickoff_viz_lambdas(configurations=\"all\"):\n", + " client = boto3.client('lambda')\n", + " max_flows_lambda = f\"viz_max_flows_ti\"\n", + " ingest_lambda = f\"viz_db_ingest_ti\"\n", + " postprocess_lambda = f\"viz_db_postprocess_ti\"\n", + "\n", + " all_configurations = [\n", + " \"analysis_assim\", \"analysis_assim_14day\", \"analysis_assim_hawaii\", \"analysis_assim_puertorico\", \"short_range\", \"short_range_hawaii\",\n", + " \"short_range_puertorico\", \"medium_range_mem1\", \"replace_route\"\n", + " ]\n", + " \n", + " conus_configurations = [\n", + " \"analysis_assim\", \"analysis_assim_14day\", \"short_range\", \"medium_range_mem1\", \"replace_route\"\n", + " ]\n", + " \n", + " hawaii_configurations = [\n", + " \"analysis_assim_hawaii\", \"short_range_hawaii\"\n", + " ]\n", + " \n", + " prvi_configurations = [\n", + " \"analysis_assim_puertorico\", \"short_range_puertorico\"\n", + " ]\n", + " \n", + " reference_configurations = [\n", + " \"reference\"\n", + " ]\n", + " \n", + " if configurations == \"all\":\n", + " configurations = all_configurations\n", + " elif configurations == \"conus\":\n", + " configurations = conus_configurations \n", + " elif configurations == \"hawaii\":\n", + " configurations = hawaii_configurations \n", + " elif configurations == \"prvi\":\n", + " configurations = prvi_configurations\n", + " elif type(configurations) is list:\n", + " invalid_configs = [config for config in configurations if config not in all_configurations]\n", + " if invalid_configs:\n", + " raise Exception(f\"{invalid_configs} are not a valid configurations argument\")\n", + " elif type(configurations) is str:\n", + " if configurations not in all_configurations and configurations != \"reference\":\n", + " raise Exception(f\"{configurations} are not a valid configurations argument\")\n", + " configurations = [configurations]\n", + " else:\n", + " raise Exception(f\"{configurations} is not a valid configurations argument\")\n", + "\n", + "\n", + " for configuration in configurations:\n", + " if configuration == \"analysis_assim_14day\":\n", + " print(\"Invoking max flows function for AnA 14 day\")\n", + " current_datetime = datetime.utcnow()\n", + " current_date = current_datetime.strftime(\"%Y%m%d\")\n", + " latest_0Z_ana_file = f\"common/data/model/com/nwm/prod/nwm.{current_date}/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\" # noqa: E501\n", + " max_flows_payload = {\"data_key\": latest_0Z_ana_file, \"data_bucket\": NWM_DATA_BUCKET}\n", + "\n", + " client.invoke(\n", + " FunctionName=max_flows_lambda,\n", + " InvocationType='Event',\n", + " Payload=bytes(json.dumps(max_flows_payload), \"utf-8\")\n", + " )\n", + " elif configuration == \"reference\":\n", + " print(f\"Invoking db_postprocess function for reference services\")\n", + " postprocess_payload = {\n", + " \"configuration\": \"reference\", \"reference_time\": current_datetime.strftime(\"%Y-%m-%d %H:%M:%S\")\n", + " }\n", + " client.invoke(\n", + " FunctionName=postprocess_lambda,\n", + " InvocationType='Event',\n", + " Payload=bytes(json.dumps(postprocess_payload), \"utf-8\")\n", + " )\n", + " else:\n", + " print(f\"Invoking db_postprocess function for {configuration}\")\n", + " postprocess_payload = {\"configuration\": configuration}\n", + " client.invoke(\n", + " FunctionName=postprocess_lambda,\n", + " InvocationType='Event',\n", + " Payload=bytes(json.dumps(postprocess_payload), \"utf-8\")\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "95de240c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Invoking db_postprocess function for analysis_assim\n", + "Invoking max flows function for AnA 14 day\n", + "Invoking db_postprocess function for short_range\n", + "Invoking db_postprocess function for medium_range_mem1\n", + "Invoking db_postprocess function for replace_route\n" + ] + } + ], + "source": [ + "kickoff_viz_lambdas(\"conus\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/5. Service Metadata-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/5. Service Metadata-checkpoint.ipynb new file mode 100644 index 00000000..0e8271ef --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/5. Service Metadata-checkpoint.ipynb @@ -0,0 +1,4241 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e8425f56", + "metadata": {}, + "source": [ + "

This notebook is to track and edit service metadata, including service data flows. For each service, create a markdown cell and write what service the following code will edit

" + ] + }, + { + "cell_type": "markdown", + "id": "03aca48b", + "metadata": {}, + "source": [ + "#### IF YOU MAKE CHANGES TO THIS NOTEBOOK, YOU ARE RESPONSIBLE TO COMITTING THOSE CHANGES TO THE REPO IN THE HYDROVIS-VISUALIZATION REPO ####" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea193c96", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install geopandas contextily" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d0683edd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from helper_functions.shared_functions import *" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "d66b3de8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
serviceconfigurationpostprocess_max_flowspostprocess_servicepostprocess_summarysummarydescriptiontagscreditsegis_serveregis_folderfim_servicefeature_servicerunfim_configs
0srf_accum_precipforcing_short_rangeNoneraster_metadataNonetestteststreamflow,national,water,model,nwmNational Water Model, NOAA/NWS National Water ...imagenwmFalseFalseTrue[]
\n", + "
" + ], + "text/plain": [ + " service configuration postprocess_max_flows \\\n", + "0 srf_accum_precip forcing_short_range None \n", + "\n", + " postprocess_service postprocess_summary summary description \\\n", + "0 raster_metadata None test test \n", + "\n", + " tags \\\n", + "0 streamflow,national,water,model,nwm \n", + "\n", + " credits egis_server egis_folder \\\n", + "0 National Water Model, NOAA/NWS National Water ... image nwm \n", + "\n", + " fim_service feature_service run fim_configs \n", + "0 False False True [] " + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"Select * FROM admin.services WHERE service = 'srf_accum_precip'\"\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "3efcec85", + "metadata": {}, + "source": [ + "

Non FIM Vector Services

" + ] + }, + { + "cell_type": "markdown", + "id": "b8016f51", + "metadata": {}, + "source": [ + "

AnA Anomaly

" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6f7e1110", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_anomaly'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Anomaly'\n", + "description = 'Depicts seasonal streamflow anomalies derived from the analysis and assimilation configuration of the National Water Model (NWM) over the contiguous U.S. Anomalies are based on 7-day and 14-day moving average streamflow percentiles for each reach and the current calendar day.'\n", + "tags = 'streamflow,anomaly,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P14D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "90439600", + "metadata": {}, + "source": [ + "

AnA High Flow Magnitude

" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5d84a41f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_high_flow_magnitude'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = 'ana_max_flows'\n", + "postprocess_service = 'ana_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'High Flow Magnitude'\n", + "description = 'Depicts the magnitude of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their current flow. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'high flow, magnitude, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana'\n", + "target_table = 'cache.max_flows_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "004ff078", + "metadata": {}, + "source": [ + "

AnA High Flow Magnitude Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2e96bb31", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_high_flow_magnitude_hi'\n", + "configuration = 'analysis_assim_hawaii'\n", + "postprocess_max_flows = 'ana_max_flows_hi'\n", + "postprocess_service = 'ana_high_flow_magnitude_hi'\n", + "postprocess_summary = None\n", + "summary = 'High Flow Magnitude Hawaii'\n", + "description = 'Depicts the magnitude of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Hawaii. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their current flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm0000.hawaii.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_table = 'cache.max_flows_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "afbce706", + "metadata": {}, + "source": [ + "

AnA High Flow Magnitude Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5502b0f2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_high_flow_magnitude_prvi'\n", + "configuration = 'analysis_assim_puertorico'\n", + "postprocess_max_flows = 'ana_max_flows_prvi'\n", + "postprocess_service = 'ana_high_flow_magnitude_prvi'\n", + "postprocess_summary = None\n", + "summary = 'High Flow Magnitude Puerto Rico/Virgin Islands'\n", + "description = 'Depicts the magnitude of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their current flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,puerto,rico,virgin,islands,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_table = 'cache.max_flows_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "1c9f8781", + "metadata": {}, + "source": [ + "

AnA Past 14-Day High Flow Magnitude Analysis

" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "bf515022", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_past_14day_max_high_flow_magnitude'\n", + "configuration = 'analysis_assim_14day'\n", + "postprocess_max_flows = 'ana_14day_max_flows'\n", + "postprocess_service = 'ana_past_14day_max_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'Past 14-Day High Flow Magnitude Analysis'\n", + "description = 'Depicts the magnitude of the peak NWM streamflow analysis over the past 14 days where the National Water Model (NWM) signaled high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their maximum flow over the past 14 days. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,14day'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_14day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_14day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_7day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_7day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "6ae47b80", + "metadata": {}, + "source": [ + "

AnA Streamflow

" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "bc99f1b4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_streamflow'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = 'ana_max_flows'\n", + "postprocess_service = 'ana_streamflow'\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Analysis'\n", + "description = 'Depicts the streamflow output from the operational National Water Model (v2.1) analysis and assimilation for the continental United States. Updated hourly.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana'\n", + "target_table = 'cache.max_flows_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "289863ea", + "metadata": {}, + "source": [ + "

AnA Streamflow Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "5d3378cf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_streamflow_hi'\n", + "configuration = 'analysis_assim_hawaii'\n", + "postprocess_max_flows = 'ana_max_flows_hi'\n", + "postprocess_service = 'ana_streamflow_hi'\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Analysis for Hawaii'\n", + "description = 'Depicts the streamflow output from the operational National Water Model (v2.2) analysis and assimilation for the state of Hawaii. Updated hourly.'\n", + "tags = 'national water model, nwm, hawaii'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "public_service = False\n", + "run = False\n", + "fim_configs = None\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm0000.hawaii.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_table = 'cache.max_flows_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "205f2d34", + "metadata": {}, + "source": [ + "

AnA Streamflow Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "5f27935f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_streamflow_prvi'\n", + "configuration = 'analysis_assim_puertorico'\n", + "postprocess_max_flows = 'ana_max_flows_prvi'\n", + "postprocess_service = 'ana_streamflow_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Analysis for Puerto Rico and Virgin Islands'\n", + "description = 'Depicts the streamflow output from the operational National Water Model (v2.2) analysis and assimilation for Puerto Rico and the U.S. Virgin Islands. Updated hourly.'\n", + "tags = 'streamflow,national,water,model,nwm,puerto,rico,virgin,islands,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "public_service = False\n", + "run = False\n", + "fim_configs = None\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_table = 'cache.max_flows_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "73b70347", + "metadata": {}, + "source": [ + "

Medium-Range High Water Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "1feba880", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_high_water_arrival_time'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'mrf_high_water_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range High Water Arrival Time Forecast'\n", + "description = 'Depicts the forecast arrival time of high water over the next 10 days. This service is derived from the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above the high water threshold over the next 10 days. Reaches are colored by the time at which they are forecast to reach high water (calculated in 3 hour increments). High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium range forecast, high water, arrival time, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,241,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "2cc68d4c", + "metadata": {}, + "source": [ + "

Medium-Range High Water Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "4a576091", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_high_water_probability'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range High Water Probability Forecast'\n", + "description = 'Depicts the probability of forecast high water over the next 5 days using ensembles from the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above high water on Day 1, Day 2, Day 3, and Days 4-5, using the 7 ensemble members of the medium-range forecast. Reaches are colored by the probability that they will meet or exceed the high water threshold on Day 1, Day 2, Day 3, and Days 4-5. Probabilities are computed as the % agreement across the 7 ensemble members, equally weighted. Also shown are USGS HUC8 polygons for basins with greater than 50% of NWM features with flow expected to be at or above high water over the next 5 days, symbolized by the average probability. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium,range,forecast,high,water,ensemble,national,water,model,nwm,probability'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem2/nwm.t{{datetime:%H}}z.medium_range.channel_rt_2.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem2'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem3/nwm.t{{datetime:%H}}z.medium_range.channel_rt_3.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem3'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem4/nwm.t{{datetime:%H}}z.medium_range.channel_rt_4.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem4'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem5/nwm.t{{datetime:%H}}z.medium_range.channel_rt_5.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem5'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem6/nwm.t{{datetime:%H}}z.medium_range.channel_rt_6.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem6'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem7/nwm.t{{datetime:%H}}z.medium_range.channel_rt_7.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem7'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "9b0b7820", + "metadata": {}, + "source": [ + "

Medium-Range Maximum High Flow Magnitude Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ba20e1c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_max_high_flow_magnitude'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = 'mrf_max_flows'\n", + "postprocess_service = 'mrf_max_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Maximum High Flow Magnitude Forecast'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 3, 5 and 10 days where the NWM is signaling high water. This service is derived from the medium-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their forecast peak flow. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium range forecast, maximum, high flow, magnitude, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_table = 'cache.max_flows_mrf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "04a0dae6", + "metadata": {}, + "source": [ + "

Medium-Range Peak Flow Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c2df6424", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_peak_flow_arrival_time'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'mrf_peak_flow_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Peak Flow Arrival Time Forecast'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) medium-range forecast. Shown are reaches that are expected to have flow at or above the high water threshold over the next 3 and 10 days.. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water flows were derived using a 40-year retrospective analysis of the NWM (v2.1). Updated hourly.'\n", + "tags = 'medium range forecast, peak flow, arrival time, national water model, nwm, conus'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "35a00e3c", + "metadata": {}, + "source": [ + "

Medium-Range Rapid Onset Flooding Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c8bb17a1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_rapid_onset_flooding'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'mrf_rapid_onset_flooding'\n", + "postprocess_summary = 'mrf_rapid_onset_flooding_hucs'\n", + "summary = 'Medium-Range Rapid Onset Flooding Forecast'\n", + "description = 'Depicts forecast rapid onset flooding using the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches (stream order 4 and below) with a forecast flow increase of 100% or greater within 3 hours, and which are expected to be at or above the high water threshold within 6 hours of that increase (all calculated in 3 hour increments). Also shown are USGS HUC08 polygons symbolized by the percentage of NWM waterway length (within each HUC08) that is expected to meet the previously mentioned criteria. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium, range, forecast, streamflow, rapid, onset, flood, national, water, model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "278ddf2c", + "metadata": { + "tags": [] + }, + "source": [ + "

Medium-Range Rapid Onset Flooding Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "90fd3b64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_rapid_onset_flooding_probability'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Rapid Onset Flooding Probability Forecast'\n", + "description = 'Depicts the probability of forecast rapid onset flooding over the next 10 days using ensembles from the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above high water thresholds on Day 1, Day 2, Day 3, Days 4-5, and Days 1-5 using the 7 ensemble members of the medium-range forecast. Reaches are colored by the probability that they will meet or exceed rapid onset conditions on Day 1, Day 2, Day 3, Days 4-5, and Days 1-5. Probabilities are computed as the % agreement across the 7 ensemble members, equally weighted. Hotspots show average 1-5 day rapid onset flooding probability, weighted by reach length, for USGS HUC8 basins with greater than 10% of NWM feature length meeting rapid onset criteria in the next 5 days. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium,range,forecast,streamflow,rapid,onset,flood,probability,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem2/nwm.t{{datetime:%H}}z.medium_range.channel_rt_2.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem2'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem3/nwm.t{{datetime:%H}}z.medium_range.channel_rt_3.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem3'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem4/nwm.t{{datetime:%H}}z.medium_range.channel_rt_4.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem4'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem5/nwm.t{{datetime:%H}}z.medium_range.channel_rt_5.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem5'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem6/nwm.t{{datetime:%H}}z.medium_range.channel_rt_6.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem6'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem7/nwm.t{{datetime:%H}}z.medium_range.channel_rt_7.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem7'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "aeb4dfea", + "metadata": {}, + "source": [ + "

RFC 5-Day Maximum Streamflow

" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "294f9687", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'rfc_5day_max_downstream_streamflow'\n", + "configuration = 'replace_route'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'rfc_5day_max_downstream_streamflow'\n", + "postprocess_summary = 'rfc_5day_max_downstream_streamflow_rfc_points'\n", + "summary = 'RFC 5-Day Maximum Streamflow'\n", + "description = 'Depicts maximum forecast streamflow over the next 5 days derived from the official River Forecast Center (RFC) forecast routed downstream through the National Water Model (NWM) stream network. Maximum streamflows are available downstream of RFC forecast points whose forecast reaches action status or greater.'\n", + "tags = 'streamflow, replace and route, rfc'\n", + "credits = 'NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'rfc'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/replace_route/{{datetime:%Y%m%d}}/rnr_{{datetime:%H}}_max_flows.csv'\n", + "source_table = None\n", + "target_table = 'ingest.rnr_max_flows'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "52e9d942", + "metadata": {}, + "source": [ + "

RFC Maximum Stage Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "5bb0b000", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'rfc_max_stage'\n", + "configuration = 'ahps'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'rfc_max_stage'\n", + "postprocess_summary = None\n", + "summary = 'RFC Maximum Stage Forecast'\n", + "description = 'Depicts Advanced Hydrologic Prediction Service (AHPS) River Forecast Center (RFC) forecast points with forecasts at or above action stage. Circles represent forecast points where stages are changing by less than +/- 5% over the entire forecast period. Upward-pointing triangles represent forecast points where a greater than 5% increase in stage is expected sometime during the forecast. If stage increases greater than 5% are not expected, downward-pointing triangles represent forecast points where a greater than 5% decrease in stage is expected sometime during the forecast. Forecast points are colored by their maximum forecast flood category.'\n", + "tags = 'rfc,ahps,forecast,maximum,stage'\n", + "credits = 'NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'rfc'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_stage/ahps/{{datetime:%Y%m%d}}/{{datetime:%H_%M}}_ahps_forecasts.csv'\n", + "source_table = None\n", + "target_table = 'ingest.ahps_forecasts'\n", + "target_keys = '(nws_lid)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = 'max_stage/ahps/{{datetime:%Y%m%d}}/{{datetime:%H_%M}}_ahps_metadata.csv'\n", + "source_table = None\n", + "target_table = 'ingest.ahps_metadata'\n", + "target_keys = '(nws_lid)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "fe59bf78", + "metadata": {}, + "source": [ + "

Short-Range High Water Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "5afc0360", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_arrival_time'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_high_water_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Arrival Time Forecast'\n", + "description = 'Depicts the forecast arrival time of high water over the next 18 hours. This service is derived from the short-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above the high water threshold over the next 18 hours. Reaches are colored by the time at which they are forecast to reach high water. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short range forecast, high water, arrival time, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "81f03ea2", + "metadata": {}, + "source": [ + "

Short-Range High Water Arrival Time Forecast - Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "99060bc2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_arrival_time_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_high_water_arrival_time_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Arrival Time Forecast - Hawaii'\n", + "description = 'Depicts the forecast arrival time of high water over the next 48 hours. This service is derived from the short-range configuration of the National Water Model (NWM) over Hawaii. Shown are reaches that are expected to have flow at or above the high water threshold over the next 48 hours. Reaches are colored by the time at which they are forecast to reach high water. High water flows were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'short range forecast, high water, arrival time, national water model, nwm, hawaii'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "e36e4c5a", + "metadata": {}, + "source": [ + "

Short-Range High Water Arrival Time - Puerto Rico/Virgin Islands

" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "f5c2b55a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_arrival_time_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_high_water_arrival_time_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Arrival Time - Puerto Rico/Virgin Islands'\n", + "description = 'Depicts the forecast arrival time of high water over the next 48 hours. This service is derived from the short-range configuration of the National Water Model (NWM) over Puerto Rico and the U.S. Virgin Islands. Shown are reaches that are expected to have flow at or above the high water threshold over the next 48 hours. Reaches are colored by the time at which they are forecast to reach high water. High water flows were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'short range forecast, high water, arrival time, national water model, nwm, puerto rico, virgin islands'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "2efb925f", + "metadata": {}, + "source": [ + "

Short-Range Peak Flow Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "adb59f27", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_peak_flow_arrival_time'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_peak_flow_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Peak Flow Arrival Time Forecast'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) short-range forecast. Shown are reaches that are expected to have flow at or above the high water threshold over the next 18 hours. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water flows were derived using a 40-year retrospective analysis of the NWM (v2.1). Updated hourly.'\n", + "tags = 'short range forecast, peak flow, arrival time, national water model, nwm, conus'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "6d694282", + "metadata": {}, + "source": [ + "

Short-Range Peak Flow Arrival Time Forecast - Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "4fb14f8b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_peak_flow_arrival_time_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_peak_flow_arrival_time_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Peak Flow Arrival Time Forecast - Hawaii'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) short-range forecast for the state of Hawaii. Shown are reaches that are expected to have flow at or above high water threshold flow over the next 48 hours. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water threshold flows and annual exceedance probabilities were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf. Updated every 12 hours.'\n", + "tags = 'short range forecast, peak flow, arrival time, national water model, nwm, hawaii'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "69cf6275", + "metadata": {}, + "source": [ + "

Short-Range Peak Flow Arrival Time - Puerto Rico/Virgin Islands

" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b7de97dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_peak_flow_arrival_time_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_peak_flow_arrival_time_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Peak Flow Arrival Time - Puerto Rico/Virgin Islands'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) short-range forecast for Puerto Rico and the U.S. Virgin Islands. Shown are reaches that are expected to have flow at or above high water threshold flow over the next 48 hours. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water threshold flows and annual exceedance probabilities were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf. Updated every 12 hours.'\n", + "tags = 'short range forecast, peak flow, arrival time, national water model, nwm, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "00570e84", + "metadata": {}, + "source": [ + "

Short-Range High Water Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "8b7f4661", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_probability'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Probability Forecast'\n", + "description = 'Depicts the probability of forecast high water over the next 12 hours using a time-lagged ensemble from the short-range forecast of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are forecast to have flow at or above high water within the next 12 hours of at least one of the last 7 forecasts. Reaches are colored by the probability that they will meet or exceed the high water threshold across the last 7 forecasts. Probabilities are derived by counting the number of forecasts that meet the high water condition within the next 12 hours, equally weighted. Also shown are USGS HUC10 polygons for basins with greater than 50% of NWM features with flow expected to be at or above high water over the next 12 hours, symbolized by the average probability. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short,range,forecast,high,water,national,water,model,nwm,probability'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-1H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-1H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_1h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-2H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-2H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_2h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-3H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-3H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_3h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-4H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-4H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_4h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-5H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-5H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_5h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-6H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-6H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_6h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "4c183cbf", + "metadata": {}, + "source": [ + "

Short-Range Maximum High Flow Magnitude Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "0049b269", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_high_flow_magnitude'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = 'srf_max_flows'\n", + "postprocess_service = 'srf_max_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Maximum High Flow Magnitude Forecast'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 18 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their forecast peak flow. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short range forecast, maximum, high flow, magnitude, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf'\n", + "target_table = 'cache.max_flows_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "3ae97c12", + "metadata": {}, + "source": [ + "

Short-Range Maximum High Flow Magnitude Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "58bf7f26", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_high_flow_magnitude_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = 'srf_max_flows_hi'\n", + "postprocess_service = 'srf_max_high_flow_magnitude_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Maximum High Flow Magnitude Hawaii'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Hawaii. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their peak flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,hawaii,srf,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_table = 'cache.max_flows_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "2e999ceb", + "metadata": {}, + "source": [ + "

Short-Range Maximum High Flow Magnitude Puerto Rico/Virgin Islands

" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "e40bf8c7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_high_flow_magnitude_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = 'srf_max_flows_prvi'\n", + "postprocess_service = 'srf_max_high_flow_magnitude_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Maximum High Flow Magnitude Puerto Rico/Virgin Islands'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their peak flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'high flow, magnitude, national water model, nwm, puerto rico, virgin islands, srf'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_table = 'cache.max_flows_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "7f6934b2", + "metadata": {}, + "source": [ + "

Short-Range Rapid Onset Flooding

" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "1ffdf1df", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_rapid_onset_flooding'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_rapid_onset_flooding'\n", + "postprocess_summary = 'srf_rapid_onset_flooding_hucs'\n", + "summary = 'Short-Range Rapid Onset Flooding'\n", + "description = 'Depicts forecast rapid onset flooding using the short-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches (stream order 4 and below) with a forecast flow increase of 100% or greater within an hour, and which are expected to be at or above the high water threshold within 6 hours of that increase. Also shown are USGS HUC10 polygons symbolized by the percentage of NWM waterway length (within each HUC10) that is expected to meet the previously mentioned criteria. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short, range, forecast, streamflow, rapid, onset, flood, national, water, model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "c00c4f4f", + "metadata": {}, + "source": [ + "

Short-Range Rapid Onset Flooding Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "a057a4d3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_rapid_onset_flooding_probability'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Rapid Onset Flooding Probability Forecast'\n", + "description = 'Depicts the probability of forecast rapid onset flooding over the next 18 hours using a time-lagged ensemble from the short-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches (stream order 4 and below) that are expected to meet rapid onset flooding criteria (flow increase of 100% or greater within one hour and high water threshold conditions within 6 hours) using the most recent 7 forecasts. Reaches are colored by the probability that they will meet or exceed rapid onset conditions within hours 1-6, 7-12, and 1-12. Probabilities are computed as the % agreement across the 7 ensemble members that a given reach will meet rapid onset criteria at some point during the time period of interest. Hotspots show the average 1-12 hour rapid onset flooding probability, weighted by reach length, for USGS HUC10 basins with greater than 10% of NWM feature length meeting rapid onset criteria in the next 12 hours. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short,range,forecast,streamflow,rapid,onset,flood,probability,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-1H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-1H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_1h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-2H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-2H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_2h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-3H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-3H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_3h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-4H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-4H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_4h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-5H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-5H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_5h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-6H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-6H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_6h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "75e6b414", + "metadata": {}, + "source": [ + "

Short-Range Rate of Change

" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "eff11341", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_rate_of_change'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_rate_of_change'\n", + "postprocess_summary = None\n", + "summary = 'NWM 18-Hr Streamflow Rate of Change Forecast'\n", + "description = 'Depicts expected change in discharge derived from the operational National Water Model (NWM) (v2.1) short-range forecast. Change is computed between the current streamflow and that expected over the next 18 hours at 3-hour intervals, and is only displayed for reaches that are expected to have flow at or above their high water threshold. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short,range,forecast,streamflow,rate,change,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "0263828c", + "metadata": {}, + "source": [ + "

Raster Services

" + ] + }, + { + "cell_type": "markdown", + "id": "95eaf1c8", + "metadata": {}, + "source": [ + "

Past 72-Hour Accumulated Precipitation

" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "61c42eb8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_72hr_accum_precip'\n", + "configuration = 'forcing_analysis_assim'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'MRMS Past 72-Hour Accumulated Precipitation'\n", + "description = 'Depicts accumulated precipitation totals over the past 72 hours derived from the MRMS forcing for the operational National Water Model (v2.1) analysis and assimilation.'\n", + "tags = 'mrms,accumulated,precipitation,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.forcing.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P3D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "18407e2a", + "metadata": {}, + "source": [ + "

Past 72-Hour Accumulated Precipitation - Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "1b4998b0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_72hr_accum_precip_hi'\n", + "configuration = 'forcing_analysis_assim_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'MRMS Past 72-Hour Accumulated Precipitation - Hawaii'\n", + "description = ''\n", + "tags = 'mrms,accumulated,precipitation,national,water,model,nwm,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.forcing.tm00.hawaii.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P3D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "b3f7ec08", + "metadata": {}, + "source": [ + "

Past 72-Hour Accumulated Precipitation - PR/VI

" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "8c8df78a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_72hr_accum_precip_prvi'\n", + "configuration = 'forcing_analysis_assim_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'MRMS Past 72-Hour Accumulated Precipitation - PR & VI'\n", + "description = ''\n", + "tags = 'mrms,accumulated,precipitation,national,water,model,nwm,puerto,rico,virgin,islands,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.forcing.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P3D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "d293c72c", + "metadata": {}, + "source": [ + "

Medium-Range Accumulated Precipitation

" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e14b4597", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_accum_precip'\n", + "configuration = 'forcing_medium_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Accumulated Precipitation Forecast'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 10 days derived from the GFS forcing for the operational National Water Model (v2.2) medium-range forecast. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated every 6 hours.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_medium_range/nwm.t{{datetime:%H}}z.medium_range.forcing.f{{range:1,241,1,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "9ffb4ede", + "metadata": {}, + "source": [ + "

Short-Range Accumulated Precipitation

" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "2b6bea3e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_accum_precip'\n", + "configuration = 'forcing_short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Accumulated Precipitation Forecast'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 18 hours derived from the HRRR forcing for the operational National Water Model (v2.1) short-range forecast. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated hourly.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_short_range/nwm.t{{datetime:%H}}z.short_range.forcing.f{{range:1,19,1,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "14fdd198", + "metadata": {}, + "source": [ + "

Short-Range Accumulated Precipitation Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c7e57e47", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_accum_precip_hi'\n", + "configuration = 'forcing_short_range_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Accumulated Precipitation Forecast Hawaii'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 48 hours derived from the NAM-Nest with HIRESW WRF-ARW forcing for the operational National Water Model (v2.1) short-range forecast for the state of Hawaii. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated every 12 hours.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.forcing.f{{range:1,49,1,%03d}}.hawaii.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "0f3889c4", + "metadata": {}, + "source": [ + "

Short-Range Accumulated Precipitation Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "dd7b884f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_accum_precip_prvi'\n", + "configuration = 'forcing_short_range_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Accumulated Precipitation Forecast Puerto Rico and Virgin Islands'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 48 hours derived from the NAM-Nest with HIRESW WRF-ARW forcing for the operational National Water Model (v2.1) short-range forecast for Puerto Rico and the U.S. Virgin Islands. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated every 12 hours.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "service = 'srf_accum_precip_prvi'\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.forcing.f{{range:1,49,1,%03d}}.puertorico.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "ee509074", + "metadata": {}, + "source": [ + "

Forecast FIM Services

" + ] + }, + { + "cell_type": "markdown", + "id": "5407c311", + "metadata": {}, + "source": [ + "

AnA Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "4ae0e84b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_inundation'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = 'ana_max_flows'\n", + "postprocess_service = 'ana_inundation'\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Inundation'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_inundation']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana'\n", + "target_table = 'cache.max_flows_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana'\n", + "target_table = 'ingest.ana_inundation'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "cc79b1be", + "metadata": {}, + "source": [ + "

AnA Inundation Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "40d13750", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_inundation_hi'\n", + "configuration = 'analysis_assim_hawaii'\n", + "postprocess_max_flows = 'ana_max_flows_hi'\n", + "postprocess_service = 'ana_inundation_hi'\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Inundation Hawaii'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Hawaii. Shown are reaches with flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_inundation_hi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm0000.hawaii.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_table = 'cache.max_flows_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_hi'\n", + "target_table = 'ingest.ana_inundation_hi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "5a32087c", + "metadata": {}, + "source": [ + "

AnA Inundation Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0786f0da", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_inundation_prvi'\n", + "configuration = 'analysis_assim_puertorico'\n", + "postprocess_max_flows = 'ana_max_flows_prvi'\n", + "postprocess_service = 'ana_inundation_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Inundation Puerto Rico'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana,puerto,rico,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_inundation_prvi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_table = 'cache.max_flows_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_prvi'\n", + "target_table = 'ingest.ana_inundation_prvi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "e6cf2b43", + "metadata": {}, + "source": [ + "

AnA Past 14-Day Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1035d863", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_past_14day_max_inundation'\n", + "configuration = 'analysis_assim_14day'\n", + "postprocess_max_flows = \"ana_14day_max_flows\"\n", + "postprocess_service = \"ana_past_14day_max_inundation\"\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Past 14 Day Inundation'\n", + "description = 'Depicts the inundation extent of the peak NWM streamflow analysis over the past 14 days where the National Water Model (NWM) signaled high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana,14day'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_past_14day_max_inundation_7d', 'ana_past_14day_max_inundation_14d']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_14day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_14day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_7day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_7day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_7day_max'\n", + "target_table = 'cache.max_flows_ana_14day'\n", + "target_keys = '(feature_id, max_flow_7day_cfs)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_14day_max'\n", + "target_table = 'cache.max_flows_ana_14day'\n", + "target_keys = '(feature_id, max_flow_14day_cfs)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_14day'\n", + "target_table = 'ingest.ana_past_14day_max_inundation_7d'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_14day'\n", + "target_table = 'ingest.ana_past_14day_max_inundation_14d'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "4c7404e4", + "metadata": {}, + "source": [ + "

Medium-Range Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "26d96c88", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_max_inundation'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = 'mrf_max_flows'\n", + "postprocess_service = 'mrf_max_inundation'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Inundation'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 3, 5, and 10 days where the NWM is signaling high water. This service is derived from the medium-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,medium,range,10day'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['mrf_max_inundation_3day', 'mrf_max_inundation_5day', 'mrf_max_inundation_10day']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_table = 'cache.max_flows_mrf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_mrf'\n", + "target_table = 'ingest.mrf_max_inundation_3day'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_mrf'\n", + "target_table = 'ingest.mrf_max_inundation_5day'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_mrf'\n", + "target_table = 'ingest.mrf_max_inundation_10day'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "b6e599eb", + "metadata": {}, + "source": [ + "

RFC 5-Day Maximum Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "1124147b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'rfc_5day_max_downstream_inundation'\n", + "configuration = 'replace_route'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'rfc_5day_max_downstream_inundation'\n", + "postprocess_summary = None\n", + "summary = 'RFC 5-Day Maximum Inundation'\n", + "description = 'Depicts maximum inundation extent over the next 5 days derived from the official River Forecast Center (RFC) forecast routed downstream through the National Water Model (NWM) stream network. Maximum streamflows are available downstream of RFC forecast points whose forecast reaches action status or greater.'\n", + "tags = 'inundation, replace and route, rfc'\n", + "credits = 'NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'rfc'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['rfc_5day_max_downstream_inundation']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/replace_route/{{datetime:%Y%m%d}}/rnr_{{datetime:%H}}_max_flows.csv'\n", + "source_table = None\n", + "target_table = 'ingest.rnr_max_flows'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'ingest.rnr_max_flows'\n", + "target_table = 'ingest.rfc_5day_max_downstream_inundation'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "b730fb15", + "metadata": {}, + "source": [ + "

Short-Range Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "f7dc53e3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_inundation'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = 'srf_max_flows'\n", + "postprocess_service = 'srf_max_inundation'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Inundation'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 18 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,short,range,srf'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['srf_max_inundation']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf'\n", + "target_table = 'cache.max_flows_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_srf'\n", + "target_table = 'ingest.srf_max_inundation'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "9bd13e9f", + "metadata": {}, + "source": [ + "

Short-Range Inundation Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "d674880c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_inundation_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = 'srf_max_flows_hi'\n", + "postprocess_service = 'srf_max_inundation_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Inundation Hawaii'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Hawaii. Shown are reaches with peak flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,short,range,srf,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['srf_max_inundation_hi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_table = 'cache.max_flows_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_srf_hi'\n", + "target_table = 'ingest.srf_max_inundation_hi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "508d20a2", + "metadata": {}, + "source": [ + "

Short-Range Inundation Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "d95e129b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_inundation_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = 'srf_max_flows_prvi'\n", + "postprocess_service = 'srf_max_inundation_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Inundation Puerto Rico'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with peak flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,short,range,srf,puerto,rico,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['srf_max_inundation_prvi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_table = 'cache.max_flows_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_srf_prvi'\n", + "target_table = 'ingest.srf_max_inundation_prvi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "e037ddf8", + "metadata": {}, + "source": [ + "

QC FIM Services

" + ] + }, + { + "cell_type": "markdown", + "id": "0ebf072c", + "metadata": {}, + "source": [ + "

FIM Performance

" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "e264cddb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'fim_performance'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Height Above Nearest Drainage (HAND) Flood Inundation Mapping (FIM) Performance at HUC8s and AHPS locations.'\n", + "description = 'Depicts the HAND FIM method skill metrics at HUC8s (polygons) and AHPS locations (points). Metrics are computed through static comparison of benchmark maps to HAND maps at specific flow magnitudes (e.g. 100yr, 500yr, Action, Minor, Moderate, Major). Metrics reported are Critical Success Index (CSI), True Positive Rate (TPR) also known as Probability of Detection (POD), False Alarm Ratio (FAR), and Probability Not Detected (PND). Polygons and sites are symbolized by CSI by default; however, the other metrics (TPR, FAR, and PND) are available in the attributes for each location. For a description of how metrics are computed, see https://github.com/NOAA-OWP/inundation-mapping/wiki/Evaluating-HAND-Performance. Benchmark sources for HUC8 vary between FEMA Base Level Engineering, Iowa Flood Center, and RAS2FIM while benchmark sources for AHPS locations vary between USGS and AHPS FIM based on data availability at each HUC8 or AHPS location. Also, flow magnitudes used vary depending on the benchmark sources. Each feature represents the HAND FIM method skill metrics of unique benchmark data source and flow magnitude. This is a static service; it does not provide estimates of FIM skills in real-time. This service only shows the HAND FIM method skill as compared to benchmark maps produced for scenarios of specific magnitudes.'\n", + "tags = 'performance, skill, csi, flood, hand, fim, inundation, height, above, nearest, drainage, ahps, usgs'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, USGS, Iowa Flood Center, RAS2FIM'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "6f31c0e5", + "metadata": {}, + "source": [ + "

Flow Based CatFIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "4d9e76e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'flow_based_catfim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official threshold discharges are used.'\n", + "description = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official threshold discharges are used. Flood inundation maps are colored according to their category. Mapping extends 5 miles upstream and downstream of AHPS gage locations. This is a static service and not a forecast service.'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, National River Layer Database'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c5a7d71d", + "metadata": {}, + "source": [ + "

CONUS Full Resolution FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "50f5ee62", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'full_resolution_fim_catchments'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'CONUS Full Resolution FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the full resolution FIM HAND dataset for CONUS'\n", + "tags = 'fim, inundation, national water model, nwm, reference'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "25ed1b5b", + "metadata": {}, + "source": [ + "

Hawaii Full Resolution FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "2abc4cc6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'full_resolution_fim_catchments_hi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Hawaii Full Resolution FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the full resolution FIM HAND dataset for Hawaii'\n", + "tags = 'fim, inundation, national water model, nwm, reference, hawaii, hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "ad28e86e", + "metadata": {}, + "source": [ + "

Puerto Rico Full Resolution FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "4bb621af", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'full_resolution_fim_catchments_prvi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Puerto Rico Full Resolution FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the full resolution FIM HAND dataset for Puerto Rico and Virgin Islands'\n", + "tags = 'fim, inundation, national water model, nwm, reference, puertorico, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c0408ac1", + "metadata": {}, + "source": [ + "

CONUS Main Stem FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "57b754ae", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'main_stem_fim_catchments'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'CONUS Main Stem FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the main stem FIM HAND dataset for CONUS'\n", + "tags = 'fim, inundation, national water model, nwm, reference'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "b0cbe0ec", + "metadata": {}, + "source": [ + "

Hawaii Main Stem FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "b81c63ec", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'main_stem_fim_catchments_hi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Hawaii Main Stem FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the main stem FIM HAND dataset for Hawaii'\n", + "tags = 'fim, inundation, national water model, nwm, reference, hawaii, hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "e8a7d15c", + "metadata": {}, + "source": [ + "

Puerto Rico Main Stem FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "9667f251", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'main_stem_fim_catchments_prvi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Puerto Rico Main Stem FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the main stem FIM HAND dataset for Puerto Rico and Virgin Islands'\n", + "tags = 'fim, inundation, national water model, nwm, reference, puertorico, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "3cc51c49", + "metadata": {}, + "source": [ + "

NWM Annual Exceedance Probability FIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "5a48a5ca", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_aep_fim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Depicts flood inundation extents derived from NWM high water threshold, annual exceedance probabilities and the Height Above Nearest Drainage (HAND) technique.'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) high water threshold and annual exceedance probabilities. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation. This is a static service and not a forecast service.'\n", + "tags = 'nws, flood, categorical, hand, fim, inundation, height, above, nearest, drainage, aep, recurrence'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "bfe006ae", + "metadata": {}, + "source": [ + "

NWM Waterbodies

" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "d5b20f7d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_waterbodies'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Waterbodies'\n", + "description = 'Depicts the waterbodies for the National Water Model'\n", + "tags = 'nws, fim, reference, waterbodies'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "06b5bd44", + "metadata": {}, + "source": [ + "

NWS Flood Categorical HAND FIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "873d3714", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nws_flood_categorical_hand_fim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'National Weather Service Flood Categorical Height Above Nearest Drainage Flood Inundation Maps'\n", + "description = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Flood inundation maps are colored according to their category. Mapping extends 5 miles upstream and downstream of AHPS gage locations. This is not a forecast service. Service also known as CatFIM.'\n", + "tags = 'nws, flood, categorical, hand, fim, catfim, inundation, library, rfc, height, above, nearest, drainage, ahps, usgs'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, National River Layer Database'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "59f20326", + "metadata": {}, + "source": [ + "

Possible Coastal Omission for FIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "a8058768", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'possible_coastal_omission'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Coastal Regions where coastal flooding processes are not being considered in the visualization FIM output.'\n", + "description = 'Depicts areas along the coast where coastal flooding processes are not being considered in the visualization FIM output.'\n", + "tags = 'national water model, nwm, reference'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "b79a049c", + "metadata": {}, + "source": [ + "

Stage Based CatFIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "06700b37", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'stage_based_catfim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official stage thresholds are used.'\n", + "description = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official stage thresholds (converted to water surface elevation) are used. Flood inundation maps are colored according to their category. Mapping extends 5 miles upstream and downstream of AHPS gage locations. This is a static service and not a forecast service.'\n", + "tags = 'nws, flood, categorical, hand, fim, catfim, inundation, library, rfc, height, above, nearest, drainage, ahps, usgs'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, National River Layer Database'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c3ea30fe", + "metadata": {}, + "source": [ + "

Reference Services

" + ] + }, + { + "cell_type": "markdown", + "id": "68cb44d8", + "metadata": {}, + "source": [ + "

CONUS NWM Flowlines

" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "c1d467e9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_flowlines'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Flowlines for CONUS '\n", + "description = 'Depicts the NWM flowlines within the contiguous U.S.'\n", + "tags = 'national water model, nwm, reference, flowlines'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "287fd2eb", + "metadata": {}, + "source": [ + "

Hawaii NWM Flowines

" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "ad82bf9c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_flowlines_hi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Flowines for Hawaii '\n", + "description = 'Depicts the NWM flowlines in Hawaii.'\n", + "tags = 'national water model, nwm, reference, hawaii, hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "7547b3c0", + "metadata": {}, + "source": [ + "

Puerto Rico NWM Flowines

" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "2dd6a998", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_flowlines_prvi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Flowines for Puerto Rico and the U.S. Virgin Islands'\n", + "description = 'Depicts the NWM flowlines in Puerto Rico and the U.S. Virgin Islands.'\n", + "tags = 'national water model, nwm, reference, puerto rico, puertorico, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14a9fbf6", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/7. Max Flows-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/7. Max Flows-checkpoint.ipynb new file mode 100644 index 00000000..5dc307d9 --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/7. Max Flows-checkpoint.ipynb @@ -0,0 +1,5719 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "4a0d7a85", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install xarray" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2a127fc4", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "os.environ['MAX_FLOWS_BUCKET'] = \"hydrovis-ti-fim-us-east-1\"\n", + "os.environ['CACHE_DAYS'] = \"30\"\n", + "os.environ['INITIALIZE_PIPELINE_FUNCTION'] = \"test\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "87205085", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "from datetime import datetime, timedelta\n", + "import xarray\n", + "import pandas as pd\n", + "import numpy as np\n", + "import boto3\n", + "import botocore\n", + "import urllib.parse\n", + "import time\n", + "import requests\n", + "\n", + "from helper_functions.old_shared_funcs import get_configuration, check_s3_file_existence\n", + "\n", + "MAX_FLOWS_BUCKET = os.environ['MAX_FLOWS_BUCKET']\n", + "CACHE_DAYS = os.environ['CACHE_DAYS']\n", + "INITIALIZE_PIPELINE_FUNCTION = os.environ['INITIALIZE_PIPELINE_FUNCTION']\n", + "\n", + "\n", + "def lambda_handler(event, context):\n", + " \"\"\"\n", + " The lambda handler is the function that is kicked off with the lambda. This function will take all the\n", + " forecast steps in the NWM configuration, calculate the max streamflow for each feature and then save the\n", + " output in S3\n", + "\n", + " Args:\n", + " event(event object): An event is a JSON-formatted document that contains data for a Lambda function to\n", + " process\n", + " context(object): Provides methods and properties that provide information about the invocation, function,\n", + " and runtime environment\n", + " \"\"\"\n", + " # parse the event to get the bucket and file that kicked off the lambda\n", + " print(\"Parsing key to get configuration\")\n", + " if \"Records\" in event:\n", + " message = json.loads(event[\"Records\"][0]['Sns']['Message'])\n", + " data_key = urllib.parse.unquote_plus(message[\"Records\"][0]['s3']['object']['key'], encoding='utf-8')\n", + " data_bucket = message[\"Records\"][0]['s3']['bucket']['name']\n", + " else:\n", + " data_key = event['data_key']\n", + " data_bucket = event['data_bucket']\n", + "\n", + " if not check_s3_file_existence(data_bucket, data_key):\n", + " raise Exception(f\"{data_key} does not exist within {data_bucket}\")\n", + "\n", + " max_flow_calcs = [] # Store max flows in list just in case multiplens needed\n", + " metadata = get_configuration(data_key, mrf_timestep=3)\n", + " configuration = metadata.get('configuration')\n", + " date = metadata.get('date')\n", + " hour = metadata.get('hour')\n", + " forecast_timestep = metadata.get('forecast_timestep')\n", + "\n", + " # Setup an input files dictionary with the bucket\n", + " input_files = metadata.get('input_files')\n", + " files = []\n", + " s3_file_sets = []\n", + " for s3_key in input_files:\n", + " files.append({'bucket': data_bucket, 's3_key': s3_key})\n", + " s3_file_sets.append(files)\n", + "\n", + " if \"medium_range\" in configuration:\n", + " configuration = \"medium_range\"\n", + "\n", + " short_hand_config = configuration.replace(\"analysis_assim\", \"ana\").replace(\"short_range\", \"srf\").replace(\"medium_range\", \"mrf\") # noqa\n", + " short_hand_config = short_hand_config.replace(\"hawaii\", \"hi\").replace(\"puertorico\", \"prvi\")\n", + " subset_config = None\n", + "\n", + " if configuration == 'medium_range':\n", + " subset_config = f\"{int(int(forecast_timestep)/24)}day\"\n", + " short_hand_config = f\"{short_hand_config}_{subset_config}\"\n", + "\n", + " max_flow_calcs.append(short_hand_config) # Add the current configuration to calcs list.\n", + "\n", + " if configuration == 'analysis_assim':\n", + " # Only perform max flows computation for analysis_assim when its the 00Z timestep\n", + " if hour != \"00\":\n", + " print(f\"{data_key} is not a file for 00Z so max flows will not be calculated\")\n", + " return\n", + " else:\n", + " max_flow_calcs = [] # If running ana, reset the calcs list and s3_file_sets list\n", + " s3_file_sets = []\n", + " days = [14]\n", + " for day in days:\n", + " files = []\n", + " previous_forecasts = day*24\n", + " metadata = get_configuration(data_key, previous_forecasts=previous_forecasts)\n", + " input_files = metadata.get('input_files')\n", + " print(len(input_files))\n", + " for s3_key in input_files:\n", + " files.append({'bucket': data_bucket, 's3_key': s3_key})\n", + " s3_file_sets.append(files)\n", + " reference_time = metadata.get('reference_time')\n", + " subset_config = f\"{int(previous_forecasts/24)}day\"\n", + " short_hand_config = f\"ana_{subset_config}\"\n", + " max_flow_calcs.append(short_hand_config)\n", + "\n", + " print(f\"Creating max flows file for {configuration} for {date}T{hour}:00:00Z\")\n", + "\n", + " for n, max_flow_calc in enumerate(max_flow_calcs):\n", + " output_netcdf = f\"max_flows/{configuration}/{date}/{max_flow_calc}_{hour}_max_flows.nc\"\n", + "\n", + " # Once the files exist, calculate the max flows\n", + " calculate_max_flows(s3_file_sets[n], output_netcdf)\n", + " print(f\"Successfully created max flows file for {configuration} for {date}T{hour}:00:00Z\")\n", + "\n", + " # If max calcs will run more than once, remove duplicates and\n", + " # update the second set of input files to include the just created max file.\n", + " next = n+1\n", + " if len(s3_file_sets) > (next):\n", + " s3_file_sets[next] = [file_next for file_next in s3_file_sets[next] if file_next not in s3_file_sets[n]]\n", + " s3_file_sets[next].append({'bucket': MAX_FLOWS_BUCKET, 's3_key': output_netcdf})\n", + "\n", + " print(\"Done\")\n", + "\n", + "\n", + "def calculate_max_flows(s3_files, output_netcdf):\n", + " \"\"\"\n", + " Iterates through a times series of National Water Model (NWM) channel_rt output NetCDF files, and finds the\n", + " maximum flow of each NWM reach during this period. Outputs a NetCDF file containing all NWM reaches and their\n", + " maximum flows.\n", + "\n", + " Args:\n", + " data_bucket (str): S3 bucket name where the NWM files are stored\n", + " path_to_nwm_files (str or list): Path to the directory or list of the paths to the files to caclulate\n", + " maximum flows on.\n", + " output_netcdf (str): Key (path) of the max flows netcdf that will be store in S3\n", + " \"\"\"\n", + " print(\"--> Calculating flows\")\n", + " peak_flows, feature_ids = calc_max_flows(s3_files) # creates a max flow array for all reaches\n", + "\n", + " print(f\"--> Creating {output_netcdf}\")\n", + " write_netcdf(feature_ids, peak_flows, output_netcdf) # creates the output NetCDF file\n", + "\n", + "\n", + "def download_file(data_bucket, file_path, download_path):\n", + " s3 = boto3.client('s3')\n", + "\n", + " try:\n", + " s3.download_file(data_bucket, file_path, download_path)\n", + " return True\n", + " except Exception as e:\n", + " print(f\"File failed to download {file_path}: {e}\")\n", + " return False\n", + "\n", + "\n", + "def calc_max_flows(s3_files):\n", + " \"\"\"\n", + " Iterates through a times series of National Water Model (NWM) channel_rt output NetCDF files, and finds\n", + " the maximum flow of each NWM reach during this period.\n", + "\n", + " Args:\n", + " data_bucket (str): S3 bucket name where the NWM files are stored\n", + " active_file_paths (str or list): Path to the directory or list of the paths to the files to caclulate\n", + " maximum flows on.\n", + "\n", + " Returns:\n", + " max_flows (numpy array): Numpy array that contains all the max flows for each feature for the forecast\n", + " feature_ids (numpy array): Numpy array that contains all the features ids for the forecast\n", + " \"\"\"\n", + " max_flows = None\n", + " feature_ids = None\n", + " tries = 0\n", + "\n", + " for file in s3_files:\n", + " data_bucket = file['bucket']\n", + " file_path = file['s3_key']\n", + " download_path = f'/tmp/{os.path.basename(file_path)}'\n", + " \n", + " if check_s3_file_existence(data_bucket, file_path):\n", + " print(f\"--> Downloading {file_path} to {download_path}\")\n", + " download_file(data_bucket, file_path, download_path)\n", + " else:\n", + " file_path = file_path.replace('common/data/model/com/nwm/prod', 'https://storage.googleapis.com/national-water-model')\n", + " print(f\"--> Downloading {file_path} to {download_path}\")\n", + " open(download_path, 'wb').write(requests.get(file_path, allow_redirects=True).content)\n", + "\n", + " with xarray.open_dataset(download_path) as ds:\n", + " temp_flows = ds['streamflow'].values # imports the streamflow values from each file\n", + " if max_flows is None:\n", + " max_flows = temp_flows\n", + " if feature_ids is None:\n", + " feature_ids = ds['feature_id'].values\n", + "\n", + " print(f\"--> Removing {download_path}\")\n", + " os.remove(download_path)\n", + "\n", + " # compares the streamflow values in each file with those stored in the max_flows array, and keeps the\n", + " # maximum value for each reach\n", + " max_flows = np.maximum(max_flows, temp_flows)\n", + "\n", + " return max_flows, feature_ids\n", + "\n", + "def write_netcdf(feature_ids, peak_flows, output_netcdf):\n", + " \"\"\"\n", + " Iterates through a times series of National Water Model (NWM) channel_rt output NetCDF files, and finds the\n", + " maximum flow of each NWM reach during this period.\n", + "\n", + " Args:\n", + " feature_ids (numpy array): Numpy array that contains all the features ids for the forecast\n", + " peak_flows (numpy array): Numpy array that contains all the max flows for each feature for the forecast\n", + " output_netcdf (str or list): Key (path) of the max flows netcdf that will be store in S3\n", + " \"\"\"\n", + " s3 = boto3.client('s3')\n", + "\n", + " tmp_netcdf = '/tmp/max_flows.nc'\n", + "\n", + " # Create a dataframe from the feature ids and streamflow\n", + " df = pd.DataFrame(feature_ids, columns=['feature_id']).set_index('feature_id')\n", + " df['streamflow'] = peak_flows\n", + " df['streamflow'] = df['streamflow'].fillna(0)\n", + "\n", + " # Save the max flows dataframe to a loacl netcdf file\n", + " df.to_xarray().to_netcdf(tmp_netcdf)\n", + "\n", + " # Upload the local max flows file to the S3 bucket\n", + " s3.upload_file(tmp_netcdf, MAX_FLOWS_BUCKET, output_netcdf, ExtraArgs={'ServerSideEncryption': 'aws:kms'})\n", + " os.remove(tmp_netcdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8b3f025b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parsing key to get configuration\n", + "337\n", + "Creating max flows file for analysis_assim for 20221007T00:00:00Z\n", + "--> Calculating flows\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221007/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Creating max_flows/analysis_assim/20221007/ana_14day_00_max_flows.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully created max flows file for analysis_assim for 20221007T00:00:00Z\n", + "Done\n" + ] + } + ], + "source": [ + "event = {\n", + " \"data_bucket\": \"hydrovis-ti-nwm-us-east-1\",\n", + " \"data_key\": \"common/data/model/com/nwm/prod/nwm.20221007/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\"\n", + "}\n", + "\n", + "lambda_handler(event, {})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c63f573f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/.ipynb_checkpoints/9. Run Historic Pipelines-checkpoint.ipynb b/Core/Manual_Workflows/.ipynb_checkpoints/9. Run Historic Pipelines-checkpoint.ipynb new file mode 100644 index 00000000..a49fc413 --- /dev/null +++ b/Core/Manual_Workflows/.ipynb_checkpoints/9. Run Historic Pipelines-checkpoint.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "05ba1952-eca9-4f37-9963-b5a87fe11c10", + "metadata": {}, + "source": [ + "### Historic Event Pipeline Runs\n", + "\n", + "#### This notebook will kick off pipelines for specified configurations for a given date range & reference times. At present, past events can be run in the TI pipelines, but this may not be the case at a later date, depending on what's in the development queue. You may need to create a seperate set of pipeline resources in AWS, if so (see step 1 below).\n", + "\n", + "##### Last Update: 2024-01-25\n", + "\n", + "I currently employ the following workflow to generate past event data.\n", + "1. [Optional] Use terraform to create a custom set of vpp lambda functions and step functions (currently `hv-vpp-dev-historical-run-{function name}` from the desired HydroVIS repo branch / version, without any SNS triggers on the initialize pipeline function (so it will only run on-demmand).\n", + "2. Setup individual single-reference-time test events for the configurations I intend to run in the initialize_pipeline lambda function created in the last step and throroughly test (first with the `invoke_step_function` arg set to false, then true when ready) - Pay particular attention to the table names and sql_replace dictionary, to ensure that archive tables are being used througout the entire pipeline. Looking at these tables in pg_admin is also a good idea to make sure everything looks good.\n", + "Here is an example of a test event to try in lambda:\n", + "\n", + "{\n", + " \"configuration\": \"analysis_assim\",\n", + " \"bucket\": \"nws-shared-data-226711853580-us-east-1\",\n", + " \"reference_time\": \"2024-01-17 12:00:00\",\n", + " \"invoke_step_function\": false\n", + "}\n", + "\n", + "3. Use the Source\\Visualizations\\aws_loosa\\utils\\viz_cache_csvs_to_clipped_geospatial.py script to retrieve and convert the test data into gpkg, and examine in Arc Pro. Make sure you use \"ref\" as a search criteria, which will ensure you get only past event data files.\n", + "4. When full step function execution and outputs have been verified, input the new initialize pipeline lambda arn into this notebook, and use it to batch run pipelines.\n", + "5. Use the Source\\Visualizations\\aws_loosa\\utils\\viz_cache_csvs_to_clipped_geospatial.py to fetch, convert, and clip to state (if desired) generated data for users.\n", + "6. Upload files to Google Drive for sharing.\n", + "\n", + "A few caveats/warnings you should consider before using this notebook:\n", + "- We currently do not regurlaly test past/historic event functionality with regular piplines updates, so pipelines may not run correctly when using this functionality without significant testing and tweaking, if there have been major development updates since the last refresh of this process.\n", + "- Creating a custom version of the Viz RDS database instance would be required to truly duplicate the environment of a given HydroVIS version, which is not tested/supported with our current db_dump strategy (although may be possible with some manual work).\n", + "- If using the default viz RDS instance, keep in mind that derived data will reflect what's currently in the TI database, not what's in Production.\n", + "- If using the defualt viz RDS instance, also keep in mind that historic pipelines ran here will be competing for database resources with the automatic operational viz pipelines, which may cause issues. I've sometimes disabled those triggers to initialize_pipeline temporarily when running large batches.\n", + "- All csv files archived to S3 will include a reference time prefix to denote they came from a past event pipeline (contrary to regularly archived files, which just contain the service name). That said, if FIM is filtered to specific states, that information is not presently included in the csv file names, which could cause issues if filtered and non-filtered versions are desired.\n", + "- In the past, Chip would run RnR manually to create outputs that we would run through the pipelines in this workflow. That process needs to be updated based on Shawn Crawleys late-2023 updates to RnR workflows." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1d2e82ff-23f6-4945-acd6-37888042bcfe", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from datetime import date\n", + "from helper_functions.shared_functions import run_pipelines" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "65fedd84-4be9-4cf8-b2ed-7f23844b15cb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Invoked viz_initialize_pipeline function with payload: {'configuration': 'analysis_assim', 'bucket': 'nws-shared-data-226711853580-us-east-1', 'reference_time': '2023-12-17 18:00:00', 'states_to_run_fim': None, 'skip_fim': False}.\n", + "Invoked viz_initialize_pipeline function with payload: {'configuration': 'analysis_assim', 'bucket': 'nws-shared-data-226711853580-us-east-1', 'reference_time': '2023-12-18 18:00:00', 'states_to_run_fim': None, 'skip_fim': False}.\n" + ] + } + ], + "source": [ + "# NWM 3.0 Testing Runs for Katherine - 2024 0125\n", + "events = [\n", + " # {\"start_date\": date(2023, 12, 21), \"end_date\": date(2023, 12, 21), \"reference_times\": [\"09:00:00\", \"10:00:00\"]},\n", + " {\"start_date\": date(2023, 12, 17), \"end_date\": date(2023, 12, 18), \"reference_times\": [\"18:00:00\"]},\n", + " # {\"start_date\": date(2023, 12, 17), \"end_date\": date(2023, 12, 17), \"reference_times\": [\"13:00:00\", \"14:00:00\"]},\n", + " # {\"start_date\": date(2023, 12, 5), \"end_date\": date(2023, 12, 5), \"reference_times\": [\"14:00:00\", \"15:00:00\"]},\n", + " # {\"start_date\": date(2023, 12, 2), \"end_date\": date(2023, 12, 2), \"reference_times\": [\"13:00:00\", \"14:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 28), \"end_date\": date(2023, 10, 28), \"reference_times\": [\"09:00:00\", \"10:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 24), \"end_date\": date(2023, 10, 24), \"reference_times\": [\"16:00:00\", \"17:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 4), \"end_date\": date(2023, 10, 4), \"reference_times\": [\"21:00:00\", \"22:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 3), \"end_date\": date(2023, 10, 3), \"reference_times\": [\"22:00:00\", \"23:00:00\"]}\n", + "]\n", + "for event in events:\n", + " start_date = event['start_date']\n", + " end_date = event['end_date']\n", + " reference_hours = event['reference_times']\n", + " configurations = [{\"analysis_assim\": \"nws-shared-data-226711853580-us-east-1\"}]\n", + " interval_minutes = 10 # specify the number of minutes to wait between pipeline invokations - this is important to get right to not overwhelm the database\n", + " initialize_pipeline_arn = \"arn:aws:lambda:us-east-1:526904826677:function:hv-vpp-ti-viz-initialize-pipeline\"\n", + " run_pipelines(start_date, end_date, reference_hours, configurations, initialize_pipeline_arn, interval_minutes=interval_minutes)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fef48f23-da25-4295-b321-e6b38f98f1ed", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/1. Viz DB Service Development Overview.ipynb b/Core/Manual_Workflows/1. Viz DB Service Development Overview.ipynb new file mode 100644 index 00000000..a7866a0a --- /dev/null +++ b/Core/Manual_Workflows/1. Viz DB Service Development Overview.ipynb @@ -0,0 +1,616 @@ +{ + "cells": [ + { + "attachments": { + "IntroDiagram.JPG": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzQ5AACSkgACAAAAAzQ5AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMxIDIwOjQ3OjQ1ADIwMjI6MDM6MzEgMjA6NDc6NDUAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMxVDIwOjQ3OjQ1LjQ5MjwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgD8AXTAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+kaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiivGPjK+sXvxL8D+H9K8Q6pokGqNPHPJp908RONmCQpAJHPX1oA9norxLXfhl4/8MabPrPhL4l61qN1ZxmX7FqcjTLMF5IG5iM4HAK8+orrPBniE/F74OSSzSvp11fQS2V1JbHBhlxtLL7EENj3xnvQB6DRXOeAfCX/CD+CrHw//AGhLqP2QMPtEq7d2WLYC5O0DOAMmujoAKKKKACiiuA+OX/JE/En/AFwT/wBGpQB39Fee+EtE/wCEl/Z50jRftctl9u0OOD7RF96PdGBnHf3HcV0ngfwx/wAIZ4K03w/9vl1D7DGU+0yjBfLFumTgDOAMnAAFAG9RRRQAUUUUAFFFFABRXkfxx13XJJfD3gzwbe3FnrWt3JczW0xjeOGMEn5gQQCeeD0Qitz4KeLZvF/wxsZ9QleTUrEtZXplJLmROhYnkkqVJJ7k0AegUUUUAFFFFABRXifwh/5Lh8UP+vxP/Rkle2UAFFcd8S/h/wD8LF8P2umf2xcaT9nu0ufNgXdv2gjBGRzzkHPBAODWl4y16Twh4E1PWoYvtcmnWxkWOV8eYRgcmgDforE8Ga3P4k8E6PrV3HHFNf2kdw6RZ2qWXOBnnFbdABRRRQAUUVw/xO8eXXgSx0aWxs4bqTUtSjsj5zECMNklsDqeKAO4ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKo61rFl4f0S71bVZhDZ2cRllc84A9B3PYDua8f0ub4j/GJW1ax1l/BXheRiLNYI911coDjeTkEdOoIHoD1IB7dRXj8nwi8caeDP4f+LOttcLgrHqW6eNiPXcxAH/AT+NeuwiRYIxOwaQKA7DoTjmgB9FFFABRRRQAUUUUAFFFFABRX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W3uF3xTIUdckZUjBGR7Vm+GvC+j+D9FXSfDtn9jskdnWLzXkwzck5ck/rQBX8L+B/DXguCSLwxpEFgJceY6ZZ3x0BdiWI+pqHxV8PvCvjYxN4n0aG+khXbHKWaN1XOcb0IOM9s10lFAHNeF/h54T8Fsz+GdEt7KV12tMC0khHpvclse2a6WiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAryX4uaTeeMPFugeHNJuGgu7O0u9ZjZDjbNGFS3Oew8xq9aritFsLy5+MXibWLy0mit7axtNOspZI2VZl+aWUoTwQGZRkZ5B9KAMDxb4w/4SX9nmbUrEbL3WYI9O8joVuJZBDJH+BL/gKvT2MWkfHDwrDbriM+HrmzTHGFjeIisDVvCesW/wAXNO0iz0+eTwvf6yniF7lIyY7WeON98bEDA3yCNhnHJPXnGn8XdN8Q3XiLwrc+FLS5lvMXlj9qijLJZi4RE85yPuhQCQfUUAYzapeeIPjf4f8AE6SP/YkOo3OiaeqkbZdttKZpvcGRQoI7Re9dELiPxJ8UdQ166P8AxJPBMMkEJz8sl4yZmf0/dphOehY1V+IugX3hrwH4Wg8DaRLf3Og6jAbW3iiLkjypI9zY6DLhmY8Z61c17w1e+GfgLe+HtDhnv9SntPs0jRIzyTzTuFmlOMnrI7E9gPagDkfhTrK+B7e7uPFF0tvZ6/pQ8TCZ84WRnIlUep2vCQByc96n8PW+q+J/j1pGveIUkt5o9Kn1C205z/x427sIYVYf89G3SO34D+GvR9U+H2haz/wjw1GF5V8PsDaxggI+FUBXGOVyiNjjlRnI4qh4XsLub4n+MdbvbWeGJja2Fk00ZUPHHHudkyOVLyHkcfLQB0niPVV0LwvqmrSEBbG0luDn/YQt/SvM/hbpPw2vPCPh+0lj8Kan4ie0SedSLae6MpHmNnq+5STn0x7V0vxjjvbr4Y3+n6ba3lzLfyQ2zizt3mdImkXzG2oCSAgbt3rXt/GGmNaT/Y7DXCLS3aURHQryIuqj7qb4lDMeAFByfwNAGRJ8TIraz1iO70x11nT9SOm2+lxTb5L2RlDQsh2jCup3ZI+UBielaFx4tvTq0ehaXpMV7riWqXN7F9r2W1kG4AebYWJJDbQEJIGSAK4yx0TX7T4j6L491jS2e41lnsLqygg8w6XCygwMSBncChEjngeZjgAVqaTNf+GPHHjH7Touo3t1q13Fc6fPBbO0NwghVFRpQNsewqQd5HByM0AXbX4jynwj4s1nUNIigk8NTT28kUN4ZI7iWJAxVZDGpAJYLkrwc8cVXvfijc6Xpmh6xqnhyS30jWJ47aN1uC1ysroWXEHl5ZTtOPmDdMoK5Wz0DWrr4D6dpd9pV4NT8S62kmqxm3dWhWW7MkjyLjKL5aAEn1967fxXp11qvxF8F2yWcr6bYS3OoXMwiJjR0i2QqW6A7pCQOvy0AWrDxjfHxnbeH9b0RdOkv7OS7s3S7ExIRgGSRQoCMNwPBdT61k2fxJ1XV7LXrrRPC63MOh3tzbzSTX/lLOsLEZjPlnc5AztOFGQN+ei3hntfitr3ia/tpo9O0Hw6sUM0sTCORmZ5pSjHhiFjQHHToetc14OvdQX4LWnh/QtJ1KbXtStpGlnubCWC3ie4JdpmmdQjgB8gIWJwABQBs+O9Yt/F/g7wdb2AY2/ijVbFjG458gfv3yPYRgfWuiuvF97da1qGmeFdJi1OTSwBe3F1efZoI5CNwiVgjln28ngAZGTzXPS+Hn0Hxz8PrJbW8m0jQ9Pnt4rqG2eZftDJHEvmbAdg27jubCjJ5FZOk+HrHRr7xFY+LtD8QajNeatcXcAtPtc9pfRStuUlEbyVcD5SJAvTqRQB6V4S8SW/i7wnp2vWcMkEN9F5ixS/eTkgjjryDz3rYqK1ghtbSKC2gS2hjQKkKKFWMAcKAOBj2qWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAxvF+gy+KPB+p6HDe/YW1C3aA3HleZsVuG+XIzxkdR1rVtreO0tYreEYjhQIg9ABgVJRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAQT3PkuF2buM9aj+3/wDTP/x6mXv+uH+7/Wq1Q27jLn2//pn/AOPUfb/+mf8A49VOii7HYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqPt//TP/AMeqnRRdhYufb/8Apn/49R9v/wCmf/j1U6KLsLFz7f8A9M//AB6j7f8A9M//AB6qdFF2Fi59v/6Z/wDj1H2//pn/AOPVToouwsXPt/8A0z/8eo+3/wDTP/x6qdFF2Fi59v8A+mf/AI9R9v8A+mf/AI9VOii7Cxc+3/8ATP8A8eo+3/8ATP8A8eqnRRdhYufb/wDpn/49R9v/AOmf/j1U6KLsLFz7f/0z/wDHqngl85C23bzjrWZV+y/1J/3v6U03cRYoooqhBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFRzTR28LzTyLHGg3M7HAArgr34nm8u3s/B2kXGsyqcGYArED9aiVSMNyJTjHc9Borzn7P8T9XyZLvT9IjboqJuYfjTl8DeMZubnx1doT1ES4/rWftZPaLI9o3tFnolFedt4D8XR8wePL1j/00Un+tN/s34m6VzbavY6og/gmjwT+OKftJLeLD2klvFno1FedRfErUNHmWHxroE+nrnBuoAXj/wDrV3lhf2up2Ud3YTpPBIMq6HINVGpGexcakZbFmiiitCwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/rh/u/1qtVm9/wBcP93+tVqze5QUUUUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACr9l/qT/AL39KoVfsv8AUn/e/pVR3BliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA4f4v+cPh3dGByoEqeZg43Lnkfyqj4L+IfhWPSbfT3jXRJ40AMMybVY46hu+feui+IVp9t+H+rxYzi3Lgf7vP9KzvC+i6P4q+HujS6tp8F032VULMvzZX5Tz17VyyUvbXj2OaSl7X3ex1ttqFneKGtLuGcHoY5A38qsZz0rgbj4P+HmYtZSXlkc5HkznA/Cq0vwu+xwtIPF2qW8CDLF5gAo9zV89Vbx/EvmqLeP4no9QzXdtbLuuLiKIeruF/nXndr8NhqNus0HjPUrqBj9+KcMp/EVah+Duh7s393f3p7+bOcGjnqPaP4hz1HtH8S54j+InhWztZLWWVNVlcFRaW6+ZvPoewrF+CcjzaTrEqoYbVr0mGDORFkZIH6D8K6mPwtoHhfSbq603TYIXhgdxIVy3Ck9TWP8HLcxeAVnYYN1cyy59RnH9KztN1Y83mZ2n7Vc3md7RRRXWdQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFG9/1w/3f61Wqze/64f7v9arVm9yi5Y/8tPw/rVuqlj/y0/D+tW6tbCYUUVFcXUFpEZbqaOGMdWkYKP1pt23ES0VgzeNNFjk8uO4e4f8A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4flb/WL2PrX1r/Y+m/8APhbf9+hQNI04HIsLfP8A1yFXzGr4ji1/D/H/AIBYt/8Aj1i/3B/KpKBx0oqD5F7hRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN7/rh/u/1qtVm9/1w/wB3+tVqze5Rcsf+Wn4f1q3VSx/5afh/WrdWthMK5/xd4b/t/Tla2ZY7+3y1u7H5TnqjexwPpxXQUVM4RqRcZLRlU6kqclOL1R4gNQube6ksLiWe1uYDse3aQjH05wR9KSu817RrDWJ5Y9Qt1l2yNtboy89j1FcxceA34Gn63dW65JKyoJfwHQ/zr52vlNS/7t3XmfS0M4pNfvFZmZHI8UgeJ2Rx0ZTgj8aiWR7i+js7SNrq9mOEhTlj7k9h7mti38BvyNQ1u6uFyCFiQRfgep/lXZeE9GsNHnkj0+3WLdH8zdWbkdT1NKjlFRv967IdfOKUV+6V2WfCPhv+wNOZrllkv7jDXDqflGOiL7DJ+vJroKKK+jhCNOKjFaI+ZqVJVJOcnqwoooqyAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqve/wCpH+9/SrFV73/Uj/e/pSewFCr9l/qT/vf0qhV+y/1J/wB7+lTHcpliiiirJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAy7b/AJGrUP8Ar2g/nJWpWXbf8jVqH/XtB/OStStq3xL0X5ISCiiisRhRRRQAHoazPDf/ACLOn/8AXuv8q0z0NZnhv/kWdP8A+vdf5Vsv4T9V+TF1NOiiisRhRRRQAUUUUAFFFFABTJpkt7eSaZtscal2Y9gBkmn1FdBjZzBIlmYocRMcB+OhPvQBjW/ilJUMs2nXlvA0TTQyugKyqBu7E4yOeaNP8YaXqmhadq1m7vbahKsUeVwyMcjDDsQQc1zFnoc0E7jw9b6rp9u1vJHdWFzI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z88R+Xvx82M56V7HWE/iNY7BRRRUFBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRvf8AXD/d/rVarN7/AK4f7v8AWq1ZvcouWP8Ay0/D+tW6qWP/AC0/D+tW6tbCYUUUUxDZP9W30NUquyf6tvoapUAFZuteH9N8Q2yw6pbiUJkowJDIfYitKiqjOUJc0XZgeTa58I7qEtLoNytwnUQTYVh7Buh/HFef3mm6noGoKZorixuYzlW5Rh7g/wCFfTNQXlja6hbmC+t47iI9UkUMP1r3MPnVWHu1lzL8TVVGtz511DWtZ8STxDVb6e8KAKit0H/ARxn36muq0L4e6zqEatJELGA/xz8MfovX88V6lpfhnRtFYvpmnxQOTnfyzD6E5IrVrStnVo8mGhyr+umwOp2Oc8PeCdN0CVbhN1xdgY86Tt64Hb9a6OiivCq1qlaXPUd2Ztt7hRRRWQgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAux/6tfoKhvf9SP8Ae/pU0f8Aq1+gqG9/1I/3v6UnsBQq/Zf6k/739KoVfsv9Sf8Ae/pUx3KZYoooqyQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorAbxFey6peWmn6LJcpZyiJ5fPVAWKhuAfYipbvXp0unttN0yS/lhAM4WRUEZIyFyepoA2qKxP+EptFhimlimije0e6beuCip1BHrTtK1241CeJZ9Lmtop4/MgnEiyI468kdDgigDZooqk+obNajsSnDwNMXz0wQMfrQByMvjq7sta1B7m1dtNVZFtGKbQ7x4z8/Oc/N2/hqxF8QBJeRW/wBkjJZgpZJ8+Zl9v7vj5sdT+NWdQ8W6G+mXH26CVrcBSUMY+dGJAcDPIyp/KprDWtOv/EQSys8nyGxcsoAI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Bx0HhC4stCv9KsjCkcc4udMlJO5HB3AP64YYz6Grtn4eubePRmkeNpreaSe8YfxyOp3EfifyrpKKACiiigAooooAKKKKAMDQP+Rj8Uf9hCL/ANJIK36wNA/5GPxR/wBhCL/0kgrfoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCG7/AOPKf/rm38qzvCf/ACJ2kf8AXnF/6CK0bv8A48p/+ubfyrO8J/8AInaR/wBecX/oIoA16KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKwvFv/IIg/6/IP8A0YK3awvFv/IIg/6/IP8A0YKAN2iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsDxf8A8g/T/wDsLWX/AKPSt+sDxf8A8g/T/wDsLWX/AKPSgDfooooAy08N6PH4ifXk063XVJI/La7CfOV9M1cv7KPUdPns5iwjnQoxXqAa5G28aa1N8Wp/C0nh2ZNLjt/MXVDnaTtz9MZ4x1rqtYbbot2ftX2T9y3+kD/llx978KAM9/Cli9xPNvlDTPC7fNwDHjGPrgZp0vheyk0uGzDyobe4+0wzKfnjfcW4P4kfQ1whjOmaZfWkmn2sE9xYufO065LQ3OCOXXqrEHrz1NO+ziwuNTgXTINCdNHmcR28pK3wK/e6AZQg+/zelAHpGnadFpsEkUJZhJK8pLerHJoOnRHWBqOW80QeRjPG3dn86w/B+jx2FuLj+wrLTZHhQeZbSbzIMZ54FYt7fazHpnilbWzhltluph57XRVlGxc4XHb60AbOo+EY1s5pNPDy3W0+WrS7MEyiTIOOCCOOKTw74ZuLeT7fq80jXhuWnCmQPjKBMEgAHgdgKy7XX75pmsbWe1sMNK5uJUyH2Kny8n7x3ZJ9BVO117WH8/W47q3AWxtppotmVlJJB28/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YUXbtKZ6nPXPrUE3h3UtUkN9qclvHekwoscOTHHGkm8jJ5JNAFm98W29sFeCIzxPBHMrhsZDyiPH4ZzVjWfEUWizMk0DSKts05ZT6EDH69ax5/BNw2q6nJb3kaWdzAv2aFkz5EokD591LAHH1q4NL129nlvb2SytrtYDDbrEplQgkElt3rjGKALmg61PqwYywQCPYHjntbgTROD2yMYYelbNcz4b8OTabq0+oT21lYGWEQm2sSfLfByHOcc84rpqACiiigAooooAKKKKACiiigAooooAwNA/5GPxR/2EIv8A0kgrfrA0D/kY/FH/AGEIv/SSCt+gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAIbv8A48p/+ubfyrO8J/8AInaR/wBecX/oIrRu/wDjyn/65t/Ks7wn/wAidpH/AF5xf+gigDXooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArC8W/8giD/r8g/wDRgrdrC8W/8giD/r8g/wDRgoA3aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKwPF/wDyD9P/AOwtZf8Ao9K36wPF/wDyD9P/AOwtZf8Ao9KAN+iiigDlYPiLoVx8RZfBUbzf2tFEZDmP5DhdxGfXHNbWv3M1l4ev7m2bZNFAzI2M4IHBqRdH01NXbVUsLddQdPLa6EQ8wr6buuKkv7WG90+e2ujiGVCjkHGAevNAHJXnia/Om6WkDrHdm5RL0hegDhSPbdn8jWXY+Ib6W+t0iv8AUZL+4vHjjt5oAts6q53ANjsmT1zxXVJoeiXVxcTQTLI8jQyS7JgcGPG36dBn1xS/2No19pqabDcLIIZ/tMbRzAyRuG3bgR05P60AZGhX9zqOuz+ffar+7u5UCCAC32qcAbsU7xZrElj4gihlvdQtbRbJp3NjAJDkNjLcHAxXTaXb2drDLFYyrIpmZ3w4bDMcn6VHNHpqax9quLiJbkweRseUDKk56GgDm38ZXOj+G7K61CKK5kmRpAWnCO8YPykIoYkkYJwMDuauxeMmmuGZNMkFhHJFHJdGUAqZACMLjkfMAeaG8D6UyLDBdXUKbHhKRz43RsSxjz1ABJ6UzT/BkNtqc7z3czweZG6Wol+VgigKXHqCKAKl14xu30Od9IspJngiLzSvKAYsuyjjHzfdJ7cVtare3Ttpen2k32eXUN2+4ABKKqbjtB7mqU/hHRpv9BjvZoCyFJoYbja0y7iwDDrwSa1dUtNPuoIrW6uhbyxkNBIsoSSNsYBU/wCc0AY82uXnh29k0+58zVCfK8hyQr/O23DHGODz06VHdePDZqiXWnCGcXDwTebcbYo2XH/LTbjJDDGcfWteLwxZrH+/lnuZzMkz3Er5dyhyoJ9B6VHeeFLW78/bdXcAuZWlmWKX5ZNwAIIPGMKKAKE3j22XWmsILV5gsogaRNzYcgeilSvIyd3FKmu6lP8ADe61e4Rba9WCV18o78YJAI49ulX7fwvZ2moGWxubm3i3K8lpFLiNmAwCR15AGexxU8OhWi6HcaSJJJLWXepBfJQMclQe3WgDnbfUrq3sI7mO+1OQtcQxsL+AINrHnbxV9vGqwRi5vNPkis5o3e1mEgYy7OxX+Entya3bzTYL62ign3FIpEkXBxypyKx5PCmj2+8308jWxR4oYZ5sRwh/vBPQmgBreK7mOT7HNpRTU2kVYrb7QCrhgTu344wAc8Vl2vjO5t45pNQtJnnWWZRbq6gACVUAzjnr19K2l8JWhgcteXcl0zrIt40uZUKjAwemMEj8aZF4J0yKMKWuJCGZi8kpLMWcOST/ALwoAjXxZcNIbNdKzqYuGh+zfaBtwqBy2/HTDDt1NSy+I5ZfBx1a3t/s88jCJI5jny3MgTJx1AJzUWu+G5pWa60cbbyS485pDOY2UlAh2sAcAgDIxzV3SfD8Vp4Vj0a9/wBIQxlZcsTuLHJ569+tAFS7bUfDtncXcuqfbVMRIiuFAIfIwVxj5eeRUN3JqmhC1uJdSe9S7k8qWORFGxmUlWTHQAjoc8VdtPD1ilxKLu8m1GXyjCFupd5jQ9QB78c9adb+F7aK4WS4uru7EQYW6XEu5YARg7ffHGTk0Ac7pHijU303SbbUpVGoyXEfmOFAE8LKxDAfUYP0rUj1i+bwjpV6ZM3FxcRpI23qC5B4+lX5PCelyyaRI8b+ZpDbrZw5yOMYPqOelJD4WtYbxJPtF09vHIZIrN5MxRsc8gfiePegDC0/WtRi8SRwazPe2U8twYvKngBtZhyVEbr0OAOvfIruKw7bwtbW9zG32q6ltoXEkNpJJujiYHII78dua3KACiiigAooooAKKKKACiiigAooooAwNA/5GPxR/wBhCL/0kgrfrA0D/kY/FH/YQi/9JIK36ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAhu/+PKf/rm38qzvCf8AyJ2kf9ecX/oIrRu/+PKf/rm38qzvCf8AyJ2kf9ecX/oIoA16KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKwvFv/IIg/wCvyD/0YK3awvFv/IIg/wCvyD/0YKAN2iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsDxf/yD9P8A+wtZf+j0rfrA8X/8g/T/APsLWX/o9KAN+iiigDiLbxP4rl+Lk+gTeHtnh1Lfemp88ttz16HJ4x1710PirP8AwiWqbev2V8flWtSOiyIUdQysMEEZBoA8x8i4tL/ytQsbHSz/AGXK9vJZE4uyUwyMT0K8HHfPtV+20++s/Bctw1hYWrNaxATWG7zDGSN+Sf8AZyeK7yS2hm2ebEj7Pu7lB28Y4/CnhVVAoUBQMAY4xQBgaYvh+HWIV0byzPJASfszZTZxy+OM+meetZMGn3N5421iRdP064gS5iDS3O4yr+6Q/L2rr7axtLLf9ktood5y3loF3H3xUqxojMyqAznLEDrQB5xcPLHq8NxC7b7W/vZgAeoUAkflmtrw1cG+8W3uoby0d5aRyxegj3EL+nP411f2aHdnykzknO0d+v50qQxRkGON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X/GgDdorC/4RSH/oLaz/AODGX/Gj/hFIf+gtrP8A4MZf8aAN2sLxb/yCIP8Ar8g/9GCj/hFIf+gtrP8A4MZf8aT/AIRG0aSNp77VLhY5FkEc19I6kg5GQTg80Ab1FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9k=" + } + }, + "cell_type": "markdown", + "id": "1be801a7", + "metadata": { + "deletable": false + }, + "source": [ + "
\n", + "

HydroVIS Visualization Workflow

\n", + " \n", + "

\n", + " Viz EGIS services (except inundation) are now stored in a PostgreSQL database. While a version of the on-prem loosa viz pipeline does still run on a Windows virtual machine in HydroVIS, we're moving in the direction of a serverless pipeline based on a central RDS database with processing taking place in on-demand lambda functions. In order to maintain the stability of the DB and lambda functions in the pipeline, we have developed a workflow to minimize the need to work directly with either the database or the automated lambda functions. Instead, services can be developed with structured query language (SQL, and more specifically PostgreSQL) inside of a Jupyter notebook like this one. A good tutorial resource can be found here to learn more about writing SQL. \n", + "

\n", + "

\n", + " In other words, this new framework replaces the process.py and product python files of the on-prem loosa library with SQL files that do the same work in less code (a SQL file is just an executable text file that stores SQL code with a .sql extension, similar to a .py file). That said, the entire pipeline is still python-based, and while we're encouraging the use of SQL wherever possible due to the reduction of code and built-in data validation / QA-QC... we do still have the ability to use Python for post-processing as well, and can continue to evaluate that on a service-by-service basis, depending on requirements.\n", + "

\n", + "

\n", + " There are 3 main categories of SQL files in the viz workflow (explained in detail through the rest of this notebook):\n", + "

    \n", + "
  1. Parent SQL Files (pre-processing, e.g. max flows)
  2. \n", + "
  3. Service SQL Files (processing, e.g. loosa product files)
  4. \n", + "
  5. Final SQL Files (post-processing, e.g. hucs hotspots)
  6. \n", + "
\n", + "

\n", + "

Almost all development of vector services can/should be done in these SQL files (primarily #2 Serivce SQL Files and occasionaly #3 Final SQL Files, such as HUC hotspot layers). We're still working out the right approach for raster services, and will be collaborating on that approach in the coming weeks.

\n", + "
![download.jpg](attachment:download.jpg)![download.jpg](attachment:download.jpg)![download.jpg](attachment:download.jpg)" + ] + }, + { + "cell_type": "markdown", + "id": "5c13bfd9", + "metadata": {}, + "source": [ + "
\n", + "

Getting to Know The Database

\n", + "

The VizProcessing PostgreSQL database now serves as our primary source of authoritative and pipeline input data. Similar to the folder structure of the on-prem EGIS pipelines, we now use database schemas to categorize available database tables.

\n", + "
" + ] + }, + { + "attachments": { + "derived_schema.JPG": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzg5AACSkgACAAAAAzg5AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMxIDIwOjE1OjE4ADIwMjI6MDM6MzEgMjA6MTU6MTgAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMxVDIwOjE1OjE4Ljg5MzwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQg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sLmOYkyRCZxGxPU7Adue+cdeaveTH9n8jb+727MZPTGOtAJHNG8k0zT7hGN3DqSQruNxO0yMCwUyrklcAnOMD3FX9V09LXw9qbxzXDubKVSZrh5AfkPO0nAP0Aq7DpNnCJAI2l82Py3M8rSkp/dy5PHPSmx6NZxwSQgTNFLEYmSS4kcbDwQAWOPwxQFinPE+lXmnNDPdTtPK8MqyTM4k/dO+cHhTlB90DqaoWD6jdafZ3sNvqL3cxjmeR7lPJZWILLs8zAXaSB8uenfNdLLbRTyQSSrua3cyRnJG1trLn34Zh+NVk0aySYSJHIuH8wRiZ/LDZznZnb156daLBYx50lax1y9N5dCW1klaALMwWPagYDaDgjPY5FWY1axbTLlru4c3BK3HmysysPKZ8hTwuCv8IHHFahsLZre5hMf7u6LGZdx+bcMH6celPa0gZYA0eRbnMYJPy/KV/HhiOfWgLHNrPcwT6beRrcJBdXKpm4vWZpFcEjMWCg7HggjFdVWbHoGmxtCywOfs7BoQ0zsIsf3QTgD2HHAq9DCsCFULkFi3zuznJOepJ49ugoQIkooopjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALP2ZPVqPsyerVNRWd2ZczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1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Mp8v8H+4KZWZqtgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApk8zwWjvEcNuUcgH19afUN5/x4v8A7y/1qo7ilsVP7Suv+ei/98L/AIUf2ldf89F/74X/AArK1a7ew0W9u4QrSW9vJKoYcEqpIz7cVm+GvFNhrunWCtqFi2qzWUVzcWcMyl49yKx+TJYD5h19RXRaPYw1On/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACsr+1tO+wm9+32v2VZPLM/nLsD79m3dnGd3y49eOtMvNd0nTr6Cy1DVLK1urjHkwT3CJJLk4G1ScnJ4470WiF2bH9pXX/PRf++F/wo/tK6/56L/3wv8AhXGeI/FepeGoJ9SvNEjbRreZI5Zxe/v9rMq+YsQQqRluhcH2Fb+p6hBpOk3eo3Z2wWkLzSH/AGVBJ/lRaPYNTU/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuU03VdXuE8PPfPpds9/bvLd2zMyzFtgZVhGfm25+bP1GKvxeJNDnvorKDWdPku5wTFAl0hkkAzkqoOT91unofSlaPYNTc/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuV0zxtoet6zf6Rpuo2xvrSTygjSo3mnYGLIobLKucHpggjtVjwprcmv+HIL25jSK7Vnguoo87UmjYo4GecblOM9sUWiGp0X9pXX/PRf++F/wo/tK6/56L/3wv8AhVWinyrsF2Wv7Suv+ei/98L/AIUf2ldf89F/74X/AAqrRRyrsF2Wv7Suv+ei/wDfC/4Uf2ldf89F/wC+F/wqrRRyrsF2Wv7Suv8Anov/AHwv+FH9pXX/AD0X/vhf8Kq0Ucq7Bdlr+0rr/nov/fC/4Uf2ldf89F/74X/CqtFHKuwXZa/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACqtFHKuwXZa/tK6/56L/AN8L/hR/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fZo+1XH/AD3l/wC+zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQ1GlzBJcSQJNG00YBeMOCyZ6ZHUUaBZFr7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q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" + }, + "ff45029f-5975-4100-ad2f-678565db8a6d.jpg": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzg5AACSkgACAAAAAzg5AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMxIDIwOjE1OjE4ADIwMjI6MDM6MzEgMjA6MTU6MTgAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMxVDIwOjE1OjE4Ljg5MzwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQg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sLmOYkyRCZxGxPU7Adue+cdeaveTH9n8jb+727MZPTGOtAJHNG8k0zT7hGN3DqSQruNxO0yMCwUyrklcAnOMD3FX9V09LXw9qbxzXDubKVSZrh5AfkPO0nAP0Aq7DpNnCJAI2l82Py3M8rSkp/dy5PHPSmx6NZxwSQgTNFLEYmSS4kcbDwQAWOPwxQFinPE+lXmnNDPdTtPK8MqyTM4k/dO+cHhTlB90DqaoWD6jdafZ3sNvqL3cxjmeR7lPJZWILLs8zAXaSB8uenfNdLLbRTyQSSrua3cyRnJG1trLn34Zh+NVk0aySYSJHIuH8wRiZ/LDZznZnb156daLBYx50lax1y9N5dCW1klaALMwWPagYDaDgjPY5FWY1axbTLlru4c3BK3HmysysPKZ8hTwuCv8IHHFahsLZre5hMf7u6LGZdx+bcMH6celPa0gZYA0eRbnMYJPy/KV/HhiOfWgLHNrPcwT6beRrcJBdXKpm4vWZpFcEjMWCg7HggjFdVWbHoGmxtCywOfs7BoQ0zsIsf3QTgD2HHAq9DCsCFULkFi3zuznJOepJ49ugoQIkooopjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKALP2ZPVqPsyerVNRWd2ZczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1TUUXYczIfsyerUfZk9Wqaii7DmZD9mT1aj7Mnq1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Mp8v8H+4KZWZqtgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApk8zwWjvEcNuUcgH19afUN5/x4v8A7y/1qo7ilsVP7Suv+ei/98L/AIUf2ldf89F/74X/AArK1a7ew0W9u4QrSW9vJKoYcEqpIz7cVm+GvFNhrunWCtqFi2qzWUVzcWcMyl49yKx+TJYD5h19RXRaPYw1On/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACsr+1tO+wm9+32v2VZPLM/nLsD79m3dnGd3y49eOtMvNd0nTr6Cy1DVLK1urjHkwT3CJJLk4G1ScnJ4470WiF2bH9pXX/PRf++F/wo/tK6/56L/3wv8AhXGeI/FepeGoJ9SvNEjbRreZI5Zxe/v9rMq+YsQQqRluhcH2Fb+p6hBpOk3eo3Z2wWkLzSH/AGVBJ/lRaPYNTU/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuU03VdXuE8PPfPpds9/bvLd2zMyzFtgZVhGfm25+bP1GKvxeJNDnvorKDWdPku5wTFAl0hkkAzkqoOT91unofSlaPYNTc/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACuV0zxtoet6zf6Rpuo2xvrSTygjSo3mnYGLIobLKucHpggjtVjwprcmv+HIL25jSK7Vnguoo87UmjYo4GecblOM9sUWiGp0X9pXX/PRf++F/wo/tK6/56L/3wv8AhVWinyrsF2Wv7Suv+ei/98L/AIUf2ldf89F/74X/AAqrRRyrsF2Wv7Suv+ei/wDfC/4Uf2ldf89F/wC+F/wqrRRyrsF2Wv7Suv8Anov/AHwv+FH9pXX/AD0X/vhf8Kq0Ucq7Bdlr+0rr/nov/fC/4Uf2ldf89F/74X/CqtFHKuwXZa/tK6/56L/3wv8AhR/aV1/z0X/vhf8ACqtFHKuwXZa/tK6/56L/AN8L/hR/aV1/z0X/AL4X/CqtFHKuwXZa/tK6/wCei/8AfC/4Uf2ldf8APRf++F/wqrRRyrsF2Wv7Suv+ei/98L/hR/aV1/z0X/vhf8Kq0Ucq7Bdlr+0rr/nov/fC/wCFH9pXX/PRf++F/wAKq0Ucq7Bdlr+0rr/nov8A3wv+FH9pXX/PRf8Avhf8Kq0Ucq7Bdlr+0rr/AJ6L/wB8L/hR/aV1/wA9F/74X/CqtFHKuwXZa/tK6/56L/3wv+FH9pXX/PRf++F/wqrRRyrsF2bm9pIonc5YxgnjFJSJ/wAe8P8A1zFLXM9zdbBRRRSGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVDef8eL/7y/1qaorpWeycIpY7l4Az61Ud0KWxzWvxvN4b1OKFGkke0lVUUZLEocADua4y10a4tNO+G4ttOlheyKi5CQFTAGtHD7wB8uXxnP8AF716N5Ev/PJ/++TR5Ev/ADyf/vk10OzMDyG7hv7fwHe+GBo+qTX6615u6KzcxGE3wmEokxtYbSOFJYHqAAxHQWzDR/E3iaLWdHvr7+1bmKS2eGxa4juIfKVBGzgFU2sHyJCoG7PQ5rvvIl/55P8A98mjyJf+eT/98mlZAedeINTGueJzpmr6fq0Gh6bMkrCPSbmb+0ZlOVwyRsPKUgH/AGiB2HO74/t5dQ+GuvRWgcySafKUUKQzfKTjB5ycYxXUeRL/AM8n/wC+TSG3lIIMLkHqCppgcXcrJqXifwTqNlDJLZiC4kaZEJSNXgXbkjgZ7Z61z1roV3b/AAr0qKLS547+PXI7p41tyJVP23mQjGf9X3P8PtXpunaPFpOnQ2Gn2rw20C7Io/mIRfQZ5x/KrPkS/wDPJ/8Avk0rIDjtAWXT/HviaC5tbtRqFzDc20/2ZzDIgt0Vv3gBUEMpGCQemBzS/DsF9H1S7GfJvNavZ4MjqhmYAj67Sfxrr3tpXRlMcgDDBwCD+Y6VX0/SY9K023sNPtGgtbaNYoo1U4VQMAc8n6mmBLRUnkS/88n/AO+TR5Ev/PJ/++TTugI6Kk8iX/nk/wD3yaPIl/55P/3yaLoCOipPIl/55P8A98mjyJf+eT/98mi6AjoqTyJf+eT/APfJo8iX/nk//fJougI6Kk8iX/nk/wD3yaPIl/55P/3yaLoCOipPIl/55P8A98mjyJf+eT/98mi6AjoqTyJf+eT/APfJo8iX/nk//fJougI6Kk8iX/nk/wD3yaPIl/55P/3yaLoCOipPIl/55P8A98mjyJf+eT/98mi6AjoqTyJf+eT/APfJo8iX/nk//fJougI6Kk8iX/nk/wD3yaPIl/55P/3yaLoCOipPIl/55P8A98mjyJf+eT/98mi6AjoqTyJf+eT/APfJo8iX/nk//fJougNZP+PeH/rmKWkUFYIQRg+WODS1yvc3WwUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFAYjoSPoaKKAF3t/eP50b2/vH86SigBd7f3j+dG9v7x/OkooAXe394/nRvb+8fzpKKAF3t/eP50b2/vH86SigBd7f3j+dG9v7x/OkooAXe394/nRvb+8fzpKKAF3t/eP50b2/vH86SigBd7f3j+dG9v7x/OkooAXe394/nRvb+8fzpKKAF3t/eP50b2/vH86SigBd7f3j+dG9v7x/OkooAXe394/nRvb+8fzpKKAF3t/eP50b2/vH86SigBd7f3j+dG9v7x/OkooAXe394/nRvb+8fzpKKAF3t/eP50b2/vH86SigBd7f3j+dG9v7x/OkooAXe394/nRvb+8fzpKKAAknqSfrRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBzX2q4/57y/8AfZo+1XH/AD3l/wC+zUNFdNkd1kTfarj/AJ7y/wDfZo+1XH/PeX/vs1DRRZBZE32q4/57y/8AfZo+1XH/AD3l/wC+zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQ0UWQWRN9quP+e8v/fZo+1XH/PeX/vs1XaRE272Vdx2rk4yfSnUWQWRN9quP+e8v/fZo+1XH/PeX/vs1DRRZBZE32q4/wCe8v8A32aPtVx/z3l/77NQ0UWQWRN9quP+e8v/AH2aPtVx/wA95f8Avs1DRRZBZE32q4/57y/99mj7Vcf895f++zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQ0UWQWRN9quP8AnvL/AN9mj7Vcf895f++zUNFFkFkTfarj/nvL/wB9mj7Vcf8APeX/AL7NQ0UWQWRN9quP+e8v/fZo+1XH/PeX/vs1DRRZBZE32q4/57y/99mj7Vcf895f++zUNFFkFkTfarj/AJ7y/wDfZo+1XH/PeX/vs1DRRZBZE32q4/57y/8AfZo+1XH/AD3l/wC+zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQMyopZyFVRkknAApsM0VxCssEiSxsMq6MGB+hFFkFkWftVx/wA95f8Avs0farj/AJ7y/wDfZqGkLAMASAT0GetFkFkT/arj/nvL/wB9mj7Vcf8APeX/AL7NQ0UWQWRN9quP+e8v/fZo+1XH/PeX/vs1DUcVxDNJIkM0cjxHbIqMCUPofSjQLItfarj/AJ7y/wDfZo+1XH/PeX/vs1DUYuYDdG2E0ZnC7zFvG4L646496NAsi19quP8AnvL/AN9mj7Vcf895f++zUNFFkFkTfarj/nvL/wB9mj7Vcf8APeX/AL7NQ0UWQWRN9quP+e8v/fZo+1XH/PeX/vs1DUc1zBbtGJ5o4jKwSMO4G9j2Gep9qNAsi19quP8AnvL/AN9mj7Vcf895f++zUNFFkFkTfarj/nvL/wB9mj7Vcf8APeX/AL7NQ0UWQWRN9quP+e8v/fZo+1XH/PeX/vs1DRRZBZE32q4/57y/99mj7Vcf895f++zUNFFkFkTfarj/AJ7y/wDfZo+1XH/PeX/vs1DRRZBZE32q4/57y/8AfZo+1XH/AD3l/wC+zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQ1Hb3MF3CJbWaOeMnAeNwwP4ijQLItfarj/AJ7y/wDfZo+1XH/PeX/vs1DRRZBZE32q4/57y/8AfZo+1XH/AD3l/wC+zUNFFkFkTfarj/nvL/32aPtVx/z3l/77NQ1GlzBJcSQJNG00YBeMOCyZ6ZHUUaBZFr7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q4/57y/8AfZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf8APeX/AL7NH2q4/wCe8v8A32ahoosgsib7Vcf895f++zR9quP+e8v/AH2ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/z3l/77NH2q4/57y/99moaKLILIm+1XH/AD3l/wC+zR9quP8AnvL/AN9moaKLILIm+1XH/PeX/vs0farj/nvL/wB9moaKLILIm+1XH/PeX/vs0farj/nvL/32ahoosgsib7Vcf895f++zR9quP+e8v/fZqGiiyCyJvtVx/wA95f8Avs0farj/AJ7y/wDfZqGiiyCyJvtVx/z3l/77NH2q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" + } + }, + "cell_type": "markdown", + "id": "c856a244", + "metadata": {}, + "source": [ + "![download.jpg](attachment:ff45029f-5975-4100-ad2f-678565db8a6d.jpg)![derived_schema.JPG](attachment:derived_schema.JPG)" + ] + }, + { + "attachments": { + "ingest_schema.JPG": { + "image/jpeg": "/9j/4AAQSkZJRgABAQEAeAB4AAD/4RDyRXhpZgAATU0AKgAAAAgABAE7AAIAAAANAAAISodpAAQAAAABAAAIWJydAAEAAAAaAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFR5bGVyIFNjaHJhZwAAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzE4AACSkgACAAAAAzE4AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDIyOjAzOjMwIDEzOjQ0OjM3ADIwMjI6MDM6MzAgMTM6NDQ6MzcAAABUAHkAbABlAHIAIABTAGMAaAByAGEAZwAAAP/hCx9odHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDIyLTAzLTMwVDEzOjQ0OjM3LjE3ODwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT5UeWxlciBTY2hyYWc8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQg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FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAEV1aw3luYblN6Eg4yQQQcggjkH3FVho1j5MsUkckyzKFczTPIxAOQAWJI554781eopqTWiYrIowaNYwXP2hYmeby2iMksryMUbaSpLE5Hyjr/AFNJDoljBG0caTeUyGPy2uJGRVIwQFLYHHp0q/RT55dwsiCSxt5o4Ekjytu6vENx+Vl6H3/GnXNrDeW7QXMYkjbqD+hB7H3FS0UrsChDotjDdrdLE7zopQSSzPI209RlicjimR+H9NiaFlgc/Z2DQhpnYREf3QThR7DjgVpUU+eXcLIoPolhJ54aJ8Tv5jqJnA35B3AZwrZAORg0+10mzs7prmCNvPdNjSvKzsw9yxOegq5RRzyta4WRUu9Mtr591x52duwiOd0DD0IUgH8abNpFnPKspjeKRUEYaCV4jtHRfkIyB2HartFHNJdQsio2l2bWUdr5OyGIhoxGxQofUMCCDyec5OT61FFoWnRLOEgY/aChmZpXZnKnKkknOQa0KKOeXcLIrXenW180bXCNvizskjkaN1z1AZSDg9x7UyTSbSWKJHWXMOfLkE7iQZ6/ODu5+tXKKOaS6hZFaLT7eBY1i81QjmT/AFzksxGMsc/N/wACz29Ks0UUm29wCiiikMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAv0UUV7JyBRT/Kf+6aPKf8Aumq5ZdhXQyin+U/900eU/wDdNHLLsF0Mop/lP/dNHlP/AHTRyy7BdDKKf5T/AN00eU/900csuwXQyin+U/8AdNHlP/dNHLLsF0Mop/lP/dNHlP8A3TRyy7Bd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82D/AJ+I/wBf8KPNg/5+I/1/wo1AWik82D/n4j/X/CjzYP8An4j/AF/wo1AWpIf9ctRebB/z8R/r/hUkEkTTqFmRj2AzSewLckooorwjtCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCC+/5B8n1X+dY1bN9/yD5Pqv8AOuU8RrdP4V1VdOMgvGsphAYiQ4k2HbtI5znGMV7WD/gnHV+M0qZNNFbW8k9xIkUMSl5JJGCqigZJJPQAd683m8VxarLK2iay1zHF4VuZne3nJVZx5eCSOBIMnj7y7hnGRlXku9ISRINT1GZr3wvc30r3F48hE6eXiRATiM/vW4TaOBxwK6uYzsehxX1pcTeVBcwyyeUs2xJAT5bZCvgfwnBwehwakaeJJo4XlRZZASiFgGfHXA74yK8/0eGyT4mW1zf3s6Xd5odo9usuoSqLiQGXeAhfD4XaxXBAJLYySTp69FLeeJNVt1eSJ18Pn7M8SguC8j+YACCD9yLt6UXA7CivKp/El/a6NoUGk+J7KOzksDINTvr6CBJJVIHk7/s7odufugK/+1wa2v8AhINVk8aRaXJqaJp02wSXttGjLFdGHP2RWZSMEYlDMCeQv8QFHMgsdw88Uc0cTyoskufLQsAXxycDvin15pojonhHw8ItUfUbu21mKIq5j3Wz/MkkWEVcERs5IbJ5PbAr0umncAooopiCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKs6f8A8f8AF9f6VWqzp/8Ax/xfX+lTL4WNbmvRRRXzZ6AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAQX3/ACD5Pqv86xq6HPBGAQeoIzSYX+4n/fAr0KGKjShytGE6blK5z9FdBhf7if8AfAowv9xP++BW316HZkexkc/UD2VvJfw3rx/6TCjxpICQQrEFh7glVPPpXT4X+4n/AHwKML/cT/vgUfXodmHsZHP0V0GF/uJ/3wKML/cT/vgUfXodmHsZHMT2Vvc3VtcTx75LV2eEknCMVKk46Z2swz6E+tT10GF/uJ/3wKML/cT/AL4FH16HZh7GXc5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP8AvgUYX+4n/fAo+vQ7MPYyOforoML/AHE/74FGF/uJ/wB8Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+iugwv9xP8AvgUYX+4n/fAo+vQ7MPYyOforoML/AHE/74FGF/uJ/wB8Cj69Dsw9jI5+iugwv9xP++BRhf7if98Cj69Dsw9jI5+rOn/8f8X1/pWvhf7if98ClBCnKqgPqFFJ42DVrMaoyEoooryjpCioPt1v/wA9P/HTR9ut/wDnp/46ax+sUf5l96L5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt1v8A89P/AB00fbrf/np/46aPrFH+Zfeg5JdieioPt1v/AM9P/HTR9ut/+en/AI6aPrFH+Zfeg5JdieioPt1v/wA9P/HTR9ut/wDnp/46aPrFH+Zfeg5JdieioPt1v/z0/wDHTR9ut/8Anp/46aPrFH+Zfeg5JdieioPt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pNuYNPgWGMtuYAklj6knkn61niMTTqxkle7d9rffq/kVTpyi0W6KKK843CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/Z" + } + }, + "cell_type": "markdown", + "id": "09ceb5f7", + "metadata": {}, + "source": [ + "![ingest_schema.JPG](attachment:ingest_schema.JPG)" + ] + }, + { + "cell_type": "markdown", + "id": "a073a2a5", + "metadata": {}, + "source": [ + "
\n", + "

Several other schemas exist within the database:\n", + "

    \n", + "
  1. admin - this schema stores service metadata, as well as logs and tracking information about the pipelines.
  2. \n", + "
  3. cache - this holds the max flows tables and some interim tables used by some services.
  4. \n", + "
  5. fim - this schema stores data specific to FIM.
  6. \n", + "
  7. publish - this schema is where the attribute tables of the services themselves are written to, as a result of the SQL file scripts that will be explained in this notebook.
  8. \n", + "
  9. dev - this schema will be used for development.
  10. \n", + "
\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "dd0bac23", + "metadata": {}, + "source": [ + "
\n", + "

1. Parent SQL Files

\n", + "

These SQL files are used for pre processing NWM data. In most cases, the SQL code creates a table of maximum streamflows for a given forecast. Normally these files will not need to be altered or touched, unless a new data pre-processing needs to be done.

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "ae1327e4", + "metadata": {}, + "source": [ + "An example of some SQL that calculates the maximum streamflow for each feature id in the short range configuration (this is equivelant to the max_flows pipelines on-prem). \n", + "For development purposes, a pandas dataframe is returned by the run_sql_in_db function \n", + "and respresents what the resulting DB output would look like." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2d26ebf", + "metadata": {}, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import *\n", + "sql = \"\"\"\n", + "SELECT\n", + " forecasts.feature_id,\n", + " round((max(forecasts.streamflow) * 35.315)::numeric, 2) AS maxflow_18hour\n", + "FROM ingest.nwm_channel_rt_srf forecasts\n", + "GROUP BY forecasts.feature_id;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "a15c905c", + "metadata": {}, + "source": [ + "
\n", + "

*The actual automated parent SQL file that creates the srf max flows table in the database uses a SELECT ... INTO statement to write the output of the above query into a new table in the database on each run (as opposed to just returning the results of the query to the client, like we're doing in this example). We're leaving the INTO part out of this notebook for now, as to not write any data as part of this tutorial, but that's how we're able to query this same data from cache.max_flows_srf in the following steps.\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "5661fe7a", + "metadata": {}, + "source": [ + "
\n", + "

2. Service SQL Files

\n", + "

The service SQL files do the main data transformations and processing to create the actual attribute tables for the for map services (akin to the product files on-prem, although now we have one SQL file per service). The results of running this SQL is a table that is used as a data source for the pro project layer, just like the feature classes created by our on-prem process.py files. There are many SQL statements that can be used to get the desired table, including join, where, group by, etc. See the PostgreSQL tutorial mentioned in the intro for more help on these statements and queries. In the examples below I will slowly build the SQL code for the srf max high flow magnitude service, highlighting different SQL statements that will probably be used for most services.

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "c713eeda", + "metadata": {}, + "source": [ + "An example of selecting fields from the table we just \"created\" in the last step." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a2ec878", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " cache.max_flows_srf.feature_id,\n", + " cache.max_flows_srf.maxflow_18hour\n", + "FROM cache.max_flows_srf\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "029f2619", + "metadata": {}, + "source": [ + "An example of using AS to create aliases for table names and fields (AS is optional)\n", + "Notice that when I select the fields now, I am using the Alias from when I imported the table. Aliases are useful to help write clean and readable SQL code." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d7cc20ca", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow\n", + "FROM cache.max_flows_srf AS maxflows\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "34ff8bc6", + "metadata": {}, + "source": [ + "An example of using JOIN to join two tables together, selecing fields from both tables.\n", + "Notice that on the join we first indicate what table we want to join to, and then which field to use as the joining key. There are multiple types of joins in SQL (inner, left outer, right outer, etc.), but we can primarily get away with the simple JOIN statement (short for inner join) which only returns rows in which the join key is present in both tables." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07566a7a", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "3fe88fa0", + "metadata": {}, + "source": [ + "An example of using WHERE to select specific data (WHERE is basically a way to filter your results)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab03df6b", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "WHERE thresholds.high_water_threshold > 0 AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "9884a473", + "metadata": {}, + "source": [ + "An example of using CASE to calculate a field using conditional statements. This is basically how you do an IF statement in SQL.\n", + "In addition, you can cast a value to a specific data type (like TEXT) with the \"::\" syntax, as shown below. This is needed in the example below because one of our recur_cat categories is \">50\", so every numeric value needs to be cast as text so that it doesn't throw a data type error (this is one example of SQL being a little more stringent than Python, but ultimately in a good way that forces an extra layer of validation)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4a86c264", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "WHERE thresholds.high_water_threshold > 0 AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "6c9881d8", + "metadata": { + "tags": [] + }, + "source": [ + "
\n", + "

Adding Geometry

\n", + "

\n", + " Now that we have our main data table, we need to add the spatial component in order for ArcGIS Server to render directly from the output of our SQL (this also allows us to use geopandas to do some mapping in this notebook). We can do this by joining to the derived.channels table and adding the geometry column to our select statement, along with the other fields that we want. This step should be pretty similar for all the services.\n", + "

\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "c42f83a3", + "metadata": {}, + "source": [ + "This example also uses a temporary table by using the WITH statement. Sometimes it's nice to keep individual chunks of SQL / JOINs seperate (instead of one long nasty SQL statement that's tough to troubleshoot), so instead of saving an intermediate table somewhere in the database and referencing it, we can just create a temporary sub-query using WITH and use that in the primary SELECT statement. In this case, the sub-query is the high flow magnitude query that we just ran in the last step, and we're joining that to the channels table so that the channels table gets to rightfully be the authoritative source for the channel data." + ] + }, + { + "cell_type": "markdown", + "id": "b220c4b1", + "metadata": {}, + "source": [ + "You'll notice below that we don't currently have a reference time column anywhere, and that's because we automatically manage reference_time within the database infastructure. We also need an oid column for ArcGIS Server, so when developing, we can just manually add those columns by adding the following lines to the SELECT statement:\n", + "\n", + "
    \n", + "
  • '2022-03-25 00:00:00 UTC' as ref_time
  • \n", + "
  • row_number() over (order by channels.feature_id) as oid
  • \n", + "
\n", + "" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d540683e", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "WITH high_flow_mag AS (\n", + " SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + " FROM cache.max_flows_srf AS maxflows\n", + " JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + " WHERE thresholds.high_water_threshold > 0::double precision AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + ")\n", + "SELECT \n", + " channels.feature_id,\n", + " channels.feature_id::TEXT AS feature_id_str,\n", + " channels.strm_order,\n", + " channels.name,\n", + " channels.huc6,\n", + " channels.nwm_vers,\n", + " high_flow_mag.max_flow,\n", + " high_flow_mag.recur_cat,\n", + " high_flow_mag.high_water_threshold,\n", + " high_flow_mag.flow_2yr,\n", + " high_flow_mag.flow_5yr,\n", + " high_flow_mag.flow_10yr,\n", + " high_flow_mag.flow_25yr,\n", + " high_flow_mag.flow_50yr,\n", + " channels.geom,\n", + " to_char(now()::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') AS update_time,\n", + " '2022-03-25 00:00:00 UTC' as ref_time,\n", + " row_number() over (order by channels.feature_id) as oid\n", + "FROM derived.channels_conus channels\n", + "JOIN high_flow_mag ON channels.feature_id = high_flow_mag.feature_id;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "c8b73323", + "metadata": {}, + "source": [ + "With the geom column now present, we can return a geodataframe from the run_sql_in_db helper function, and map the output using the map_column helper function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "46c451ad", + "metadata": {}, + "outputs": [], + "source": [ + "gdf = run_sql_in_db(sql, return_geodataframe=True)\n", + "sub = gdf[gdf['strm_order'] >= 4]\n", + "column = \"recur_cat\"\n", + "colormap = {\n", + " '2': '#cc33ff',\n", + " '4': '#e600a9',\n", + " '10': '#ff0000',\n", + " '20': '#ff9900',\n", + " '50': '#ffff00',\n", + " '>50': '#72afe8'\n", + "}\n", + "title = \"Short Range Max High Flow Magnitude\"\n", + "\n", + "ax = map_column(gdf, column, colormap, title=title)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95535f43", + "metadata": {}, + "outputs": [], + "source": [ + "sub = gdf[gdf['strm_order'] > 4]\n", + "\n", + "ax = map_column(sub, column, colormap, title=title)" + ] + }, + { + "cell_type": "markdown", + "id": "a595b1a9", + "metadata": {}, + "source": [ + " Once you're ready to map your output in Arc Pro. Just use the save_gdf_shapefile_to_s3 helper function to save and upload a shapefile that you can download and use in your pro project. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1f4add1", + "metadata": {}, + "outputs": [], + "source": [ + "save_gdf_shapefile_to_s3(gdf, \"tyler_test\")" + ] + }, + { + "cell_type": "markdown", + "id": "aadaf7de", + "metadata": {}, + "source": [ + "
\n", + "

3. Final SQL Files

\n", + "

The Final SQL files are for processing / summary that happens after the main service table is created. HUC Hotspots are the only current example of this type of processing. Below is a theoretical example of a HUC Hotspot layer for the SRF Max High Flow Magnitude Service table that resides in the database (created using the same SQL that we just wrote above).

\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0bf40cff", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "WITH srf_max_high_flow_magnitude AS (\n", + " SELECT maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + " FROM cache.max_flows_srf maxflows\n", + " JOIN derived.recurrence_flows_conus thresholds ON maxflows.feature_id = thresholds.feature_id\n", + " WHERE thresholds.high_water_threshold > 0::double precision AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + " )\n", + "SELECT\n", + " hucs.huc10,\n", + " TO_CHAR(hucs.huc10, 'fm0000000000') AS huc10_str,\n", + " hucs.total_nwm_features,\n", + " count(hfm.feature_id) AS hfm_features,\n", + " count(hfm.feature_id)::numeric / hucs.total_nwm_features AS high_water_features_percent,\n", + " sum(CASE WHEN recur_cat = '2' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_2,\n", + " sum(CASE WHEN recur_cat = '4' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_4,\n", + " sum(CASE WHEN recur_cat = '10' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_10,\n", + " sum(CASE WHEN recur_cat = '20' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_20,\n", + " sum(CASE WHEN recur_cat = '50' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_50,\n", + " sum(CASE WHEN recur_cat = '>50' THEN 1.0 ELSE 0 END) / hucs.total_nwm_features AS pct_morethan50,\n", + " hucs.geom\n", + "FROM derived.huc10s_conus AS hucs\n", + "JOIN derived.featureid_huc_crosswalk AS crosswalk ON hucs.huc10 = crosswalk.huc10\n", + "JOIN srf_max_high_flow_magnitude AS hfm ON crosswalk.feature_id = hfm.feature_id\n", + "GROUP BY hucs.huc10, hucs.total_nwm_features, hucs.geom\n", + "order by count(hfm.feature_id) DESC\n", + "\"\"\"\n", + "\n", + "gdf = run_sql_in_db(sql, return_geodataframe=True)" + ] + }, + { + "cell_type": "markdown", + "id": "6ea8a1e6", + "metadata": {}, + "source": [ + "We can map polygons as well with the map_column helper function, as long as geom column is present (currently available in the db for huc10 and huc8)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e2db58d", + "metadata": {}, + "outputs": [], + "source": [ + "column = \"high_water_features_percent\"\n", + "map_column(gdf, column, categorical=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40ab019e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "65b5a02f", + "metadata": {}, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import *" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b2c256d", + "metadata": {}, + "outputs": [], + "source": [ + "from sqlalchemy_schemadisplay import create_schema_graph\n", + "from sqlalchemy import MetaData\n", + "\n", + "graph = create_schema_graph(metadata=MetaData('postgres://user:pwd@host/database'))\n", + "graph.write_png('my_erd.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a84834f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/11. RASTER PRODUCT DEV WORKFLOW.ipynb b/Core/Manual_Workflows/11. RASTER PRODUCT DEV WORKFLOW.ipynb new file mode 100644 index 00000000..6d241a08 --- /dev/null +++ b/Core/Manual_Workflows/11. RASTER PRODUCT DEV WORKFLOW.ipynb @@ -0,0 +1,228 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4f3d72f8-df5f-4335-b81a-9a3996e27348", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 1: Create the raster product processing file in the raster_product_development/products folder

" + ] + }, + { + "cell_type": "markdown", + "id": "64369f01-e501-4a87-8d73-b94cb03432aa", + "metadata": {}, + "source": [ + "

Step 2: Tweak the following variable per the service you are developing

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07050a1f-6b4a-499c-9086-eae485ae463b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "SERVICE_NAME = 'mrf_gfs_10day_snow_water_equivalent_change'\n", + "PRODUCT_FILE_NAME = SERVICE_NAME # The name of the file in the raster_product_development/products folder. It's not always the same as the service name.\n", + "FILE_FORMAT = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.land_1.f003.conus.nc'\n", + "FILE_STEP = '24H'\n", + "FILE_WINDOW = 'P10D'\n", + "REFERENCE_TIME = '2024-06-13 00:00:00'\n", + "RUN_OPTIMIZE_RASTERS_STEP = True # Set this to true when you are ready to create Pro Project for service" + ] + }, + { + "cell_type": "markdown", + "id": "26bf0bfe-a3ee-4a73-81a3-9bff14338dd2", + "metadata": {}, + "source": [ + "

Step 3: Click the \"Restart Kernel and Run All Cells...\" icon above (i.e. the double play icon) to test/execute your script

" + ] + }, + { + "cell_type": "markdown", + "id": "3937b328-6575-4bc7-8a07-b4cc4d6f0e96", + "metadata": {}, + "source": [ + "When processed successfully, you will see \"ALL DONE!\" printed below and your raster outputs will be found at s3://hydrovis-ti-fim-us-east-1/processing_outputs//YYYYMMDD/HH/workspace/" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d4967e1-755b-47e9-be49-4d18f22a05dd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "REFERENCE_TIME_DATE = ''.join(REFERENCE_TIME.split(' ')[0].split('-'))\n", + "REFERENCE_TIME_HOUR = REFERENCE_TIME.split(' ')[1].split(':')[0]\n", + "\n", + "# The name of the product file as found in the raster_product_development/products folder (often the same as the product/service name)\n", + "RASTER_PROCESSING_EVENT_METADATA = {\n", + " \"reference_time\": REFERENCE_TIME,\n", + " \"product\": {\n", + " \"product\": SERVICE_NAME,\n", + " \"raster_input_files\": {\n", + " \"file_format\": FILE_FORMAT,\n", + " \"file_step\": FILE_STEP,\n", + " \"file_window\": FILE_WINDOW,\n", + " \"product_file\": PRODUCT_FILE_NAME,\n", + " \"bucket\": \"nws-shared-data-226711853580-us-east-1\"\n", + " },\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"hydrovis-ti-fim-us-east-1\",\n", + " \"output_raster_workspaces\": [\n", + " {\n", + " f\"{SERVICE_NAME}\": f\"processing_outputs/{SERVICE_NAME}/{REFERENCE_TIME_DATE}/{REFERENCE_TIME_HOUR}/workspace\"\n", + " }\n", + " ]\n", + " }\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ea46c3f-5279-4f2d-9b93-08428f1fd0d0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "!pip install isodate\n", + "from raster_product_development.lambda_function import lambda_handler as run_processing\n", + "\n", + "print('Running processing...')\n", + "output = run_processing(RASTER_PROCESSING_EVENT_METADATA, None)\n", + "print('... Done!')\n", + "if RUN_OPTIMIZE_RASTERS_STEP:\n", + " import boto3\n", + " import botocore\n", + " import json\n", + " boto_config = botocore.client.Config(max_pool_connections=1, connect_timeout=60, read_timeout=600)\n", + " lambda_client = boto3.client('lambda', config=boto_config)\n", + " print('Optimizing output rasters...')\n", + " for output_raster in output['output_rasters']['output_rasters']:\n", + " lambda_client.invoke(\n", + " FunctionName='hv-vpp-ti-viz-optimize-rasters',\n", + " InvocationType='Event',\n", + " Payload=json.dumps({\n", + " \"output_raster\": output_raster,\n", + " \"output_bucket\": output['output_rasters']['output_bucket']\n", + " })\n", + " )\n", + " print('... Done!')\n", + "print('ALL DONE!')" + ] + }, + { + "cell_type": "markdown", + "id": "e70f2d13-7e65-4a35-b572-79b32637ed5c", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 4: Create a Pro Projecto to symbolize the newly created raster data

" + ] + }, + { + "cell_type": "markdown", + "id": "e756266a-a5b2-48fb-bc8a-241d19768cc1", + "metadata": {}, + "source": [ + "Instructions on connecting your ArcGIS Pro to the raster data in S3 data can be found here: https://docs.google.com/presentation/d/1i7-QZhW7DUg3AV9davUy_m4pRutH0nD1iWCMILBm31I/edit#slide=id.p" + ] + }, + { + "cell_type": "markdown", + "id": "692671de-829f-44e5-9e71-4467cf1b5f12", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 5: Save .mapx file of your ArcGIS Pro Project and also create service configuration .yml file

" + ] + }, + { + "cell_type": "markdown", + "id": "f163ad73-e9aa-4e58-8ce8-9517e63740f0", + "metadata": {}, + "source": [ + "Commit these two files to your branch of the repo by creating a subfolder for your service here: https://github.com/NOAA-OWP/hydrovis/tree/ti/Core/LAMBDA/viz_functions/viz_publish_service/services" + ] + }, + { + "cell_type": "markdown", + "id": "09cb2e12-fdbf-4fde-b4ef-5996da7d395a", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 6: Commit your product script to your branch of the repo

" + ] + }, + { + "cell_type": "markdown", + "id": "43f39478-72ac-422c-94ad-7da5e35ac612", + "metadata": {}, + "source": [ + "That script should go here: https://github.com/NOAA-OWP/hydrovis/tree/ti/Core/LAMBDA/viz_functions/image_based/viz_raster_processing/products" + ] + }, + { + "cell_type": "markdown", + "id": "1db967d3-977f-49f7-922b-a9be6234c14c", + "metadata": {}, + "source": [ + "

Step 7: Create a pipeilne product_config .yml file and commit it to your branch of the repo

" + ] + }, + { + "cell_type": "markdown", + "id": "91081787-99df-40fc-bada-8c7b8cfa60d5", + "metadata": {}, + "source": [ + "That script should go here: https://github.com/NOAA-OWP/hydrovis/tree/ti/Core/LAMBDA/viz_functions/viz_initialize_pipeline/product_configs" + ] + }, + { + "cell_type": "markdown", + "id": "325e8340-29ba-4946-a59b-976257076551", + "metadata": { + "tags": [] + }, + "source": [ + "

Step 8: Push your branch of the repo and create/submit a Pull Request

" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/12. Public FIM Domain Update.ipynb b/Core/Manual_Workflows/12. Public FIM Domain Update.ipynb new file mode 100644 index 00000000..02611fa0 --- /dev/null +++ b/Core/Manual_Workflows/12. Public FIM Domain Update.ipynb @@ -0,0 +1,211 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "850b3abf-a9f1-4e19-86cf-facfd80f7910", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "LAST_PUBLIC_FIM_PERCENT = 10\n", + "NEW_PUBLIC_FIM_PERCENT = 30\n", + "NOAA_GEOPLATFORM_SUBLAYER_INDEX = 9" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "edaea545-4504-4f71-9d83-2576d59c3f34", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "# Adjust the get line with geometry as needed\n", + "r = requests.get('https://services2.arcgis.com/xxxxxx/arcgis/rest/services/Updated_FIM_Implementation/FeatureServer/'\n", + " f'{NOAA_GEOPLATFORM_SUBLAYER_INDEX}/query?')\n", + "geojson = r.json()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c62f2d71-e12c-44d4-8774-061e8dee79e9", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "from shapely.geometry import shape\n", + "features = [f for f in geojson['features']]\n", + "geom = [shape(f['geometry']) for f in features]\n", + "df = gpd.GeoDataFrame({'geom': geom})\n", + "df = df.set_geometry('geom')\n", + "df = df.set_crs('EPSG:3857')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57b0734e-d48a-4441-aa56-9d5eb023af5f", + "metadata": {}, + "outputs": [], + "source": [ + "df.to_postgis(f'public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain', get_db_engine('viz'), schema='derived', if_exists='append')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "052af1b7-3fec-464d-b062-1183590715a4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "sys.path.append(os.path.dirname(os.path.abspath('')))\n", + "from helper_functions.shared_functions import execute_sql, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ce4fc53e-1501-489c-9efd-0e9e19ba5727", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "WITH unioned AS (\n", + " SELECT geom FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain\n", + " UNION\n", + " SELECT geom FROM derived.public_fim{LAST_PUBLIC_FIM_PERCENT}_domain\n", + ")\n", + "\n", + "SELECT\n", + "1 as oid,\n", + "ST_Buffer(ST_Union(ST_Buffer(geom, 1)), -1) as geom\n", + "INTO derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain\n", + "FROM unioned\n", + "GROUP BY oid;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f008b27-5499-4adf-8cd5-844bda366387", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql_to_dataframe(f\"SELECT ST_NPoints(geom) FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f35cad99-0174-460e-873d-6a30cc38a8a5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_ondeck;\n", + "SELECT *\n", + "INTO derived.public_fim_domain_ondeck\n", + "FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain RENAME TO public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bb797856-e530-410e-9b83-ceb182b99ab9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import execute_sql, move_data_from_viz_to_egis, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17b174ce-c4ea-4703-9d80-d3946f5a2eac", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "move_data_from_viz_to_egis('derived.public_fim_domain', 'reference.public_fim_domain_ondeck')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b288760-01c8-47ed-8524-bae3e746994d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain RENAME TO public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "''', 'egis')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f909d2ea-7c64-4ee3-a4af-c8c4fef24a41", + "metadata": {}, + "outputs": [], + "source": [ + "execute_sql('''\n", + " UPDATE derived.channels_conus c\n", + " SET public_fim_domain = ST_Intersects(c.geom, f.geom)\n", + " FROM derived.public_fim_domain f;\n", + "''')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/2. Service Development Template.ipynb b/Core/Manual_Workflows/2. Service Development Template.ipynb new file mode 100644 index 00000000..68661a87 --- /dev/null +++ b/Core/Manual_Workflows/2. Service Development Template.ipynb @@ -0,0 +1,613 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c43bda9f", + "metadata": { + "deletable": false, + "editable": false + }, + "source": [ + "

Visualization Service Development

\n", + "\n", + "This is a jupyter notebook for developing visualization services. Create a file like this for each service that is being developed. This is where we will track progress as well as be able to debug code. Please refer to the \"Viz DB Service Development Tutorial\" notebook for practicing and learning how to interact with data stored in the viz database. To ease the work of development, helper functions have also been created to run SQL code, create maps, and upload shapefiles to an AWS S3 storage bucket. While these function should help in most cases, you can run other python code inside this notebook as well to do more complex operations.\n", + "\n", + "In order to enable a few tools/extensions that we want to use for this notebook please do the following:\n", + "
    \n", + "
  1. Run \"!pip install nodejs geopandas contextily\" on the next cell
  2. \n", + "
  3. Click on the \"Commands\" tab on the left or press (Ctrl+Shift+C)
  4. \n", + "
  5. Click on \"Enable Extension Manager\"
  6. \n", + "
  7. Click on \"Enable\"
  8. \n", + "
  9. Click on the \"Extension Manager\" tab on the left (looks like a puzzle piece)
  10. \n", + "
  11. Install the \"jupyter-widgets/jupyterlab-manager\" extension.
  12. \n", + "
  13. You will be prompted to rebuild the notebook. Click on \"Rebuild\". This may take a bit of time but you will be prompted when it finishes.
  14. \n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15c75a4e", + "metadata": { + "deletable": false, + "editable": false + }, + "outputs": [], + "source": [ + "!pip install nodejs geopandas contextily" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b4d70e51", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7e451b667f194817854241dfa80ec049", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Update service metadata in first notebook cell', description_tooltip='update…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "2487da941557442297dcd771ffe54005", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Have Corey or Tyler add any new dependent datasets to the DB', description_t…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "f3b3a9f56c404f9c86ecf51fc394b881", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Create SQL for service data', description_tooltip='create_sql')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "34ddd325f5ca4485b9b5516f395ec4fb", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Check SQL output for accuracy', description_tooltip='check_sql')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1fe3c2eb1d3b403d92937dd6bf29fee6", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Update SQL to save a table in the dev schema', description_tooltip='save_sql…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b14cdd43b963423d9c4404f7748fb7cd", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=True, description='Create a pro project for the new service', description_tooltip='create_pro_p…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d0f1619f789243e99f0b9f6ece071597", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Setup a code review meeting with the team to go over the service', descript…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "35215cd4e7444cd3accfdd7505088b61", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Complete code review', description_tooltip='finished_code_review')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "470d2107c3d140f6afa171587967d08d", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Implement any service changes from the code review', description_tooltip='i…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "aafc93e374884a7e9e54dbe9a0a73b26", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Add notebook to repo', description_tooltip='add_notebook_to_repo')" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3f63efaa4298443db84ee01078939be8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Admin Task - Add SQL to repo (Adding INTO statements)', description_tooltip…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "01f7b248f0214a70b44ac802598480c0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Admin Task - Add pro poject to repo (Updating to use Query Layer)', descrip…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "bd72ff9a6ddd4cf3a058823f2dece7f9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Checkbox(value=False, description='Admin Task - Implement service into the TI environment', description_toolti…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from helper_functions.shared_functions import *\n", + "import pandas as pd\n", + "\n", + "service_name = \"srf_max_high_water_arrival_time\"\n", + "folder = \"nwm\"\n", + "configuration = \"short_range\"\n", + "summary = \"Short-Range Maximum High Flow Magnitude Forecast\"\n", + "description = \"\"\"\n", + " Depicts expected high flow magnitudes derived from the operational National Water Model (NWM) (v2.1) \n", + " short-range forecast. Shown are reaches that are expected to have flow at or above bankfull over the next 18 hours. \n", + " Reaches are colored by the annual exceedance probability of their maximum forecast flow over the next 18 hours. \n", + " Bankfull flows and annual exceedance probabilities were derived using a 40-year retrospective analysis of the NWM (v2.1). \n", + " Updated hourly.\n", + "\"\"\"\n", + "tags = \"short range forecast, maximum, high flow, magnitude, national water model, nwm\"\n", + "credits = \"National Water Model, NOAA/NWS National Water Center\"\n", + "\n", + "load_checklist(service_name)" + ] + }, + { + "cell_type": "markdown", + "id": "d47f59b5", + "metadata": { + "deletable": false, + "editable": false + }, + "source": [ + "

Create SQL for Service Data

\n", + "\n", + "First we need to create some SQL that will give us the table with the fields that we want. This is similar to the product scripts in the on-prem workflow. If additional datasets are needed, please contact Corey or Tyler about getting those into the DB. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "d145fe37", + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'run_sql_in_db' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/tmp/ipykernel_31280/3700748656.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \"\"\"\n\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mrun_sql_in_db\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msql\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mNameError\u001b[0m: name 'run_sql_in_db' is not defined" + ] + } + ], + "source": [ + "sql = \"\"\"\n", + "WITH reference_time AS (\n", + " SELECT max(ingest_status.reference_time) AS reference_time\n", + " FROM admin.ingest_status\n", + " WHERE ingest_status.target::text = 'ingest.rnr_max_flows'::text\n", + " )\n", + "\t\n", + "SELECT ingest.rnr_max_flows.feature_id, \n", + "\tingest.rnr_max_flows.feature_id::TEXT AS feature_id_str,\n", + "\tName, \n", + "\tto_char(REFERENCE_TIME, 'YYYY-MM-DD HH24:MI:SS UTC') AS reference_time,\n", + "\tSTRING_AGG(FORECAST_NWS_LID || ' @ ' || FORECAST_ISSUE_TIME || ' (' || FORECAST_MAX_STATUS || ')', ', ') AS INHERITED_RFC_FORECASTS,\n", + "\tMAX(forecast_max_value) * 35.31467 AS MAX_FLOW,\n", + "\tINITCAP(MAX(REPLACE(VIZ_MAX_STATUS, '_', ' '))) AS MAX_STATUS,\n", + "\tINITCAP(MAX(WATERBODY_STATUS)) AS WATERBODY_STATUS,\n", + "\tMAX(VIZ_STATUS_LID) AS VIZ_STATUS_LID,\n", + "\tStrm_Order,\n", + "\thuc6,\n", + "\tto_char(now()::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') AS update_time,\n", + "\tgeom\n", + "FROM INGEST.RNR_MAX_FLOWS\n", + "left join derived.channels_conus ON INGEST.RNR_MAX_FLOWS.feature_id = derived.channels_conus.feature_id, reference_time\n", + "GROUP BY INGEST.RNR_MAX_FLOWS.FEATURE_ID, feature_id_str, Name, reference_time, Strm_Order, huc6, geom;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "f95586e8", + "metadata": {}, + "source": [ + "

Check Outputs Through Pandas DataFrame

\n", + "\n", + "When we use the \"run_sql_in_db\" function, a pandas dataframe is returned. This allows us to inspect the results a little better and dig to make sure the output is what we expect" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7a621e82-a811-401d-8dff-341767d00109", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + "FROM cache.max_flows_srf AS maxflows\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + "WHERE thresholds.high_water_threshold > 0 AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "11d13321", + "metadata": {}, + "source": [ + "In this example, we can take the dataframe and inspect all the features that have a recurence category of 2%. Interestingly, we will find that many of the features that have a recurrence category of 0, also have recurrence flow values of 0." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "682af5a3", + "metadata": {}, + "outputs": [], + "source": [ + "df.loc[df['recur_cat'] == \"2\"]" + ] + }, + { + "cell_type": "markdown", + "id": "0ede9df0", + "metadata": {}, + "source": [ + "Maybe we need to just remove any features that have a 2% flow of 0 or set the recurrence category to \"Not Available\". We can write some queries in the dataframe to pick out all the features with a 2% flow of 0 to see how extensive this issue is and what the range is for streamflows." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d21ed782", + "metadata": {}, + "outputs": [], + "source": [ + "df.loc[df['flow_50yr'] == 0].sort_values('max_flow')" + ] + }, + { + "cell_type": "markdown", + "id": "affca7a8", + "metadata": {}, + "source": [ + "

Comparing Dataframe to Testing Datasets

\n", + "\n", + "We could also compare the table to a test dataset to ensure that what we are seeing is what we expect. In this case, the outputs are not the same because the same reference times are not being compared" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4bdb322", + "metadata": {}, + "outputs": [], + "source": [ + "test_dataset = pd.read_csv(\"test_datasets/srf_max_high_flow_magnitude_example.csv\")\n", + "\n", + "test_dataset.equals(df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "921e5435", + "metadata": {}, + "outputs": [], + "source": [ + "display(df)\n", + "display(test_dataset)" + ] + }, + { + "cell_type": "markdown", + "id": "d3d47161", + "metadata": {}, + "source": [ + "

Check Outputs Through Mapping

\n", + "\n", + "Previously, if we ever wanted to check outputs, we would have to run our python code, create the outputs, and then bring them into Arcgis Pro to verify. With the \"run_sql_in_db\" function, we can add a keyword argument (return_geodataframe=True) to return a spatially aware dataframe. With this dataframe, we can now plot the outputs directly in the notebook through the plot method. To ease the development, we have created a simple function to map a column (map_column). More complex aps can be created directly through the plot method if desired.\n", + "\n", + "In the first example, we will retrieve the table that is used for srf max high flow magnitude. We can then use the map_column function to create a map with the same categories and symbology to make sure the outputs look how we expect." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e6aba7f8", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "WITH high_flow_mag AS (\n", + " SELECT \n", + " maxflows.feature_id,\n", + " maxflows.maxflow_18hour AS max_flow,\n", + " CASE\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_50_0_17c THEN '2'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_25_0_17c THEN '4'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_10_0_17c THEN '10'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_5_0_17c THEN '20'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.rf_2_0_17c THEN '50'::text\n", + " WHEN maxflows.maxflow_18hour >= thresholds.high_water_threshold THEN '>50'::text\n", + " ELSE NULL::text\n", + " END AS recur_cat,\n", + " thresholds.high_water_threshold AS high_water_threshold,\n", + " thresholds.rf_2_0_17c AS flow_2yr,\n", + " thresholds.rf_5_0_17c AS flow_5yr,\n", + " thresholds.rf_10_0_17c AS flow_10yr,\n", + " thresholds.rf_25_0_17c AS flow_25yr,\n", + " thresholds.rf_50_0_17c AS flow_50yr\n", + " FROM cache.max_flows_srf AS maxflows\n", + " JOIN derived.recurrence_flows_conus AS thresholds ON maxflows.feature_id = thresholds.feature_id\n", + " WHERE thresholds.high_water_threshold > 0::double precision AND maxflows.maxflow_18hour >= thresholds.high_water_threshold\n", + ")\n", + "SELECT \n", + " channels.feature_id,\n", + " channels.feature_id::TEXT AS feature_id_str,\n", + " channels.strm_order,\n", + " channels.name,\n", + " channels.huc6,\n", + " channels.nwm_vers,\n", + " high_flow_mag.max_flow,\n", + " high_flow_mag.recur_cat,\n", + " high_flow_mag.high_water_threshold,\n", + " high_flow_mag.flow_2yr,\n", + " high_flow_mag.flow_5yr,\n", + " high_flow_mag.flow_10yr,\n", + " high_flow_mag.flow_25yr,\n", + " high_flow_mag.flow_50yr,\n", + " channels.geom,\n", + " to_char(now()::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') AS update_time\n", + "FROM derived.channels_conus channels\n", + "JOIN high_flow_mag ON channels.feature_id = high_flow_mag.feature_id;\n", + "\"\"\"\n", + "\n", + "gdf = run_sql_in_db(sql, return_geodataframe=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca88af6e", + "metadata": {}, + "outputs": [], + "source": [ + "column = \"recur_cat\"\n", + "\n", + "map_column(gdf, column)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b9411806", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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9JCdd9773vfy17/+lZdeeomzzjoLgH379vHmm2/ysY99DLfbzb333sv9999PV1cXQgjOOOMMPvaxj3HHHXdgMpnYtWsX27dvp76+nk9/+tMsX76cZ599lltvvZWOjg6Ki4v59Kc/zTvf+U5aWlq46667eOqpp8jn85xwwglcdNFFKIrCL3/5S374wx9SVFSo2XD11VdTXV3N/v37ufTSS1myZAmZTIb777+f1tZWLrnkEnbu3MnNN99MU1MTfr+f888/n3e961386U9/oqmpiYaGBlwuFzfffDN2u/2w/pBjVw2cCTwPvBP4GbB8kscwtfQzsPF4XFaCl6RhfHldiO890smbrTIrYTA1fgt/7Mry82e7+cLJQUq9slD+WOTzefL5vDFfCIfD/bJw9Tp3NpvNaLnal768Wt9GV1eXsYRbft9PHT04o2di60GcoqIiEokEHo+HQCAw44tGSpIkScO47z5IDF2mQyQSmP/yF5RPfGJMD7V//35ef/11jj/+eNrb26moqAAKwZyOjo4xbXukRnRKwmw2U1lZybJlywiFQkCh20ImkyGdTo8o20Rf6mQ2m/F4PGQyGWw2G263G6fTSTwex2w2H3LZSS6Xo729naqqKpYsWcLzzz9PMpkkn8/z2muvYbFYOP7449m3bx+33XYbH/zgB/nlL3/JZZddxu9//3s2btzI1q1bueOOOzj55JP51re+RUdHB7/73e948cUX+c53vsOqVau46aabWLNmDT/96U9paGjg5ptv5qmnnuLKK6/ku9/9Lrt27eL6669n69atbNy4sV93oNdee81Y/75hwwby+TxdXV389a9/NZ7fNddcw5w5c/jpT3/KRz/6UX7xi1/wxBNPsHXrVh588EFWrFjBWWedNYXdDK6isPypFjgL+DLQBGwHWqdoTJNrzpw57N+/X3Z/kqRhJLOF732LPLE9KIfVxKnzXGRz8I+tsibKWDU3N/Pkk0/ywgsvsHv3bhKxMEIpZMXoxaNTqRThcJhMJjPg/g6Hg7KyMuNESCaTGRDskaaGnjnTN8hmt9upqakhGAzKII0kSdJRSl/xoqoqanPzyO7UOrbj1ng8zoUXXsgNN9xgJGVMhSEzavrSAy0lJSWUlJQAhQK/jY2NAEaHp77F/gbbTt+f9To2epAml8uxZcsW9uzZw/z581m0aBGdnZ3k83mKi4tZt24df/rTn9i7dy9VVVX861//4vjjj2fWrFm0trby5S9/mcWLF9PR0YHX60VVVVpaWtA0jfXr13PmmWfi8XjYunUrTzzxBA899BB+v5/Pfe5zOJ1O6urqmDVrFg0NDbz66qt8/OMf57TTTsNkMhGPx/mv//ov9uzZM2CZlKZplJeXY7FYePXVVzn77LPZt28f3d3dnHjiiTzzzDN0d3ezevVqYrEYFRUVlJeX87e//Q2/38873/lOLrnkEiMQNjXswHXAaxQybJ4HvgI8AKwFAsAJwNenaHwTz+l0smDBAnbv3o2iKFRWVk71kCRpWir1Wrn+rFKs5ul/8KRp2pQd5K2d6+XVpgxdCZXdHSnmlDiHv5M0qGXLluF2uwtzjX33E9r6bfatfgzV6icajRp/53w+T2lpab/5iJ416XK5jDmLXnRamn704I0kSZJ09NCDMoqiGMfa+n7aVFo6siyT8vJRP34ul+PCCy/kggsu4NxzzwWgtLSUlpYWKioqaGlpMWIhE21M50IdDgdz5syhsrLSKOp3uGem7HY7TqcTj8dDdXU1r776Kt/85je58sorufbaa9m6dStOp5Pi4mKsVivHHnssANu3b6epqYm9e/fyzne+E6vVisfj4bXXXuPrX/86P//5z3n88cfJZDJG3Zvi4mJsNpuxpEsIQUtLC+Xl5UahZI/HwznnnIPD4UBVVUpLS42zO8XFxVgsFqNNeV+apuF0Olm1apWxjOn5559n9uzZLFiwgMbGRjKZDH/5y1+44447uOOOO8jlcsZSspKSEtxu91j+HONoBfAj4CIgDXwaKANKgZl9kKEXwi4rKyMWix3yrKwkSQXTPUij11Kb6m6AF64swiRgZ3uGDXuPrs5640kIQTAYpLq6upAZY8pjyUdwdz1l3Eb/eyeTSaLRqDHRy2azRvFgn89nZO/KII0kSZIkTY1sNstbb73F1q1byWazpNNpstmssc/W/ymKgqqq5M89F22Y42XN7UY577xRjUfTNC6//HIWLFjAlVdeaVx+5plncueddwJw55138v73v39S5pdDnqpQVXXYgm36ga3JZMLv99PV1UVHRwdmsxm/3z/igm96HZsNGzbw2GOPkc1mSSQSrF+/nk996lPGY82dO5clS5awYcMGdu7cSU1NDStXrgTg/vvv59FHHzXqxQgh+Oc//9lvrAdPygKB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zz6bSy+9lJ6eHjVT5pZbbiGZTKIoCnV1dRgMBm644QZgTwDlj3/8I0uWLOGdd97htttu46677uLWW28lm80iyzJ//OMf6e7uJp/PY7Va+cc//sGZZ56JLMvcd9993HLLLZxxxhkkEgnOP/98stksX/ziF7n//vv51a9+RTwex2q1smzZMvx+P9/97neJxWJMmzaN733veyxZsoSrr74aq9VKIBDg5ptv5vTTT2fp0qU89thjyLLMN77xDU4++WSuueYa7HY7bW1t3HrrrSxYsICenh6uuOIK9Tnavn0727dv57bbbuPCCy/krbfeUlNhf/azn/HDH/4QjUZDQ0MDt99+O729vfz85z9Ho9Ewd+5cLrzwQtavX88dd9zBOeecA+wJRj3//PNcdNFFxONxNfPo+eef56233iISifDtb3+b+fPnc/PNN+NwOGhtbeW0007j8ssvp7u7G4Cqqir+67/+ix07dqAoCn/6059Yu3Ytf/jDHwC4+eabOfXUU/nqV7+Kw+Fg586dXHHFFUybNk19TOeddx4rVqwgFosRDAbVz6+TTjqJHTt2cOONNzIwMMCvf/1rSkpK+MUvfsEPf/hDwuEwf/rTn5g7d656W9/4xjfYunUrTz75JLIsq6/bq666CrPZzJQpU8jn82zYsAGAn/70p/tkSgnC0VLoEZFKpT5R9p8gCIJw7On1ejU7pb6+Hp1Op2ZKG41G7HY7vb29h/1+A4GAWs5+MEwmE4qiMDQ0RDqdRlGUg6pUyGazmM1mjEYjQ0ND+2S2C8Jn2UEHahYuXMhzzz2Hz+fj/PPP509/+hMAl1xyCXPmzKGnp4cf//jHLFy4kF27dvGDH/yAuXPnctFFF3H55Zej0+mIRqOcf/75PPfcc/z2t78F2CeI8POf/5zvfOc7TJw4ke985zs0NjbyzDPP8Le//U0trdi1axewp0fGwMAAP/7xj3G73SxYsIB33nmHbdu2kclkePvtt6mpqSESiQB7xt/dcccd3HbbbcTjcS688EK+//3vc/755+Pz+fjCF76Aoijce++9tLW1cccdd9DX10coFMLv9/OjH/2I6667jtLSUp544glOO+00br/9dm6//XZ+97vfUVxczJVXXslll13G7t27+f73v8+sWbM49dRT+f73v7/Pc5pKpQgEAkyePJmmpibi8Th/+ctfWLJkCclkkiuv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Rkdhz0nP17/+df7jP/6DO+64g0WLFgFw7rnnotPpuPPOO/n973/PjTfeiNfr5cc//jHPP/88jY2NFBcXc8cdd6ipcIqicMstt/Daa6/R0tLCAw88QCgUwmazMWHCBLW0Z+/HUuhXkslkOOmkkzjrrLNIJBLcf//9/O53v+Omm27iJz/5CW+99Rb/9m//hsfjYcKECerYuRNPPFFNybvwwgsBuO+++7jvvvt48sknKS0t5ec//znnnHMOBoMBWZbVx7j3cZx88sn86le/oqysjJ/+9KeMHz+eSCTCgw8+yH/+53+STCY588wzmTt3Lr/+9a/JZDJ861vfwmw2q7d333338fvf/56mpiZmzJiB2Wxmzpw5+P1+8vk8J510Eh6Phw8++ICtW7cyffp0YM/Ot8/n4+GHH+aBBx6gr6+P+fPnY7Va+dGPfsTf//53vvnNb2I0GrnhhhvU7ILCcRdKnKZOncpVV11FX18fFRUVnHDCCftk0ySTSX71q18RiUSYM2cON910EwBtbW3IssyVV17J7373O77zne/w29/+dtg48L6+vo99bc6dO5fy8nJ8Pp/a9Ljw2rzzzju5+eabmT17Ntdccw2wpy9OS0sLzz77LPfee++wbKvJkydz2mmnceONN3LSSSdRVlbGKaecwltvvcXNN9/MOeecozaHPuuss7jjjju46667eO211/j617/OggULqK6uVo8/Ho9zySWXcOedd3LBBRcwYcIE/vM//5Nf/epXDA0NcdZZZwF7erdceeWV6mj6XC5HOp3mueee47//+78ZHBzkvPPO44ILLgD2ZKA89dRTdHd388ADD5BMJnnkkUe49957iUajnHLKKdTU1LBo0SLy+Tw6nY5FixYhSRJr1qzh4Ycfxmq18tBDDwHwy1/+kvvuu4+zzz6bM844A4vFQn9/v1oCduONN+Lz+fjpT3/K/fffz3333cff//53ysrK+PnPf84dd9zBgw8+yLx585g5cyZjxoyhtraW2traYX+PH/3oR3zrW99ixowZfPWrXwX27L4EAgFuvfVW7rrrLuLxOIqikEqlKC8v55vf/Ca33HILFouF3/zmNzz44INqRs+DDz4IwKJFi5Bledh77Re/+AX3338/Z555JgsXLsRms6kT1hwOB1arle9///v8/Oc/V5+DXC7Hd77zHW666SbOOOMMTj31VABuv/12fvzjH/P1r3+dBx98UC39K2S37f3+fuyxx+jo6KC8vJyvfe1rH/n6/azZsWMHDz/8MPF4nHA4zNy5cykuLub111/nL3/5C4Ba0vlpZbNZmpubWb9+PV/60pcO96F/JhUCiGJHUhAEYXRyOp34/f5hGTSZTAaTyUQ4HD6sgQytVvupp+8eCQ6Hg0wmI3r8CZ9L0kdFYJubm/f5pUajwe12oygKg4ODKIqiTkUpdPi2Wq3odDqy2SwWi4VLLrmEJ554Qk1XL5wMw56Td6fTiV6vV3unpNNpDAYDqVSKVCqF0+nEZDKRzWZJpVIYDAaMRiPZbJZwOKxGe81mMy6XC4PBQCaTIRqN4na7efHFF3nooYd4+eWXaWlpGZYJ43A41PrLdDpNOBxWo8gajUYtaSqU/sRiMTWqHY1G1QydZDKpNjVOp9M4nU6MRiPpdJpUKoXJZCKdTqu/K/SBAdSyAPi/k/JCNobFYsFut6PVatWghclkUv9d6CGj0Whobm5m1apV9Pf309fXp5Z5FcqcXC4XNpuNVatWMX36dPr7+4f1qrFYLOrfLp1OMzQ0hCzLuFwutawrHo+rx11IxSw8H9lslkgkgizLuN1utFotg4ODw8pGbDYbVqsVjUajdnE3Go1YrVZisRiZTAaXy4VeryeRSAzLyvo4Wq0Wl8uFLMtqQK7wmGKxGEajEYvFgk6nI5PJ4HA4OOuss3j11VeJRqPE4/Fh96fRaHC5XOpYxFgsRiwWU0stCn2WIpEIdrtdff3qdDoMBgM6nY5YLDas/KuiooKnn36ayy67jK6uLsxmMxaLRf17er1e/vrXv/LVr36VHTt2DHt8e08fSqVSDA0NUV9frz6GSCSiPg6z2aweUyqVIpvNYjKZiEajaLVaLBaLWoZXCCAmEgmi0Sg2mw2TyaSWFMXjcfr6+qisrFTHrB+sQjPTzs5OXC6X+nrLZDLYbDbOOeecA/49YM8ixWKxIMuy+rtCY7loNIosy9jtdvU1WhivXciWKzymZDJJJBLB7Xaj0WjUSTiF0pzC54rL5cJsNmMwGNSAg8ViwWAwqJk+hdrwwvMt7PHII4/w7W9/G1mWKSsr4+GHH6auro4bbriB119/Xe1Z9Ne//hW9Xk8wGGTnzp0YDAYmTJiAwWCgt7dXnSDndDrp7+9nYGAAo9FIIBCgv7+fefPmUVRURCwWo7W1lf7+fsrKyqiursZoNKrfO9u3byedTlNTU0NJSYn6mf55oSgK7e3ttLS07DOqXhAEQRj5FEVRJ+ICeDweda3Z1tY2ahrt5nI59fzq8/Q9LAj709DQcMA3wacO1HxaPp/v/2vv7llah6MwgD8JiKIlvuELNtAqVcwXcHASV50VnJx0cRDsUge3gODoUJxEdBAEBT+AKCIoiiIUIypUI6VKi/W1xLSSO9zboNTr9Xptb1+e3xdIhkCS8z/nOQiHw/B4PP+lRV2WZWiahtbWVvtHuxCVlJRAlmUEAgGUlpZCURRcXFyktSyKoojKykoYhlH0WQWNjY3QdR1tbW1ZezZTOUrJZPLdka1Uwv7t7e2nNl25XC6cnp7C7Xbb25EyIRVC2tLSAkmSvvxitSwLlmUhFAohGo2+GZtsaGjA5eUl2tvb7YDwfGBZFkzTREVFBZqbm/nR8cvc3Bx8Ph+cTifOzs4wPT2Njo4OdHV1oba2Fo+Pj+js7ITf78fGxgYmJycRjUYhCAIURYHP58Pm5iZmZmbQ29uLoaEhqKqKvb09eL1e7O7uYmdnB36/H01NTRgfH8fW1hbKyspgmib6+/sxNjaGw8NDqKqKYDAIURRRXl6O4eFhDA4O2rk5xSAVxHh8fGyP4xIRUf6wLAvPz8+IxWLweDz2d+TT0xOqqqr+eaV2ttzf3+Pu7g5OpzNv7pkoUz4q1GT8+DcSicDhcEDX9Uxf6l2hUAh1dXWIRCJpgaCFJJFI4Pz8HDU1NbAsK60bI+V1t0mxu7q6giRJWX02X15ePhzhenh4sLNvPkPXdUiShHA4/B2391upzUvBYBAul+tNJ9XfSM1ZOxyOtKLp9fW1vZo7nwiCYK/PjMfjXw7dK0SCIMDtdsM0TWxvb0MURRiGAUVRcHR0BODn2OPU1BRubm7g9XphGAZUVcXs7CxGR0exvr6OpaUlBAIB7O/vY2BgAN3d3VhbW0MsFkMikcDCwgJWV1fR19eHnp4eLC8v4+DgACsrK1hcXISmaRgZGUF1dTXm5+cxMTEBRVHscbZikEwm08LdiYgovwiCgHg8Dk3TIMsy6uvrcXJyklcFD0mS0rp/XjcOFMsBCtGffNhRQ0RERERERERE2ZM/5VciIiIiIiIiogLHQg0RERERERERUY5goYaIiIiIiIiIKEewUENERERERERElCNYqCEiIiIiIiIiyhEs1BARERERERER5YgfmKTl4ltzoasAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "column = \"recur_cat\"\n", + "colormap = {\n", + " '2': '#cc33ff',\n", + " '4': '#e600a9',\n", + " '10': '#ff0000',\n", + " '20': '#ff9900',\n", + " '50': '#ffff00',\n", + " '>50': '#72afe8'\n", + "}\n", + "title = \"Short Range Max High Flow Magnitude\"\n", + "\n", + "map_column(gdf, column, colormap, title=title)" + ] + }, + { + "cell_type": "markdown", + "id": "c6af0109", + "metadata": {}, + "source": [ + "

Configuring Pro Project

\n", + "\n", + "When we developed on-prem, we would have to run the python code to create the shapefile or feature class and then setup the pro project accordingly. For hydrovis development, we can follow the same model using the notebook. We have created a helper function called \"save_gdf_shapefile_to_s3\" to do this. The function will take the geodataframe, save it as a shapefile and then also upload it to S3. You can either download the shapefile from the S3 bucket or from the file explorer within jupyter notebook (under the folder \"shapefiles\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5834791c", + "metadata": {}, + "outputs": [], + "source": [ + "save_gdf_shapefile_to_s3(gdf, \"srf_max_high_flow_magnitude\")" + ] + } + ], + "metadata": { + "celltoolbar": "Edit Metadata", + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/3. EGIS Service Status.ipynb b/Core/Manual_Workflows/3. EGIS Service Status.ipynb new file mode 100644 index 00000000..f15a9305 --- /dev/null +++ b/Core/Manual_Workflows/3. EGIS Service Status.ipynb @@ -0,0 +1,285 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "20585edd", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install arcgis==2.0.0 isodate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac1774b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from IPython.display import display, HTML\n", + "display(HTML(\"\"))\n", + "\n", + "import pandas as pd\n", + "from arcgis.gis import GIS\n", + "import requests\n", + "import numpy as np\n", + "from datetime import datetime, timedelta\n", + "import isodate\n", + "import os\n", + "\n", + "import urllib3\n", + "urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n", + "\n", + "PORTAL = \"portal\"\n", + "IMAGE_SERVER = \"image\"\n", + "VECTOR_SERVER = \"server\"\n", + "PRODUCTION_HOST = \"maps.water.noaa.gov\"\n", + "STAGING_HOST = \"maps-staging.water.noaa.gov\"\n", + "TESTING_HOST = \"maps-testing.water.noaa.gov\"\n", + "\n", + "suffix_mapper = {\"testing\": \"_alpha\", \"staging\": \"_beta\", \"production\": \"\"}\n", + "priority_services = r\"helper_files/hydrovis_services.csv\"\n", + "column_mapper = {'testing': 'testing_rest', 'staging': 'staging_rest', 'production': 'prod_rest'}\n", + "host_mapper = {'testing': TESTING_HOST, 'staging': STAGING_HOST, 'production': PRODUCTION_HOST}\n", + "rest_folders = ['nwm', 'rfc', 'owp']\n", + "\n", + "def check_service_status(environment, tiers_to_check, display_portal_items=False, check_map_render=True):\n", + " print(f\"Connecting to {environment} portal\")\n", + " \n", + " portal = f'https://{host_mapper[environment]}/portal'\n", + " gis = GIS(portal, verify_cert=False, username=\"hydrovis.proc\", password=\"WaterIsFun1@\")\n", + "\n", + " df_status = pd.DataFrame()\n", + "\n", + "# df_status = df_status[~df_status.index.str.contains('retrospective')]\n", + "# df_status = df_status[~df_status.index.str.contains('Sample')]\n", + "# df_status.index = df_status.index.str.replace(\"\\xa0\", \"\")\n", + "\n", + " column = column_mapper[environment]\n", + "\n", + " tier_services = {}\n", + " \n", + " services = pd.read_csv(priority_services)\n", + " \n", + " df_status = services[[\"service_name\", \"tier\", column_mapper[environment], \"acceptable_delay\"]]\n", + " df_status = df_status.rename(columns={column_mapper[environment]: \"rest\"})\n", + " \n", + " df_status['portal_check'] = \"unchecked\"\n", + " df_status['rest_check'] = \"unchecked\"\n", + " \n", + " if check_map_render:\n", + " map1 = gis.map(\"Test Map\")\n", + " df_status['map_check'] = \"unchecked\"\n", + "\n", + " df_status['server'] = None\n", + " df_status['reference_time'] = None\n", + " df_status['update_time'] = None\n", + " df_status['update_status'] = None\n", + " \n", + " df_status = df_status[df_status['tier'].isin(tiers_to_check)]\n", + " \n", + " token = gis._con.token\n", + " df_status = df_status.set_index(\"service_name\")\n", + "\n", + " print(\"Getting status for each tier service\")\n", + " \n", + " for service in df_status.iterrows():\n", + " row = service[1]\n", + " base_service_name = service[0]\n", + " full_service_name = f\"{base_service_name}{suffix_mapper[environment]}\"\n", + " acceptable_delay = row[\"acceptable_delay\"]\n", + " rest_url = row[\"rest\"]\n", + " print(f\"Checking {full_service_name}\")\n", + " item = None\n", + " try:\n", + " item = [resource for resource in gis.content.search(full_service_name, item_type='Map Service', max_items=10) if f\"{full_service_name}/MapServer\" in resource.url][0]\n", + " df_status.loc[base_service_name, \"portal_check\"] = \"Pass\"\n", + " except:\n", + " try:\n", + " item = [resource for resource in gis.content.search(full_service_name, item_type='Image Service', max_items=10) if f\"{full_service_name}/ImageServer\" in resource.url][0]\n", + " df_status.loc[base_service_name, \"portal_check\"] = \"Pass\"\n", + " except:\n", + " print(f\"{full_service_name} does not exist in the portal\")\n", + " df_status.loc[base_service_name, \"portal_check\"] = \"Fail\"\n", + "\n", + " if df_status.loc[base_service_name, \"rest\"]:\n", + " rest_url = df_status.loc[full_service_name, \"rest\"]\n", + " else:\n", + " continue\n", + "\n", + " if display_portal_items and item:\n", + " display(item)\n", + "\n", + " if '/server/' in rest_url:\n", + " df_status.loc[base_service_name, \"server\"] = \"server\"\n", + " else:\n", + " df_status.loc[base_service_name, \"server\"] = \"image\"\n", + "\n", + " params = {\n", + " 'token': token,\n", + " 'f': 'json'\n", + " }\n", + "\n", + " # TODO: Check REST not as admin\n", + " query_url = f\"{rest_url}/0/query?where=oid>=0&outFields=*&returnGeometry=false&resultRecordCount=1&f=json\"\n", + " \n", + " if base_service_name == \"rfc_5day_max_downstream_streamflow\":\n", + " query_url = f\"{rest_url}/1/query?where=oid>=0&outFields=*&returnGeometry=false&resultRecordCount=1&f=json\"\n", + " \n", + " if environment == \"testing\":\n", + " query_url = query_url.replace(r\"/nwm/\", r\"/NWM/\")\n", + "\n", + " tries = 0\n", + " ref_time = None\n", + " while tries<3:\n", + " tries += 1\n", + " res = requests.get(query_url, params=params, verify=False).json()\n", + "\n", + " if 'error' in res:\n", + " print(f\"{base_service_name} does not exist in the rest - {rest_url} ({res})\")\n", + " df_status.loc[base_service_name, \"rest_check\"] = \"Fail\"\n", + " if \"Failed to execute query\" not in res['error']['message']:\n", + " break\n", + " print(f\"Attempting {base_service_name} again - {tries} out of 3\")\n", + " else: \n", + " tries = 3\n", + " \n", + " df_status.loc[base_service_name, \"rest_check\"] = \"Pass\"\n", + " \n", + " try:\n", + " attributes = res['features'][0]['attributes']\n", + " except:\n", + " try:\n", + " attributes = res['attributes']\n", + " except:\n", + " print(f\"Failed to get data for {full_service_name} - {res}\")\n", + " continue\n", + "\n", + " update_time = attributes.get(\"update_time\")\n", + " try:\n", + " update_time = datetime.strptime(update_time, \"%Y-%m-%d %H:%M:%S UTC\")\n", + " except:\n", + " update_time = datetime.strptime(update_time, \"%Y-%m-%d %H:%M UTC\")\n", + " df_status.loc[base_service_name, \"update_time\"] = update_time\n", + "\n", + " if base_service_name == \"rfc_max_stage\":\n", + " df_status.loc[base_service_name, \"reference_time\"] = \"Pass\"\n", + " ref_time = update_time\n", + " else:\n", + " possible_times = [\"ref_time\", \"Ref_Time\", \"Ref_time\", \"reference_time\", \"valid_time\", \"Valid_Time\", \"Valid_time\"]\n", + "\n", + " for possible_time in possible_times:\n", + " ref_time = attributes.get(possible_time)\n", + " if ref_time:\n", + " try:\n", + " ref_time = datetime.strptime(ref_time, \"%Y-%m-%d %H:%M:%S UTC\")\n", + " except:\n", + " ref_time = datetime.strptime(ref_time, \"%Y-%m-%d %H:%M UTC\")\n", + " df_status.loc[base_service_name, \"reference_time\"] = ref_time\n", + " break\n", + "\n", + " if ref_time and acceptable_delay:\n", + " acceptable_delay = isodate.parse_duration(acceptable_delay)\n", + " issue_delay = acceptable_delay + timedelta(hours=1)\n", + "\n", + " acceptable_threshold = ref_time + acceptable_delay\n", + " issue_threshold = ref_time + issue_delay\n", + " now = datetime.utcnow()\n", + "\n", + " if now <= acceptable_threshold:\n", + " update_status = \"GOOD\"\n", + " elif now <= issue_threshold:\n", + " update_status = \"DELAYED\"\n", + " else:\n", + " update_status = \"ISSUE\"\n", + "\n", + " df_status.loc[base_service_name, \"update_status\"] = update_status\n", + "\n", + " if check_map_render and item:\n", + " try:\n", + " map1.add_layer(item)\n", + " map1.remove_layers(item)\n", + " df_status.loc[base_service_name, \"map_check\"] = \"Pass\"\n", + " except Exception as e:\n", + " print(f\"{full_service_name} failed to load in a map - {e}\")\n", + " df_status.loc[base_service_name, \"map_check\"] = \"Fail\"\n", + "\n", + " df_status = df_status.rename_axis('Service Name').sort_values([\"tier\", \"server\", \"Service Name\"])\n", + " df_status = df_status[[\"tier\", \"server\", \"portal_check\", \"rest_check\", \"map_check\", \"reference_time\", \"update_time\", \"update_status\", \"rest\"]]\n", + " \n", + " df_formatted = df_status.style.format(make_clickable).applymap(bold_cells).applymap(color_cells)\n", + "\n", + " display(df_formatted)\n", + "\n", + "def color_cells(val):\n", + " if val in ['Pass', 'STARTED', 'GOOD']:\n", + " color = 'green'\n", + " elif val in ['Fail', 'STOPPED', np.nan, \"ISSUE\"]:\n", + " color = 'red'\n", + " elif val in ['DELAYED']:\n", + " color = 'yellow'\n", + " elif val in ['unchecked']:\n", + " color = 'orange'\n", + " else:\n", + " color = 'white'\n", + " \n", + " return f'background-color: {color}'\n", + "\n", + "def bold_cells(val):\n", + " return 'font-weight: bold'\n", + "\n", + "def make_clickable(val):\n", + " if isinstance(val, str):\n", + " if 'http' in val:\n", + " return '{}'.format(val,val)\n", + " \n", + " return val" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd943581", + "metadata": {}, + "outputs": [], + "source": [ + "tiers_to_check = [1]\n", + "environment = 'production'\n", + "\n", + "check_service_status(environment, tiers_to_check)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2d29cae0", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/4. Recurrence Flow HUC 8 Cluster.ipynb b/Core/Manual_Workflows/4. Recurrence Flow HUC 8 Cluster.ipynb new file mode 100644 index 00000000..c62c798a --- /dev/null +++ b/Core/Manual_Workflows/4. Recurrence Flow HUC 8 Cluster.ipynb @@ -0,0 +1,2140 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "6ecc5560-8eb4-4f23-8d28-5570a5e13ccb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Change the sys path to pull from the parent folder for imports\n", + "import sys\n", + "sys.path.append('../')\n", + "from helper_functions.shared_functions import *\n", + "\n", + "# Oct 2024: moved to teh AWS_keys.py file\n", + "# db username and password moved. Untested\n", + "\n", + "# Get a db_engine for writing back to the database.\n", + "viz_db = get_db_engine(\"viz\")" + ] + }, + { + "cell_type": "markdown", + "id": "bd046af0-42f0-4f0c-9cc5-b18022d42467", + "metadata": {}, + "source": [ + "#### Download the most recent CONUS thresholds" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0463a447-e7f5-402a-8bf3-83e4aa1fbc97", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_0rf_1_1rf_1_2rf_1_3rf_1_4rf_1_5rf_1_6rf_1_7rf_1_8...rf_3_2rf_4_0rf_5_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_thresholdcluster
08610.000.000.000.000.000.000.000.000.00...0.450.641.110.010.332.3422.84111.050.3510.0
117917.5331.2134.9838.4340.1042.3743.1944.5744.57...63.4570.9074.1550.5473.4690.09112.71130.6538.4310.0
218145.4266.0980.4890.4693.5895.3596.15107.18107.18...129.32141.77147.76110.91149.81174.70205.37227.6590.4610.0
318369.2375.4081.5589.3491.7995.9196.44106.58106.58...137.26148.13159.78113.19157.55192.08242.08284.2489.3410.0
418567.8474.5382.2788.8691.5395.3696.37106.32106.32...135.49147.80159.15112.33157.18192.25243.22286.3388.8610.0
..................................................................
277672911700201120.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
277673011700202240.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.010.010.001.0
277673111700204900.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
277673211700238870.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
277673311710000720.000.000.000.000.000.000.000.000.00...0.000.000.000.000.000.000.000.000.001.0
\n", + "

2776734 rows × 29 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_0 rf_1_1 rf_1_2 rf_1_3 rf_1_4 rf_1_5 rf_1_6 \\\n", + "0 861 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "1 179 17.53 31.21 34.98 38.43 40.10 42.37 43.19 \n", + "2 181 45.42 66.09 80.48 90.46 93.58 95.35 96.15 \n", + "3 183 69.23 75.40 81.55 89.34 91.79 95.91 96.44 \n", + "4 185 67.84 74.53 82.27 88.86 91.53 95.36 96.37 \n", + "... ... ... ... ... ... ... ... ... \n", + "2776729 1170020112 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776730 1170020224 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776731 1170020490 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776732 1170023887 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "2776733 1171000072 0.00 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "\n", + " rf_1_7 rf_1_8 ... rf_3_2 rf_4_0 rf_5_0 rf_2_0_17c rf_5_0_17c \\\n", + "0 0.00 0.00 ... 0.45 0.64 1.11 0.01 0.33 \n", + "1 44.57 44.57 ... 63.45 70.90 74.15 50.54 73.46 \n", + "2 107.18 107.18 ... 129.32 141.77 147.76 110.91 149.81 \n", + "3 106.58 106.58 ... 137.26 148.13 159.78 113.19 157.55 \n", + "4 106.32 106.32 ... 135.49 147.80 159.15 112.33 157.18 \n", + "... ... ... ... ... ... ... ... ... \n", + "2776729 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776730 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776731 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776732 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "2776733 0.00 0.00 ... 0.00 0.00 0.00 0.00 0.00 \n", + "\n", + " rf_10_0_17c rf_25_0_17c rf_50_0_17c high_water_threshold cluster \n", + "0 2.34 22.84 111.05 0.35 10.0 \n", + "1 90.09 112.71 130.65 38.43 10.0 \n", + "2 174.70 205.37 227.65 90.46 10.0 \n", + "3 192.08 242.08 284.24 89.34 10.0 \n", + "4 192.25 243.22 286.33 88.86 10.0 \n", + "... ... ... ... ... ... \n", + "2776729 0.00 0.00 0.00 0.00 1.0 \n", + "2776730 0.00 0.01 0.01 0.00 1.0 \n", + "2776731 0.00 0.00 0.00 0.00 1.0 \n", + "2776732 0.00 0.00 0.00 0.00 1.0 \n", + "2776733 0.00 0.00 0.00 0.00 1.0 \n", + "\n", + "[2776734 rows x 29 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT * FROM derived.recurrence_flows_conus\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "a4933e54-e649-4770-8dab-b87600de418b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "df.to_csv(\"kathren_data/recurrence_flows_nwm_v3_CONUS.csv\")" + ] + }, + { + "cell_type": "markdown", + "id": "2427c6a6", + "metadata": {}, + "source": [ + "Get current huc8 cluster crosswalk and updated crosswalk from CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3eaebac2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
clusterbankfull_rf
huc8
101000210.0rf_1_3
101000310.0rf_1_3
101000410.0rf_1_3
101000510.0rf_1_3
101000610.0rf_1_3
.........
22040003NaNNone
22040004NaNNone
22040005NaNNone
22040006NaNNone
22040007NaNNone
\n", + "

2398 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " cluster bankfull_rf\n", + "huc8 \n", + "1010002 10.0 rf_1_3\n", + "1010003 10.0 rf_1_3\n", + "1010004 10.0 rf_1_3\n", + "1010005 10.0 rf_1_3\n", + "1010006 10.0 rf_1_3\n", + "... ... ...\n", + "22040003 NaN None\n", + "22040004 NaN None\n", + "22040005 NaN None\n", + "22040006 NaN None\n", + "22040007 NaN None\n", + "\n", + "[2398 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
cluster
huc8
101000610.0
101000710.0
101000810.0
101000910.0
101001010.0
101001110.0
109000510.0
4020300NaN
4060106NaN
4060107NaN
4070001NaN
4070002NaN
4080300NaN
40900058.0
41201048.0
4120200NaN
415010110.0
415010210.0
415020010.0
415030210.0
415030310.0
415030410.0
415030510.0
415030610.0
415030710.0
415030810.0
415030910.0
415031010.0
415040110.0
415040210.0
415040310.0
415040410.0
415040510.0
415040610.0
415040710.0
415040810.0
415040910.0
415050010.0
415060010.0
80202019.0
90100062.0
90100074.0
90100084.0
90203154.0
90203164.0
90300102.0
90300114.0
90400011.0
90400021.0
101500016.0
121004047.0
170101061.0
\n", + "
" + ], + "text/plain": [ + " cluster\n", + "huc8 \n", + "1010006 10.0\n", + "1010007 10.0\n", + "1010008 10.0\n", + "1010009 10.0\n", + "1010010 10.0\n", + "1010011 10.0\n", + "1090005 10.0\n", + "4020300 NaN\n", + "4060106 NaN\n", + "4060107 NaN\n", + "4070001 NaN\n", + "4070002 NaN\n", + "4080300 NaN\n", + "4090005 8.0\n", + "4120104 8.0\n", + "4120200 NaN\n", + "4150101 10.0\n", + "4150102 10.0\n", + "4150200 10.0\n", + "4150302 10.0\n", + "4150303 10.0\n", + "4150304 10.0\n", + "4150305 10.0\n", + "4150306 10.0\n", + "4150307 10.0\n", + "4150308 10.0\n", + "4150309 10.0\n", + "4150310 10.0\n", + "4150401 10.0\n", + "4150402 10.0\n", + "4150403 10.0\n", + "4150404 10.0\n", + "4150405 10.0\n", + "4150406 10.0\n", + "4150407 10.0\n", + "4150408 10.0\n", + "4150409 10.0\n", + "4150500 10.0\n", + "4150600 10.0\n", + "8020201 9.0\n", + "9010006 2.0\n", + "9010007 4.0\n", + "9010008 4.0\n", + "9020315 4.0\n", + "9020316 4.0\n", + "9030010 2.0\n", + "9030011 4.0\n", + "9040001 1.0\n", + "9040002 1.0\n", + "10150001 6.0\n", + "12100404 7.0\n", + "17010106 1.0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "sql = \"\"\"\n", + "SELECT *\n", + "FROM derived.huc8_rf_thresholds\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "\n", + "df = df.set_index(\"huc8\")\n", + "display(df.sort_index())\n", + "\n", + "updated_df = pd.read_csv(\"temp_corey/clusterless_huc8s_fixed.csv\")\n", + "\n", + "updated_df = updated_df.set_index(\"huc8\")[[\"cluster\"]]\n", + "\n", + "updated_df = updated_df.replace(\"\", np.nan)\n", + "updated_df['cluster'] = updated_df['cluster'].astype(float)\n", + "\n", + "display(updated_df)" + ] + }, + { + "cell_type": "markdown", + "id": "dd1e631b", + "metadata": {}, + "source": [ + "Update the crosswalk in DB with the new crosswalk table from CSV" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ed5575db", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "nan\n", + "Here\n", + "8.0\n", + "8.0\n", + "nan\n", + "Here\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "10.0\n", + "9.0\n", + "2.0\n", + "4.0\n", + "4.0\n", + "4.0\n", + "4.0\n", + "2.0\n", + "4.0\n", + "1.0\n", + "1.0\n", + "6.0\n", + "7.0\n", + "1.0\n" + ] + } + ], + "source": [ + "import math\n", + "\n", + "for huc, row in updated_df.iterrows():\n", + " cluster = row['cluster']\n", + " print(cluster)\n", + " if math.isnan(cluster):\n", + " print(\"Here\")\n", + " cluster = \"NULL\"\n", + " sql = f\"\"\"\n", + " UPDATE derived.huc8_rf_thresholds\n", + " SET cluster = {cluster}\n", + " WHERE huc8 = {huc}\n", + " \"\"\"\n", + "\n", + " run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "9819d067", + "metadata": {}, + "source": [ + "Check Current Cluster Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "0e6bf52a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bankfull_rf
cluster
1.0rf_2_9
2.0rf_1_6
3.0rf_1_6
4.0rf_1_5
5.0rf_1_6
6.0rf_1_1
7.0rf_3_2
8.0rf_1_0
9.0rf_1_1
10.0rf_1_3
11.0rf_1_3
NaNNone
\n", + "
" + ], + "text/plain": [ + " bankfull_rf\n", + "cluster \n", + "1.0 rf_2_9\n", + "2.0 rf_1_6\n", + "3.0 rf_1_6\n", + "4.0 rf_1_5\n", + "5.0 rf_1_6\n", + "6.0 rf_1_1\n", + "7.0 rf_3_2\n", + "8.0 rf_1_0\n", + "9.0 rf_1_1\n", + "10.0 rf_1_3\n", + "11.0 rf_1_3\n", + "NaN None" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT bankfull_rf, cluster\n", + "FROM derived.huc8_rf_thresholds\n", + "GROUP BY bankfull_rf, cluster\n", + "ORDER BY cluster\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "df = df.set_index('cluster')\n", + "df" + ] + }, + { + "cell_type": "markdown", + "id": "f8daac42", + "metadata": {}, + "source": [ + "Check the current high water threshold value for a specific cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "c88f9f9f", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "SELECT rf.feature_id, rf.high_water_threshold, rft.bankfull_rf, rft.cluster, cc.geom\n", + "FROM derived.recurrence_flows_conus as rf\n", + "JOIN derived.featureid_huc_crosswalk AS crosswalk ON rf.feature_id = crosswalk.feature_id\n", + "JOIN derived.huc8_rf_thresholds AS rft ON rft.huc8 = crosswalk.huc8\n", + "JOIN derived.channels_conus as cc ON cc.feature_id = crosswalk.feature_id\n", + "WHERE rf.high_water_threshold IS NULL;\n", + "\"\"\"\n", + "\n", + "gdf = run_sql_in_db(sql, return_geodataframe=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "aeece450", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idhigh_water_thresholdbankfull_rfclustergeom
\n", + "
" + ], + "text/plain": [ + "Empty GeoDataFrame\n", + "Columns: [feature_id, high_water_threshold, bankfull_rf, cluster, geom]\n", + "Index: []" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gdf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d619b54e", + "metadata": {}, + "outputs": [], + "source": [ + "map_column(gdf, \"cluster\", legend=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "bd78861d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_0rf_1_1rf_1_2rf_1_3rf_1_4rf_1_5rf_1_6rf_1_7rf_1_8...rf_3_2rf_3_3rf_3_5rf_4_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_threshold
017928.6150.1168.2873.7578.6582.1784.7688.0292.72...135.08138.42146.35157.86105.31180.67243.77340.27425.5395.93
\n", + "

1 rows × 32 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_0 rf_1_1 rf_1_2 rf_1_3 rf_1_4 rf_1_5 rf_1_6 rf_1_7 \\\n", + "0 179 28.61 50.11 68.28 73.75 78.65 82.17 84.76 88.02 \n", + "\n", + " rf_1_8 ... rf_3_2 rf_3_3 rf_3_5 rf_4_0 rf_2_0_17c rf_5_0_17c \\\n", + "0 92.72 ... 135.08 138.42 146.35 157.86 105.31 180.67 \n", + "\n", + " rf_10_0_17c rf_25_0_17c rf_50_0_17c high_water_threshold \n", + "0 243.77 340.27 425.53 95.93 \n", + "\n", + "[1 rows x 32 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT *\n", + "FROM derived.recurrence_flows_conus\n", + "WHERE feature_id = 179;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "a0f6f80c", + "metadata": {}, + "source": [ + "Update the specific clusters with the new recurrence flows" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "74888239", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Updating 1 cluster with rf_2_9\n", + "Updating 2 cluster with rf_1_6\n", + "Updating 3 cluster with rf_1_6\n", + "Updating 4 cluster with rf_1_5\n", + "Updating 5 cluster with rf_1_6\n", + "Updating 6 cluster with rf_1_1\n", + "Updating 7 cluster with rf_3_2\n", + "Updating 8 cluster with rf_1_0\n", + "Updating 9 cluster with rf_1_1\n", + "Updating 10 cluster with rf_1_3\n", + "Updating 11 cluster with rf_1_3\n" + ] + } + ], + "source": [ + "cluster_dict = {\n", + " 1: \"rf_2_9\",\n", + " 2: \"rf_1_6\",\n", + " 3: \"rf_1_6\",\n", + " 4: \"rf_1_5\",\n", + " 5: \"rf_1_6\",\n", + " 6: \"rf_1_1\",\n", + " 7: \"rf_3_2\",\n", + " 8: \"rf_1_0\",\n", + " 9: \"rf_1_1\",\n", + " 10: \"rf_1_3\",\n", + " 11: \"rf_1_3\"\n", + "}\n", + "\n", + "for cluster, value in cluster_dict.items():\n", + " print(f\"Updating {cluster} cluster with {value}\")\n", + " sql = f\"UPDATE derived.huc8_rf_thresholds SET bankfull_rf = '{value}' WHERE cluster = {cluster};\"\n", + " run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "f461a100", + "metadata": {}, + "source": [ + "Check New Cluster Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "8abcbccc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bankfull_rf
cluster
1.0rf_2_9
2.0rf_1_6
3.0rf_1_6
4.0rf_1_5
5.0rf_1_6
6.0rf_1_1
7.0rf_3_2
8.0rf_1_0
9.0rf_1_1
10.0rf_1_3
11.0rf_1_3
NaNNone
\n", + "
" + ], + "text/plain": [ + " bankfull_rf\n", + "cluster \n", + "1.0 rf_2_9\n", + "2.0 rf_1_6\n", + "3.0 rf_1_6\n", + "4.0 rf_1_5\n", + "5.0 rf_1_6\n", + "6.0 rf_1_1\n", + "7.0 rf_3_2\n", + "8.0 rf_1_0\n", + "9.0 rf_1_1\n", + "10.0 rf_1_3\n", + "11.0 rf_1_3\n", + "NaN None" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT bankfull_rf, cluster\n", + "FROM derived.huc8_rf_thresholds\n", + "GROUP BY bankfull_rf, cluster\n", + "ORDER BY cluster\n", + "\"\"\"\n", + "\n", + "df = run_sql_in_db(sql)\n", + "df = df.set_index('cluster')\n", + "df" + ] + }, + { + "cell_type": "markdown", + "id": "d4bf730c", + "metadata": {}, + "source": [ + "Update high water threshold column in the recurrence flows table from the new cluster values" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f4a8305c", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "UPDATE derived.recurrence_flows_conus AS rf_conus\n", + "SET high_water_threshold = CASE\n", + " WHEN hrft.bankfull_rf= 'rf_1_0' THEN rf_1_0\n", + " WHEN hrft.bankfull_rf= 'rf_1_1' THEN rf_1_1\n", + " WHEN hrft.bankfull_rf= 'rf_1_2' THEN rf_1_2\n", + " WHEN hrft.bankfull_rf= 'rf_1_3' THEN rf_1_3\n", + " WHEN hrft.bankfull_rf= 'rf_1_4' THEN rf_1_4\n", + " WHEN hrft.bankfull_rf= 'rf_1_5' THEN rf_1_5\n", + " WHEN hrft.bankfull_rf= 'rf_1_6' THEN rf_1_6\n", + " WHEN hrft.bankfull_rf= 'rf_1_7' THEN rf_1_7\n", + " WHEN hrft.bankfull_rf= 'rf_1_8' THEN rf_1_8\n", + " WHEN hrft.bankfull_rf= 'rf_1_9' THEN rf_1_9\n", + " WHEN hrft.bankfull_rf= 'rf_2_0' THEN rf_2_0\n", + " WHEN hrft.bankfull_rf= 'rf_2_1' THEN rf_2_1\n", + " WHEN hrft.bankfull_rf= 'rf_2_2' THEN rf_2_2\n", + " WHEN hrft.bankfull_rf= 'rf_2_3' THEN rf_2_3\n", + " WHEN hrft.bankfull_rf= 'rf_2_4' THEN rf_2_4\n", + " WHEN hrft.bankfull_rf= 'rf_2_5' THEN rf_2_5\n", + " WHEN hrft.bankfull_rf= 'rf_2_6' THEN rf_2_6\n", + " WHEN hrft.bankfull_rf= 'rf_2_7' THEN rf_2_7\n", + " WHEN hrft.bankfull_rf= 'rf_2_8' THEN rf_2_8\n", + " WHEN hrft.bankfull_rf= 'rf_2_9' THEN rf_2_9\n", + " WHEN hrft.bankfull_rf= 'rf_3_0' THEN rf_3_0\n", + " WHEN hrft.bankfull_rf= 'rf_3_2' THEN rf_3_2\n", + " WHEN hrft.bankfull_rf= 'rf_3_3' THEN rf_3_3\n", + " WHEN hrft.bankfull_rf= 'rf_3_5' THEN rf_3_5\n", + " WHEN hrft.bankfull_rf= 'rf_4_0' THEN rf_4_0\n", + " WHEN hrft.bankfull_rf= 'rf_2_0_17c' THEN rf_2_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_5_0_17c' THEN rf_5_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_10_0_17c' THEN rf_10_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_25_0_17c' THEN rf_25_0_17c\n", + " WHEN hrft.bankfull_rf= 'rf_50_0_17c' THEN rf_50_0_17c\n", + " ELSE NULL\n", + " END\n", + "FROM derived.featureid_huc_crosswalk AS fhc, derived.huc8_rf_thresholds AS hrft\n", + "WHERE fhc.feature_id = rf_conus.feature_id AND fhc.huc8 = hrft.huc8;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "d16a5a08", + "metadata": {}, + "source": [ + "Check the new high water threshold value for a specific cluster" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "17c8760a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idhigh_water_thresholdbankfull_rfcluster
0428937132.92rf_1_310
142894193151.54rf_1_310
2428942114.91rf_1_310
3428938716.68rf_1_310
442894233170.93rf_1_310
...............
786101000350512.01rf_1_310
787101000350617.03rf_1_310
788101000350777.47rf_1_310
789101000351081.63rf_1_310
790101000351248.46rf_1_310
\n", + "

791 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " feature_id high_water_threshold bankfull_rf cluster\n", + "0 4289371 32.92 rf_1_3 10\n", + "1 4289419 3151.54 rf_1_3 10\n", + "2 4289421 14.91 rf_1_3 10\n", + "3 4289387 16.68 rf_1_3 10\n", + "4 4289423 3170.93 rf_1_3 10\n", + ".. ... ... ... ...\n", + "786 1010003505 12.01 rf_1_3 10\n", + "787 1010003506 17.03 rf_1_3 10\n", + "788 1010003507 77.47 rf_1_3 10\n", + "789 1010003510 81.63 rf_1_3 10\n", + "790 1010003512 48.46 rf_1_3 10\n", + "\n", + "[791 rows x 4 columns]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT rf.feature_id, rf.high_water_threshold, rft.bankfull_rf, rft.cluster\n", + "FROM derived.recurrence_flows_conus as rf\n", + "JOIN derived.featureid_huc_crosswalk AS crosswalk ON rf.feature_id = crosswalk.feature_id\n", + "JOIN derived.huc8_rf_thresholds AS rft ON rft.huc8 = crosswalk.huc8\n", + "WHERE rft.huc8 = 1010006;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "6fa3a209", + "metadata": {}, + "source": [ + "Check recurrence flows for specific reach to make sure the new value is correct" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7ec81d73", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_0rf_1_1rf_1_2rf_1_3rf_1_4rf_1_5rf_1_6rf_1_7rf_1_8...rf_3_2rf_3_3rf_3_5rf_4_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_threshold
017928.6150.1168.2873.7578.6582.1784.7688.0292.72...135.08138.42146.35157.86105.31180.67243.77340.27425.5373.75
\n", + "

1 rows × 32 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_0 rf_1_1 rf_1_2 rf_1_3 rf_1_4 rf_1_5 rf_1_6 rf_1_7 \\\n", + "0 179 28.61 50.11 68.28 73.75 78.65 82.17 84.76 88.02 \n", + "\n", + " rf_1_8 ... rf_3_2 rf_3_3 rf_3_5 rf_4_0 rf_2_0_17c rf_5_0_17c \\\n", + "0 92.72 ... 135.08 138.42 146.35 157.86 105.31 180.67 \n", + "\n", + " rf_10_0_17c rf_25_0_17c rf_50_0_17c high_water_threshold \n", + "0 243.77 340.27 425.53 73.75 \n", + "\n", + "[1 rows x 32 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT *\n", + "FROM derived.recurrence_flows_conus AS rf_conus\n", + "WHERE feature_id = 179\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "cbfd07a4", + "metadata": {}, + "source": [ + "Temporarily move the high water threshold table to the egis reference schema" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2a352b42", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "move_data_to_another_db(\"viz\", \"egis\", \"derived.recurrence_flows_conus\", \"reference.recurrence_flows_conus\", stage=False, add_oid=False, add_geom_index=False, columns=[\"feature_id\", \"high_water_threshold\"])" + ] + }, + { + "cell_type": "markdown", + "id": "69d06bf8", + "metadata": {}, + "source": [ + "Update the high water threshold on the channels table" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "4fbbd0a3", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "UPDATE reference.channels_conus AS cc\n", + "SET high_water_threshold = rf.high_water_threshold\n", + "FROM reference.recurrence_flows_conus AS rf\n", + "WHERE cc.feature_id = rf.feature_id\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql, db_type=\"egis\")" + ] + }, + { + "cell_type": "markdown", + "id": "2ef7e539", + "metadata": {}, + "source": [ + "Check to make sure the high water threshold on the channels table is what we expect" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "0922cdbe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idstrm_ordernamehuc6nwm_versgeomhigh_water_thresholdrf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17coidfeature_id_str
042893711Unnamed Stream0101002.10105000020110F00000100000001020000000E00000046...32.9245.3770.0487.47110.49128.214364214289371
\n", + "
" + ], + "text/plain": [ + " feature_id strm_order name huc6 nwm_vers \\\n", + "0 4289371 1 Unnamed Stream 010100 2.1 \n", + "\n", + " geom high_water_threshold \\\n", + "0 0105000020110F00000100000001020000000E00000046... 32.92 \n", + "\n", + " rf_2_0_17c rf_5_0_17c rf_10_0_17c rf_25_0_17c rf_50_0_17c oid \\\n", + "0 45.37 70.04 87.47 110.49 128.21 436421 \n", + "\n", + " feature_id_str \n", + "0 4289371 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"\"\"\n", + "SELECT *\n", + "FROM reference.channels_conus\n", + "WHERE feature_id = 4289371;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql, db_type=\"egis\")" + ] + }, + { + "cell_type": "markdown", + "id": "6a14735f", + "metadata": {}, + "source": [ + "Remove the temporary recurrence flow table from the reference schema in the egis db" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "10d2e0dc", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "DROP TABLE reference.recurrence_flows_conus;\n", + "\"\"\"\n", + "\n", + "run_sql_in_db(sql, db_type=\"egis\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7375ac93", + "metadata": {}, + "outputs": [], + "source": [ + "import boto3\n", + "from datetime import datetime\n", + "import json\n", + "import os\n", + "\n", + "NWM_DATA_BUCKET = \"hydrovis-ti-nwm-us-east-1\"\n", + "RNR_MAX_FLOWS_DATA_BUCKET = \"hydrovis-ti-rnr-us-east-1\"\n", + "NWM_DATA_BUCKET = \"hydrovis-ti-nwm-us-east-1\"\n", + "\n", + "def kickoff_viz_lambdas(configurations=\"all\"):\n", + " client = boto3.client('lambda')\n", + " max_flows_lambda = f\"viz_max_flows_ti\"\n", + " ingest_lambda = f\"viz_db_ingest_ti\"\n", + " postprocess_lambda = f\"viz_db_postprocess_ti\"\n", + "\n", + " all_configurations = [\n", + " \"analysis_assim\", \"analysis_assim_14day\", \"analysis_assim_hawaii\", \"analysis_assim_puertorico\", \"short_range\", \"short_range_hawaii\",\n", + " \"short_range_puertorico\", \"medium_range_mem1\", \"replace_route\"\n", + " ]\n", + " \n", + " conus_configurations = [\n", + " \"analysis_assim\", \"analysis_assim_14day\", \"short_range\", \"medium_range_mem1\", \"replace_route\"\n", + " ]\n", + " \n", + " hawaii_configurations = [\n", + " \"analysis_assim_hawaii\", \"short_range_hawaii\"\n", + " ]\n", + " \n", + " prvi_configurations = [\n", + " \"analysis_assim_puertorico\", \"short_range_puertorico\"\n", + " ]\n", + " \n", + " reference_configurations = [\n", + " \"reference\"\n", + " ]\n", + " \n", + " if configurations == \"all\":\n", + " configurations = all_configurations\n", + " elif configurations == \"conus\":\n", + " configurations = conus_configurations \n", + " elif configurations == \"hawaii\":\n", + " configurations = hawaii_configurations \n", + " elif configurations == \"prvi\":\n", + " configurations = prvi_configurations\n", + " elif type(configurations) is list:\n", + " invalid_configs = [config for config in configurations if config not in all_configurations]\n", + " if invalid_configs:\n", + " raise Exception(f\"{invalid_configs} are not a valid configurations argument\")\n", + " elif type(configurations) is str:\n", + " if configurations not in all_configurations and configurations != \"reference\":\n", + " raise Exception(f\"{configurations} are not a valid configurations argument\")\n", + " configurations = [configurations]\n", + " else:\n", + " raise Exception(f\"{configurations} is not a valid configurations argument\")\n", + "\n", + "\n", + " for configuration in configurations:\n", + " if configuration == \"analysis_assim_14day\":\n", + " print(\"Invoking max flows function for AnA 14 day\")\n", + " current_datetime = datetime.utcnow()\n", + " current_date = current_datetime.strftime(\"%Y%m%d\")\n", + " latest_0Z_ana_file = f\"common/data/model/com/nwm/prod/nwm.{current_date}/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\" # noqa: E501\n", + " max_flows_payload = {\"data_key\": latest_0Z_ana_file, \"data_bucket\": NWM_DATA_BUCKET}\n", + "\n", + " client.invoke(\n", + " FunctionName=max_flows_lambda,\n", + " InvocationType='Event',\n", + " Payload=bytes(json.dumps(max_flows_payload), \"utf-8\")\n", + " )\n", + " elif configuration == \"reference\":\n", + " print(f\"Invoking db_postprocess function for reference services\")\n", + " postprocess_payload = {\n", + " \"configuration\": \"reference\", \"reference_time\": current_datetime.strftime(\"%Y-%m-%d %H:%M:%S\")\n", + " }\n", + " client.invoke(\n", + " FunctionName=postprocess_lambda,\n", + " InvocationType='Event',\n", + " Payload=bytes(json.dumps(postprocess_payload), \"utf-8\")\n", + " )\n", + " else:\n", + " print(f\"Invoking db_postprocess function for {configuration}\")\n", + " postprocess_payload = {\"configuration\": configuration}\n", + " client.invoke(\n", + " FunctionName=postprocess_lambda,\n", + " InvocationType='Event',\n", + " Payload=bytes(json.dumps(postprocess_payload), \"utf-8\")\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "95de240c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Invoking db_postprocess function for analysis_assim\n", + "Invoking max flows function for AnA 14 day\n", + "Invoking db_postprocess function for short_range\n", + "Invoking db_postprocess function for medium_range_mem1\n", + "Invoking db_postprocess function for replace_route\n" + ] + } + ], + "source": [ + "kickoff_viz_lambdas(\"conus\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/5. Service Metadata.ipynb b/Core/Manual_Workflows/5. Service Metadata.ipynb new file mode 100644 index 00000000..887a1ada --- /dev/null +++ b/Core/Manual_Workflows/5. Service Metadata.ipynb @@ -0,0 +1,4241 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e8425f56", + "metadata": {}, + "source": [ + "

This notebook is to track and edit service metadata, including service data flows. For each service, create a markdown cell and write what service the following code will edit

" + ] + }, + { + "cell_type": "markdown", + "id": "03aca48b", + "metadata": {}, + "source": [ + "#### IF YOU MAKE CHANGES TO THIS NOTEBOOK, YOU ARE RESPONSIBLE TO COMITTING THOSE CHANGES TO THE REPO IN THE HYDROVIS-VISUALIZATION REPO ####" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea193c96", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install geopandas contextily" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d0683edd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from helper_functions.shared_functions import *" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "d66b3de8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
serviceconfigurationpostprocess_max_flowspostprocess_servicepostprocess_summarysummarydescriptiontagscreditsegis_serveregis_folderfim_servicefeature_servicerunfim_configs
0srf_accum_precipforcing_short_rangeNoneraster_metadataNonetestteststreamflow,national,water,model,nwmNational Water Model, NOAA/NWS National Water ...imagenwmFalseFalseTrue[]
\n", + "
" + ], + "text/plain": [ + " service configuration postprocess_max_flows \\\n", + "0 srf_accum_precip forcing_short_range None \n", + "\n", + " postprocess_service postprocess_summary summary description \\\n", + "0 raster_metadata None test test \n", + "\n", + " tags \\\n", + "0 streamflow,national,water,model,nwm \n", + "\n", + " credits egis_server egis_folder \\\n", + "0 National Water Model, NOAA/NWS National Water ... image nwm \n", + "\n", + " fim_service feature_service run fim_configs \n", + "0 False False True [] " + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql = \"Select * FROM admin.services WHERE service = 'srf_accum_precip'\"\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "3efcec85", + "metadata": {}, + "source": [ + "

Non FIM Vector Services

" + ] + }, + { + "cell_type": "markdown", + "id": "b8016f51", + "metadata": {}, + "source": [ + "

AnA Anomaly

" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "6f7e1110", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_anomaly'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Anomaly'\n", + "description = 'Depicts seasonal streamflow anomalies derived from the analysis and assimilation configuration of the National Water Model (NWM) over the contiguous U.S. Anomalies are based on 7-day and 14-day moving average streamflow percentiles for each reach and the current calendar day.'\n", + "tags = 'streamflow,anomaly,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P14D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "90439600", + "metadata": {}, + "source": [ + "

AnA High Flow Magnitude

" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5d84a41f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_high_flow_magnitude'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = 'ana_max_flows'\n", + "postprocess_service = 'ana_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'High Flow Magnitude'\n", + "description = 'Depicts the magnitude of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their current flow. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'high flow, magnitude, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana'\n", + "target_table = 'cache.max_flows_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "004ff078", + "metadata": {}, + "source": [ + "

AnA High Flow Magnitude Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "2e96bb31", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_high_flow_magnitude_hi'\n", + "configuration = 'analysis_assim_hawaii'\n", + "postprocess_max_flows = 'ana_max_flows_hi'\n", + "postprocess_service = 'ana_high_flow_magnitude_hi'\n", + "postprocess_summary = None\n", + "summary = 'High Flow Magnitude Hawaii'\n", + "description = 'Depicts the magnitude of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Hawaii. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their current flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm0000.hawaii.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_table = 'cache.max_flows_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "afbce706", + "metadata": {}, + "source": [ + "

AnA High Flow Magnitude Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "5502b0f2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_high_flow_magnitude_prvi'\n", + "configuration = 'analysis_assim_puertorico'\n", + "postprocess_max_flows = 'ana_max_flows_prvi'\n", + "postprocess_service = 'ana_high_flow_magnitude_prvi'\n", + "postprocess_summary = None\n", + "summary = 'High Flow Magnitude Puerto Rico/Virgin Islands'\n", + "description = 'Depicts the magnitude of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their current flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,puerto,rico,virgin,islands,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_table = 'cache.max_flows_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "1c9f8781", + "metadata": {}, + "source": [ + "

AnA Past 14-Day High Flow Magnitude Analysis

" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "bf515022", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_past_14day_max_high_flow_magnitude'\n", + "configuration = 'analysis_assim_14day'\n", + "postprocess_max_flows = 'ana_14day_max_flows'\n", + "postprocess_service = 'ana_past_14day_max_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'Past 14-Day High Flow Magnitude Analysis'\n", + "description = 'Depicts the magnitude of the peak NWM streamflow analysis over the past 14 days where the National Water Model (NWM) signaled high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their maximum flow over the past 14 days. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,14day'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_14day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_14day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_7day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_7day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "6ae47b80", + "metadata": {}, + "source": [ + "

AnA Streamflow

" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "bc99f1b4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_streamflow'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = 'ana_max_flows'\n", + "postprocess_service = 'ana_streamflow'\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Analysis'\n", + "description = 'Depicts the streamflow output from the operational National Water Model (v2.1) analysis and assimilation for the continental United States. Updated hourly.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana'\n", + "target_table = 'cache.max_flows_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "289863ea", + "metadata": {}, + "source": [ + "

AnA Streamflow Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "id": "5d3378cf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_streamflow_hi'\n", + "configuration = 'analysis_assim_hawaii'\n", + "postprocess_max_flows = 'ana_max_flows_hi'\n", + "postprocess_service = 'ana_streamflow_hi'\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Analysis for Hawaii'\n", + "description = 'Depicts the streamflow output from the operational National Water Model (v2.2) analysis and assimilation for the state of Hawaii. Updated hourly.'\n", + "tags = 'national water model, nwm, hawaii'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "public_service = False\n", + "run = False\n", + "fim_configs = None\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm0000.hawaii.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_table = 'cache.max_flows_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "205f2d34", + "metadata": {}, + "source": [ + "

AnA Streamflow Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "id": "5f27935f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_streamflow_prvi'\n", + "configuration = 'analysis_assim_puertorico'\n", + "postprocess_max_flows = 'ana_max_flows_prvi'\n", + "postprocess_service = 'ana_streamflow_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Streamflow Analysis for Puerto Rico and Virgin Islands'\n", + "description = 'Depicts the streamflow output from the operational National Water Model (v2.2) analysis and assimilation for Puerto Rico and the U.S. Virgin Islands. Updated hourly.'\n", + "tags = 'streamflow,national,water,model,nwm,puerto,rico,virgin,islands,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "public_service = False\n", + "run = False\n", + "fim_configs = None\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_table = 'cache.max_flows_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "73b70347", + "metadata": {}, + "source": [ + "

Medium-Range High Water Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "1feba880", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_high_water_arrival_time'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'mrf_high_water_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range High Water Arrival Time Forecast'\n", + "description = 'Depicts the forecast arrival time of high water over the next 10 days. This service is derived from the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above the high water threshold over the next 10 days. Reaches are colored by the time at which they are forecast to reach high water (calculated in 3 hour increments). High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium range forecast, high water, arrival time, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,241,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "2cc68d4c", + "metadata": {}, + "source": [ + "

Medium-Range High Water Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "4a576091", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_high_water_probability'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range High Water Probability Forecast'\n", + "description = 'Depicts the probability of forecast high water over the next 5 days using ensembles from the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above high water on Day 1, Day 2, Day 3, and Days 4-5, using the 7 ensemble members of the medium-range forecast. Reaches are colored by the probability that they will meet or exceed the high water threshold on Day 1, Day 2, Day 3, and Days 4-5. Probabilities are computed as the % agreement across the 7 ensemble members, equally weighted. Also shown are USGS HUC8 polygons for basins with greater than 50% of NWM features with flow expected to be at or above high water over the next 5 days, symbolized by the average probability. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium,range,forecast,high,water,ensemble,national,water,model,nwm,probability'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem2/nwm.t{{datetime:%H}}z.medium_range.channel_rt_2.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem2'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem3/nwm.t{{datetime:%H}}z.medium_range.channel_rt_3.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem3'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem4/nwm.t{{datetime:%H}}z.medium_range.channel_rt_4.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem4'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem5/nwm.t{{datetime:%H}}z.medium_range.channel_rt_5.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem5'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem6/nwm.t{{datetime:%H}}z.medium_range.channel_rt_6.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem6'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem7/nwm.t{{datetime:%H}}z.medium_range.channel_rt_7.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem7'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "9b0b7820", + "metadata": {}, + "source": [ + "

Medium-Range Maximum High Flow Magnitude Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ba20e1c0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_max_high_flow_magnitude'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = 'mrf_max_flows'\n", + "postprocess_service = 'mrf_max_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Maximum High Flow Magnitude Forecast'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 3, 5 and 10 days where the NWM is signaling high water. This service is derived from the medium-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their forecast peak flow. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium range forecast, maximum, high flow, magnitude, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_table = 'cache.max_flows_mrf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "04a0dae6", + "metadata": {}, + "source": [ + "

Medium-Range Peak Flow Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c2df6424", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_peak_flow_arrival_time'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'mrf_peak_flow_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Peak Flow Arrival Time Forecast'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) medium-range forecast. Shown are reaches that are expected to have flow at or above the high water threshold over the next 3 and 10 days.. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water flows were derived using a 40-year retrospective analysis of the NWM (v2.1). Updated hourly.'\n", + "tags = 'medium range forecast, peak flow, arrival time, national water model, nwm, conus'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "35a00e3c", + "metadata": {}, + "source": [ + "

Medium-Range Rapid Onset Flooding Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c8bb17a1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_rapid_onset_flooding'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'mrf_rapid_onset_flooding'\n", + "postprocess_summary = 'mrf_rapid_onset_flooding_hucs'\n", + "summary = 'Medium-Range Rapid Onset Flooding Forecast'\n", + "description = 'Depicts forecast rapid onset flooding using the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches (stream order 4 and below) with a forecast flow increase of 100% or greater within 3 hours, and which are expected to be at or above the high water threshold within 6 hours of that increase (all calculated in 3 hour increments). Also shown are USGS HUC08 polygons symbolized by the percentage of NWM waterway length (within each HUC08) that is expected to meet the previously mentioned criteria. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium, range, forecast, streamflow, rapid, onset, flood, national, water, model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "278ddf2c", + "metadata": { + "tags": [] + }, + "source": [ + "

Medium-Range Rapid Onset Flooding Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "90fd3b64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_rapid_onset_flooding_probability'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Rapid Onset Flooding Probability Forecast'\n", + "description = 'Depicts the probability of forecast rapid onset flooding over the next 10 days using ensembles from the medium-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above high water thresholds on Day 1, Day 2, Day 3, Days 4-5, and Days 1-5 using the 7 ensemble members of the medium-range forecast. Reaches are colored by the probability that they will meet or exceed rapid onset conditions on Day 1, Day 2, Day 3, Days 4-5, and Days 1-5. Probabilities are computed as the % agreement across the 7 ensemble members, equally weighted. Hotspots show average 1-5 day rapid onset flooding probability, weighted by reach length, for USGS HUC8 basins with greater than 10% of NWM feature length meeting rapid onset criteria in the next 5 days. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'medium,range,forecast,streamflow,rapid,onset,flood,probability,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem2/nwm.t{{datetime:%H}}z.medium_range.channel_rt_2.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem2'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem3/nwm.t{{datetime:%H}}z.medium_range.channel_rt_3.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem3'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem4/nwm.t{{datetime:%H}}z.medium_range.channel_rt_4.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem4'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem5/nwm.t{{datetime:%H}}z.medium_range.channel_rt_5.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem5'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem6/nwm.t{{datetime:%H}}z.medium_range.channel_rt_6.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem6'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem7/nwm.t{{datetime:%H}}z.medium_range.channel_rt_7.f{{range:3,121,3,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem7'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "aeb4dfea", + "metadata": {}, + "source": [ + "

RFC 5-Day Maximum Streamflow

" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "294f9687", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'rfc_5day_max_downstream_streamflow'\n", + "configuration = 'replace_route'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'rfc_5day_max_downstream_streamflow'\n", + "postprocess_summary = 'rfc_5day_max_downstream_streamflow_rfc_points'\n", + "summary = 'RFC 5-Day Maximum Streamflow'\n", + "description = 'Depicts maximum forecast streamflow over the next 5 days derived from the official River Forecast Center (RFC) forecast routed downstream through the National Water Model (NWM) stream network. Maximum streamflows are available downstream of RFC forecast points whose forecast reaches action status or greater.'\n", + "tags = 'streamflow, replace and route, rfc'\n", + "credits = 'NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'rfc'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/replace_route/{{datetime:%Y%m%d}}/rnr_{{datetime:%H}}_max_flows.csv'\n", + "source_table = None\n", + "target_table = 'ingest.rnr_max_flows'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "52e9d942", + "metadata": {}, + "source": [ + "

RFC Maximum Stage Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "5bb0b000", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'rfc_max_stage'\n", + "configuration = 'ahps'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'rfc_max_stage'\n", + "postprocess_summary = None\n", + "summary = 'RFC Maximum Stage Forecast'\n", + "description = 'Depicts Advanced Hydrologic Prediction Service (AHPS) River Forecast Center (RFC) forecast points with forecasts at or above action stage. Circles represent forecast points where stages are changing by less than +/- 5% over the entire forecast period. Upward-pointing triangles represent forecast points where a greater than 5% increase in stage is expected sometime during the forecast. If stage increases greater than 5% are not expected, downward-pointing triangles represent forecast points where a greater than 5% decrease in stage is expected sometime during the forecast. Forecast points are colored by their maximum forecast flood category.'\n", + "tags = 'rfc,ahps,forecast,maximum,stage'\n", + "credits = 'NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'rfc'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_stage/ahps/{{datetime:%Y%m%d}}/{{datetime:%H_%M}}_ahps_forecasts.csv'\n", + "source_table = None\n", + "target_table = 'ingest.ahps_forecasts'\n", + "target_keys = '(nws_lid)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = 'max_stage/ahps/{{datetime:%Y%m%d}}/{{datetime:%H_%M}}_ahps_metadata.csv'\n", + "source_table = None\n", + "target_table = 'ingest.ahps_metadata'\n", + "target_keys = '(nws_lid)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "fe59bf78", + "metadata": {}, + "source": [ + "

Short-Range High Water Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "5afc0360", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_arrival_time'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_high_water_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Arrival Time Forecast'\n", + "description = 'Depicts the forecast arrival time of high water over the next 18 hours. This service is derived from the short-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are expected to have flow at or above the high water threshold over the next 18 hours. Reaches are colored by the time at which they are forecast to reach high water. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short range forecast, high water, arrival time, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "81f03ea2", + "metadata": {}, + "source": [ + "

Short-Range High Water Arrival Time Forecast - Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "99060bc2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_arrival_time_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_high_water_arrival_time_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Arrival Time Forecast - Hawaii'\n", + "description = 'Depicts the forecast arrival time of high water over the next 48 hours. This service is derived from the short-range configuration of the National Water Model (NWM) over Hawaii. Shown are reaches that are expected to have flow at or above the high water threshold over the next 48 hours. Reaches are colored by the time at which they are forecast to reach high water. High water flows were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'short range forecast, high water, arrival time, national water model, nwm, hawaii'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "e36e4c5a", + "metadata": {}, + "source": [ + "

Short-Range High Water Arrival Time - Puerto Rico/Virgin Islands

" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "f5c2b55a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_arrival_time_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_high_water_arrival_time_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Arrival Time - Puerto Rico/Virgin Islands'\n", + "description = 'Depicts the forecast arrival time of high water over the next 48 hours. This service is derived from the short-range configuration of the National Water Model (NWM) over Puerto Rico and the U.S. Virgin Islands. Shown are reaches that are expected to have flow at or above the high water threshold over the next 48 hours. Reaches are colored by the time at which they are forecast to reach high water. High water flows were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'short range forecast, high water, arrival time, national water model, nwm, puerto rico, virgin islands'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "2efb925f", + "metadata": {}, + "source": [ + "

Short-Range Peak Flow Arrival Time Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "adb59f27", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_peak_flow_arrival_time'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_peak_flow_arrival_time'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Peak Flow Arrival Time Forecast'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) short-range forecast. Shown are reaches that are expected to have flow at or above the high water threshold over the next 18 hours. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water flows were derived using a 40-year retrospective analysis of the NWM (v2.1). Updated hourly.'\n", + "tags = 'short range forecast, peak flow, arrival time, national water model, nwm, conus'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "6d694282", + "metadata": {}, + "source": [ + "

Short-Range Peak Flow Arrival Time Forecast - Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "4fb14f8b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_peak_flow_arrival_time_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_peak_flow_arrival_time_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Peak Flow Arrival Time Forecast - Hawaii'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) short-range forecast for the state of Hawaii. Shown are reaches that are expected to have flow at or above high water threshold flow over the next 48 hours. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water threshold flows and annual exceedance probabilities were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf. Updated every 12 hours.'\n", + "tags = 'short range forecast, peak flow, arrival time, national water model, nwm, hawaii'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "69cf6275", + "metadata": {}, + "source": [ + "

Short-Range Peak Flow Arrival Time - Puerto Rico/Virgin Islands

" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b7de97dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_peak_flow_arrival_time_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_peak_flow_arrival_time_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Peak Flow Arrival Time - Puerto Rico/Virgin Islands'\n", + "description = 'Depicts expected peak flow arrival times derived from the operational National Water Model (NWM) (v2.2) short-range forecast for Puerto Rico and the U.S. Virgin Islands. Shown are reaches that are expected to have flow at or above high water threshold flow over the next 48 hours. Reaches are colored by the time at which they are expected to be at their maximum flow within the forecast period. High water threshold flows and annual exceedance probabilities were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf. Updated every 12 hours.'\n", + "tags = 'short range forecast, peak flow, arrival time, national water model, nwm, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "00570e84", + "metadata": {}, + "source": [ + "

Short-Range High Water Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "8b7f4661", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_high_water_probability'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Short-Range High Water Probability Forecast'\n", + "description = 'Depicts the probability of forecast high water over the next 12 hours using a time-lagged ensemble from the short-range forecast of the National Water Model (NWM) over the contiguous U.S. Shown are reaches that are forecast to have flow at or above high water within the next 12 hours of at least one of the last 7 forecasts. Reaches are colored by the probability that they will meet or exceed the high water threshold across the last 7 forecasts. Probabilities are derived by counting the number of forecasts that meet the high water condition within the next 12 hours, equally weighted. Also shown are USGS HUC10 polygons for basins with greater than 50% of NWM features with flow expected to be at or above high water over the next 12 hours, symbolized by the average probability. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short,range,forecast,high,water,national,water,model,nwm,probability'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-1H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-1H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_1h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-2H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-2H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_2h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-3H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-3H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_3h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-4H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-4H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_4h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-5H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-5H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_5h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-6H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-6H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_6h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "4c183cbf", + "metadata": {}, + "source": [ + "

Short-Range Maximum High Flow Magnitude Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "0049b269", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_high_flow_magnitude'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = 'srf_max_flows'\n", + "postprocess_service = 'srf_max_high_flow_magnitude'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Maximum High Flow Magnitude Forecast'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 18 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their forecast peak flow. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short range forecast, maximum, high flow, magnitude, national water model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf'\n", + "target_table = 'cache.max_flows_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "3ae97c12", + "metadata": {}, + "source": [ + "

Short-Range Maximum High Flow Magnitude Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "58bf7f26", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_high_flow_magnitude_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = 'srf_max_flows_hi'\n", + "postprocess_service = 'srf_max_high_flow_magnitude_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Maximum High Flow Magnitude Hawaii'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Hawaii. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their peak flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'high,flow,magnitude,national,water,model,nwm,hawaii,srf,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_table = 'cache.max_flows_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "2e999ceb", + "metadata": {}, + "source": [ + "

Short-Range Maximum High Flow Magnitude Puerto Rico/Virgin Islands

" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "e40bf8c7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_high_flow_magnitude_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = 'srf_max_flows_prvi'\n", + "postprocess_service = 'srf_max_high_flow_magnitude_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Maximum High Flow Magnitude Puerto Rico/Virgin Islands'\n", + "description = 'Depicts the magnitude of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with peak flow at or above high water thresholds. Reaches are colored by the annual exceedance probability (AEP) of their peak flow. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'high flow, magnitude, national water model, nwm, puerto rico, virgin islands, srf'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_table = 'cache.max_flows_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "7f6934b2", + "metadata": {}, + "source": [ + "

Short-Range Rapid Onset Flooding

" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "1ffdf1df", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_rapid_onset_flooding'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_rapid_onset_flooding'\n", + "postprocess_summary = 'srf_rapid_onset_flooding_hucs'\n", + "summary = 'Short-Range Rapid Onset Flooding'\n", + "description = 'Depicts forecast rapid onset flooding using the short-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches (stream order 4 and below) with a forecast flow increase of 100% or greater within an hour, and which are expected to be at or above the high water threshold within 6 hours of that increase. Also shown are USGS HUC10 polygons symbolized by the percentage of NWM waterway length (within each HUC10) that is expected to meet the previously mentioned criteria. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short, range, forecast, streamflow, rapid, onset, flood, national, water, model, nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "c00c4f4f", + "metadata": {}, + "source": [ + "

Short-Range Rapid Onset Flooding Probability Forecast

" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "a057a4d3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_rapid_onset_flooding_probability'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Rapid Onset Flooding Probability Forecast'\n", + "description = 'Depicts the probability of forecast rapid onset flooding over the next 18 hours using a time-lagged ensemble from the short-range configuration of the National Water Model (NWM) over the contiguous U.S. Shown are reaches (stream order 4 and below) that are expected to meet rapid onset flooding criteria (flow increase of 100% or greater within one hour and high water threshold conditions within 6 hours) using the most recent 7 forecasts. Reaches are colored by the probability that they will meet or exceed rapid onset conditions within hours 1-6, 7-12, and 1-12. Probabilities are computed as the % agreement across the 7 ensemble members that a given reach will meet rapid onset criteria at some point during the time period of interest. Hotspots show the average 1-12 hour rapid onset flooding probability, weighted by reach length, for USGS HUC10 basins with greater than 10% of NWM feature length meeting rapid onset criteria in the next 12 hours. High water thresholds (regionally varied) were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short,range,forecast,streamflow,rapid,onset,flood,probability,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = False\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-1H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-1H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_1h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-2H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-2H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_2h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-3H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-3H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_3h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-4H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-4H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_4h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-5H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-5H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_5h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '7'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:reftime-6H, %Y%m%d}}/short_range/nwm.t{{datetime:reftime-6H, %H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_past_6h'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "75e6b414", + "metadata": {}, + "source": [ + "

Short-Range Rate of Change

" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "eff11341", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_rate_of_change'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'srf_rate_of_change'\n", + "postprocess_summary = None\n", + "summary = 'NWM 18-Hr Streamflow Rate of Change Forecast'\n", + "description = 'Depicts expected change in discharge derived from the operational National Water Model (NWM) (v2.1) short-range forecast. Change is computed between the current streamflow and that expected over the next 18 hours at 3-hour intervals, and is only displayed for reaches that are expected to have flow at or above their high water threshold. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'short,range,forecast,streamflow,rate,change,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "0263828c", + "metadata": {}, + "source": [ + "

Raster Services

" + ] + }, + { + "cell_type": "markdown", + "id": "95eaf1c8", + "metadata": {}, + "source": [ + "

Past 72-Hour Accumulated Precipitation

" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "61c42eb8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_72hr_accum_precip'\n", + "configuration = 'forcing_analysis_assim'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'MRMS Past 72-Hour Accumulated Precipitation'\n", + "description = 'Depicts accumulated precipitation totals over the past 72 hours derived from the MRMS forcing for the operational National Water Model (v2.1) analysis and assimilation.'\n", + "tags = 'mrms,accumulated,precipitation,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.forcing.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P3D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "18407e2a", + "metadata": {}, + "source": [ + "

Past 72-Hour Accumulated Precipitation - Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "1b4998b0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_72hr_accum_precip_hi'\n", + "configuration = 'forcing_analysis_assim_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'MRMS Past 72-Hour Accumulated Precipitation - Hawaii'\n", + "description = ''\n", + "tags = 'mrms,accumulated,precipitation,national,water,model,nwm,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.forcing.tm00.hawaii.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P3D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "b3f7ec08", + "metadata": {}, + "source": [ + "

Past 72-Hour Accumulated Precipitation - PR/VI

" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "8c8df78a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_72hr_accum_precip_prvi'\n", + "configuration = 'forcing_analysis_assim_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'MRMS Past 72-Hour Accumulated Precipitation - PR & VI'\n", + "description = ''\n", + "tags = 'mrms,accumulated,precipitation,national,water,model,nwm,puerto,rico,virgin,islands,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.forcing.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = '1H'\n", + "file_window = 'P3D'\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "d293c72c", + "metadata": {}, + "source": [ + "

Medium-Range Accumulated Precipitation

" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e14b4597", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_accum_precip'\n", + "configuration = 'forcing_medium_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Accumulated Precipitation Forecast'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 10 days derived from the GFS forcing for the operational National Water Model (v2.2) medium-range forecast. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated every 6 hours.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_medium_range/nwm.t{{datetime:%H}}z.medium_range.forcing.f{{range:1,241,1,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "9ffb4ede", + "metadata": {}, + "source": [ + "

Short-Range Accumulated Precipitation

" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "2b6bea3e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_accum_precip'\n", + "configuration = 'forcing_short_range'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Accumulated Precipitation Forecast'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 18 hours derived from the HRRR forcing for the operational National Water Model (v2.1) short-range forecast. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated hourly.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_short_range/nwm.t{{datetime:%H}}z.short_range.forcing.f{{range:1,19,1,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "14fdd198", + "metadata": {}, + "source": [ + "

Short-Range Accumulated Precipitation Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "c7e57e47", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_accum_precip_hi'\n", + "configuration = 'forcing_short_range_hawaii'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Accumulated Precipitation Forecast Hawaii'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 48 hours derived from the NAM-Nest with HIRESW WRF-ARW forcing for the operational National Water Model (v2.1) short-range forecast for the state of Hawaii. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated every 12 hours.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.forcing.f{{range:1,49,1,%03d}}.hawaii.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "0f3889c4", + "metadata": {}, + "source": [ + "

Short-Range Accumulated Precipitation Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "dd7b884f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_accum_precip_prvi'\n", + "configuration = 'forcing_short_range_puertorico'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'raster_metadata'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Accumulated Precipitation Forecast Puerto Rico and Virgin Islands'\n", + "description = 'Depicts expected accumulated precipitation totals over the next 48 hours derived from the NAM-Nest with HIRESW WRF-ARW forcing for the operational National Water Model (v2.1) short-range forecast for Puerto Rico and the U.S. Virgin Islands. Data for each interval can be seen by using a filter to select the name of the desired layer. Updated every 12 hours.'\n", + "tags = 'streamflow,national,water,model,nwm'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'image'\n", + "egis_folder = 'nwm'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = False\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "service = 'srf_accum_precip_prvi'\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/forcing_short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.forcing.f{{range:1,49,1,%03d}}.puertorico.nc'\n", + "source_table = None\n", + "target_table = None\n", + "target_keys = None\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "ee509074", + "metadata": {}, + "source": [ + "

Forecast FIM Services

" + ] + }, + { + "cell_type": "markdown", + "id": "5407c311", + "metadata": {}, + "source": [ + "

AnA Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "4ae0e84b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_inundation'\n", + "configuration = 'analysis_assim'\n", + "postprocess_max_flows = 'ana_max_flows'\n", + "postprocess_service = 'ana_inundation'\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Inundation'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_inundation']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana'\n", + "target_table = 'cache.max_flows_ana'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana'\n", + "target_table = 'ingest.ana_inundation'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "cc79b1be", + "metadata": {}, + "source": [ + "

AnA Inundation Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "40d13750", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_inundation_hi'\n", + "configuration = 'analysis_assim_hawaii'\n", + "postprocess_max_flows = 'ana_max_flows_hi'\n", + "postprocess_service = 'ana_inundation_hi'\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Inundation Hawaii'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Hawaii. Shown are reaches with flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_inundation_hi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_hawaii/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm0000.hawaii.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_hi'\n", + "target_table = 'cache.max_flows_ana_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_hi'\n", + "target_table = 'ingest.ana_inundation_hi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "5a32087c", + "metadata": {}, + "source": [ + "

AnA Inundation Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0786f0da", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_inundation_prvi'\n", + "configuration = 'analysis_assim_puertorico'\n", + "postprocess_max_flows = 'ana_max_flows_prvi'\n", + "postprocess_service = 'ana_inundation_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Inundation Puerto Rico'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) streamflow forecast where the NWM is signaling high water. This service is derived from the analysis and assimilation configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana,puerto,rico,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_inundation_prvi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/analysis_assim_puertorico/nwm.t{{datetime:%H}}z.analysis_assim.channel_rt.tm00.puertorico.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_prvi'\n", + "target_table = 'cache.max_flows_ana_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_prvi'\n", + "target_table = 'ingest.ana_inundation_prvi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "e6cf2b43", + "metadata": {}, + "source": [ + "

AnA Past 14-Day Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1035d863", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'ana_past_14day_max_inundation'\n", + "configuration = 'analysis_assim_14day'\n", + "postprocess_max_flows = \"ana_14day_max_flows\"\n", + "postprocess_service = \"ana_past_14day_max_inundation\"\n", + "postprocess_summary = None\n", + "summary = 'Analysis and Assimilation Past 14 Day Inundation'\n", + "description = 'Depicts the inundation extent of the peak NWM streamflow analysis over the past 14 days where the National Water Model (NWM) signaled high water. This service is derived from the analysis and assimilation configuration of the NWM over the contiguous U.S. Shown are reaches with flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,analysis,assimilation,ana,14day'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['ana_past_14day_max_inundation_7d', 'ana_past_14day_max_inundation_14d']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_14day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_14day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/analysis_assim/{{datetime:%Y%m%d}}/ana_7day_00_max_flows.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_ana_7day_max'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_7day_max'\n", + "target_table = 'cache.max_flows_ana_14day'\n", + "target_keys = '(feature_id, max_flow_7day_cfs)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_ana_14day_max'\n", + "target_table = 'cache.max_flows_ana_14day'\n", + "target_keys = '(feature_id, max_flow_14day_cfs)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_14day'\n", + "target_table = 'ingest.ana_past_14day_max_inundation_7d'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '6'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_ana_14day'\n", + "target_table = 'ingest.ana_past_14day_max_inundation_14d'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "4c7404e4", + "metadata": {}, + "source": [ + "

Medium-Range Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "26d96c88", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'mrf_max_inundation'\n", + "configuration = 'medium_range_mem1'\n", + "postprocess_max_flows = 'mrf_max_flows'\n", + "postprocess_service = 'mrf_max_inundation'\n", + "postprocess_summary = None\n", + "summary = 'Medium-Range Inundation'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 3, 5, and 10 days where the NWM is signaling high water. This service is derived from the medium-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,medium,range,10day'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['mrf_max_inundation_3day', 'mrf_max_inundation_5day', 'mrf_max_inundation_10day']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/medium_range_mem1/nwm.t{{datetime:%H}}z.medium_range.channel_rt_1.f{{range:3,243,3,%03d}}.conus.nc'\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_mrf_mem1'\n", + "target_table = 'cache.max_flows_mrf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_mrf'\n", + "target_table = 'ingest.mrf_max_inundation_3day'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '4'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_mrf'\n", + "target_table = 'ingest.mrf_max_inundation_5day'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '5'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_mrf'\n", + "target_table = 'ingest.mrf_max_inundation_10day'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "b6e599eb", + "metadata": {}, + "source": [ + "

RFC 5-Day Maximum Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "1124147b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'rfc_5day_max_downstream_inundation'\n", + "configuration = 'replace_route'\n", + "postprocess_max_flows = None\n", + "postprocess_service = 'rfc_5day_max_downstream_inundation'\n", + "postprocess_summary = None\n", + "summary = 'RFC 5-Day Maximum Inundation'\n", + "description = 'Depicts maximum inundation extent over the next 5 days derived from the official River Forecast Center (RFC) forecast routed downstream through the National Water Model (NWM) stream network. Maximum streamflows are available downstream of RFC forecast points whose forecast reaches action status or greater.'\n", + "tags = 'inundation, replace and route, rfc'\n", + "credits = 'NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'rfc'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['rfc_5day_max_downstream_inundation']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = 'max_flows/replace_route/{{datetime:%Y%m%d}}/rnr_{{datetime:%H}}_max_flows.csv'\n", + "source_table = None\n", + "target_table = 'ingest.rnr_max_flows'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'ingest.rnr_max_flows'\n", + "target_table = 'ingest.rfc_5day_max_downstream_inundation'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "b730fb15", + "metadata": {}, + "source": [ + "

Short-Range Inundation

" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "f7dc53e3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_inundation'\n", + "configuration = 'short_range'\n", + "postprocess_max_flows = 'srf_max_flows'\n", + "postprocess_service = 'srf_max_inundation'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Inundation'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 18 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over the contiguous U.S. Shown are reaches with peak flow at or above high water thresholds. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,short,range,srf'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['srf_max_inundation']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,19,1,%03d}}.conus.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf'\n", + "target_table = 'cache.max_flows_srf'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_srf'\n", + "target_table = 'ingest.srf_max_inundation'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "9bd13e9f", + "metadata": {}, + "source": [ + "

Short-Range Inundation Hawaii

" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "d674880c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_inundation_hi'\n", + "configuration = 'short_range_hawaii'\n", + "postprocess_max_flows = 'srf_max_flows_hi'\n", + "postprocess_service = 'srf_max_inundation_hi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Inundation Hawaii'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Hawaii. Shown are reaches with peak flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/sir/2010/5035/sir2010-5035_text.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,short,range,srf,hawaii,hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['srf_max_inundation_hi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_hawaii/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:100,4900,100,%05d}}.hawaii.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_hi'\n", + "target_table = 'cache.max_flows_srf_hi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_srf_hi'\n", + "target_table = 'ingest.srf_max_inundation_hi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "508d20a2", + "metadata": {}, + "source": [ + "

Short-Range Inundation Puerto Rico

" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "d95e129b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'srf_max_inundation_prvi'\n", + "configuration = 'short_range_puertorico'\n", + "postprocess_max_flows = 'srf_max_flows_prvi'\n", + "postprocess_service = 'srf_max_inundation_prvi'\n", + "postprocess_summary = None\n", + "summary = 'Short-Range Inundation Puerto Rico'\n", + "description = 'Depicts the inundation extent of the peak National Water Model (NWM) streamflow forecast over the next 48 hours where the NWM is signaling high water. This service is derived from the short-range configuration of the NWM over Puerto Rico and the U.S. Virgin Islands. Shown are reaches with peak flow at or above high water thresholds. High water thresholds and AEPs were derived from USGS regression equations found at https://pubs.usgs.gov/wri/wri994142/pdf/wri99-4142.pdf.'\n", + "tags = 'national,water,model,nwm,hand,height,above,nearest,drainage,short,range,srf,puerto,rico,prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'nwm'\n", + "fim_service = True\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = ['srf_max_inundation_prvi']\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n", + "\n", + "flow_id = '1'\n", + "step = 'ingest'\n", + "file_format = \"common/data/model/com/nwm/prod/nwm.{{datetime:%Y%m%d}}/short_range_puertorico/nwm.t{{datetime:%H}}z.short_range.channel_rt.f{{range:1,49,1,%03d}}.puertorico.nc\"\n", + "source_table = None\n", + "target_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '2'\n", + "step = 'max_flows'\n", + "file_format = None\n", + "source_table = 'ingest.nwm_channel_rt_srf_prvi'\n", + "target_table = 'cache.max_flows_srf_prvi'\n", + "target_keys = '(feature_id, streamflow)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)\n", + "\n", + "flow_id = '3'\n", + "step = 'fim_prep'\n", + "file_format = None\n", + "source_table = 'cache.max_flows_srf_prvi'\n", + "target_table = 'ingest.srf_max_inundation_prvi'\n", + "target_keys = '(feature_id)'\n", + "file_step = None\n", + "file_window = None\n", + "\n", + "update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_step=file_step, file_window=file_window, file_format=file_format)" + ] + }, + { + "cell_type": "markdown", + "id": "e037ddf8", + "metadata": {}, + "source": [ + "

QC FIM Services

" + ] + }, + { + "cell_type": "markdown", + "id": "0ebf072c", + "metadata": {}, + "source": [ + "

FIM Performance

" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "e264cddb", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'fim_performance'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Height Above Nearest Drainage (HAND) Flood Inundation Mapping (FIM) Performance at HUC8s and AHPS locations.'\n", + "description = 'Depicts the HAND FIM method skill metrics at HUC8s (polygons) and AHPS locations (points). Metrics are computed through static comparison of benchmark maps to HAND maps at specific flow magnitudes (e.g. 100yr, 500yr, Action, Minor, Moderate, Major). Metrics reported are Critical Success Index (CSI), True Positive Rate (TPR) also known as Probability of Detection (POD), False Alarm Ratio (FAR), and Probability Not Detected (PND). Polygons and sites are symbolized by CSI by default; however, the other metrics (TPR, FAR, and PND) are available in the attributes for each location. For a description of how metrics are computed, see https://github.com/NOAA-OWP/inundation-mapping/wiki/Evaluating-HAND-Performance. Benchmark sources for HUC8 vary between FEMA Base Level Engineering, Iowa Flood Center, and RAS2FIM while benchmark sources for AHPS locations vary between USGS and AHPS FIM based on data availability at each HUC8 or AHPS location. Also, flow magnitudes used vary depending on the benchmark sources. Each feature represents the HAND FIM method skill metrics of unique benchmark data source and flow magnitude. This is a static service; it does not provide estimates of FIM skills in real-time. This service only shows the HAND FIM method skill as compared to benchmark maps produced for scenarios of specific magnitudes.'\n", + "tags = 'performance, skill, csi, flood, hand, fim, inundation, height, above, nearest, drainage, ahps, usgs'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, USGS, Iowa Flood Center, RAS2FIM'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "6f31c0e5", + "metadata": {}, + "source": [ + "

Flow Based CatFIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "4d9e76e2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'flow_based_catfim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official threshold discharges are used.'\n", + "description = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official threshold discharges are used. Flood inundation maps are colored according to their category. Mapping extends 5 miles upstream and downstream of AHPS gage locations. This is a static service and not a forecast service.'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, National River Layer Database'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c5a7d71d", + "metadata": {}, + "source": [ + "

CONUS Full Resolution FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "50f5ee62", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'full_resolution_fim_catchments'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'CONUS Full Resolution FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the full resolution FIM HAND dataset for CONUS'\n", + "tags = 'fim, inundation, national water model, nwm, reference'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "25ed1b5b", + "metadata": {}, + "source": [ + "

Hawaii Full Resolution FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "2abc4cc6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'full_resolution_fim_catchments_hi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Hawaii Full Resolution FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the full resolution FIM HAND dataset for Hawaii'\n", + "tags = 'fim, inundation, national water model, nwm, reference, hawaii, hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "ad28e86e", + "metadata": {}, + "source": [ + "

Puerto Rico Full Resolution FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "4bb621af", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'full_resolution_fim_catchments_prvi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Puerto Rico Full Resolution FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the full resolution FIM HAND dataset for Puerto Rico and Virgin Islands'\n", + "tags = 'fim, inundation, national water model, nwm, reference, puertorico, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c0408ac1", + "metadata": {}, + "source": [ + "

CONUS Main Stem FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "57b754ae", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'main_stem_fim_catchments'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'CONUS Main Stem FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the main stem FIM HAND dataset for CONUS'\n", + "tags = 'fim, inundation, national water model, nwm, reference'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "b0cbe0ec", + "metadata": {}, + "source": [ + "

Hawaii Main Stem FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "id": "b81c63ec", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'main_stem_fim_catchments_hi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Hawaii Main Stem FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the main stem FIM HAND dataset for Hawaii'\n", + "tags = 'fim, inundation, national water model, nwm, reference, hawaii, hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "e8a7d15c", + "metadata": {}, + "source": [ + "

Puerto Rico Main Stem FIM Catchment Boundaries

" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "id": "9667f251", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'main_stem_fim_catchments_prvi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Puerto Rico Main Stem FIM Catchment Boundaries'\n", + "description = 'Depicts the catchment boundaries for the main stem FIM HAND dataset for Puerto Rico and Virgin Islands'\n", + "tags = 'fim, inundation, national water model, nwm, reference, puertorico, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "3cc51c49", + "metadata": {}, + "source": [ + "

NWM Annual Exceedance Probability FIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "5a48a5ca", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_aep_fim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Depicts flood inundation extents derived from NWM high water threshold, annual exceedance probabilities and the Height Above Nearest Drainage (HAND) technique.'\n", + "description = 'Depicts the inundation extent of the National Water Model (NWM) high water threshold and annual exceedance probabilities. High water thresholds (regionally varied) and AEPs were derived using the 40-year NWM v2.1 reanalysis simulation. This is a static service and not a forecast service.'\n", + "tags = 'nws, flood, categorical, hand, fim, inundation, height, above, nearest, drainage, aep, recurrence'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "bfe006ae", + "metadata": {}, + "source": [ + "

NWM Waterbodies

" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "id": "d5b20f7d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_waterbodies'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Waterbodies'\n", + "description = 'Depicts the waterbodies for the National Water Model'\n", + "tags = 'nws, fim, reference, waterbodies'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "06b5bd44", + "metadata": {}, + "source": [ + "

NWS Flood Categorical HAND FIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "873d3714", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nws_flood_categorical_hand_fim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'National Weather Service Flood Categorical Height Above Nearest Drainage Flood Inundation Maps'\n", + "description = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Flood inundation maps are colored according to their category. Mapping extends 5 miles upstream and downstream of AHPS gage locations. This is not a forecast service. Service also known as CatFIM.'\n", + "tags = 'nws, flood, categorical, hand, fim, catfim, inundation, library, rfc, height, above, nearest, drainage, ahps, usgs'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, National River Layer Database'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "59f20326", + "metadata": {}, + "source": [ + "

Possible Coastal Omission for FIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "a8058768", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'possible_coastal_omission'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Coastal Regions where coastal flooding processes are not being considered in the visualization FIM output.'\n", + "description = 'Depicts areas along the coast where coastal flooding processes are not being considered in the visualization FIM output.'\n", + "tags = 'national water model, nwm, reference'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "b79a049c", + "metadata": {}, + "source": [ + "

Stage Based CatFIM

" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "06700b37", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'stage_based_catfim'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official stage thresholds are used.'\n", + "description = 'Depicts flood inundation extents derived from official NWS category thresholds and the Height Above Nearest Drainage (HAND) technique. Official stage thresholds (converted to water surface elevation) are used. Flood inundation maps are colored according to their category. Mapping extends 5 miles upstream and downstream of AHPS gage locations. This is a static service and not a forecast service.'\n", + "tags = 'nws, flood, categorical, hand, fim, catfim, inundation, library, rfc, height, above, nearest, drainage, ahps, usgs'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center, Advanced Hydrologic Prediction Service, National River Layer Database'\n", + "egis_server = 'server'\n", + "egis_folder = 'fim_libs'\n", + "fim_service = False\n", + "feature_service = False\n", + "run = True\n", + "fim_configs = None\n", + "public_service = False\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "c3ea30fe", + "metadata": {}, + "source": [ + "

Reference Services

" + ] + }, + { + "cell_type": "markdown", + "id": "68cb44d8", + "metadata": {}, + "source": [ + "

CONUS NWM Flowlines

" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "c1d467e9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_flowlines'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Flowlines for CONUS '\n", + "description = 'Depicts the NWM flowlines within the contiguous U.S.'\n", + "tags = 'national water model, nwm, reference, flowlines'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "287fd2eb", + "metadata": {}, + "source": [ + "

Hawaii NWM Flowines

" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "id": "ad82bf9c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_flowlines_hi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Flowines for Hawaii '\n", + "description = 'Depicts the NWM flowlines in Hawaii.'\n", + "tags = 'national water model, nwm, reference, hawaii, hi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "markdown", + "id": "7547b3c0", + "metadata": {}, + "source": [ + "

Puerto Rico NWM Flowines

" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "2dd6a998", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "service = 'nwm_flowlines_prvi'\n", + "configuration = 'reference'\n", + "postprocess_max_flows = None\n", + "postprocess_service = None\n", + "postprocess_summary = None\n", + "summary = 'NWM Flowines for Puerto Rico and the U.S. Virgin Islands'\n", + "description = 'Depicts the NWM flowlines in Puerto Rico and the U.S. Virgin Islands.'\n", + "tags = 'national water model, nwm, reference, puerto rico, puertorico, prvi'\n", + "credits = 'National Water Model, NOAA/NWS National Water Center'\n", + "egis_server = 'server'\n", + "egis_folder = 'reference'\n", + "fim_service = False\n", + "feature_service = True\n", + "run = True\n", + "fim_configs = None\n", + "public_service = True\n", + "\n", + "update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=postprocess_max_flows, service_sql_name=postprocess_service, summary_sql_name=postprocess_summary, fim_service=fim_service, feature_service=feature_service, run=run, fim_configs=fim_configs, public_service=public_service)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14a9fbf6", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/7. Max Flows.ipynb b/Core/Manual_Workflows/7. Max Flows.ipynb new file mode 100644 index 00000000..5dc307d9 --- /dev/null +++ b/Core/Manual_Workflows/7. Max Flows.ipynb @@ -0,0 +1,5719 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "4a0d7a85", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install xarray" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2a127fc4", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "os.environ['MAX_FLOWS_BUCKET'] = \"hydrovis-ti-fim-us-east-1\"\n", + "os.environ['CACHE_DAYS'] = \"30\"\n", + "os.environ['INITIALIZE_PIPELINE_FUNCTION'] = \"test\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "87205085", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "from datetime import datetime, timedelta\n", + "import xarray\n", + "import pandas as pd\n", + "import numpy as np\n", + "import boto3\n", + "import botocore\n", + "import urllib.parse\n", + "import time\n", + "import requests\n", + "\n", + "from helper_functions.old_shared_funcs import get_configuration, check_s3_file_existence\n", + "\n", + "MAX_FLOWS_BUCKET = os.environ['MAX_FLOWS_BUCKET']\n", + "CACHE_DAYS = os.environ['CACHE_DAYS']\n", + "INITIALIZE_PIPELINE_FUNCTION = os.environ['INITIALIZE_PIPELINE_FUNCTION']\n", + "\n", + "\n", + "def lambda_handler(event, context):\n", + " \"\"\"\n", + " The lambda handler is the function that is kicked off with the lambda. This function will take all the\n", + " forecast steps in the NWM configuration, calculate the max streamflow for each feature and then save the\n", + " output in S3\n", + "\n", + " Args:\n", + " event(event object): An event is a JSON-formatted document that contains data for a Lambda function to\n", + " process\n", + " context(object): Provides methods and properties that provide information about the invocation, function,\n", + " and runtime environment\n", + " \"\"\"\n", + " # parse the event to get the bucket and file that kicked off the lambda\n", + " print(\"Parsing key to get configuration\")\n", + " if \"Records\" in event:\n", + " message = json.loads(event[\"Records\"][0]['Sns']['Message'])\n", + " data_key = urllib.parse.unquote_plus(message[\"Records\"][0]['s3']['object']['key'], encoding='utf-8')\n", + " data_bucket = message[\"Records\"][0]['s3']['bucket']['name']\n", + " else:\n", + " data_key = event['data_key']\n", + " data_bucket = event['data_bucket']\n", + "\n", + " if not check_s3_file_existence(data_bucket, data_key):\n", + " raise Exception(f\"{data_key} does not exist within {data_bucket}\")\n", + "\n", + " max_flow_calcs = [] # Store max flows in list just in case multiplens needed\n", + " metadata = get_configuration(data_key, mrf_timestep=3)\n", + " configuration = metadata.get('configuration')\n", + " date = metadata.get('date')\n", + " hour = metadata.get('hour')\n", + " forecast_timestep = metadata.get('forecast_timestep')\n", + "\n", + " # Setup an input files dictionary with the bucket\n", + " input_files = metadata.get('input_files')\n", + " files = []\n", + " s3_file_sets = []\n", + " for s3_key in input_files:\n", + " files.append({'bucket': data_bucket, 's3_key': s3_key})\n", + " s3_file_sets.append(files)\n", + "\n", + " if \"medium_range\" in configuration:\n", + " configuration = \"medium_range\"\n", + "\n", + " short_hand_config = configuration.replace(\"analysis_assim\", \"ana\").replace(\"short_range\", \"srf\").replace(\"medium_range\", \"mrf\") # noqa\n", + " short_hand_config = short_hand_config.replace(\"hawaii\", \"hi\").replace(\"puertorico\", \"prvi\")\n", + " subset_config = None\n", + "\n", + " if configuration == 'medium_range':\n", + " subset_config = f\"{int(int(forecast_timestep)/24)}day\"\n", + " short_hand_config = f\"{short_hand_config}_{subset_config}\"\n", + "\n", + " max_flow_calcs.append(short_hand_config) # Add the current configuration to calcs list.\n", + "\n", + " if configuration == 'analysis_assim':\n", + " # Only perform max flows computation for analysis_assim when its the 00Z timestep\n", + " if hour != \"00\":\n", + " print(f\"{data_key} is not a file for 00Z so max flows will not be calculated\")\n", + " return\n", + " else:\n", + " max_flow_calcs = [] # If running ana, reset the calcs list and s3_file_sets list\n", + " s3_file_sets = []\n", + " days = [14]\n", + " for day in days:\n", + " files = []\n", + " previous_forecasts = day*24\n", + " metadata = get_configuration(data_key, previous_forecasts=previous_forecasts)\n", + " input_files = metadata.get('input_files')\n", + " print(len(input_files))\n", + " for s3_key in input_files:\n", + " files.append({'bucket': data_bucket, 's3_key': s3_key})\n", + " s3_file_sets.append(files)\n", + " reference_time = metadata.get('reference_time')\n", + " subset_config = f\"{int(previous_forecasts/24)}day\"\n", + " short_hand_config = f\"ana_{subset_config}\"\n", + " max_flow_calcs.append(short_hand_config)\n", + "\n", + " print(f\"Creating max flows file for {configuration} for {date}T{hour}:00:00Z\")\n", + "\n", + " for n, max_flow_calc in enumerate(max_flow_calcs):\n", + " output_netcdf = f\"max_flows/{configuration}/{date}/{max_flow_calc}_{hour}_max_flows.nc\"\n", + "\n", + " # Once the files exist, calculate the max flows\n", + " calculate_max_flows(s3_file_sets[n], output_netcdf)\n", + " print(f\"Successfully created max flows file for {configuration} for {date}T{hour}:00:00Z\")\n", + "\n", + " # If max calcs will run more than once, remove duplicates and\n", + " # update the second set of input files to include the just created max file.\n", + " next = n+1\n", + " if len(s3_file_sets) > (next):\n", + " s3_file_sets[next] = [file_next for file_next in s3_file_sets[next] if file_next not in s3_file_sets[n]]\n", + " s3_file_sets[next].append({'bucket': MAX_FLOWS_BUCKET, 's3_key': output_netcdf})\n", + "\n", + " print(\"Done\")\n", + "\n", + "\n", + "def calculate_max_flows(s3_files, output_netcdf):\n", + " \"\"\"\n", + " Iterates through a times series of National Water Model (NWM) channel_rt output NetCDF files, and finds the\n", + " maximum flow of each NWM reach during this period. Outputs a NetCDF file containing all NWM reaches and their\n", + " maximum flows.\n", + "\n", + " Args:\n", + " data_bucket (str): S3 bucket name where the NWM files are stored\n", + " path_to_nwm_files (str or list): Path to the directory or list of the paths to the files to caclulate\n", + " maximum flows on.\n", + " output_netcdf (str): Key (path) of the max flows netcdf that will be store in S3\n", + " \"\"\"\n", + " print(\"--> Calculating flows\")\n", + " peak_flows, feature_ids = calc_max_flows(s3_files) # creates a max flow array for all reaches\n", + "\n", + " print(f\"--> Creating {output_netcdf}\")\n", + " write_netcdf(feature_ids, peak_flows, output_netcdf) # creates the output NetCDF file\n", + "\n", + "\n", + "def download_file(data_bucket, file_path, download_path):\n", + " s3 = boto3.client('s3')\n", + "\n", + " try:\n", + " s3.download_file(data_bucket, file_path, download_path)\n", + " return True\n", + " except Exception as e:\n", + " print(f\"File failed to download {file_path}: {e}\")\n", + " return False\n", + "\n", + "\n", + "def calc_max_flows(s3_files):\n", + " \"\"\"\n", + " Iterates through a times series of National Water Model (NWM) channel_rt output NetCDF files, and finds\n", + " the maximum flow of each NWM reach during this period.\n", + "\n", + " Args:\n", + " data_bucket (str): S3 bucket name where the NWM files are stored\n", + " active_file_paths (str or list): Path to the directory or list of the paths to the files to caclulate\n", + " maximum flows on.\n", + "\n", + " Returns:\n", + " max_flows (numpy array): Numpy array that contains all the max flows for each feature for the forecast\n", + " feature_ids (numpy array): Numpy array that contains all the features ids for the forecast\n", + " \"\"\"\n", + " max_flows = None\n", + " feature_ids = None\n", + " tries = 0\n", + "\n", + " for file in s3_files:\n", + " data_bucket = file['bucket']\n", + " file_path = file['s3_key']\n", + " download_path = f'/tmp/{os.path.basename(file_path)}'\n", + " \n", + " if check_s3_file_existence(data_bucket, file_path):\n", + " print(f\"--> Downloading {file_path} to {download_path}\")\n", + " download_file(data_bucket, file_path, download_path)\n", + " else:\n", + " file_path = file_path.replace('common/data/model/com/nwm/prod', 'https://storage.googleapis.com/national-water-model')\n", + " print(f\"--> Downloading {file_path} to {download_path}\")\n", + " open(download_path, 'wb').write(requests.get(file_path, allow_redirects=True).content)\n", + "\n", + " with xarray.open_dataset(download_path) as ds:\n", + " temp_flows = ds['streamflow'].values # imports the streamflow values from each file\n", + " if max_flows is None:\n", + " max_flows = temp_flows\n", + " if feature_ids is None:\n", + " feature_ids = ds['feature_id'].values\n", + "\n", + " print(f\"--> Removing {download_path}\")\n", + " os.remove(download_path)\n", + "\n", + " # compares the streamflow values in each file with those stored in the max_flows array, and keeps the\n", + " # maximum value for each reach\n", + " max_flows = np.maximum(max_flows, temp_flows)\n", + "\n", + " return max_flows, feature_ids\n", + "\n", + "def write_netcdf(feature_ids, peak_flows, output_netcdf):\n", + " \"\"\"\n", + " Iterates through a times series of National Water Model (NWM) channel_rt output NetCDF files, and finds the\n", + " maximum flow of each NWM reach during this period.\n", + "\n", + " Args:\n", + " feature_ids (numpy array): Numpy array that contains all the features ids for the forecast\n", + " peak_flows (numpy array): Numpy array that contains all the max flows for each feature for the forecast\n", + " output_netcdf (str or list): Key (path) of the max flows netcdf that will be store in S3\n", + " \"\"\"\n", + " s3 = boto3.client('s3')\n", + "\n", + " tmp_netcdf = '/tmp/max_flows.nc'\n", + "\n", + " # Create a dataframe from the feature ids and streamflow\n", + " df = pd.DataFrame(feature_ids, columns=['feature_id']).set_index('feature_id')\n", + " df['streamflow'] = peak_flows\n", + " df['streamflow'] = df['streamflow'].fillna(0)\n", + "\n", + " # Save the max flows dataframe to a loacl netcdf file\n", + " df.to_xarray().to_netcdf(tmp_netcdf)\n", + "\n", + " # Upload the local max flows file to the S3 bucket\n", + " s3.upload_file(tmp_netcdf, MAX_FLOWS_BUCKET, output_netcdf, ExtraArgs={'ServerSideEncryption': 'aws:kms'})\n", + " os.remove(tmp_netcdf)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8b3f025b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parsing key to get configuration\n", + "337\n", + "Creating max flows file for analysis_assim for 20221007T00:00:00Z\n", + "--> Calculating flows\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220923/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading https://storage.googleapis.com/national-water-model/nwm.20220924/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220925/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220926/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220927/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220928/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220929/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20220930/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221001/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221002/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221003/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221004/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221005/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t01z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t02z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t03z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t04z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t05z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t06z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t07z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t08z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t09z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t10z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t11z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t12z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t13z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t14z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t15z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t16z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t17z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t18z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t19z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t20z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t21z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t22z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221006/analysis_assim/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t23z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Downloading common/data/model/com/nwm/prod/nwm.20221007/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc to /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "--> Removing /tmp/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\n", + "--> Creating max_flows/analysis_assim/20221007/ana_14day_00_max_flows.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/ec2-user/anaconda3/envs/python3/lib/python3.6/site-packages/boto3/compat.py:88: PythonDeprecationWarning: Boto3 will no longer support Python 3.6 starting May 30, 2022. To continue receiving service updates, bug fixes, and security updates please upgrade to Python 3.7 or later. More information can be found here: https://aws.amazon.com/blogs/developer/python-support-policy-updates-for-aws-sdks-and-tools/\n", + " warnings.warn(warning, PythonDeprecationWarning)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully created max flows file for analysis_assim for 20221007T00:00:00Z\n", + "Done\n" + ] + } + ], + "source": [ + "event = {\n", + " \"data_bucket\": \"hydrovis-ti-nwm-us-east-1\",\n", + " \"data_key\": \"common/data/model/com/nwm/prod/nwm.20221007/analysis_assim/nwm.t00z.analysis_assim.channel_rt.tm00.conus.nc\"\n", + "}\n", + "\n", + "lambda_handler(event, {})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c63f573f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/9. Run Historic Pipelines.ipynb b/Core/Manual_Workflows/9. Run Historic Pipelines.ipynb new file mode 100644 index 00000000..a49fc413 --- /dev/null +++ b/Core/Manual_Workflows/9. Run Historic Pipelines.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "05ba1952-eca9-4f37-9963-b5a87fe11c10", + "metadata": {}, + "source": [ + "### Historic Event Pipeline Runs\n", + "\n", + "#### This notebook will kick off pipelines for specified configurations for a given date range & reference times. At present, past events can be run in the TI pipelines, but this may not be the case at a later date, depending on what's in the development queue. You may need to create a seperate set of pipeline resources in AWS, if so (see step 1 below).\n", + "\n", + "##### Last Update: 2024-01-25\n", + "\n", + "I currently employ the following workflow to generate past event data.\n", + "1. [Optional] Use terraform to create a custom set of vpp lambda functions and step functions (currently `hv-vpp-dev-historical-run-{function name}` from the desired HydroVIS repo branch / version, without any SNS triggers on the initialize pipeline function (so it will only run on-demmand).\n", + "2. Setup individual single-reference-time test events for the configurations I intend to run in the initialize_pipeline lambda function created in the last step and throroughly test (first with the `invoke_step_function` arg set to false, then true when ready) - Pay particular attention to the table names and sql_replace dictionary, to ensure that archive tables are being used througout the entire pipeline. Looking at these tables in pg_admin is also a good idea to make sure everything looks good.\n", + "Here is an example of a test event to try in lambda:\n", + "\n", + "{\n", + " \"configuration\": \"analysis_assim\",\n", + " \"bucket\": \"nws-shared-data-226711853580-us-east-1\",\n", + " \"reference_time\": \"2024-01-17 12:00:00\",\n", + " \"invoke_step_function\": false\n", + "}\n", + "\n", + "3. Use the Source\\Visualizations\\aws_loosa\\utils\\viz_cache_csvs_to_clipped_geospatial.py script to retrieve and convert the test data into gpkg, and examine in Arc Pro. Make sure you use \"ref\" as a search criteria, which will ensure you get only past event data files.\n", + "4. When full step function execution and outputs have been verified, input the new initialize pipeline lambda arn into this notebook, and use it to batch run pipelines.\n", + "5. Use the Source\\Visualizations\\aws_loosa\\utils\\viz_cache_csvs_to_clipped_geospatial.py to fetch, convert, and clip to state (if desired) generated data for users.\n", + "6. Upload files to Google Drive for sharing.\n", + "\n", + "A few caveats/warnings you should consider before using this notebook:\n", + "- We currently do not regurlaly test past/historic event functionality with regular piplines updates, so pipelines may not run correctly when using this functionality without significant testing and tweaking, if there have been major development updates since the last refresh of this process.\n", + "- Creating a custom version of the Viz RDS database instance would be required to truly duplicate the environment of a given HydroVIS version, which is not tested/supported with our current db_dump strategy (although may be possible with some manual work).\n", + "- If using the default viz RDS instance, keep in mind that derived data will reflect what's currently in the TI database, not what's in Production.\n", + "- If using the defualt viz RDS instance, also keep in mind that historic pipelines ran here will be competing for database resources with the automatic operational viz pipelines, which may cause issues. I've sometimes disabled those triggers to initialize_pipeline temporarily when running large batches.\n", + "- All csv files archived to S3 will include a reference time prefix to denote they came from a past event pipeline (contrary to regularly archived files, which just contain the service name). That said, if FIM is filtered to specific states, that information is not presently included in the csv file names, which could cause issues if filtered and non-filtered versions are desired.\n", + "- In the past, Chip would run RnR manually to create outputs that we would run through the pipelines in this workflow. That process needs to be updated based on Shawn Crawleys late-2023 updates to RnR workflows." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "1d2e82ff-23f6-4945-acd6-37888042bcfe", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from datetime import date\n", + "from helper_functions.shared_functions import run_pipelines" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "65fedd84-4be9-4cf8-b2ed-7f23844b15cb", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Invoked viz_initialize_pipeline function with payload: {'configuration': 'analysis_assim', 'bucket': 'nws-shared-data-226711853580-us-east-1', 'reference_time': '2023-12-17 18:00:00', 'states_to_run_fim': None, 'skip_fim': False}.\n", + "Invoked viz_initialize_pipeline function with payload: {'configuration': 'analysis_assim', 'bucket': 'nws-shared-data-226711853580-us-east-1', 'reference_time': '2023-12-18 18:00:00', 'states_to_run_fim': None, 'skip_fim': False}.\n" + ] + } + ], + "source": [ + "# NWM 3.0 Testing Runs for Katherine - 2024 0125\n", + "events = [\n", + " # {\"start_date\": date(2023, 12, 21), \"end_date\": date(2023, 12, 21), \"reference_times\": [\"09:00:00\", \"10:00:00\"]},\n", + " {\"start_date\": date(2023, 12, 17), \"end_date\": date(2023, 12, 18), \"reference_times\": [\"18:00:00\"]},\n", + " # {\"start_date\": date(2023, 12, 17), \"end_date\": date(2023, 12, 17), \"reference_times\": [\"13:00:00\", \"14:00:00\"]},\n", + " # {\"start_date\": date(2023, 12, 5), \"end_date\": date(2023, 12, 5), \"reference_times\": [\"14:00:00\", \"15:00:00\"]},\n", + " # {\"start_date\": date(2023, 12, 2), \"end_date\": date(2023, 12, 2), \"reference_times\": [\"13:00:00\", \"14:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 28), \"end_date\": date(2023, 10, 28), \"reference_times\": [\"09:00:00\", \"10:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 24), \"end_date\": date(2023, 10, 24), \"reference_times\": [\"16:00:00\", \"17:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 4), \"end_date\": date(2023, 10, 4), \"reference_times\": [\"21:00:00\", \"22:00:00\"]},\n", + " # {\"start_date\": date(2023, 10, 3), \"end_date\": date(2023, 10, 3), \"reference_times\": [\"22:00:00\", \"23:00:00\"]}\n", + "]\n", + "for event in events:\n", + " start_date = event['start_date']\n", + " end_date = event['end_date']\n", + " reference_hours = event['reference_times']\n", + " configurations = [{\"analysis_assim\": \"nws-shared-data-226711853580-us-east-1\"}]\n", + " interval_minutes = 10 # specify the number of minutes to wait between pipeline invokations - this is important to get right to not overwhelm the database\n", + " initialize_pipeline_arn = \"arn:aws:lambda:us-east-1:526904826677:function:hv-vpp-ti-viz-initialize-pipeline\"\n", + " run_pipelines(start_date, end_date, reference_hours, configurations, initialize_pipeline_arn, interval_minutes=interval_minutes)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fef48f23-da25-4295-b321-e6b38f98f1ed", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.4.0.0 Update-checkpoint.ipynb b/Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.4.0.0 Update-checkpoint.ipynb new file mode 100644 index 00000000..8bc4aaf7 --- /dev/null +++ b/Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.4.0.0 Update-checkpoint.ipynb @@ -0,0 +1,1600 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "657203a8-278b-4265-86f9-e23983445fe1", + "metadata": { + "tags": [] + }, + "source": [ + "### This notebook was created by Corey Krewson in 2023 to facilitate all the steps needed to update the pipelines / EGIS map services, when a new FIM version is released. These steps entail:\n", + "1. Updating the FIM crosswalk table in the derived schema of the viz database.\n", + "2. Creating new AEP FIM schema/tables in the EGIS database.\n", + "3. Creating new FIM Catchments schema/tables in the EGIS database.\n", + "4. Update a bunch of other SRC Skill / FIM Performance / CatFIM data (not sure what all this entails - Shawn Crawley may know more).\n", + "5. Clear the HAND cache on the viz RDS database.\n", + "\n", + "Unfortunately, these steps are still very manual, and this notebook is the main source of documentation to making these updates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b656259", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "#from helper_functions.shared_functions import check_if_s3_key_exists, run_sql_in_db, get_db_engine # no check_if_s3_key_exists function\n", + "from helper_functions.shared_functions import run_sql_in_db, get_db_engine\n", + "from helper_functions.viz_classes import database\n", + "import os\n", + "import codecs\n", + "import csv\n", + "import boto3\n", + "import json\n", + "import pandas as pd\n", + "from datetime import datetime\n", + "from io import StringIO\n", + "from sqlalchemy.exc import DataError\n", + "from sqlalchemy.types import Text\n", + "\n", + "# Helps us get to the keys. Note: This was added Oct 16, 2024 and is untested\n", + "# /hydrovis/Core/Manual_Workflows/\n", + "sys.path.append(os.path.join(os.path.abspath(''), '../../../../AWS_Secret_keys'))\n", + "import AWS_Keys\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e944eff3-6023-48f4-9f57-27304a240447", + "metadata": {}, + "outputs": [], + "source": [ + "FIM_VERSION = \"4.4.0.0\"\n", + "FIM_ROOT_DPATH = f\"fim/fim_{FIM_VERSION.replace('.', '_')}\"\n", + "HAND_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/hand_datasets\"\n", + "QA_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/qa_datasets\"\n", + "FIM_BUCKET = \"hydrovis-ti-deployment-us-east-1\"\n", + "FIM_CROSSWALK_FPATH = os.path.join(HAND_DATASETS_DPATH, \"crosswalk_table.csv\")\n", + "PIPELINE_ARN = ''\n", + "\n", + "# SECRET KEYS AND TOKENS inside a folder in the sandbox folder to avoid checkins\n", + "\n", + "S3_CLIENT = boto3.client(\"s3\")\n", + "STEPFUNCTION_CLIENT = boto3.client('stepfunctions')\n", + "VIZ_DB_ENGINE = get_db_engine('viz')" + ] + }, + { + "cell_type": "markdown", + "id": "ffb715ee", + "metadata": {}, + "source": [ + "

1 - UPDATE VLAB PRIVATE REPO WITH NEW FIM VERSION

" + ] + }, + { + "cell_type": "markdown", + "id": "6875edcd", + "metadata": { + "tags": [] + }, + "source": [ + "

2 - UPLOAD FIM4 HYDRO ID/FEATURE ID CROSSWALK

" + ] + }, + { + "cell_type": "markdown", + "id": "fb51763d-ce45-4e48-9bc3-c772590d71ac", + "metadata": { + "tags": [] + }, + "source": [ + "February 2024 Update from Tyler: This code will need to be updated to handle a new hand_id unique integer that the fim team (Rob Hannah and Matt Luck) has added to the crosswalk, and is now important to fim runs. They also changed the field names / format to match our schema, so this chunk of code should be able to be simplified significantly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c96a49f2", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Getting column name from {FIM_CROSSWALK_FPATH}\")\n", + "data = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=FIM_CROSSWALK_FPATH)\n", + "d_reader = csv.DictReader(codecs.getreader(\"utf-8\")(data[\"Body\"]))\n", + "headers = d_reader.fieldnames\n", + "\n", + "print(headers)\n", + "raise Exception(\"Forced exit\")\n", + "\n", + "header_str = \"(\"\n", + "for header in headers:\n", + " header_str += header\n", + " if header in ['HydroID', 'LakeID', 'feature_id']:\n", + " header_str += ' integer,'\n", + " elif header in ['BranchID']:\n", + " header_str += ' bigint,'\n", + " else:\n", + " header_str += ' TEXT,'\n", + "header_str = header_str[:-1] + \")\"\n", + "\n", + "\n", + "db = database(db_type=\"viz\")\n", + "with db.get_db_connection() as conn, conn.cursor() as cur:\n", + " print(f\"Deleting/Creating derived.fim4_featureid_crosswalk using columns {header_str}\")\n", + " sql = f\"DROP TABLE IF EXISTS derived.fim4_featureid_crosswalk; CREATE TABLE derived.fim4_featureid_crosswalk {header_str};\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Importing {FIM_CROSSWALK_FPATH} to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"\"\"\n", + " SELECT aws_s3.table_import_from_s3(\n", + " 'derived.fim4_featureid_crosswalk',\n", + " '', \n", + " '(format csv, HEADER true)',\n", + " (SELECT aws_commons.create_s3_uri(\n", + " '{FIM_BUCKET}',\n", + " '{FIM_CROSSWALK_FPATH}',\n", + " 'us-east-1'\n", + " ) AS s3_uri\n", + " ),\n", + " aws_commons.create_aws_credentials('{TI_ACCESS_KEY}', '{TI_SECRET_KEY}', '{TI_TOKEN}')\n", + " );\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding fim_version column to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"ALTER TABLE derived.fim4_featureid_crosswalk ADD COLUMN fim_version text DEFAULT '{FIM_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Renaming columns in derived.fim4_featureid_crosswalk\")\n", + " sql = f\"\"\"\n", + " ALTER TABLE derived.fim4_featureid_crosswalk RENAME COLUMN HydroID TO hydro_id;\n", + " ALTER TABLE derived.fim4_featureid_crosswalk RENAME COLUMN LakeID TO lake_id;\n", + " ALTER TABLE derived.fim4_featureid_crosswalk RENAME COLUMN BranchID TO branch_id;\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding feature id index to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"CREATE INDEX fim4_crosswalk_feature_id ON derived.fim4_featureid_crosswalk USING btree (feature_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding hydro id index to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"CREATE INDEX fim4_crosswalk_hydro_id ON derived.fim4_featureid_crosswalk USING btree (hydro_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + "print(f\"Successully updated derived.fim4_featureid_crosswalk\")" + ] + }, + { + "cell_type": "markdown", + "id": "ec0b9ca7", + "metadata": {}, + "source": [ + "

3 - UPDATE FIM HAND PROCESSING LAMBDA ENV VARIABLE WITH NEW FIM VERSION

" + ] + }, + { + "cell_type": "markdown", + "id": "641831e4", + "metadata": {}, + "source": [ + "

4 - UPDATE FIM DATA PREP LAMBDA ENV VARIABLE WITH NEW FIM VERSION

" + ] + }, + { + "cell_type": "markdown", + "id": "8ec58bcb-1800-45dc-a440-d4adab1f1b71", + "metadata": { + "tags": [] + }, + "source": [ + "

5 - Run AEP FIM Pipelines.

\n", + "Updated Documentation from Tyler Early 2024: This can be done in a couple of diferent ways. One option is to use the pipeline_input code created below by Corey to start the AEP pipelines directly from this notebook. However, those pipeline_input dictionaries may very well be be out of date, pending more recent updates to the pipelines. The other option, which I prefer, is to setup a manual test event in the initialize_pipeline lambda function to trigger an AEP pipeline like this:\n", + "\n", + "{\n", + " \"configuration\": \"reference\",\n", + " \"products_to_run\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"invoke_step_function\": False\n", + "}\n", + "\n", + "Using this test event will produce the pipeline instructions, printing any errors that come up, and you can simply change the invoke_step_function flag to True when you're ready to actually invoke a pipeline run (which you can monitor/manage in the step function gui). You will need to manually update the static_nwm_aep_inundation_extent_library.yml product config file to only run 1 aep configuration at a time, and work through the configs as the pipelines finish (takes about an hour each). I've also found that the fim_data_prep lambda function needs to be temporarilly increased to ~4,500mb of memory to run these pipelines. It's also worth noting that these are very resource intesive pipelines, as FIM is calculated for every reach in the nation. AWS costs can amount to hundreds or even thousands of dollars by running these pipelines, so use responsibly.\n", + "\n", + "A couple other important notes:\n", + "- These AEP configurations write data directly to the aep_fim schema in the egis RDS database, instead of the viz database.\n", + "- You'll need to dump the aep_fim schema after that is complete for backup / deployment into other environments.\n", + "- This process has not been tested with new NWM 3.0 Recurrence Flows, and a good thorough audit / QC check of output data is warranted, given those changes and the recent updates to the pipelines." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6d6ee69", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_2_inundation\",\n", + " \"target_table\": \"aep_fim.rf_2_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_2_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_2_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4f89d9a", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_5_inundation\",\n", + " \"target_table\": \"aep_fim.rf_5_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_5_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_5_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "791d1a8b", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_10_inundation\",\n", + " \"target_table\": \"aep_fim.rf_10_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_10_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_10_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1bb87128", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_25_inundation\",\n", + " \"target_table\": \"aep_fim.rf_25_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_25_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_25_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4832e4e0", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_50_inundation\",\n", + " \"target_table\": \"aep_fim.rf_50_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_50_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_50_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a698067", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_high_water_inundation\",\n", + " \"target_table\": \"aep_fim.rf_high_water_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_high_water_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_hw_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1124d0d4", + "metadata": {}, + "source": [ + "

6 - RUN CATCHMENT WORKFLOWS 2 CONFIGS AT A TIME. CHECK FOR STEP FUNCTION FINISHING BEFORE STARTING NEW ONE

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7495759", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_0_catchments\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_0_catchments\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_0_catchments_hi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_0_catchments_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_0_catchments_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_0_catchments_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_0_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ae8917f", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_gms_catchments\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_gms_catchments\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_gms_catchments_hi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_gms_catchments_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_gms_catchments_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_gms_catchments_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_gms_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "c75d51cc", + "metadata": {}, + "source": [ + "

6 - UPDATE RATING CURVES IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9bcc72f7", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "sql = '''\n", + "DROP TABLE IF EXISTS derived.hydrotable;\n", + "DROP TABLE IF EXISTS derived.usgs_elev_table;\n", + "\n", + "SELECT distinct LPAD(huc8::text, 8, '0') as huc8 FROM derived.featureid_huc_crosswalk WHERE huc8 is not null;\n", + "'''\n", + "df = run_sql_in_db(sql)\n", + "\n", + "col_names = ['HydroID', 'feature_id', 'NextDownID', 'order_', 'Number of Cells',\n", + " 'SurfaceArea (m2)', 'BedArea (m2)', 'TopWidth (m)', 'LENGTHKM',\n", + " 'AREASQKM', 'WettedPerimeter (m)', 'HydraulicRadius (m)',\n", + " 'WetArea (m2)', 'Volume (m3)', 'SLOPE', 'ManningN', 'stage',\n", + " 'default_discharge_cms', 'default_Volume (m3)', 'default_WetArea (m2)',\n", + " 'default_HydraulicRadius (m)', 'default_ManningN',\n", + " 'precalb_discharge_cms', 'calb_coef_spatial', 'HUC', 'LakeID',\n", + " 'subdiv_applied', 'channel_n', 'overbank_n', 'subdiv_discharge_cms',\n", + " 'last_updated', 'submitter', 'calb_coef_usgs', 'obs_source',\n", + " 'calb_coef_final', 'calb_applied', 'discharge_cms']\n", + "\n", + "usecols = ['HydroID', 'feature_id', 'stage', 'discharge_cms']\n", + "\n", + "paginator = S3_CLIENT.get_paginator('list_objects')\n", + "operation_parameters = {'Bucket': FIM_BUCKET,\n", + " 'Prefix': f'{HAND_DATASETS_DPATH}/',\n", + " 'Delimiter': '/'}\n", + "page_iterator = paginator.paginate(**operation_parameters)\n", + "page_count = 0\n", + "for page in page_iterator:\n", + " page_count += 1\n", + " prefix_objects = page['CommonPrefixes']\n", + " for i, prefix_obj in enumerate(prefix_objects):\n", + " print(f\"Processing {i+1} of {len(prefix_objects)} on page {page_count}\")\n", + " branch_prefix = f'{prefix_obj.get(\"Prefix\")}branches/0/'\n", + "# ## UNCOMMENT FOR ALL BRANCHES - NOT JUST 0\n", + "# huc_branches_prefix = f'{prefix_obj.get(\"Prefix\")}branches/'\n", + "# branches_result = S3_CLIENT.list_objects(Bucket=FIM_BUCKET, Prefix=huc_branches_prefix, Delimiter='/')\n", + "# branch_prefix_objects = branches_result.get('CommonPrefixes')\n", + "# for i, branch_prefix_obj in enumerate(branch_prefix_objects):\n", + "# branch_prefix = branch_prefix_obj['Prefix']\n", + "# ## END UNCOMMENT\n", + " ## [UN]INDENT FROM HERE TO THE END IF [COMMENTED]UNCOMMENTED\n", + " branch_files_result = S3_CLIENT.list_objects(Bucket=FIM_BUCKET, Prefix=branch_prefix, Delimiter='/')\n", + " hydro_table_key = None\n", + " usgs_elev_table_key = None\n", + " for content_obj in branch_files_result.get('Contents'):\n", + " branch_file_prefix = content_obj['Key']\n", + " if 'hydroTable' in branch_file_prefix:\n", + " hydro_table_key = branch_file_prefix\n", + " elif 'usgs_elev_table.csv' in branch_file_prefix:\n", + " usgs_elev_table_key = branch_file_prefix\n", + "\n", + " if hydro_table_key and usgs_elev_table_key:\n", + "# print(f\"Found usgs_elev_table and hydroTable in {branch_prefix}\")\n", + " try:\n", + "# print(\"...Fetching csvs...\")\n", + " uet = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=usgs_elev_table_key)['Body']\n", + " ht = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=hydro_table_key)['Body']\n", + "# print(\"...Reading with pandas...\")\n", + " uet_df = pd.read_csv(uet)\n", + " ht_df = pd.read_csv(ht, header=0, names=col_names, usecols=usecols)\n", + "# print('...Writing to db...')\n", + " uet_df['fim_version'] = FIM_VERSION\n", + " try:\n", + " drop_indicies = []\n", + " for index, row in uet_df.iterrows():\n", + " if 'HydroID' in row and row['HydroID']:\n", + " iter_hydro_id = row['HydroID']\n", + "# print(f\"Subsetting hydrotable where HydroID == {iter_hydro_id}\")\n", + " ht_df_iter = ht_df[ht_df['HydroID']==iter_hydro_id]\n", + " if ht_df_iter.empty:\n", + " drop_indicies.append(index)\n", + " continue\n", + " ht_df_iter['fim_version'] = FIM_VERSION\n", + " ht_df_iter.to_sql(con=VIZ_DB_ENGINE, schema='derived', name='hydrotable', index=False, if_exists='append')\n", + " else:\n", + " drop_indicies.append(index)\n", + " mod_uet_df = uet_df.drop(drop_indicies)\n", + " mod_uet_df.to_sql(con=VIZ_DB_ENGINE, dtype={\"location_id\": Text(), \"nws_data_huc\": Text()}, schema='derived', name='usgs_elev_table', index=False, if_exists='append')\n", + " except Exception as e:\n", + " print('******************************************')\n", + " print(f'Error encountered on {branch_file_prefix}')\n", + " print(e)\n", + " print('******************************************') \n", + " except Exception as e:\n", + " raise e\n", + " print(f'Fetch failed: {e}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3a162bf", + "metadata": {}, + "outputs": [], + "source": [ + "sql = '''\n", + "DROP TABLE IF EXISTS derived.hydrotable_staggered;\n", + "SELECT\n", + " et.location_id,\n", + " ht.feature_id,\n", + " (stage + et.dem_adj_elevation) * 3.28084 as elevation_ft,\n", + " LEAD((stage + et.dem_adj_elevation) * 3.28084) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_elevation_ft,\n", + " discharge_cms * 35.3147 as discharge_cfs,\n", + " LEAD(discharge_cms * 35.3147) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_discharge_cfs\n", + "INTO derived.hydrotable_staggered\n", + "FROM derived.hydrotable AS ht\n", + "JOIN derived.usgs_elev_table AS et ON ht.\"HydroID\" = et.\"HydroID\" AND et.location_id IS NOT NULL;\n", + "'''\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d23f83a", + "metadata": {}, + "outputs": [], + "source": [ + "usgs_curves_key = f'{QA_DATASETS_DPATH}/usgs_rating_curves.csv'\n", + "obj_body = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=usgs_curves_key)['Body']\n", + "df = pd.read_csv(obj_body)\n", + "df.to_sql(con=VIZ_DB_ENGINE, schema='derived', name='usgs_rating_curves', index=False, if_exists='replace', chunksize=150000, method='multi')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "673b1aaf", + "metadata": {}, + "outputs": [], + "source": [ + "sql = '''\n", + "DROP TABLE IF EXISTS derived.usgs_rating_curves_staggered;\n", + "SELECT \n", + " location_id,\n", + " flow as discharge_cfs, \n", + " LEAD(flow) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_discharge_cfs,\n", + " stage,\n", + " navd88_datum,\n", + " elevation_navd88 as elevation_ft,\n", + " LEAD(elevation_navd88) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_elevation_ft\n", + "INTO derived.usgs_rating_curves_staggered\n", + "FROM derived.usgs_rating_curves;\n", + "'''\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "edd95566", + "metadata": {}, + "source": [ + "

7 - UPDATE SRC SKILL METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "645e99af", + "metadata": {}, + "outputs": [], + "source": [ + "src_stats_key = f'{QA_DATASETS_DPATH}/agg_nwm_recurr_flow_elev_stats_location_id.csv'\n", + "obj_body = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=src_stats_key)['Body']\n", + "df = pd.read_csv(obj_body)\n", + "# df['fim_version'] = FIM_VERSION\n", + "print(df.to_dict('records'))\n", + "# df.to_sql(con=VIZ_DB_ENGINE, schema='derived', name='src_skill', index=False, if_exists='replace')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "116df1bb-5c63-4377-8113-1d850f10d934", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from helper_functions.shared_funcs import execute_sql" + ] + }, + { + "cell_type": "markdown", + "id": "e5632191", + "metadata": {}, + "source": [ + "

8 - UPDATE FIM PERFORMANCE METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06ca5581", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "from helper_functions.shared_functions import *\n", + "import boto3\n", + "import geopandas as gpd\n", + "import pandas as pd\n", + "import sqlalchemy\n", + "from geoalchemy2 import Geometry\n", + "from geopandas import GeoDataFrame\n", + "\n", + "# os.environ['EGIS_DB_HOST'] ='' #TI DB\n", + "\n", + "db_type = \"egis\"\n", + "db_engine = get_db_engine(db_type)\n", + "\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "parent_directory = \"qc_fim_data\"\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "\n", + "#file_handles = ['fim_performance_points.csv']\n", + "\n", + "file_handles = ['fim_performance_points.csv', 'fim_performance_polys.csv', 'fim_performance_catchments_dissolved.csv']\n", + "\n", + "#file_handles = ['fim_performance_catchments_dissolved.csv']\n", + "\n", + "for file_handle in file_handles:\n", + " # Define path to file to download and its local download path, the download.\n", + " filename = f\"{QA_DATASETS_DPATH}/{file_handle}\"\n", + " print(filename)\n", + " local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}')\n", + " print(f\"--> Downloading {FIM_BUCKET}/{filename} to {local_download_path}\")\n", + " #s3.download_file(FIM_BUCKET, filename, local_download_path)\n", + " \n", + " if file_handle == 'fim_performance_catchments_dissolved.csv':\n", + " file_handle = 'fim_performance_catchments.csv'\n", + " \n", + " # -- Open file and reformat -- #\n", + " print(\"Reading file...\")\n", + " df = pd.read_csv(local_download_path)\n", + " print(\"File read.\")\n", + " # Rename headers.\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom'})\n", + " else:\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + " \n", + " print(df.dtypes)\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns= df.columns.str.lower()\n", + "\n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.astype({'huc': 'str'})\n", + " else:\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " df = df.astype({'oid': 'int'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + " \n", + " # zfill HUC8 field.\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df['huc'] = df['huc'].apply(lambda x: x.zfill(8))\n", + " else:\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + " \n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + " \n", + " # Chunk load data into DB\n", + " if file_handle in ['fim_performance_catchments.csv']:\n", + " df['version'] = FIM_VERSION\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 10000 #chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + " #geometry = 'MULTIPOLYGON'\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + " \n", + " first_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(), \n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " # Load remaining chunks into newly created table\n", + " \n", + " for remaining_chunk_df in list_df[1:]:\n", + " print(remaining_chunk_df.shape[0])\n", + " remaining_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='append', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(), \n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " else:\n", + " if 'points' in stripped_layer_name: geometry = 'POINT'\n", + " if 'polys' in stripped_layer_name: geometry = 'POLYGON'\n", + " print(\"GEOMETRY\")\n", + " print(geometry)\n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(), \n", + " 'geom': Geometry(geometry,srid=3857)\n", + " }\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "45ca031d", + "metadata": {}, + "source": [ + "

9 - UPDATE STAGE-BASED CATFIM DATA IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6e6210f1-f3c4-489a-aa1f-53646d7d0f59", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os \n", + "from helper_functions.shared_functions import * \n", + "import boto3 \n", + "import geopandas as gpd \n", + "import pandas as pd\n", + "import sqlalchemy\n", + "from geoalchemy2 import Geometry\n", + "\n", + "db_type = \"egis\" \n", + "db_engine = get_db_engine(db_type)\n", + "\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "parent_directory = \"qc_fim_data\"\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "\n", + "#file_handles = ['stage_based_catfim_sites.csv', 'stage_based_catfim.csv']\n", + "\n", + "#file_handles = ['stage_based_catfim_sites.csv', 'catfim_library_dissolved.csv']\n", + "\n", + "file_handles = ['catfim_library_dissolved.csv']\n", + "\n", + "for file_handle in file_handles: \n", + " \n", + " # Define path to file to download and its local download path, then download. \n", + " filename = f\"{QA_DATASETS_DPATH}/{file_handle}\" \n", + " print(filename) \n", + " local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}') \n", + " print(f\"--> Downloading {FIM_BUCKET}/{filename} to {local_download_path}\") \n", + " #s3.download_file(FIM_BUCKET, filename, local_download_path)\n", + "\n", + " # -- Open file and reformat -- #\n", + " print(\"Reading file...\")\n", + " df = pd.read_csv(local_download_path)\n", + " print(\"File read.\")\n", + "\n", + " if file_handle == 'catfim_library_dissolved.csv':\n", + " file_handle = 'stage_based_catfim.csv'\n", + " # Rename headers.\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + "\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns= df.columns.str.lower()\n", + "\n", + " # Remove sites that are in derived.ahps_restricted_sites\n", + " restricted_sites_df = get_db_values(\"derived.ahps_restricted_sites\", [\"*\"])\n", + " restricted_dict = restricted_sites_df.to_dict('records')\n", + "\n", + " # Change 'mapped' to 'no' if sites are present in restricted_sites_df\n", + " for site in restricted_dict:\n", + " nws_lid = site['nws_lid'].lower()\n", + " if \"sites\" in file_handle:\n", + " df.loc[df.ahps_lid==nws_lid, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==nws_lid, 'status'] = site['restricted_reason']\n", + " else:\n", + " df.loc[df.ahps_lid==nws_lid, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes'] # Subset df to only sites desired for mapping\n", + "\n", + " for sea_level_site in ['qutg1', 'augg1', 'baxg1', 'lamf1', 'adlg1', 'hrag1', 'stng1']:\n", + " if \"sites\" in file_handle:\n", + " df.loc[df.ahps_lid==sea_level_site, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==sea_level_site, 'status'] = 'Stage thresholds seem to be based on sea level and not channel thalweg'\n", + " else:\n", + " df.loc[df.ahps_lid==sea_level_site, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes'] # Subset df to only sites desired for mapping\n", + " \n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + "\n", + " if file_handle == 'stage_based_catfim.csv':\n", + " df['fim_version'] = FIM_VERSION\n", + "\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + "\n", + " # zfill HUC8 field.\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + "\n", + " if file_handle in ['stage_based_catfim_sites.csv']:\n", + " df = df.astype({'nws_data_rfc_forecast_point': 'str'})\n", + " df = df.astype({'nws_data_rfc_defined_fcst_point': 'str'})\n", + " df = df.astype({'nws_data_riverpoint': 'str'})\n", + "\n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + "\n", + " print(\"Dataframe shape\")\n", + " print(df.shape[0])\n", + "\n", + " # Chunk load data into DB\n", + " if file_handle in ['stage_based_catfim.csv']:\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 1000 #chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + "\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + " #geometry = 'MULTIPOLYGON'\n", + " first_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(), \n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " # Load remaining chunks into newly created table\n", + " \n", + " for remaining_chunk in list_df[1:]:\n", + " print(remaining_chunk.shape[0])\n", + " remaining_chunk.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='append', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " \n", + " \n", + " else:\n", + " geometry = 'POINT'\n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry(geometry,srid=3857)\n", + " }\n", + " )\n", + " \n", + " \n", + " print(\"Creating index...\")\n", + " with db_engine.connect() as conn:\n", + " result = conn.execute(text(f'CREATE INDEX ON reference.{stripped_layer_name} USING GIST (geom);'))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "422ec875-d590-481f-bf6c-f4453b76414b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "db_type = \"egis\"\n", + "db_engine = get_db_engine(db_type)\n", + "print(db_engine)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28048dba-494c-45bf-b334-f8deca65d68e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "s3 = boto3.client('s3')\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}')\n", + "filename = f\"/temp/catfim_library_exploded.gpkg\"\n", + "s3.download_file(FIM_BUCKET, filename, local_download_path)" + ] + }, + { + "cell_type": "markdown", + "id": "601192df", + "metadata": {}, + "source": [ + "

10 - UPDATE FLOW-BASED CATFIM DATA IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95c55cd0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "from helper_functions.shared_functions import *\n", + "import boto3\n", + "import geopandas as gpd\n", + "import pandas as pd\n", + "\n", + "# os.environ['EGIS_DB_HOST'] = '' #TI DB\n", + "\n", + "db_type = \"egis\"\n", + "db_engine = get_db_engine(db_type)\n", + "print(db_engine)\n", + "\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "parent_directory = \"qc_fim_data\"\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "\n", + "file_handles = ['flow_based_catfim_sites.csv', 'catfim_library_dissolved_flow_based.csv']\n", + "\n", + "for file_handle in file_handles:\n", + " # Define path to file to download and its local download path, the download.\n", + " filename = f\"{FIM_ROOT_DPATH}/qa_datasets/{file_handle}\"\n", + " print(filename)\n", + " local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}')\n", + " print(f\"--> Downloading {FIM_BUCKET}/{filename} to {local_download_path}\")\n", + " #s3.download_file(FIM_BUCKET, filename, local_download_path)\n", + " \n", + " # -- Open file and reformat -- #\n", + " print(\"Reading file...\")\n", + " df = pd.read_csv(local_download_path)\n", + " print(\"File read.\")\n", + " # Rename headers.\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + " \n", + " if file_handle == 'catfim_library_dissolved_flow_based.csv':\n", + " file_handle = 'flow_based_catfim.csv'\n", + " \n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns= df.columns.str.lower()\n", + "\n", + " # Remove sites that are in derived.ahps_restricted_sites\n", + " restricted_sites_df = get_db_values(\"derived.ahps_restricted_sites\", [\"*\"])\n", + " restricted_dict = restricted_sites_df.to_dict('records')\n", + "\n", + " # Change 'mapped' to 'no' if sites are present in restricted_sites_df\n", + " for site in restricted_dict:\n", + " nws_lid = site['nws_lid'].lower()\n", + " print(nws_lid)\n", + " if \"sites\" in file_handle:\n", + " #print(True)\n", + " #print(nws_lid)\n", + " df.loc[df.ahps_lid==nws_lid, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==nws_lid, 'status'] = site['restricted_reason']\n", + " #print(df.loc[df.ahps_lid==nws_lid]['status'])\n", + " else:\n", + " df.loc[df.ahps_lid==nws_lid, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes']\n", + " \n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + " \n", + " # zfill HUC8 field.\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + " \n", + " if file_handle in ['flow_based_catfim_sites.csv']:\n", + " df = df.astype({'nws_data_rfc_forecast_point': 'str'})\n", + " df = df.astype({'nws_data_rfc_defined_fcst_point': 'str'})\n", + " df = df.astype({'nws_data_riverpoint': 'str'})\n", + " \n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + " \n", + " print(\"Dataframe shape\")\n", + " print(df.shape[0])\n", + " \n", + " # Chunk load data into DB\n", + " if file_handle in ['flow_based_catfim.csv']:\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 1000 #chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + " \n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + " #geometry = 'POLYGON'\n", + " \n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " # Load remaining chunks into newly created table\n", + " for remaining_chunk in list_df[1:]:\n", + " print(remaining_chunk.shape[0])\n", + " \n", + " remaining_chunk.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='append', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " \n", + " else:\n", + " geometry = 'POINT'\n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry(geometry,srid=3857)\n", + " }\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "cb4c0634-0878-421e-88bd-c63cd0acbace", + "metadata": { + "tags": [] + }, + "source": [ + "

11 - UPDATE RAS2FIM DATA IN DB

" + ] + }, + { + "cell_type": "markdown", + "id": "00c42c0f-7e25-491c-9353-0e74a4089036", + "metadata": {}, + "source": [ + "Update from Tyler in early 2024: This process will need to be revisited, as Rob Hannah was working on updates to the Ras2FIM data model to sync up with our database. Brad and Corey were on point for this, so proper attention / planning will need to happen to mitigate the knowledge transfer loss / properly test any new updates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9be5017-b22e-43d5-96ff-73aa7313d9a5", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_stage_ft double precision;\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_stage_m double precision;\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_discharge_cfs double precision;\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_discharge_cms double precision\n", + "\"\"\"\n", + "\n", + "sql = \"\"\"\n", + "WITH lagged as (SELECT \n", + " feature_id,\n", + " (lag(stage_m, 1) OVER (PARTITION BY feature_id ORDER by stage_m)) as previous_stage_m,\n", + " (lag(stage_ft, 1) OVER (PARTITION BY feature_id ORDER by stage_ft)) as previous_stage_ft,\n", + " (lag(discharge_cfs, 1) OVER (PARTITION BY feature_id ORDER by discharge_cfs)) as previous_discharge_cfs,\n", + " (lag(discharge_cms, 1) OVER (PARTITION BY feature_id ORDER by discharge_cms)) as previous_discharge_cms\n", + "FROM ras2fim.geocurves)\n", + "\n", + "UPDATE ras2fim.geocurves gc\n", + "SET previous_stage_ft = lagged.previous_stage_ft,\n", + " previous_stage_m = lagged.previous_stage_m,\n", + " previous_discharge_cfs = lagged.previous_discharge_cfs,\n", + " previous_discharge_cms = lagged.previous_discharge_cms\n", + "FROM lagged\n", + "WHERE gc.feature_id = lagged.feature_id and gc.stage_ft = lagged.stage_ft;\n", + "\"\"\"\n", + "\n", + "sql = \"\"\"\n", + "SELECT\n", + " feature_id,\n", + " max(discharge_cfs) as max_rc_discharge_cfs,\n", + " max(stage_ft) as max_rc_stage_ft,\n", + " max(discharge_cms) as max_rc_discharge_cms,\n", + " max(stage_m) as max_rc_stage_m\n", + "INTO ras2fim.max_geocurves\n", + "FROM ras2fim.geocurves\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "id": "3fae3f0b-7669-4aaf-b50a-bf82aea06a00", + "metadata": {}, + "source": [ + "

12 - Clear the HAND Cache

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40cf4236-7320-4780-a6f5-b83258073bfe", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_max;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_geo;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_zero_stage;\n", + "\"\"\"\n", + "run_sql_in_db(sql)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.5.2.11 Update-checkpoint.ipynb b/Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.5.2.11 Update-checkpoint.ipynb new file mode 100644 index 00000000..243a15e7 --- /dev/null +++ b/Core/Manual_Workflows/FIM_data_loads/.ipynb_checkpoints/10. FIM Version 4.5.2.11 Update-checkpoint.ipynb @@ -0,0 +1,2755 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "220f464f-0726-479f-8871-155c640458de", + "metadata": { + "tags": [] + }, + "source": [ + "### This notebook was created by Corey Krewson in 2023 to facilitate all the steps needed to update the pipelines / EGIS map services, when a new FIM version is released. \n", + "\n", + "Unfortunately, these steps are still very manual, and this notebook is the main source of documentation to making these updates." + ] + }, + { + "cell_type": "markdown", + "id": "3aa5af89-47ec-45b6-a773-ea60bd07e002", + "metadata": { + "tags": [] + }, + "source": [ + "### Load Status for FIM 4.5.2.11\n", + "\n", + "1. `Crosswalk` : Aug 5, 2024 (reloaded with new model_column Aug 14, 2024)\n", + "2. `Lambda FIM_PREFIX` : Aug 5, 2024\n", + "3. `Lambda FIM_VERSION and Memory` : Aug 5, 2024\n", + "4. `ras2fim` : Aug 21, 2024\n", + " - had to reload Sep 16. Wrong starting project (was 5070, now 2277)\n", + " - redone again.. mixed projections on files (Sep 18, 2024)\n", + "5. `ras2fim Boundaries`: Ran in Aug ?? 2024\n", + "6. `AEP`\n", + " - `2 year` : -- done - Aug 23, 2024 - redone : Sep 18\n", + " - `5 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `10 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `25 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `50 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `HW / High Water` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `Change the hv-vpp-ti-viz-fim-data-prep Lambda memory back to 2048mb` : -- done - Aug 23, 2024\n", + " - Sep 16, 2024: needs reload as ras2fim needed reload\n", + "7. `Catchments`\n", + " - `Branch 0` : -- done - Aug 22, 2024\n", + " - `GMS` : -- done - Aug 22, 2024\n", + "8. `usgs_elev_table` : -- done - Aug 15, 2024\n", + "9. `hydrotable / hydrotable_staggered` : -- done - Aug 16, 2024\n", + "10. `usgs_rating_curve / usgs_rating_curves staggered` : -- done - Aug 16, 2024\n", + "11. `Skills Metrics` : -- Redone - Aug 19, 2024\n", + "12. `FIM Performance` : -- Aug 18/19 - points and poly''s done. Catchments re-done Aug 30\n", + "13. `CatFIM`\n", + " - `Stage Based CatFIM` : -- done Sep 3, 2024\n", + " - `Flow Based CatFIM` : -- done Sep 3, 2024\n", + " - `CatFIM FIM 30` : In progress\n", + "14. `Clear HAND cache` :\n", + "15. `GIT1 and `Terraform ??` : TBD\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e1ee2b5-b109-49e8-8255-f06449b44ee6", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "# Cell to manually pip reload a packages that the Jupyter engine not retained\n", + "!pip install numpy\n", + "!pip install geopandas\n", + "!pip install pyarrow\n", + "!pip install xarray\n", + "!pip install geoalchemy2\n", + "!pip install contextily\n", + "!pip install rioxarray\n", + "print(\"All loaded\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "103a0d12-b2a0-4586-ba0f-0ed6b2c4eb89", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# pd.set_option(\"max_info_rows\", 100000) # override " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b656259", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import codecs\n", + "import csv\n", + "import sys\n", + "\n", + "from datetime import datetime\n", + "\n", + "import boto3\n", + "import geopandas as gpd\n", + "import json\n", + "import pandas as pd\n", + "import s3fs\n", + "import sqlalchemy\n", + "import xarray as xr\n", + "\n", + "from geopandas import GeoDataFrame\n", + "from io import StringIO\n", + "from geoalchemy2 import Geometry\n", + "from shapely import wkt\n", + "from shapely.geometry import Polygon\n", + "from sqlalchemy.exc import DataError # yes, reduntant, fix it later\n", + "from sqlalchemy.types import Text # yes, reduntant, fix it later\n", + "\n", + "sys.path.append(os.path.join(os.path.abspath(''), '..'))\n", + "\n", + "import helper_functions.s3_shared_functions as s3_sf\n", + "import helper_functions.shared_functions as sf\n", + "# import helper_functions.viz_classes\n", + "\n", + "from helper_functions.viz_classes import database\n", + "from helper_functions.viz_db_ingest import lambda_handler as execute_db_ingest\n", + "\n", + "print(\"imports loaded\")\n", + "\n", + "# Note: Aug 2024: Sometimes if you need to do the pip install above, you need to reload this twice.. must be a circular dependency ?? or forced pkg reload\n", + "# Not sure why yet" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e944eff3-6023-48f4-9f57-27304a240447", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Aug 5, 2024: # The variable named FIM_VERSION will continue to be the field that joins all data together.\n", + "# But we need two new public display fields in the UI. We will no longer show a UI field which previously would have been\n", + "# \"FIM_4_5_2_11\". That won't be displayed anymore. The public field of:\n", + "# public_fim_version, for this edition, becomes \"FIM 5_0_0\" (yes.. three segs)\n", + "# public_model_version, for this edition, becomes \"HAND 4_5_2_11\". \n", + "# When we add ras2fim into the system, it's public_fim_version continues to be FIM 5_0_0,\n", + "# but ras2fim public_model_version, becomes \"ras2fim 2_0_3_0\"\n", + "\n", + "# NOTE: sep 19, 2024: creaing the 4.4.0.0 was just for learning purposes. Now Rob has access to UAT db's so I can compare against\n", + "# those next time if needed. We might remove the references to 4.4.0.0 next time\n", + "\n", + "OLD_FIM_VERSION = \"4.4.0.0\"\n", + "NEW_FIM_VERSION = \"4.5.2.11\"\n", + "PUBLIC_FIM_VERSION = \"FIM 5.0.0\" \n", + "FIM_MODEL_VERSION = \"HAND 4.5.2.11\" # on next major build (after Aug 2024, change this to space and dots. ie) HAND 4.5.2.11)\n", + "OLD_FIM_TAG = OLD_FIM_VERSION.replace('.', '_')\n", + "\n", + "FIM_ROOT_DPATH = f\"fim/fim_{NEW_FIM_VERSION.replace('.', '_')}\"\n", + "HAND_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/hand_datasets\"\n", + "QA_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/qa_datasets\"\n", + "\n", + "FIM_BUCKET = \"hydrovis-ti-deployment-us-east-1\"\n", + "FIM_CROSSWALK_FPATH = os.path.join(HAND_DATASETS_DPATH, \"crosswalk_table.csv\")\n", + "PIPELINE_ARN = 'arn:aws:states:us-east-1:526904826677:stateMachine:hv-vpp-ti-viz-pipeline'\n", + "\n", + "COLUMN_NAME_FIM_VERSION = \"fim_version\"\n", + "COLUMN_NAME_MODEL_VERSION = \"model_version\"\n", + "\n", + "# Sometimes these credential values get updated. To find the latest correct values, go to your AWS Console log page and click on the \"Access Key\"\n", + "# link to get the latest valid set. Using the \"AWS environment variables\" values.\n", + "# If this is not set correctly, you will get an HTTP error 400 when you call S3 lower.\n", + "# You might also see an error of 'An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.\" the creds are not correct\"\n", + "\n", + "# Helps us get to the keys. Note: This was added Oct 16, 2024 and is untested\n", + "sys.path.append(os.path.join(os.path.abspath(''), '../../../../AWS_Secret_keys'))\n", + "import AWS_Keys\n", + "\n", + "\n", + "S3_CLIENT = boto3.client(\"s3\")\n", + "STEPFUNCTION_CLIENT = boto3.client('stepfunctions')\n", + "VIZ_DB_ENGINE = sf.get_db_engine('viz')\n", + "\n", + "print(\"Global Variables loaded\")" + ] + }, + { + "cell_type": "markdown", + "id": "6a5827eb-3ca3-4b29-8ee7-f7c4f3c2c736", + "metadata": { + "tags": [] + }, + "source": [ + "

1 - UPLOAD FIM4 HYDRO ID/FEATURE ID CROSSWALK

" + ] + }, + { + "cell_type": "markdown", + "id": "28195858-0cb6-4ad3-8966-db1371a8452a", + "metadata": { + "tags": [] + }, + "source": [ + "February 2024 Update from Tyler: This code will need to be updated to handle a new hand_id unique integer that the fim team (Rob Hanna and Matt Luck) has added to the crosswalk, and is now important to fim runs. They also changed the field names / format to match our schema, so this chunk of code should be able to be simplified significantly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "007c59f4-72ff-4e3e-9f99-36a8e830c426", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + " # This was already done for 4.4.0.0, so we can skip it jump from 4.5.2.0 to 4.2.5.11\n", + " \n", + "\n", + "'''\n", + "Be Very Careful to just rename tables. If they have indexes, the index will now point to the new\n", + "table names but maintain the original index name. Those index names can really mess stuff up.\n", + "Best to never rename unless you rename indexes as well. This particular on is ok. \n", + "Note: When various '\"to_sql\" tools are run which have GIST indexes, this index column name issue\n", + "will be the problem.\n", + "\n", + "Why Drop instead of Truncate? if the schema changes for the incoming, truncate will have column\n", + "missmatches.\n", + "\n", + "We really should be backing up indexes and constraints as well.\n", + "\n", + "'''\n", + "\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename, it affects indexes that we might need\n", + "# tbl_name = \"derived.fim4_featureid_crosswalk\"\n", + "# new_table_name = f\"{tbl_name}_{OLD_FIM_TAG}\"\n", + "# sql = f'''\n", + "# CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE {tbl_name};\n", + "# '''\n", + "# sf.execute_sql(sql)\n", + "# print(f\"{tbl_name} copied to {new_table_name} if it does not already exists\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c96a49f2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "print(f\"Getting column name from {FIM_CROSSWALK_FPATH}\")\n", + "\n", + "data = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=FIM_CROSSWALK_FPATH)\n", + "d_reader = csv.DictReader(codecs.getreader(\"utf-8\")(data[\"Body\"]))\n", + "headers = d_reader.fieldnames\n", + "\n", + "# Aug 5, 2024 - Updated column names for 4.5.2.11\n", + "header_str = \"(\"\n", + "for header in headers:\n", + " header_str += header\n", + " if header in ['hand_id', 'hydro_id', 'lake_id']:\n", + " header_str += ' integer,'\n", + " elif header in ['branch_id', 'feature_id']:\n", + " header_str += ' bigint,'\n", + " else:\n", + " header_str += ' TEXT,'\n", + "header_str = header_str[:-1] + \")\"\n", + "print(header_str)\n", + "\n", + "db = database(db_type=\"viz\")\n", + "with db.get_db_connection() as conn, conn.cursor() as cur:\n", + " \n", + " print(f\"Deleting/Creating derived.fim4_featureid_crosswalk using columns {header_str}\")\n", + " sql = f\"DROP TABLE IF EXISTS derived.fim4_featureid_crosswalk; CREATE TABLE derived.fim4_featureid_crosswalk {header_str};\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Importing {FIM_CROSSWALK_FPATH} to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"\"\"\n", + " SELECT aws_s3.table_import_from_s3(\n", + " 'derived.fim4_featureid_crosswalk',\n", + " '', \n", + " '(format csv, HEADER true)',\n", + " (SELECT aws_commons.create_s3_uri(\n", + " '{FIM_BUCKET}',\n", + " '{FIM_CROSSWALK_FPATH}',\n", + " 'us-east-1'\n", + " ) AS s3_uri\n", + " ),\n", + " aws_commons.create_aws_credentials('{TI_ACCESS_KEY}', '{TI_SECRET_KEY}', '{TI_TOKEN}')\n", + " );\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " \n", + " # Aug 5, 2024: see notes at the top about the new FIM 5.0.0 system \n", + " # We will manually add a couple of new columns for public display\n", + " # New columns names are public_fim_version (FIM_5_0_0) and public model version (FIM_4_5_2_11)\n", + " print(f\"Adding {COLUMN_NAME_FIM_VERSION} column to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"ALTER TABLE derived.fim4_featureid_crosswalk ADD COLUMN IF NOT EXISTS {COLUMN_NAME_FIM_VERSION} text DEFAULT '{PUBLIC_FIM_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + " \n", + " print(f\"Adding {COLUMN_NAME_MODEL_VERSION} column to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"ALTER TABLE derived.fim4_featureid_crosswalk ADD COLUMN IF NOT EXISTS {COLUMN_NAME_MODEL_VERSION} text DEFAULT '{FIM_MODEL_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(\"Adding feature id index to derived.fim4_featureid_crosswalk\")\n", + " # Drop it already exists\n", + " sql = \"DROP INDEX IF EXISTS derived.fim4_crosswalk_feature_id\"\n", + " cur.execute(sql)\n", + " conn.commit() \n", + " sql = \"CREATE INDEX fim4_crosswalk_feature_id ON derived.fim4_featureid_crosswalk USING btree (feature_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(\"Adding hydro id index to derived.fim4_featureid_crosswalk\")\n", + " # Drop it already exists\n", + " sql = \"DROP INDEX IF EXISTS derived.fim4_crosswalk_hydro_id\"\n", + " cur.execute(sql)\n", + " conn.commit() \n", + " sql = \"CREATE INDEX fim4_crosswalk_hydro_id ON derived.fim4_featureid_crosswalk USING btree (hydro_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + "print(\"\")\n", + "print(f\"Successully loaded derived.fim4_featureid_crosswalk and updated it\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "23500c40-b088-4b62-aa10-fe2f88c52ef9", + "metadata": { + "tags": [] + }, + "source": [ + "

2 - UPDATE FIM HAND PROCESSING LAMBDA ENV VARIABLE WITH NEW FIM PREFIX

\n", + "\n", + "https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions/hv-vpp-ti-viz-hand-fim-processing?tab=configure\n", + "\n", + "Lambda name: hv-vpp-ti-viz-hand-fim-processing\n", + "\n", + "In the Configuration Tab, click on the `Environment variables` (left menu), then change the `FIX_PREFIX` to location of the latest hand_dataset you are working on. Referencial to S3 Bucket name.\n", + "
\n", + "ie) fim/fim_4_5_2_11/hand_datasets\n", + "\n", + "Aug 5, 2024: changed my FIM_PREFIX:\n", + "
from: fim/fim_4_5_2_0/hand_datasets\n", + "
to: fim/fim_4_5_2_11/hand_datasets\n" + ] + }, + { + "cell_type": "markdown", + "id": "040cf1f3-cdfd-467a-9ac0-5478a285f032", + "metadata": { + "tags": [] + }, + "source": [ + "

3 - UPDATE FIM DATA PREP LAMBDA ENV VARIABLE WITH NEW FIM VERSION AND MEMORY

\n", + "\n", + "https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions/hv-vpp-ti-viz-fim-data-prep?tab=code\n", + "\n", + "Lambda name: hv-vpp-ti-viz-hand-fim-processing\n", + "\n", + "In the `Configuration` Tab, click on the `Environment variables` (left menu), then change the `FIM_VERSION` to the latest fim model version. \n", + "
\n", + "ie) 4.5.2.11\n", + "

\n", + "Aug 5, 2024: changed my FIM_VERSION:\n", + "
from: 4.5.2.0\n", + "
to: 4.5.2.11\n", + "

\n", + "Then: Still in the Configuration Tab, now click on the `General Configuration` (left menu), followed \n", + "by the `edit` button on the far right side, to get into the `General Configuration` page details.\n", + "
Change (if they are not already there)\n", + "
Memory (text field) to 4096 (MB) and\n", + "
Emphermeral Storage tp 1024 (MB)\n", + "
\n", + "#### Note: Later in these steps we will change the Memory and Emphermal Storage back to default values, see below ####\n", + "\n", + "Aug 5, 2024: changed my Memory (4096) and Emphermal (1024):\n" + ] + }, + { + "cell_type": "markdown", + "id": "0ef11c15-c1c1-46a8-a65a-fa2a0c1dc97b", + "metadata": { + "tags": [] + }, + "source": [ + "

4 - LOAD AND UPDATE RAS2FIM DATA IN DB

\n", + "\n", + "

Note about ras2fim domain extents

\n", + "As of Aug 2024, a new service came online for a new layer for ras2fim domain extents. Don took care of it.\n", + "The new extent data was loaded as part of different tools and processes, but we will likly want to consolidate\n", + "it to here.\n", + "\n", + "When ras2fim datasets are released, they come with a \"release\" package that has all of the ras2fim models and geocurves\n", + "needed here, but also has domain extents for each HUC in the release package. That entire thing is loaded to S3\n", + "for HV to load. As we will upload a new ras2fim data / geocurves and domain extents at the same time, those load\n", + "scripts should all stay together (here for now). We can add that next time.\n", + "\n", + "However.. ras2fim will likely do releases a lot more regularily than FIM, so it should get it's own independeant load scripts\n", + "which this script can optionally reference if it likes (well.. future versions of this script, ie FIM 4.8.x.x or whatever)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dfc0a44c-8b46-4db5-a9a0-c65e0bf1e20b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Already done for 4.4.0.0 (4.5.2.11)\n", + "\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "\n", + "\n", + "# By doing a backup, we are leaving the original tables with the indexes and we want to keep them with\n", + "# ras2fim as it loads geometry and without those pre-existing indexes, loading can fail\n", + "# tbl_name = \"ras2fim.geocurves\"\n", + "# new_table_name = f\"{tbl_name}_{OLD_FIM_TAG}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE {tbl_name};\"\n", + "# sf.execute_sql(sql)\n", + "# print(f\"{tbl_name} copied to {new_table_name} if it does not already exists\")\n", + "\n", + "\n", + "# tbl_name = \"ras2fim.max_geocurves\"\n", + "# new_table_name = f\"{tbl_name}_{OLD_FIM_TAG}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE {tbl_name};\"\n", + "# sf.execute_sql(sql)\n", + "# print(f\"{tbl_name} copied to {new_table_name} if it does not already exists\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7e8c3939-f2fc-42de-921d-423d69e023f1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# NOTE: This can be removed in future ras2fim loads.\n", + "\n", + "\n", + "# Temp Aug 2024: We originally just did a table rename for the {table name} to add _4_4_0_0 on it.\n", + "# Then discovered that renaming it means the indexes are now with the new renamed tables\n", + "# When we load the ras2fim tables, they can't have some of the indexes in place.\n", + "# So.. for now, we are going to rename the _4_4_0_0 tables back to their original name, the do the backup\n", + "# above.\n", + "#sf.execute_sql(f'ALTER TABLE IF EXISTS ras2fim.geocurves_4_4_0_0 RENAME TO geocurves;')\n", + "#sf.execute_sql(f'ALTER TABLE IF EXISTS ras2fim.max_geocurves_4_4_0_0 RENAME TO max_geocurves')\n", + "#print(\"Done renaming them back\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60f910bf-4da7-4e62-b9b6-e981f21a23af", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# This function is not efficient, but as ras2fim has a built in geometry columns, it loads it as a string and not a \"geometry\" object.\n", + "# we have to add the records one at a time.\n", + "\n", + "# Aug 2024: Maybe eventually I can make this more generic, but for now it is ras2fim specific\n", + "# see the new one for catfim as it can likely be rolled into one function\n", + "\n", + "# UPDATE: Sep 19, 2024: We had to remove the chunking portion as we discovered that each csv being loaded might have \n", + "# different crs's. You have to know the incoming crs in order to reproject as the incoming csv's can not be used\n", + "# to auto detect the crs. We put in cards for the ras2fim team to have all final csv's come out as a standard\n", + "# projection (perferraly 3857). Going back to chunking will slow down our DB writes and speed it back up again\n", + "\n", + "# Most of the temp comment code is still in place for chunking.\n", + "\n", + "\n", + "def load_ras2fim_files_into_db(csv_file_list, s3_source_parent_prefix, schema_name, db_name):\n", + "\n", + " # TODO: change these to params and make more generic\n", + " # also tell that this is only if you have a geometry column (for now)\n", + "\n", + " print(f\"Loading data to database {schema_name}.{db_name}\")\n", + " print(\"\")\n", + "\n", + " if len(csv_file_list) == 0:\n", + " raise Exception(\"csv file list is empty\")\n", + "\n", + "\n", + " # source_crs = \"epsg:2277\" # (it is coming in as 5070) but we are changing it to 3857 as loading\n", + "\n", + " # The server has limited memory but it is faster to load as many csv's in at a time\n", + " # as resonablty possible. We are going to try it at chunks of 50 (50 csv files) which for ras2fim\n", + " # shouls be appx 2,000 records, but for ras2fim V2, we have 750 (ish) files.\n", + "\n", + " # We can leave this open the entire times as well.\n", + " s3_client = boto3.client(\"s3\")\n", + " default_kwargs = {\"Bucket\": FIM_BUCKET, \"Prefix\": s3_source_parent_prefix}\n", + "\n", + "\n", + " # chunk_size = 25 # number of csv's to load per set\n", + " total_row_count = 0 # all csv row counts combined. You should see this as a record count in the db when done\n", + " r2f_df = None # a re-used concatenating pd dataframe loading up sets of 20 csvs\n", + " # is_new_df = True # After we db load a set, we reset this to start a new set\n", + " is_first_db_set = True # Very first db load\n", + "\n", + " num_recs = len(csv_file_list)\n", + " print(f\"Total number of files to process are {num_recs}\")\n", + "\n", + " # We are going ot keep the db connection open the entire time. \n", + " # It is slow to open/close connections\n", + " # It \"should not\" ?? block any other scripts / services from usign it\n", + " # most Sql servers allow for more than one connection at a time.\n", + " db = database(db_type=\"viz\")\n", + "\n", + " for idx, full_file_url in enumerate(csv_file_list):\n", + "\n", + " print(f\"Dowloading {idx + 1} of {num_recs} files: {full_file_url}\")\n", + "\n", + " is_first_db_set = idx == 0\n", + " # if idx > 4:\n", + " # return # stub test\n", + "\n", + "# if is_new_df is True:\n", + " s3_client = boto3.client(\"s3\")\n", + " default_kwargs = {\"Bucket\": FIM_BUCKET, \"Prefix\": s3_source_parent_prefix}\n", + "\n", + "\n", + " # is_new_df = False\n", + " # else:\n", + " # temp_df = pd.read_csv(full_file_url)\n", + " # total_row_count += len(temp_df)\n", + " # r2f_df = pd.concat([r2f_df, temp_df])\n", + "\n", + " # we want it merge into the db on each xth (chunk size) record or the last record\n", + " # if ((idx + 1) == num_recs) or ((idx+1) % chunk_size == 0):\n", + "\n", + " # download the csv via pandas into a dataframe\n", + " r2f_df = pd.read_csv(full_file_url)\n", + "\n", + " total_row_count += len(r2f_df)\n", + " r2f_df = r2f_df.fillna(0)\n", + "\n", + " cur_csv = r2f_df.loc[0, 'crs']\n", + " # print(f\"Original crs = {cur_csv}\")\n", + "\n", + " # Create a new source_unit_id which traces back to the folder and code to create\n", + " # this specific huc and model in ras2fim\n", + " r2f_df['source_unit_id'] = r2f_df.apply(lambda row: row.unit_name + \"_\" + \n", + " str(row.unit_version), axis=1)\n", + " r2f_df.rename(columns={'source_code': 'feature_id_source_code', 'geometry': 'geom'}, inplace=True)\n", + " r2f_df['geom'] = r2f_df['geom'].apply(wkt.loads)\n", + "\n", + " # print(f\"... Next set of downloads and adjustments complete, now to db load - Last Idx: {idx + 1} \")\n", + "\n", + " r2f_geodf = gpd.GeoDataFrame(data=r2f_df, geometry='geom', crs=cur_csv)\n", + " # print(r2f_geodf)\n", + " # print(\"\")\n", + " r2f_reproj = r2f_geodf.to_crs(\"epsg:3857\")\n", + "\n", + " # If this is the first load, the type must be the value of \"replace\", else \"append\"\n", + " load_type = 'replace' if is_first_db_set is True else 'append'\n", + "\n", + " r2f_reproj.to_postgis(\n", + " name=db_name,\n", + " con=VIZ_DB_ENGINE,\n", + " schema=schema_name,\n", + " if_exists=load_type,\n", + " index=False,\n", + " )\n", + " print(\"... db load complete\")\n", + "\n", + " # Sanity check on crs\n", + " # if is_first_db_set:\n", + " # print(sf.run_sql_in_db(f\"SELECT ST_SRID(geom) FROM {schema_name}.{db_name} LIMIT 1\"))\n", + "\n", + " r2f_df = None\n", + " r2f_geodf = None\n", + " r2f_reproj = None\n", + " # is_new_df = True # reset it for the next set\n", + " s3_client = None # resets it so it is not open so long. It timse out if open too long\n", + " is_first_db_set = False\n", + "\n", + " # break\n", + "\n", + " # else don't write to db tu continue on to the next record\n", + "\n", + " # end for\n", + " print(\"\")\n", + " print(\"--------------------------------------------------------------\")\n", + " print(\"All records now loaded to the database\")\n", + "\n", + " with db.get_db_connection() as conn, conn.cursor() as cur:\n", + " # after all records are loaded to the db.\n", + " print(f\"Adding {COLUMN_NAME_FIM_VERSION} column to {schema_name}.{db_name}\")\n", + " sql = f\"ALTER TABLE {schema_name}.{db_name} ADD COLUMN IF NOT EXISTS {COLUMN_NAME_FIM_VERSION} text DEFAULT '{PUBLIC_FIM_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding {COLUMN_NAME_MODEL_VERSION} column to {schema_name}.{db_name}\")\n", + " sql = f\"ALTER TABLE {schema_name}.{db_name} ADD COLUMN IF NOT EXISTS {COLUMN_NAME_MODEL_VERSION} text DEFAULT '{model_version}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(\"Dropping un-necessary columns from DB ...\")\n", + " drop_col_names = [\"profile_num\", \"model_id\", \"xs_us\", \"xs_ds\", \"unit_name\", \"unit_version\", \"version\", \"crs\"]\n", + " # print(drop_col_names)\n", + " # print(\"\")\n", + "\n", + " sql = f\"ALTER TABLE {schema_name}.{db_name} \"\n", + " for col_name in drop_col_names:\n", + " sql += f\" DROP COLUMN {col_name},\"\n", + "\n", + " # the last char is a comma and we need to change it to be \" CASCASE;\"\n", + " sql = sql[0:-1] + \" CASCADE;\"\n", + " print(sql)\n", + " cur.execute(sql)\n", + " conn.commit()\n", + " print(f\"Total Rows loaded to DB is {total_row_count}\")\n", + " # end of def\n", + "\n", + "print(\"Download and db load ras2fim function loaded\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e57d7bd1-c852-416e-b259-715b023bf743", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Load the ras2fim.geocurves\n", + "\n", + "# Note: For Aug 2024 (ras 2.0.1.0 with appx 11 hucs, this took appx 1 hr 15 mins to run\n", + "\n", + "model_version = \"ras2fim 2.0.1.0\"\n", + "new_s3_version_folder = \"v2_0\"\n", + "s3_source_parent_prefix = f\"ras2fim/{new_s3_version_folder}\"\n", + "\n", + "start_dt = datetime.now()\n", + "print(\"\")\n", + "print(\"Starting loading of ras2fim.geocurves\")\n", + "\n", + "\n", + "# Aug 21 2024, AWS Creds expired and died just after loading rec 2475 of 7948.\n", + "# Commented out truncate, reset csv_list to be recs 2476 and higher and restarted.\n", + "# All over exact time lost, but can esimate it.\n", + "sql = '''\n", + " TRUNCATE TABLE ras2fim.geocurves;\n", + " TRUNCATE TABLE ras2fim.max_geocurves;\n", + "'''\n", + "print(sf.execute_sql(sql))\n", + "print(\"geocurves and max_geocurves tables truncated to start clean\")\n", + "print(\"\")\n", + "\n", + "# Now download the s3 geocurves\n", + "# Overloaded the server as the memory couldn't handle it.\n", + "# r2f_df = s3_sf.download_S3_csv_files_to_df(FIM_BUCKET, s3_source_parent_prefix, True)\n", + "\n", + "# lets just get a list of files, then iterate over them to load each to the db one at a time.\n", + "r2f_file_names = s3_sf.get_s3_subfolder_file_names(FIM_BUCKET, s3_source_parent_prefix, False)\n", + "\n", + "if len(r2f_file_names) == 0:\n", + " raise Exception(\"No file names found\")\n", + "\n", + "\n", + "csv_file_list = list(filter(lambda x: (x.endswith(\".csv\") == True), r2f_file_names))\n", + "if len(csv_file_list) == 0:\n", + " raise Exception(\"No csv file names found\")\n", + "\n", + "# print(csv_file_list)\n", + "\n", + "# Test against just 20 records for a timing test\n", + "# test_list = csv_file_list[:20]\n", + "# print(test_list)\n", + "\n", + "print(\"Loading df into ras2fim geocurve db\")\n", + "\n", + "load_ras2fim_files_into_db(csv_file_list, s3_source_parent_prefix, 'ras2fim', 'geocurves')\n", + "\n", + "# See note above about having to restart at rec num 2475 (our index displays were 1 based and not zero based\n", + "# restart_list = csv_file_list[974:]\n", + "# load_ras2fim_files_into_db(restart_list, s3_source_parent_prefix, 'ras2fim', 'geocurves')\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(\".... ras2fim files now loaded to ras2fim.geocurves\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ded5372c-d94e-4276-be77-b13a94db55cc", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# ras2fim \"previous\" columns loading\n", + "\n", + "print(\"... Starting ras2fim previous stage adding and max_geocurves creating\")\n", + "start_dt = datetime.now()\n", + "\n", + "sql = \"\"\"\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_stage_ft double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_stage_m double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_discharge_cfs double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_discharge_cms double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS oid INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY;\n", + "\"\"\" \n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = '''DROP TABLE IF EXISTS ras2fim.temp_ras2fim_lagged;'''\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "db = database(db_type=\"viz\")\n", + "with db.get_db_connection() as conn, conn.cursor() as cur:\n", + "\n", + " # PS. It is ok that there are some nulls in the four \"previous\" columns\n", + " sql = \"\"\"\n", + " CREATE TABLE ras2fim.temp_ras2fim_lagged as (SELECT\n", + " feature_id,\n", + " stage_ft,\n", + " (lag(stage_m, 1) OVER (PARTITION BY feature_id ORDER by stage_m)) as previous_stage_m,\n", + " (lag(stage_ft, 1) OVER (PARTITION BY feature_id ORDER by stage_ft)) as previous_stage_ft,\n", + " (lag(discharge_cfs, 1) OVER (PARTITION BY feature_id ORDER by discharge_cfs)) as previous_discharge_cfs,\n", + " (lag(discharge_cms, 1) OVER (PARTITION BY feature_id ORDER by discharge_cms)) as previous_discharge_cms\n", + " FROM ras2fim.geocurves)\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " sql = \"\"\"\n", + " UPDATE ras2fim.geocurves gc\n", + " SET previous_stage_ft = lagged.previous_stage_ft,\n", + " previous_stage_m = lagged.previous_stage_m,\n", + " previous_discharge_cfs = lagged.previous_discharge_cfs,\n", + " previous_discharge_cms = lagged.previous_discharge_cms\n", + " FROM ras2fim.temp_ras2fim_lagged as lagged\n", + " WHERE gc.feature_id = lagged.feature_id\n", + " and gc.stage_ft = lagged.stage_ft;\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + "\n", + "print(\"Removing ras2fim.temp_ras2fim_lagged table\")\n", + "sql = \"DROP TABLE IF EXISTS ras2fim.temp_ras2fim_lagged;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "print(\"Adding indexes if required\")\n", + "\n", + "sql = \"ALTER TABLE IF EXISTS ras2fim.geocurves OWNER to viz_proc_admin_rw_user;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"ALTER TABLE IF EXISTS ras2fim.geocurves OWNER to viz_proc_admin_rw_user;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.geocurves_discharge_cms_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS geocurves_discharge_cms_index ON ras2fim.geocurves USING btree (discharge_cms ASC NULLS LAST)\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.geocurves_feature_id_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS geocurves_feature_id_index ON ras2fim.geocurves USING btree (feature_id ASC NULLS LAST)\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.geocurves_previous_discharge_cms_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS geocurves_previous_discharge_cms_index\n", + " ON ras2fim.geocurves USING btree (previous_discharge_cms ASC NULLS LAST)\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "# Skip for now.. not sure if it will be needed in the next set\n", + "# -- DROP INDEX IF EXISTS ras2fim.idx_geocurves_geom;\n", + "# CREATE INDEX IF NOT EXISTS idx_geocurves_geom\n", + "#     ON ras2fim.geocurves USING gist\n", + "#     (geom)\n", + "#     TABLESPACE pg_default;\n", + "\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(\".... Done - ras2fim previous stage columns added\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1bd997c-f813-49dd-94e0-adf062f3b74b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# ras2fim max_geocurve loading\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "print(\"Start of creating and loading max_geocurves table\")\n", + "\n", + "# Table can't have any indexes as nothing in unique enough\n", + "# We shoudl have an oid column though\n", + "sql = \"DROP TABLE IF EXISTS ras2fim.max_geocurves;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"\"\"\n", + "CREATE TABLE ras2fim.max_geocurves as (\n", + " SELECT\n", + " feature_id,\n", + " max(discharge_cfs) as max_rc_discharge_cfs,\n", + " max(stage_ft) as max_rc_stage_ft,\n", + " max(discharge_cms) as max_rc_discharge_cms,\n", + " max(stage_m) as max_rc_stage_m\n", + " FROM ras2fim.geocurves\n", + " GROUP BY feature_id )\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.max_geocurves_feature_id_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS max_geocurves_feature_id_index ON \n", + " ras2fim.max_geocurves USING btree (feature_id ASC NULLS LAST);\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "print(\"max_geocurves table created and filled\")\n", + "\n", + "\n", + "print(\"\")\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "bec1b8bf-e1dc-4525-9066-afef7273e289", + "metadata": { + "tags": [] + }, + "source": [ + "

5 - Load the Ras2Fim boundaries into egis

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "251905aa-259a-4ef4-9590-dcd31375c624", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Moves data from local shapefile to EGIS\n", + "\n", + "# Importing Modules\n", + "import os\n", + "import sys\n", + "import helper_functions.shared_functions as sf\n", + "import geopandas as gpd\n", + "\n", + "# sys path if needed\n", + "sys.path.append(os.path.join(os.path.abspath(''), '..'))\n", + "\n", + "# Dir location of your data\n", + "DATA_DPATH = r\"/home/ec2-user/SageMaker/Don - Campground/Don - Store\"\n", + "# File location of your shapefile data\n", + "DATASET_DPATH = f\"{DATA_DPATH}/main_huc8.shp\"\n", + "# Check path by printing\n", + "print(DATASET_DPATH)\n", + "\n", + "# Only use when you want to create something new\n", + "gdf = gpd.read_file(DATASET_DPATH, columns='geometry')\n", + "gdf.to_postgis(name=\"boundaries2\", con=sf.get_db_engine(db_type=\"viz\"),\n", + " schema=\"ras2fim\", if_exists=\"replace\")\n", + "\n", + "# add an oid field to your data\n", + "sql = \"\"\"\n", + "ALTER TABLE ras2fim.boundaries ADD COLUMN oid SERIAL PRIMARY KEY;\n", + "\"\"\"\n", + "sf.execute_sql(sql)\n", + "\n", + "# delete a table in egis if you made a mistake or such\n", + "sql = \"\"\"\n", + "DROP TABLE IF EXISTS reference.ras2fim_boundaries;\n", + "\"\"\"\n", + "sf.execute_sql(sql, db_type=\"egis\")\n", + "\n", + "# The function move_data_from_viz_to_egis is called because the data needs to \n", + "# be in the egis before publishing to uat or prd" + ] + }, + { + "cell_type": "markdown", + "id": "316b1321-f570-4f53-aeee-f8798330642f", + "metadata": { + "tags": [] + }, + "source": [ + "

6 - Run AEP FIM Pipelines.

\n", + "Updated Documentation from Tyler Early 2024: This can be done in a couple of diferent ways.\n", + "\n", + "1) One option is to use the pipeline_input code created below by Corey to start the AEP pipelines directly from this notebook.
\n", + " However, those pipeline_input dictionaries may very well be be out of date, pending more recent updates to the pipelines.\n", + "{\n", + " \"configuration\": \"reference\",\n", + " \"products_to_run\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"invoke_step_function\": false\n", + "}\n", + "\n", + "Using this test event will produce the pipeline instructions, printing any errors that come up, and you can simply change the invoke_step_function flag to True when you're ready to actually invoke a pipeline run (which you can monitor/manage in the step function gui). You will need to manually update the static_nwm_aep_inundation_extent_library.yml product config file to only run 1 aep configuration at a time, and work through the configs as the pipelines finish (takes about an hour each). I've also found that the fim_data_prep lambda function needs to be temporarilly increased to ~4,500mb of memory to run these pipelines. It's also worth noting that these are very resource intesive pipelines, as FIM is calculated for every reach in the nation. AWS costs can amount to hundreds or even thousands of dollars by running these pipelines, so use responsibly.\n", + "\n", + "A couple other important notes:\n", + "- These AEP configurations write data directly to the aep_fim schema in the egis RDS database, instead of the viz database.\n", + "- You'll need to dump the aep_fim schema after that is complete for backup / deployment into other environments.\n", + "- This process has not been tested with new NWM 3.0 Recurrence Flows, and a good thorough audit / QC check of output data is warranted, given those changes and the recent updates to the pipelines.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a698067", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Aug 6, 2024: Note: This was created after all intervals were created, so only HW was tested against\n", + "\n", + "def get_aep_pipeline_input(stage_interval):\n", + " pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"python_preprocessing\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": f\"rf_{stage_interval}_inundation\",\n", + " \"target_table\": f\"aep_fim.rf_{stage_interval}_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": f\"rf_{stage_interval}_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {},\n", + " \"logging_info\": {\n", + " \"Timestamp\": int(datetime.now().timestamp())\n", + " }\n", + " }\n", + "\n", + " return pipeline_input\n", + "\n", + "print(\"function: get_aep_pipeline_input loaded\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6d6ee69", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 2 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"2\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_2_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 2 year flows ie: rf_2_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4f89d9a", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 5 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"5\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_5_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 5 year flows ie: rf_5_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "791d1a8b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 10 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"10\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_10_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 10 year flows ie: rf_10_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1bb87128", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 25 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"25\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_25_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 25 year flows ie: rf_25_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4832e4e0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 50 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"50\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_50_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 50 year flows ie: rf_50_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "187e83bc-ebbe-4615-a046-e0ef7b09ad3b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### HW (High Water) Flow\n", + "pipeline_input = get_aep_pipeline_input(\"high_water\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_hw_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : High Water year flows ie: rf_hw_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n", + "print(\"\")" + ] + }, + { + "cell_type": "markdown", + "id": "2c810767-2f5d-46b2-860c-5d5c549f2e2a", + "metadata": { + "tags": [] + }, + "source": [ + "

IMPORTANT: Return hv-vpp-ti-viz-fim-data-prep Lambda memory to 2048mb

\n", + "\n", + "https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions/hv-vpp-ti-viz-fim-data-prep?tab=code\n", + "\n", + "Lambda name: hv-vpp-ti-viz-hand-fim-processing\n" + ] + }, + { + "cell_type": "markdown", + "id": "48074dbe-ead7-467f-ae68-16c746115efc", + "metadata": {}, + "source": [ + "

7 - RUN CATCHMENT WORKFLOWS 2 CONFIGS AT A TIME. CHECK FOR STEP FUNCTION FINISHING BEFORE STARTING NEW ONE

" + ] + }, + { + "cell_type": "markdown", + "id": "9b33a346-ee44-4844-9687-627ccd601263", + "metadata": { + "tags": [] + }, + "source": [ + "### 7a - Branch 0 Catchments. Wait until it is done before kicking off the next GMS (Level Path) catchments load a bit lower. ###" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c77d6e5b-f5fb-422f-a6c3-0f53743cd631", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# TODO: Add backups to these (4.4.0.0) (already not available for 4.4.0.0)\n", + "\n", + "\n", + "# TODO: We likely need to keep the schema, so trun is fine for now, but eventually, get a lsit of the indexes and re-build \n", + "# indexes each time as/if needed. Granted these tables are loaded via Lambdas, so I am not sure how indexes will play into that\n", + "\n", + "sf.execute_sql('''\n", + "TRUNCATE \n", + " fim_catchments.branch_0_catchments, \n", + " fim_catchments.branch_0_catchments_hi, \n", + " fim_catchments.branch_0_catchments_prvi;\n", + "''', db_type=\"egis\")\n", + "\n", + "print(\"Catchment Truncation for Branch 0 Done\")\n", + "print(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7495759", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"python_preprocessing\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_0_branches\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_0_branches\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_0_branches_hi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_0_branches_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_0_branches_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_0_branches_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {},\n", + " \"logging_info\": {\n", + " \"Timestamp\": int(datetime.now().timestamp())\n", + " }\n", + "}\n", + "\n", + "pipeline_name = f\"sagemaker_0_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "# TODO: For later... fix fim_version value and add model_version column. current fim_version vlaue is showing 4.5.2.11\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(\"Catchments Branch 0 load kicked off. Last runtime: 23:38.019. \"\n", + " f\"Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "d792a88e-51fd-4e28-9360-b90abd99ddaf", + "metadata": {}, + "source": [ + "### 7b - GMS (Level Paths / non branch 0) catchments ###" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ea2a5be-9936-4abe-832a-8582f3c3af64", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# TODO: Add backups to these\n", + "\n", + "sf.execute_sql('''\n", + "TRUNCATE\n", + " fim_catchments.branch_gms_catchments,\n", + " fim_catchments.branch_gms_catchments_hi,\n", + " fim_catchments.branch_gms_catchments_prvi;\n", + "''', db_type=\"egis\")\n", + "\n", + "print(\"Catchment Truncation for GMS (Level Path) Branchs Done\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ae8917f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"python_preprocessing\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_gms_branches\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_gms_branches\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_gms_branches_hi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_gms_branches_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_gms_branches_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_gms_branches_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {},\n", + " \"logging_info\": {\n", + " \"Timestamp\": int(datetime.now().timestamp())\n", + " }\n", + "}\n", + "\n", + "pipeline_name = f\"sagemaker_gms_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "# TODO: For later... fix fim_version value and add model_version column. current fim_version vlaue is showing 4.5.2.11\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(\"Catchments GMS Branches (Level Paths / non branch 0) load kicked off.\"\n", + " f\" Last runtime: 24:45.150. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "6ff4dc6b-c41b-412c-9d9f-d812c5c72115", + "metadata": { + "tags": [] + }, + "source": [ + "

8 - Recreate derived.usgs_elev_table

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e4eb95e-e147-4789-a76b-d8bda33bc3cb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Already run for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.usgs_elev_table RENAME TO usgs_elev_table_fim_{OLD_FIM_TAG};')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2dd0c144-5a20-4899-b946-a6dd9ae49b53", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# NOTE: Aug 6, 2024 - There is already a 4.4.0.0 backup. How did it get made?\n", + "# Has appx 2,150 HUCs to process, but this section goes quickly.\n", + "\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.usgs_elev_table;')\n", + "\n", + "uet_usecols = ['location_id', 'HydroID', 'dem_adj_elevation', 'nws_lid', 'levpa_id']\n", + "\n", + "paginator = S3_CLIENT.get_paginator('list_objects')\n", + "operation_parameters = {'Bucket': FIM_BUCKET,\n", + " 'Prefix': f'{HAND_DATASETS_DPATH}/',\n", + " 'Delimiter': '/'}\n", + "page_iterator = paginator.paginate(**operation_parameters)\n", + "page_count = 0\n", + "for page in page_iterator:\n", + " page_count += 1\n", + " prefix_objects = page['CommonPrefixes']\n", + " for i, prefix_obj in enumerate(prefix_objects):\n", + " print(f\"Processing {i+1} of {len(prefix_objects)} on page {page_count}\")\n", + " huc_prefix = prefix_obj.get(\"Prefix\")\n", + " usgs_elev_table_key = f'{huc_prefix}usgs_elev_table.csv'\n", + " try:\n", + " uet = S3_CLIENT.get_object(\n", + " Bucket=FIM_BUCKET, \n", + " Key=usgs_elev_table_key\n", + " )['Body']\n", + " uet_df = pd.read_csv(uet, header=0, usecols=uet_usecols)\n", + " uet_df['fim_version'] = PUBLIC_FIM_VERSION\n", + " uet_df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + " uet_df.to_sql(\n", + " con=VIZ_DB_ENGINE,\n", + " dtype={\n", + " \"location_id\": Text(),\n", + " \"nws_data_huc\": Text()\n", + " },\n", + " schema='derived',\n", + " name='usgs_elev_table',\n", + " index=False, \n", + " if_exists='append'\n", + " )\n", + " except Exception as e:\n", + " if \"NoSuchKey\" in str(e):\n", + " pass\n", + " else:\n", + " raise e\n", + " \n", + "print(\"usgs_elev_tables load completed\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "92a02c35-16a9-4cd8-9fd6-61d20b3e6feb", + "metadata": {}, + "source": [ + "

9 - Recreate derived.hydrotable_staggered

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18a2a7c2-7499-4ebc-a878-769e62dfbd6b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Already run for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.hydrotable_staggered RENAME TO hydrotable_staggered_{OLD_FIM_TAG};')\n", + "#print(\"derived.hydrotable_staggered renamed\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33026eb6-fbc7-47f7-a44b-f9cea8f0911b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Takes appx 5.75 to 6 hrs to run\n", + "\n", + "print(\"hydrotable reloaded - started\")\n", + "start_dt = datetime.now()\n", + "\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.hydrotable;')\n", + "sql = '''\n", + "SELECT distinct LPAD(huc8::text, 8, '0') as huc8 FROM derived.featureid_huc_crosswalk WHERE huc8 is not null;\n", + "'''\n", + "df = sf.sql_to_dataframe(sql)\n", + "ht_usecols = ['HydroID', 'feature_id', 'stage', 'discharge_cms']\n", + "\n", + "paginator = S3_CLIENT.get_paginator('list_objects')\n", + "operation_parameters = {'Bucket': FIM_BUCKET,\n", + " 'Prefix': f'{HAND_DATASETS_DPATH}/',\n", + " 'Delimiter': '/'}\n", + "page_iterator = paginator.paginate(**operation_parameters)\n", + "page_count = 0\n", + "for page in page_iterator:\n", + " page_count += 1\n", + " prefix_objects = page['CommonPrefixes']\n", + " for i, prefix_obj in enumerate(prefix_objects):\n", + " print(f\"Processing {i+1} of {len(prefix_objects)} on page {page_count}\")\n", + " branch_prefix = f'{prefix_obj.get(\"Prefix\")}branches/0/'\n", + " branch_files_result = S3_CLIENT.list_objects(\n", + " Bucket=FIM_BUCKET, \n", + " Prefix=branch_prefix, \n", + " Delimiter='/'\n", + " )\n", + " hydro_table_key = None\n", + " for content_obj in branch_files_result.get('Contents'):\n", + " branch_file_prefix = content_obj['Key']\n", + " if 'hydroTable' in branch_file_prefix:\n", + " hydro_table_key = branch_file_prefix\n", + "\n", + " if hydro_table_key:\n", + " # print(f\"Found usgs_elev_table and hydroTable in {branch_prefix}\")\n", + " try:\n", + " # print(\"...Fetching csvs...\")\n", + " ht = S3_CLIENT.get_object(\n", + " Bucket=FIM_BUCKET,\n", + " Key=hydro_table_key\n", + " )['Body']\n", + " # print(\"...Reading with pandas...\")\n", + " ht_df = pd.read_csv(ht, header=0, usecols=ht_usecols)\n", + " # print('...Writing to db...')\n", + " ht_df['fim_version'] = PUBLIC_FIM_VERSION\n", + " ht_df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + " ht_df.to_sql(\n", + " con=VIZ_DB_ENGINE, \n", + " schema='derived',\n", + " name='hydrotable',\n", + " index=False,\n", + " if_exists='append'\n", + " )\n", + " except Exception as e:\n", + " raise e\n", + " print(f'Fetch failed: {e}')\n", + " \n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(\"hydrotable reload done\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cc764e4-7e67-4b51-a100-6021e31416cd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "print(\"hydrotable_staggered started\")\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "sql = '''\n", + "DROP TABLE IF EXISTS derived.hydrotable_staggered;\n", + "SELECT\n", + " et.location_id,\n", + " ht.feature_id,\n", + " (stage + et.dem_adj_elevation) * 3.28084 as elevation_ft,\n", + " LEAD((stage + et.dem_adj_elevation) * 3.28084) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_elevation_ft,\n", + " discharge_cms * 35.3147 as discharge_cfs,\n", + " LEAD(discharge_cms * 35.3147) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_discharge_cfs\n", + "INTO derived.hydrotable_staggered\n", + "FROM derived.hydrotable AS ht\n", + "JOIN derived.usgs_elev_table AS et ON ht.\"HydroID\" = et.\"HydroID\" AND et.location_id IS NOT NULL;\n", + "'''\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"hydrotable_staggered reload done\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74f21c03-ca36-402c-a69b-396162720f66", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# we don't need the hydrotable anymore as it has been reloaded and adjusted above in hydrotable_staggered\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.hydrotable;')\n", + "print(\"Done dropping derived.hydrotable, post hydrotable_staggered load\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "0237f374-5829-4050-b503-958c9d4c3703", + "metadata": { + "tags": [] + }, + "source": [ + "

10 - Recreate derived.usgs_rating_curves_staggered

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "461f20b4-8442-4c0e-9114-ea62764cd789", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Aug 16, 2024 - done for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "# Aug 27, 2024: This needs to be redone so we don't rename tables, it messes up indexes and index names when we use _to_sql commands later\n", + "\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.usgs_rating_curves RENAME TO usgs_rating_curves_{OLD_FIM_TAG};')\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.usgs_rating_curves_staggered RENAME TO usgs_rating_curves_staggered_{OLD_FIM_TAG};')\n", + "# print(\"usgs rating curve tables renamed and cleaned\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b752fce5-c8d7-4064-92d7-842c22d1723e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "sql = '''\n", + " DROP TABLE IF EXISTS derived.usgs_rating_curves;\n", + " DROP TABLE IF EXISTS derived.usgs_rating_curves_staggered;\n", + "'''\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"Done dropping usgs_rating_curves and usgs_rating_curves_staggered\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6a0cc18-de82-4bd8-bd4d-c3ad021a1dec", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# run the script to load the usgs_rating_curve.csv. Exact duration not yet known. Appx 30 min (??)\n", + "\n", + "start_dt = datetime.now()\n", + "event = {\n", + " 'target_table': 'derived.usgs_rating_curves',\n", + " 'target_cols': ['location_id', 'flow', 'stage', 'navd88_datum', 'elevation_navd88'],\n", + " 'file': f'{QA_DATASETS_DPATH}/usgs_rating_curves.csv',\n", + " 'bucket': FIM_BUCKET,\n", + " 'reference_time': '2023-08-23 00:00:00',\n", + " 'keep_flows_at_or_above': 0,\n", + " 'iteration_index': 0\n", + "}\n", + "\n", + "sf.execute_db_ingest(event, None)\n", + "\n", + "print(\"done loading usgs_rating_curves\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4548d5e8-303e-44e0-a8a5-7b1947214b4e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Takes under a minute\n", + "print(\"Starting usgs_rating_curves_staggered build based on usgs_rating_curve table\")\n", + "\n", + "sql = '''\n", + "SELECT \n", + " location_id,\n", + " flow as discharge_cfs, \n", + " LEAD(flow) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_discharge_cfs,\n", + " stage,\n", + " navd88_datum,\n", + " elevation_navd88 as elevation_ft,\n", + " LEAD(elevation_navd88) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_elevation_ft\n", + "INTO derived.usgs_rating_curves_staggered\n", + "FROM derived.usgs_rating_curves;\n", + "'''\n", + "\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"Done loading usgs_rating_curves_staggered\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d1a77875-f569-4410-888c-b132714a7c9e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# usgs_rating_curves is a temp table and is loaded with some changes into the usgs_rating_curves_staggered\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.usgs_rating_curves;')\n", + "print(\"Done dropping derived.usgs_rating_curves, post loading usgs_rating_curves_staggered\")" + ] + }, + { + "cell_type": "markdown", + "id": "ee640076-be6f-47f5-b091-f60192502bd0", + "metadata": { + "tags": [] + }, + "source": [ + "

11 - UPDATE SRC SKILL METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95c472f8-0557-4864-8536-1814f3ac4286", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Already run for 4.4.0.0 (4.5.2.11)\n", + "\n", + "'''\n", + "Be Very Careful to just rename tables. If they have indexes, the index will now point to the new\n", + "table names but maintain the original index name. Those index names can really mess stuff up.\n", + "Best to never rename unless you rename indexes as well. This particular on is ok. \n", + "Note: When various '\"to_sql\" tools are run which have GIST indexes, this index column name issue\n", + "will be the problem.\n", + "\n", + "Why Drop instead of Truncate? if the schema changes for the incoming, truncate will have column\n", + "missmatches.\n", + "\n", + "We really should be backing up indexes and constraints as well.\n", + "\n", + "'''\n", + "\n", + "# TODO: Aug 2024: Change this away from \"rename\" to copy / drop. \n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.src_skill_temp RENAME TO src_skill_temp_{OLD_FIM_TAG};')\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.src_skill RENAME TO src_skill_{OLD_FIM_TAG};')\n", + "\n", + "# print(\"src_skill and src_skill_temps db renamed\")\n", + "\n", + "\n", + "# TODO: Rob Aug 2024: change this to backup of table and not rename as it messses with indexes\n", + "# Don't need a copy of the reference src_skill table , so just drop it.\n", + "new_table_name = f\"derived.src_skill_temp_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE derived.src_skill_temp;\n", + "'''\n", + "\n", + "\n", + "#print(\"src_skill and src_skill_temps db renamed\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a249854-b9cd-4ccb-afea-96c35708515d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prep the dbs for the new load\n", + "#sf.execute_sql('DROP TABLE IF EXISTS derived.src_skill_temp;')\n", + "#sf.execute_sql('DROP TABLE IF EXISTS reference.src_skill;', db_type='egis')\n", + "#print(\"Done dropping src_skill and src_skill_temp tables\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c24f509a-90df-492a-a0d4-aa9eab8e7041", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Load the src_skill_temp table\n", + "start_dt = datetime.now()\n", + "\n", + "event = {\n", + " 'target_table': 'derived.src_skill_temp',\n", + " 'target_cols': None, # This means \"all\"\n", + " 'file': f'{QA_DATASETS_DPATH}/agg_nwm_recurr_flow_elev_stats_location_id.csv',\n", + " 'bucket': FIM_BUCKET,\n", + " 'reference_time': '2023-08-23 00:00:00',\n", + " 'keep_flows_at_or_above': 0,\n", + " 'iteration_index': 0,\n", + " 'db_type': 'viz'\n", + "}\n", + "\n", + "execute_db_ingest(event, None)\n", + "print(\"Done loading derived.src_skill_temp table\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b5639447-9a5a-4add-9c36-ebd945a5a8d0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Load into src_skill table adding geometry to it from external.usgs_gage. Yes.. more/less straight from WRDS tables\n", + "# Some recs appear to be in error in the csv. location id = 394220106431500 (those are dropped below)\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.src_skill;')\n", + "\n", + "sql = f\"\"\"\n", + "SELECT\n", + "\t(row_number() OVER ())::int as oid,\n", + "\tgage.name,\n", + "\tLPAD(skill.location_id::text, 8, '0') as location_id,\n", + "\tskill.nrmse,\n", + "\tskill.mean_abs_y_diff_ft,\n", + "\tskill.mean_y_diff_ft,\n", + "\tskill.percent_bias,\n", + " '{PUBLIC_FIM_VERSION}' as {COLUMN_NAME_FIM_VERSION},\n", + " '{FIM_MODEL_VERSION}' as {COLUMN_NAME_MODEL_VERSION},\n", + "\tgage.geo_point as geom\n", + "INTO derived.src_skill\n", + "FROM derived.src_skill_temp skill\n", + "JOIN external.usgs_gage AS gage ON LPAD(gage.usgs_gage_id::text, 8, '0') = LPAD(skill.location_id::text, 8, '0')\n", + "\"\"\"\n", + "\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"Done loading derived.src_skill table\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "ffa32cd0-6edc-4441-9be3-f5bcba499ad0", + "metadata": { + "tags": [] + }, + "source": [ + "

Then export the derived.src_skill table and import it into the EGIS reference.src_skill table

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0df23345-47a4-490a-b10f-2020e3a2a68e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "sf.move_data_from_viz_to_egis(\"derived.src_skill\", \"reference.src_skill\")\n", + "print(\"Done\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "cf47b262-d5aa-41e3-a12e-99432f52fbfc", + "metadata": { + "tags": [] + }, + "source": [ + "

12 - UPDATE FIM PERFORMANCE METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b291a461-e36f-4049-84b6-dd59cd1c4ad2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Make copies of current dbs for 4.4.0.0 (4.5.2.11)\n", + "# DONE: for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# NOTE: Aug 2024: The problem with not droppign them and rebuilding them with indexes, is that if the table schema\n", + "# changes it is not reflected\n", + "\n", + "\n", + "# Points\n", + "new_table_name = f\"reference.fim_performance_points_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.fim_performance_points;\n", + "'''\n", + "sf.execute_sql(sql, db_type='egis')\n", + "print(f\"fim_performance_points copied to {new_table_name} if it does not already exists\")\n", + "\n", + "\n", + "# Catchments\n", + "new_table_name = f\"reference.fim_performance_catchments_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.fim_performance_catchments;\n", + "'''\n", + "sf.execute_sql(sql, db_type='egis')\n", + "print(f\"fim_performance_catchments copied to {new_table_name} if it does not already exists\")\n", + "\n", + "\n", + "# Polys\n", + "new_table_name = f\"reference.fim_performance_polys_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.fim_performance_polys;\n", + "'''\n", + "sf.execute_sql(sql, db_type='egis')\n", + "print(f\"fim_performance_polys copied to {new_table_name} if it does not already exists\")\n", + "\n", + "print(\"Done making backups of the FIM performance tables\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4fcdfab-3936-4a0a-8ab9-605e9a64f9bd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# clean up tables for new load\n", + "\n", + "# TODO: Aug 2024: Add postgresql if / else. Truncate \"if exists\" doesn't exist. :)\n", + "\n", + "table_names = [\n", + " \"reference.fim_performance_points\",\n", + " \"reference.fim_performance_polys\",\n", + " \"reference.fim_performance_catchments\"\n", + "]\n", + "\n", + "for tb_name in table_names:\n", + " sql = f\"TRUNCATE TABLE {tb_name}\"\n", + "# print(sql)\n", + " sf.execute_sql(sql,db_type='egis')\n", + "\n", + "\n", + "print(f\"All fim_performance tables trunated if they exist\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06ca5581", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Load the new fim performance tables\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "# os.environ['EGIS_DB_HOST'] ='' #TI DB\n", + "\n", + "db_type = \"egis\"\n", + "db_engine = sf.get_db_engine(db_type)\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "\n", + "# file_handles = ['fim_performance_points.csv']\n", + "# file_handles = ['fim_performance_points.csv', 'fim_performance_polys.csv', 'fim_performance_catchments_dissolved.csv']\n", + "# file_handles = ['fim_performance_points.csv', 'fim_performance_polys.csv']\n", + "file_handles = ['fim_performance_catchments.csv']\n", + "\n", + "for file_handle in file_handles:\n", + "\n", + " print(\"Reading file...\")\n", + " # df = pd.read_csv(local_download_path)\n", + " file_to_download = f\"{QA_DATASETS_DPATH}/{file_handle}\"\n", + " df = s3_sf.download_S3_csv_files_to_df_from_list(FIM_BUCKET, [file_to_download], True)\n", + " print(\"File read.\")\n", + "\n", + " # Rename headers.\n", + "\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom'})\n", + " else:\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + "\n", + " print(df.dtypes)\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns = df.columns.str.lower()\n", + "\n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.astype({'huc': 'str'})\n", + " else:\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " df = df.astype({'oid': 'int'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + "\n", + " # zfill HUC8 field.\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df['huc'] = df['huc'].apply(lambda x: x.zfill(8))\n", + " else:\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + "\n", + " df['version'] = PUBLIC_FIM_VERSION\n", + " df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + "\n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + "\n", + " # Chunk load data into DB\n", + "\n", + " if file_handle in ['fim_performance_catchments.csv']:\n", + "\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 10000 # chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + " # geometry = 'MULTIPOLYGON'\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + "\n", + " first_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=3857)\n", + " }\n", + " )\n", + " # Load remaining chunks into newly created table\n", + "\n", + " for remaining_chunk_df in list_df[1:]:\n", + " print(remaining_chunk_df.shape[0])\n", + " remaining_chunk_df.to_sql(\n", + " name=stripped_layer_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='append',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=3857)\n", + " }\n", + " )\n", + " else:\n", + " if 'points' in stripped_layer_name: geometry = 'POINT'\n", + " if 'polys' in stripped_layer_name: geometry = 'POLYGON'\n", + " # print(\"GEOMETRY\")\n", + " # print(geometry)\n", + " df.to_sql(\n", + " name=stripped_layer_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='replace',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(),\n", + " 'geom': Geometry(geometry, srid=3857)\n", + " }\n", + " )\n", + "\n", + " print(f\">>> {file_handle} downloaded and loaded\")\n", + "\n", + " # deleted the downloaded file that was just processed.\n", + " # if os.path.exists(local_download_path):\n", + "\n", + "\n", + "print(\"\")\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "# print(\"All FIM Performance files loaded\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "a52c1563-3c91-4810-96d0-48568b60cbef", + "metadata": { + "tags": [] + }, + "source": [ + "

13 - CatFIM (Stage-Based and Flow-Based)

" + ] + }, + { + "cell_type": "markdown", + "id": "7938fcb2-313c-4cf8-8274-d34d80bdf7bf", + "metadata": {}, + "source": [ + "

Function to load CatFIM Data (Non Public)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37f37c81-d105-4c38-aa49-b4aef40a7543", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "''' Function to load CatFIM data (for any flow / stage / library / sites but non public)'''\n", + "\n", + "\n", + "def load_catfim_table(catfim_type):\n", + "\n", + " '''\n", + " Inputs:\n", + " - catfim_type: name identififer for the set, such as \"flow_based_catfim\" or \"flow_based_catfim_sites\", etc\n", + " Sometimes the file_handle name can be the name of the s3 file (without extension) and/or the table\n", + " name.\n", + " Options: flow_based_catfim, flow_based_catfim_sites, stage_based_catfim, stage_based_catfim_sites\n", + " '''\n", + "\n", + " db_type = \"egis\"\n", + " db_engine = sf.get_db_engine(db_type)\n", + " src_crs = \"3857\"\n", + "\n", + " # --------------------------------------\n", + " # Drop the original Db if already in place\n", + " table_name = catfim_type # yes, dup variable for now\n", + "\n", + " sf.execute_sql(f\"DROP TABLE IF EXISTS reference.{table_name};\", db_type=db_type)\n", + " print(f\"Dropping reference.{table_name} table if it existed\")\n", + " print(\"\")\n", + "\n", + " # --------------------------------------\n", + " # Get the data from S3 and load it into a df\n", + " if catfim_type in ['flow_based_catfim', 'stage_based_catfim']:\n", + " file_to_download = f\"{QA_DATASETS_DPATH}/{catfim_type}_library.csv\"\n", + " else:\n", + " file_to_download = f\"{QA_DATASETS_DPATH}/{catfim_type}.csv\"\n", + "\n", + " # print(f\"Downloading {file_to_download} ... \")\n", + "\n", + " df = s3_sf.download_S3_csv_files_to_df_from_list(FIM_BUCKET, [file_to_download], True)\n", + " num_recs = len(df)\n", + " print(f\"File read. {num_recs} records to load\")\n", + "\n", + " # --------------------------------------\n", + " # Adjusting Columns and data\n", + " # Rename headers. All files this name\n", + " df = df.rename(columns={'Unnamed: 0': 'oid',\n", + " 'geometry': 'geom',\n", + " 'huc': 'huc8'})\n", + "\n", + " # 4.5.2.11, fixing a column name bug\n", + " if catfim_type == 'stage_based_catfim_sites':\n", + " df = df.rename(columns={'nws_lid': 'ahps_lid'})\n", + "\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns = df.columns.str.lower()\n", + "\n", + " # Remove sites that are in derived.ahps_restricted_sites\n", + " # TODO: Aug 2024: Need to see if this list needs to be updated. Submitted card.\n", + " restricted_sites_df = sf.get_db_values(\"derived.ahps_restricted_sites\", [\"*\"])\n", + " restricted_dict = restricted_sites_df.to_dict('records')\n", + "\n", + " for site in restricted_dict:\n", + " nws_lid = site['nws_lid'].lower()\n", + " #print(nws_lid)\n", + " if \"sites\" in catfim_type:\n", + " # print(True)\n", + " # print(nws_lid)\n", + " df.loc[df.ahps_lid == nws_lid, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid == nws_lid, 'status'] = site['restricted_reason']\n", + " # print(df.loc[df.ahps_lid==nws_lid]['status'])\n", + " else:\n", + " df.loc[df.ahps_lid == nws_lid, 'viz'] = 'no'\n", + " df = df[df['viz'] == 'yes']\n", + "\n", + " # TODO: Aug 2024: This may be a bug or very outdated. It was in the code to load stage for 4.4.0.0\n", + " # and I left it here for 4.5.2.11, but made a card with the FIM team to review and fix it in there code\n", + " # so we can drop this.\n", + " if 'stage_based' in catfim_type:\n", + " for sea_level_site in ['qutg1', 'augg1', 'baxg1', 'lamf1', 'adlg1', 'hrag1', 'stng1']:\n", + " if \"sites\" in catfim_type:\n", + " df.loc[df.ahps_lid==sea_level_site, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==sea_level_site, 'status'] = 'Stage thresholds seem to be based on sea level and not channel thalweg'\n", + " else:\n", + " df.loc[df.ahps_lid==sea_level_site, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes'] # Subset df to only sites desired for mapping\n", + " # end if\n", + "\n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + "\n", + " # zfill HUC8 field.\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + "\n", + " if '_sites' in catfim_type:\n", + " df = df.astype({'nws_data_rfc_forecast_point': 'str'})\n", + " df = df.astype({'nws_data_rfc_defined_fcst_point': 'str'})\n", + " df = df.astype({'nws_data_riverpoint': 'str'})\n", + "\n", + " # TODO: Aug 27, 2024: For now, let's jsut override the \"version\" column and fix it when we\n", + " # reconsile the fim_version and model_version columns\n", + " df['version'] = PUBLIC_FIM_VERSION\n", + " df[COLUMN_NAME_FIM_VERSION] = PUBLIC_FIM_VERSION\n", + " df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + "\n", + " # --------------------------------------\n", + " # Load to DB\n", + " # Chunk load data into DB\n", + " if catfim_type in ['flow_based_catfim', 'stage_based_catfim']:\n", + "\n", + " # Create list of df chunks\n", + " n = 1000 # chunk row size\n", + " print(f\"Chunk loading... into {table_name} -- {n} records at a time\")\n", + " print(\"\")\n", + " chunk_df = [df[i:i+n] for i in range(0, df.shape[0], n)]\n", + "\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = chunk_df[0]\n", + " num_chunks = len(chunk_df)\n", + "\n", + " print(f\" ... loading chunk 1 of {num_chunks}\")\n", + "\n", + " first_chunk_df.to_sql(\n", + " name=table_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='replace',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=src_crs)}\n", + " )\n", + "\n", + " # Load remaining chunks into newly created table\n", + " ctr = 1 # Already loaded one\n", + " for remaining_chunk in chunk_df[1:]:\n", + " # print(remaining_chunk.shape[0])\n", + " ctr += 1\n", + " print(f\" ... loading chunk {ctr} of {num_chunks}\")\n", + " remaining_chunk.to_sql(\n", + " name=table_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='append',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=src_crs)\n", + " }\n", + " )\n", + " # end for\n", + " else: # sites tables\n", + " print(f\"Loading data into {table_name} ...\")\n", + "\n", + " df.to_sql(\n", + " name=table_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='replace',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('POINT', srid=src_crs)}\n", + " )\n", + "\n", + " # This should auto create a gist index against the geometry column\n", + " # if that index name already exists, the upload will fail, the index can not pre-exist\n", + " # Best to drop the table before loading.\n", + "\n", + " # return\n", + "\n", + "print(\"load_catfim_table function loaded\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "e2b43cdc-8591-47f4-8db7-1058af5863f5", + "metadata": { + "tags": [] + }, + "source": [ + "

13.a - Backup old DBs and prepare new databases (but not the \"public\" FIM 10/30 db's)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9577edb-4aa6-423b-819e-df8c922c7ec2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# This covers both Stage Based and Flow Based (but not the \"public\" catfim db's)\n", + "\n", + "# The \"Public\" db backups ana loads are in cells lower (12.d and higher)\n", + "\n", + "# DONE for 4.4.0.0. (4.5.2.11)\n", + "\n", + "# # print(\"Starting Data Backups and table drops for stage and flow based catfim\")\n", + "# db_names = [\"stage_based_catfim\", \"stage_based_catfim_sites\",\n", + "# \"flow_based_catfim\", \"flow_based_catfim_sites\"]\n", + "\n", + "# for db_name in db_names:\n", + "# new_table_name = f\"reference.{db_name}_{OLD_FIM_TAG}\"\n", + "# sql = f'''\n", + "# CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.{db_name};\n", + "# '''\n", + "# sf.execute_sql(sql, db_type='egis')\n", + "# print(f\"{db_name} copied to {new_table_name} if it does not already exist\")\n", + "\n", + "\n", + "# Aug 2024: Now we can drop the tables as we don't have any indexes on them at this time other than the gist geom index.\n", + "# By dropping them, we can auto adjust the tables schema. (don't truncate)\n", + "\n", + "# for db_name in db_names:\n", + "# sf.execute_sql(f\"DROP TABLE IF EXISTS reference.{db_name};\", db_type='egis')\n", + "# print(f\"reference.{db_name} table dropped if it existed\")\n", + "\n", + "\n", + "# print(\"Data Backups of flow based catfim are complete\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "4377dc64-963e-447e-a553-1a59c7cb1781", + "metadata": { + "tags": [] + }, + "source": [ + "

13.b - Updated Flow and Stage Based CatFIM Data (Non Public)

\n", + "\n", + "

AUG 2024: IMPORTANT NOTE:

\n", + "The stage based catfim (library) csv has grown to appx 10 GiB. Our current notebook, hv-vpp-ti-viz-notebook only has 15 GiB memory.\n", + "Running tool can easily overwhelm the notebook server and freeze it up forcing a reboot.\n", + "Sometimes when the notebook instance comes back up, it no longer has ths swap system in place. You will need most of the memory\n", + "and some swap to load it. Keep an eye a \"terminal\" windows and keep entering `free -h` to keep an eye on it's usage.\n", + "
\n", + "We will need to review to see if we want to:\n", + "\n", + "1. Upgrade this notebook server with more memory (and harddrive space would be good)\n", + "\n", + "2. Change the load of the catfim library (non sites) data to another system. Maybe we can load it via a lambda to an EC2 or something?\n", + "\n", + "3. Get the FIM Team to break it to smaller pieces, but watch carefully for the OID system (unique id for all records)\n", + "\n", + "**When you are done running this script, Please restart this kernal as it does not appear to be releasing all memory. (memory leak?)**\n", + "\n", + "\n", + "Also looks like Tyler has some notebooks where he was moving this into a lambda load? We need to look into that\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95c55cd0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "print(\"Starting of CatFIM data\")\n", + "\n", + "# catfim_types = ['flow_based_catfim', 'flow_based_catfim_sites']\n", + "# catfim_types = ['stage_based_catfim', 'stage_based_catfim_sites']\n", + "catfim_types = ['stage_based_catfim_sites']\n", + "# catfim_types = ['stage_based_catfim']\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "for catfim_type in catfim_types:\n", + " print(f\"Loading {catfim_type} data\")\n", + " load_catfim_table(catfim_type)\n", + "\n", + "print(\"\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "db3eef2c-8764-4c0a-9e4d-07d9bb6d4dfe", + "metadata": { + "tags": [] + }, + "source": [ + "

13.c - CatFIM Backup old \"public\" FIM 10 / 30 DBs and prepare new databases

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5cf108d-7360-48a9-a4a2-81b23b9e51b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "'''\n", + "This covers ONLY Catfim public FIM 10/30 for both flow based and stage based\n", + "'''\n", + "\n", + "''' DONE for 4.4.0.0. (4.5.2.11)'''\n", + "\n", + "# db_name_appendix = f\"{OLD_FIM_TAG}_fim_10\"\n", + "\n", + "# print(\"Starting Data Backups and table drops for stage and flow based PUBLIC catfim\")\n", + "# # db_names = [\"stage_based_catfim_public\", \"stage_based_catfim_sites_public\",\n", + "# # \"flow_based_catfim_public\", \"flow_based_catfim_sites_public\"]\n", + "\n", + "# # stage_based_catfim_sites_public didn't exist for fim 10 but should have in TI (does in other enviros likely)\n", + "# db_names = [\"stage_based_catfim_public\", \n", + "# \"flow_based_catfim_public\", \"flow_based_catfim_sites_public\"]\n", + "\n", + "# for db_name in db_names:\n", + "# new_table_name = f\"reference.{db_name}_{db_name_appendix}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.{db_name}\"\n", + "# sf.execute_sql(sql, db_type='egis')\n", + "# print(f\"{db_name} copied to {new_table_name} if it does not already exist\")\n", + "\n", + " \n", + "# # Aug 2024: Now we can drop the tables as we don't have any indexes on them at this time other than the gist geom index.\n", + "# # By dropping them, we can auto adjust the tables schema. (don't truncate)\n", + "\n", + "# for db_name in db_names:\n", + "# sf.execute_sql(f\"DROP TABLE IF EXISTS reference.{db_name};\", db_type='egis')\n", + "# print(f\"reference.{db_name} table dropped if it existed\")\n", + "\n", + "# print(\"Data Backups of flow based catfim are complete\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "3e451ed4-148f-4ccd-83bf-dff900915efb", + "metadata": { + "tags": [] + }, + "source": [ + "

13.d - Load CatFIM \"public\" FIM 30 DBs

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd38c00d-22ad-476e-ab05-cf293e5bbc15", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "\n", + "print(\"Loading CatFIM Public datasets (FIM 30)\")\n", + "\n", + "catfim_types = [\"stage_based_catfim\", \"stage_based_catfim_sites\",\n", + " \"flow_based_catfim\", \"flow_based_catfim_sites\"]\n", + "\n", + "__public_fim_release = \"fim_30\" # The new fim public release being loaded (ie. fim_10, fim_30, fim_60..)\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "for catfim_type in catfim_types:\n", + " print(\"\")\n", + " sql = f'''\n", + " DROP TABLE IF EXISTS reference.{catfim_type}_public;\n", + "\n", + " SELECT\n", + " catfim.*,\n", + " '{__public_fim_release}' as public_fim_release\n", + " INTO reference.{catfim_type}_public\n", + " FROM reference.{catfim_type} as catfim\n", + " JOIN reference.public_fim_domain as fim_domain ON ST_Intersects(catfim.geom, fim_domain.geom)\n", + " '''\n", + " print(sf.execute_sql(sql, db_type='egis'))\n", + " print(f\"public {__public_fim_release} data load for {catfim_type} is complete\")\n", + "\n", + "# what about indexes again?\n", + "\n", + "# for db_name in db_names:\n", + "# new_table_name = f\"reference.{db_name}_{db_name_appendix}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.{db_name}\"\n", + "# sf.execute_sql(sql, db_type='egis')\n", + "# print(f\"{db_name} copied to {new_table_name} if it does not already exist\")\n", + "\n", + "print(\"\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "65578391-f29e-4de4-8d98-ab48a0375603", + "metadata": { + "tags": [] + }, + "source": [ + "

14 - Clear the HAND Cache

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a3d1ab20-4148-4d1d-bbb6-a2c3983ba145", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_max;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_geo;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_zero_stage;\n", + "\"\"\"\n", + "sf.execute_sql(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "8af909c1-d6a6-4ce7-85b5-080d0a556c90", + "metadata": {}, + "source": [ + "

15 - SAVE TO REPO (AND REDEPLOY TO TI WITH NEW VERSION VARIABLE IN TERRAFORM ??)

\n", + "\n", + "TODO: Aug 2024: Come up with system to save changes to this script and related scripts\n", + "Note from Rob: While, un-elegant, there so much quick evolution here that I recommend we even keep seperate named load scripts in GIT\n", + "ie) one for FIM Version 4.4.0.0 and one for 4.5.2.11, etc. So many changes for each edition and very fast script changes WIP may \n", + "make it smarter to keep each script seperately (ie. 4.4.0.0, 4.5.2.11, etc)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.4.0.0 Update.ipynb b/Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.4.0.0 Update.ipynb new file mode 100644 index 00000000..8bc4aaf7 --- /dev/null +++ b/Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.4.0.0 Update.ipynb @@ -0,0 +1,1600 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "657203a8-278b-4265-86f9-e23983445fe1", + "metadata": { + "tags": [] + }, + "source": [ + "### This notebook was created by Corey Krewson in 2023 to facilitate all the steps needed to update the pipelines / EGIS map services, when a new FIM version is released. These steps entail:\n", + "1. Updating the FIM crosswalk table in the derived schema of the viz database.\n", + "2. Creating new AEP FIM schema/tables in the EGIS database.\n", + "3. Creating new FIM Catchments schema/tables in the EGIS database.\n", + "4. Update a bunch of other SRC Skill / FIM Performance / CatFIM data (not sure what all this entails - Shawn Crawley may know more).\n", + "5. Clear the HAND cache on the viz RDS database.\n", + "\n", + "Unfortunately, these steps are still very manual, and this notebook is the main source of documentation to making these updates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b656259", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "#from helper_functions.shared_functions import check_if_s3_key_exists, run_sql_in_db, get_db_engine # no check_if_s3_key_exists function\n", + "from helper_functions.shared_functions import run_sql_in_db, get_db_engine\n", + "from helper_functions.viz_classes import database\n", + "import os\n", + "import codecs\n", + "import csv\n", + "import boto3\n", + "import json\n", + "import pandas as pd\n", + "from datetime import datetime\n", + "from io import StringIO\n", + "from sqlalchemy.exc import DataError\n", + "from sqlalchemy.types import Text\n", + "\n", + "# Helps us get to the keys. Note: This was added Oct 16, 2024 and is untested\n", + "# /hydrovis/Core/Manual_Workflows/\n", + "sys.path.append(os.path.join(os.path.abspath(''), '../../../../AWS_Secret_keys'))\n", + "import AWS_Keys\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e944eff3-6023-48f4-9f57-27304a240447", + "metadata": {}, + "outputs": [], + "source": [ + "FIM_VERSION = \"4.4.0.0\"\n", + "FIM_ROOT_DPATH = f\"fim/fim_{FIM_VERSION.replace('.', '_')}\"\n", + "HAND_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/hand_datasets\"\n", + "QA_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/qa_datasets\"\n", + "FIM_BUCKET = \"hydrovis-ti-deployment-us-east-1\"\n", + "FIM_CROSSWALK_FPATH = os.path.join(HAND_DATASETS_DPATH, \"crosswalk_table.csv\")\n", + "PIPELINE_ARN = ''\n", + "\n", + "# SECRET KEYS AND TOKENS inside a folder in the sandbox folder to avoid checkins\n", + "\n", + "S3_CLIENT = boto3.client(\"s3\")\n", + "STEPFUNCTION_CLIENT = boto3.client('stepfunctions')\n", + "VIZ_DB_ENGINE = get_db_engine('viz')" + ] + }, + { + "cell_type": "markdown", + "id": "ffb715ee", + "metadata": {}, + "source": [ + "

1 - UPDATE VLAB PRIVATE REPO WITH NEW FIM VERSION

" + ] + }, + { + "cell_type": "markdown", + "id": "6875edcd", + "metadata": { + "tags": [] + }, + "source": [ + "

2 - UPLOAD FIM4 HYDRO ID/FEATURE ID CROSSWALK

" + ] + }, + { + "cell_type": "markdown", + "id": "fb51763d-ce45-4e48-9bc3-c772590d71ac", + "metadata": { + "tags": [] + }, + "source": [ + "February 2024 Update from Tyler: This code will need to be updated to handle a new hand_id unique integer that the fim team (Rob Hannah and Matt Luck) has added to the crosswalk, and is now important to fim runs. They also changed the field names / format to match our schema, so this chunk of code should be able to be simplified significantly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c96a49f2", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"Getting column name from {FIM_CROSSWALK_FPATH}\")\n", + "data = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=FIM_CROSSWALK_FPATH)\n", + "d_reader = csv.DictReader(codecs.getreader(\"utf-8\")(data[\"Body\"]))\n", + "headers = d_reader.fieldnames\n", + "\n", + "print(headers)\n", + "raise Exception(\"Forced exit\")\n", + "\n", + "header_str = \"(\"\n", + "for header in headers:\n", + " header_str += header\n", + " if header in ['HydroID', 'LakeID', 'feature_id']:\n", + " header_str += ' integer,'\n", + " elif header in ['BranchID']:\n", + " header_str += ' bigint,'\n", + " else:\n", + " header_str += ' TEXT,'\n", + "header_str = header_str[:-1] + \")\"\n", + "\n", + "\n", + "db = database(db_type=\"viz\")\n", + "with db.get_db_connection() as conn, conn.cursor() as cur:\n", + " print(f\"Deleting/Creating derived.fim4_featureid_crosswalk using columns {header_str}\")\n", + " sql = f\"DROP TABLE IF EXISTS derived.fim4_featureid_crosswalk; CREATE TABLE derived.fim4_featureid_crosswalk {header_str};\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Importing {FIM_CROSSWALK_FPATH} to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"\"\"\n", + " SELECT aws_s3.table_import_from_s3(\n", + " 'derived.fim4_featureid_crosswalk',\n", + " '', \n", + " '(format csv, HEADER true)',\n", + " (SELECT aws_commons.create_s3_uri(\n", + " '{FIM_BUCKET}',\n", + " '{FIM_CROSSWALK_FPATH}',\n", + " 'us-east-1'\n", + " ) AS s3_uri\n", + " ),\n", + " aws_commons.create_aws_credentials('{TI_ACCESS_KEY}', '{TI_SECRET_KEY}', '{TI_TOKEN}')\n", + " );\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding fim_version column to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"ALTER TABLE derived.fim4_featureid_crosswalk ADD COLUMN fim_version text DEFAULT '{FIM_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Renaming columns in derived.fim4_featureid_crosswalk\")\n", + " sql = f\"\"\"\n", + " ALTER TABLE derived.fim4_featureid_crosswalk RENAME COLUMN HydroID TO hydro_id;\n", + " ALTER TABLE derived.fim4_featureid_crosswalk RENAME COLUMN LakeID TO lake_id;\n", + " ALTER TABLE derived.fim4_featureid_crosswalk RENAME COLUMN BranchID TO branch_id;\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding feature id index to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"CREATE INDEX fim4_crosswalk_feature_id ON derived.fim4_featureid_crosswalk USING btree (feature_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding hydro id index to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"CREATE INDEX fim4_crosswalk_hydro_id ON derived.fim4_featureid_crosswalk USING btree (hydro_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + "print(f\"Successully updated derived.fim4_featureid_crosswalk\")" + ] + }, + { + "cell_type": "markdown", + "id": "ec0b9ca7", + "metadata": {}, + "source": [ + "

3 - UPDATE FIM HAND PROCESSING LAMBDA ENV VARIABLE WITH NEW FIM VERSION

" + ] + }, + { + "cell_type": "markdown", + "id": "641831e4", + "metadata": {}, + "source": [ + "

4 - UPDATE FIM DATA PREP LAMBDA ENV VARIABLE WITH NEW FIM VERSION

" + ] + }, + { + "cell_type": "markdown", + "id": "8ec58bcb-1800-45dc-a440-d4adab1f1b71", + "metadata": { + "tags": [] + }, + "source": [ + "

5 - Run AEP FIM Pipelines.

\n", + "Updated Documentation from Tyler Early 2024: This can be done in a couple of diferent ways. One option is to use the pipeline_input code created below by Corey to start the AEP pipelines directly from this notebook. However, those pipeline_input dictionaries may very well be be out of date, pending more recent updates to the pipelines. The other option, which I prefer, is to setup a manual test event in the initialize_pipeline lambda function to trigger an AEP pipeline like this:\n", + "\n", + "{\n", + " \"configuration\": \"reference\",\n", + " \"products_to_run\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"invoke_step_function\": False\n", + "}\n", + "\n", + "Using this test event will produce the pipeline instructions, printing any errors that come up, and you can simply change the invoke_step_function flag to True when you're ready to actually invoke a pipeline run (which you can monitor/manage in the step function gui). You will need to manually update the static_nwm_aep_inundation_extent_library.yml product config file to only run 1 aep configuration at a time, and work through the configs as the pipelines finish (takes about an hour each). I've also found that the fim_data_prep lambda function needs to be temporarilly increased to ~4,500mb of memory to run these pipelines. It's also worth noting that these are very resource intesive pipelines, as FIM is calculated for every reach in the nation. AWS costs can amount to hundreds or even thousands of dollars by running these pipelines, so use responsibly.\n", + "\n", + "A couple other important notes:\n", + "- These AEP configurations write data directly to the aep_fim schema in the egis RDS database, instead of the viz database.\n", + "- You'll need to dump the aep_fim schema after that is complete for backup / deployment into other environments.\n", + "- This process has not been tested with new NWM 3.0 Recurrence Flows, and a good thorough audit / QC check of output data is warranted, given those changes and the recent updates to the pipelines." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6d6ee69", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_2_inundation\",\n", + " \"target_table\": \"aep_fim.rf_2_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_2_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_2_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4f89d9a", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_5_inundation\",\n", + " \"target_table\": \"aep_fim.rf_5_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_5_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_5_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "791d1a8b", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_10_inundation\",\n", + " \"target_table\": \"aep_fim.rf_10_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_10_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_10_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1bb87128", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_25_inundation\",\n", + " \"target_table\": \"aep_fim.rf_25_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_25_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_25_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4832e4e0", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_50_inundation\",\n", + " \"target_table\": \"aep_fim.rf_50_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_50_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_50_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a698067", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"rf_high_water_inundation\",\n", + " \"target_table\": \"aep_fim.rf_high_water_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"rf_high_water_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_aep_hw_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "1124d0d4", + "metadata": {}, + "source": [ + "

6 - RUN CATCHMENT WORKFLOWS 2 CONFIGS AT A TIME. CHECK FOR STEP FUNCTION FINISHING BEFORE STARTING NEW ONE

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7495759", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_0_catchments\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_0_catchments\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_0_catchments_hi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_0_catchments_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_0_catchments_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_0_catchments_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_0_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ae8917f", + "metadata": {}, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"lambda_max_flows\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_gms_catchments\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_gms_catchments\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_gms_catchments_hi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_gms_catchments_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"branch_gms_catchments_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"branch_gms_catchments_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"lambda_max_flow_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {}\n", + "}\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = f\"sagemaker_gms_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\",\n", + " input= json.dumps(pipeline_input)\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "c75d51cc", + "metadata": {}, + "source": [ + "

6 - UPDATE RATING CURVES IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9bcc72f7", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "sql = '''\n", + "DROP TABLE IF EXISTS derived.hydrotable;\n", + "DROP TABLE IF EXISTS derived.usgs_elev_table;\n", + "\n", + "SELECT distinct LPAD(huc8::text, 8, '0') as huc8 FROM derived.featureid_huc_crosswalk WHERE huc8 is not null;\n", + "'''\n", + "df = run_sql_in_db(sql)\n", + "\n", + "col_names = ['HydroID', 'feature_id', 'NextDownID', 'order_', 'Number of Cells',\n", + " 'SurfaceArea (m2)', 'BedArea (m2)', 'TopWidth (m)', 'LENGTHKM',\n", + " 'AREASQKM', 'WettedPerimeter (m)', 'HydraulicRadius (m)',\n", + " 'WetArea (m2)', 'Volume (m3)', 'SLOPE', 'ManningN', 'stage',\n", + " 'default_discharge_cms', 'default_Volume (m3)', 'default_WetArea (m2)',\n", + " 'default_HydraulicRadius (m)', 'default_ManningN',\n", + " 'precalb_discharge_cms', 'calb_coef_spatial', 'HUC', 'LakeID',\n", + " 'subdiv_applied', 'channel_n', 'overbank_n', 'subdiv_discharge_cms',\n", + " 'last_updated', 'submitter', 'calb_coef_usgs', 'obs_source',\n", + " 'calb_coef_final', 'calb_applied', 'discharge_cms']\n", + "\n", + "usecols = ['HydroID', 'feature_id', 'stage', 'discharge_cms']\n", + "\n", + "paginator = S3_CLIENT.get_paginator('list_objects')\n", + "operation_parameters = {'Bucket': FIM_BUCKET,\n", + " 'Prefix': f'{HAND_DATASETS_DPATH}/',\n", + " 'Delimiter': '/'}\n", + "page_iterator = paginator.paginate(**operation_parameters)\n", + "page_count = 0\n", + "for page in page_iterator:\n", + " page_count += 1\n", + " prefix_objects = page['CommonPrefixes']\n", + " for i, prefix_obj in enumerate(prefix_objects):\n", + " print(f\"Processing {i+1} of {len(prefix_objects)} on page {page_count}\")\n", + " branch_prefix = f'{prefix_obj.get(\"Prefix\")}branches/0/'\n", + "# ## UNCOMMENT FOR ALL BRANCHES - NOT JUST 0\n", + "# huc_branches_prefix = f'{prefix_obj.get(\"Prefix\")}branches/'\n", + "# branches_result = S3_CLIENT.list_objects(Bucket=FIM_BUCKET, Prefix=huc_branches_prefix, Delimiter='/')\n", + "# branch_prefix_objects = branches_result.get('CommonPrefixes')\n", + "# for i, branch_prefix_obj in enumerate(branch_prefix_objects):\n", + "# branch_prefix = branch_prefix_obj['Prefix']\n", + "# ## END UNCOMMENT\n", + " ## [UN]INDENT FROM HERE TO THE END IF [COMMENTED]UNCOMMENTED\n", + " branch_files_result = S3_CLIENT.list_objects(Bucket=FIM_BUCKET, Prefix=branch_prefix, Delimiter='/')\n", + " hydro_table_key = None\n", + " usgs_elev_table_key = None\n", + " for content_obj in branch_files_result.get('Contents'):\n", + " branch_file_prefix = content_obj['Key']\n", + " if 'hydroTable' in branch_file_prefix:\n", + " hydro_table_key = branch_file_prefix\n", + " elif 'usgs_elev_table.csv' in branch_file_prefix:\n", + " usgs_elev_table_key = branch_file_prefix\n", + "\n", + " if hydro_table_key and usgs_elev_table_key:\n", + "# print(f\"Found usgs_elev_table and hydroTable in {branch_prefix}\")\n", + " try:\n", + "# print(\"...Fetching csvs...\")\n", + " uet = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=usgs_elev_table_key)['Body']\n", + " ht = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=hydro_table_key)['Body']\n", + "# print(\"...Reading with pandas...\")\n", + " uet_df = pd.read_csv(uet)\n", + " ht_df = pd.read_csv(ht, header=0, names=col_names, usecols=usecols)\n", + "# print('...Writing to db...')\n", + " uet_df['fim_version'] = FIM_VERSION\n", + " try:\n", + " drop_indicies = []\n", + " for index, row in uet_df.iterrows():\n", + " if 'HydroID' in row and row['HydroID']:\n", + " iter_hydro_id = row['HydroID']\n", + "# print(f\"Subsetting hydrotable where HydroID == {iter_hydro_id}\")\n", + " ht_df_iter = ht_df[ht_df['HydroID']==iter_hydro_id]\n", + " if ht_df_iter.empty:\n", + " drop_indicies.append(index)\n", + " continue\n", + " ht_df_iter['fim_version'] = FIM_VERSION\n", + " ht_df_iter.to_sql(con=VIZ_DB_ENGINE, schema='derived', name='hydrotable', index=False, if_exists='append')\n", + " else:\n", + " drop_indicies.append(index)\n", + " mod_uet_df = uet_df.drop(drop_indicies)\n", + " mod_uet_df.to_sql(con=VIZ_DB_ENGINE, dtype={\"location_id\": Text(), \"nws_data_huc\": Text()}, schema='derived', name='usgs_elev_table', index=False, if_exists='append')\n", + " except Exception as e:\n", + " print('******************************************')\n", + " print(f'Error encountered on {branch_file_prefix}')\n", + " print(e)\n", + " print('******************************************') \n", + " except Exception as e:\n", + " raise e\n", + " print(f'Fetch failed: {e}')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3a162bf", + "metadata": {}, + "outputs": [], + "source": [ + "sql = '''\n", + "DROP TABLE IF EXISTS derived.hydrotable_staggered;\n", + "SELECT\n", + " et.location_id,\n", + " ht.feature_id,\n", + " (stage + et.dem_adj_elevation) * 3.28084 as elevation_ft,\n", + " LEAD((stage + et.dem_adj_elevation) * 3.28084) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_elevation_ft,\n", + " discharge_cms * 35.3147 as discharge_cfs,\n", + " LEAD(discharge_cms * 35.3147) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_discharge_cfs\n", + "INTO derived.hydrotable_staggered\n", + "FROM derived.hydrotable AS ht\n", + "JOIN derived.usgs_elev_table AS et ON ht.\"HydroID\" = et.\"HydroID\" AND et.location_id IS NOT NULL;\n", + "'''\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d23f83a", + "metadata": {}, + "outputs": [], + "source": [ + "usgs_curves_key = f'{QA_DATASETS_DPATH}/usgs_rating_curves.csv'\n", + "obj_body = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=usgs_curves_key)['Body']\n", + "df = pd.read_csv(obj_body)\n", + "df.to_sql(con=VIZ_DB_ENGINE, schema='derived', name='usgs_rating_curves', index=False, if_exists='replace', chunksize=150000, method='multi')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "673b1aaf", + "metadata": {}, + "outputs": [], + "source": [ + "sql = '''\n", + "DROP TABLE IF EXISTS derived.usgs_rating_curves_staggered;\n", + "SELECT \n", + " location_id,\n", + " flow as discharge_cfs, \n", + " LEAD(flow) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_discharge_cfs,\n", + " stage,\n", + " navd88_datum,\n", + " elevation_navd88 as elevation_ft,\n", + " LEAD(elevation_navd88) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_elevation_ft\n", + "INTO derived.usgs_rating_curves_staggered\n", + "FROM derived.usgs_rating_curves;\n", + "'''\n", + "\n", + "run_sql_in_db(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "edd95566", + "metadata": {}, + "source": [ + "

7 - UPDATE SRC SKILL METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "645e99af", + "metadata": {}, + "outputs": [], + "source": [ + "src_stats_key = f'{QA_DATASETS_DPATH}/agg_nwm_recurr_flow_elev_stats_location_id.csv'\n", + "obj_body = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=src_stats_key)['Body']\n", + "df = pd.read_csv(obj_body)\n", + "# df['fim_version'] = FIM_VERSION\n", + "print(df.to_dict('records'))\n", + "# df.to_sql(con=VIZ_DB_ENGINE, schema='derived', name='src_skill', index=False, if_exists='replace')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "116df1bb-5c63-4377-8113-1d850f10d934", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from helper_functions.shared_funcs import execute_sql" + ] + }, + { + "cell_type": "markdown", + "id": "e5632191", + "metadata": {}, + "source": [ + "

8 - UPDATE FIM PERFORMANCE METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06ca5581", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "from helper_functions.shared_functions import *\n", + "import boto3\n", + "import geopandas as gpd\n", + "import pandas as pd\n", + "import sqlalchemy\n", + "from geoalchemy2 import Geometry\n", + "from geopandas import GeoDataFrame\n", + "\n", + "# os.environ['EGIS_DB_HOST'] ='' #TI DB\n", + "\n", + "db_type = \"egis\"\n", + "db_engine = get_db_engine(db_type)\n", + "\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "parent_directory = \"qc_fim_data\"\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "\n", + "#file_handles = ['fim_performance_points.csv']\n", + "\n", + "file_handles = ['fim_performance_points.csv', 'fim_performance_polys.csv', 'fim_performance_catchments_dissolved.csv']\n", + "\n", + "#file_handles = ['fim_performance_catchments_dissolved.csv']\n", + "\n", + "for file_handle in file_handles:\n", + " # Define path to file to download and its local download path, the download.\n", + " filename = f\"{QA_DATASETS_DPATH}/{file_handle}\"\n", + " print(filename)\n", + " local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}')\n", + " print(f\"--> Downloading {FIM_BUCKET}/{filename} to {local_download_path}\")\n", + " #s3.download_file(FIM_BUCKET, filename, local_download_path)\n", + " \n", + " if file_handle == 'fim_performance_catchments_dissolved.csv':\n", + " file_handle = 'fim_performance_catchments.csv'\n", + " \n", + " # -- Open file and reformat -- #\n", + " print(\"Reading file...\")\n", + " df = pd.read_csv(local_download_path)\n", + " print(\"File read.\")\n", + " # Rename headers.\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom'})\n", + " else:\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + " \n", + " print(df.dtypes)\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns= df.columns.str.lower()\n", + "\n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.astype({'huc': 'str'})\n", + " else:\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " df = df.astype({'oid': 'int'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + " \n", + " # zfill HUC8 field.\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df['huc'] = df['huc'].apply(lambda x: x.zfill(8))\n", + " else:\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + " \n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + " \n", + " # Chunk load data into DB\n", + " if file_handle in ['fim_performance_catchments.csv']:\n", + " df['version'] = FIM_VERSION\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 10000 #chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + " #geometry = 'MULTIPOLYGON'\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + " \n", + " first_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(), \n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " # Load remaining chunks into newly created table\n", + " \n", + " for remaining_chunk_df in list_df[1:]:\n", + " print(remaining_chunk_df.shape[0])\n", + " remaining_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='append', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(), \n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " else:\n", + " if 'points' in stripped_layer_name: geometry = 'POINT'\n", + " if 'polys' in stripped_layer_name: geometry = 'POLYGON'\n", + " print(\"GEOMETRY\")\n", + " print(geometry)\n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(), \n", + " 'geom': Geometry(geometry,srid=3857)\n", + " }\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "45ca031d", + "metadata": {}, + "source": [ + "

9 - UPDATE STAGE-BASED CATFIM DATA IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6e6210f1-f3c4-489a-aa1f-53646d7d0f59", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os \n", + "from helper_functions.shared_functions import * \n", + "import boto3 \n", + "import geopandas as gpd \n", + "import pandas as pd\n", + "import sqlalchemy\n", + "from geoalchemy2 import Geometry\n", + "\n", + "db_type = \"egis\" \n", + "db_engine = get_db_engine(db_type)\n", + "\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "parent_directory = \"qc_fim_data\"\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "\n", + "#file_handles = ['stage_based_catfim_sites.csv', 'stage_based_catfim.csv']\n", + "\n", + "#file_handles = ['stage_based_catfim_sites.csv', 'catfim_library_dissolved.csv']\n", + "\n", + "file_handles = ['catfim_library_dissolved.csv']\n", + "\n", + "for file_handle in file_handles: \n", + " \n", + " # Define path to file to download and its local download path, then download. \n", + " filename = f\"{QA_DATASETS_DPATH}/{file_handle}\" \n", + " print(filename) \n", + " local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}') \n", + " print(f\"--> Downloading {FIM_BUCKET}/{filename} to {local_download_path}\") \n", + " #s3.download_file(FIM_BUCKET, filename, local_download_path)\n", + "\n", + " # -- Open file and reformat -- #\n", + " print(\"Reading file...\")\n", + " df = pd.read_csv(local_download_path)\n", + " print(\"File read.\")\n", + "\n", + " if file_handle == 'catfim_library_dissolved.csv':\n", + " file_handle = 'stage_based_catfim.csv'\n", + " # Rename headers.\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + "\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns= df.columns.str.lower()\n", + "\n", + " # Remove sites that are in derived.ahps_restricted_sites\n", + " restricted_sites_df = get_db_values(\"derived.ahps_restricted_sites\", [\"*\"])\n", + " restricted_dict = restricted_sites_df.to_dict('records')\n", + "\n", + " # Change 'mapped' to 'no' if sites are present in restricted_sites_df\n", + " for site in restricted_dict:\n", + " nws_lid = site['nws_lid'].lower()\n", + " if \"sites\" in file_handle:\n", + " df.loc[df.ahps_lid==nws_lid, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==nws_lid, 'status'] = site['restricted_reason']\n", + " else:\n", + " df.loc[df.ahps_lid==nws_lid, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes'] # Subset df to only sites desired for mapping\n", + "\n", + " for sea_level_site in ['qutg1', 'augg1', 'baxg1', 'lamf1', 'adlg1', 'hrag1', 'stng1']:\n", + " if \"sites\" in file_handle:\n", + " df.loc[df.ahps_lid==sea_level_site, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==sea_level_site, 'status'] = 'Stage thresholds seem to be based on sea level and not channel thalweg'\n", + " else:\n", + " df.loc[df.ahps_lid==sea_level_site, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes'] # Subset df to only sites desired for mapping\n", + " \n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + "\n", + " if file_handle == 'stage_based_catfim.csv':\n", + " df['fim_version'] = FIM_VERSION\n", + "\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + "\n", + " # zfill HUC8 field.\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + "\n", + " if file_handle in ['stage_based_catfim_sites.csv']:\n", + " df = df.astype({'nws_data_rfc_forecast_point': 'str'})\n", + " df = df.astype({'nws_data_rfc_defined_fcst_point': 'str'})\n", + " df = df.astype({'nws_data_riverpoint': 'str'})\n", + "\n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + "\n", + " print(\"Dataframe shape\")\n", + " print(df.shape[0])\n", + "\n", + " # Chunk load data into DB\n", + " if file_handle in ['stage_based_catfim.csv']:\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 1000 #chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + "\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + " #geometry = 'MULTIPOLYGON'\n", + " first_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(), \n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " # Load remaining chunks into newly created table\n", + " \n", + " for remaining_chunk in list_df[1:]:\n", + " print(remaining_chunk.shape[0])\n", + " remaining_chunk.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='append', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " \n", + " \n", + " else:\n", + " geometry = 'POINT'\n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry(geometry,srid=3857)\n", + " }\n", + " )\n", + " \n", + " \n", + " print(\"Creating index...\")\n", + " with db_engine.connect() as conn:\n", + " result = conn.execute(text(f'CREATE INDEX ON reference.{stripped_layer_name} USING GIST (geom);'))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "422ec875-d590-481f-bf6c-f4453b76414b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "db_type = \"egis\"\n", + "db_engine = get_db_engine(db_type)\n", + "print(db_engine)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28048dba-494c-45bf-b334-f8deca65d68e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "s3 = boto3.client('s3')\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}')\n", + "filename = f\"/temp/catfim_library_exploded.gpkg\"\n", + "s3.download_file(FIM_BUCKET, filename, local_download_path)" + ] + }, + { + "cell_type": "markdown", + "id": "601192df", + "metadata": {}, + "source": [ + "

10 - UPDATE FLOW-BASED CATFIM DATA IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95c55cd0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "from helper_functions.shared_functions import *\n", + "import boto3\n", + "import geopandas as gpd\n", + "import pandas as pd\n", + "\n", + "# os.environ['EGIS_DB_HOST'] = '' #TI DB\n", + "\n", + "db_type = \"egis\"\n", + "db_engine = get_db_engine(db_type)\n", + "print(db_engine)\n", + "\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "parent_directory = \"qc_fim_data\"\n", + "local_download_parent_directory = f'brad_data/qc_fim_data'\n", + "\n", + "file_handles = ['flow_based_catfim_sites.csv', 'catfim_library_dissolved_flow_based.csv']\n", + "\n", + "for file_handle in file_handles:\n", + " # Define path to file to download and its local download path, the download.\n", + " filename = f\"{FIM_ROOT_DPATH}/qa_datasets/{file_handle}\"\n", + " print(filename)\n", + " local_download_path = os.path.join(local_download_parent_directory, f'{file_handle}')\n", + " print(f\"--> Downloading {FIM_BUCKET}/{filename} to {local_download_path}\")\n", + " #s3.download_file(FIM_BUCKET, filename, local_download_path)\n", + " \n", + " # -- Open file and reformat -- #\n", + " print(\"Reading file...\")\n", + " df = pd.read_csv(local_download_path)\n", + " print(\"File read.\")\n", + " # Rename headers.\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + " \n", + " if file_handle == 'catfim_library_dissolved_flow_based.csv':\n", + " file_handle = 'flow_based_catfim.csv'\n", + " \n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns= df.columns.str.lower()\n", + "\n", + " # Remove sites that are in derived.ahps_restricted_sites\n", + " restricted_sites_df = get_db_values(\"derived.ahps_restricted_sites\", [\"*\"])\n", + " restricted_dict = restricted_sites_df.to_dict('records')\n", + "\n", + " # Change 'mapped' to 'no' if sites are present in restricted_sites_df\n", + " for site in restricted_dict:\n", + " nws_lid = site['nws_lid'].lower()\n", + " print(nws_lid)\n", + " if \"sites\" in file_handle:\n", + " #print(True)\n", + " #print(nws_lid)\n", + " df.loc[df.ahps_lid==nws_lid, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==nws_lid, 'status'] = site['restricted_reason']\n", + " #print(df.loc[df.ahps_lid==nws_lid]['status'])\n", + " else:\n", + " df.loc[df.ahps_lid==nws_lid, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes']\n", + " \n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + " \n", + " # zfill HUC8 field.\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + " \n", + " if file_handle in ['flow_based_catfim_sites.csv']:\n", + " df = df.astype({'nws_data_rfc_forecast_point': 'str'})\n", + " df = df.astype({'nws_data_rfc_defined_fcst_point': 'str'})\n", + " df = df.astype({'nws_data_riverpoint': 'str'})\n", + " \n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + " \n", + " print(\"Dataframe shape\")\n", + " print(df.shape[0])\n", + " \n", + " # Chunk load data into DB\n", + " if file_handle in ['flow_based_catfim.csv']:\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 1000 #chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + " \n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + " #geometry = 'POLYGON'\n", + " \n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " # Load remaining chunks into newly created table\n", + " for remaining_chunk in list_df[1:]:\n", + " print(remaining_chunk.shape[0])\n", + " \n", + " remaining_chunk.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='append', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON',srid=3857)\n", + " }\n", + " )\n", + " \n", + " \n", + " else:\n", + " geometry = 'POINT'\n", + " df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry(geometry,srid=3857)\n", + " }\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "cb4c0634-0878-421e-88bd-c63cd0acbace", + "metadata": { + "tags": [] + }, + "source": [ + "

11 - UPDATE RAS2FIM DATA IN DB

" + ] + }, + { + "cell_type": "markdown", + "id": "00c42c0f-7e25-491c-9353-0e74a4089036", + "metadata": {}, + "source": [ + "Update from Tyler in early 2024: This process will need to be revisited, as Rob Hannah was working on updates to the Ras2FIM data model to sync up with our database. Brad and Corey were on point for this, so proper attention / planning will need to happen to mitigate the knowledge transfer loss / properly test any new updates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9be5017-b22e-43d5-96ff-73aa7313d9a5", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_stage_ft double precision;\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_stage_m double precision;\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_discharge_cfs double precision;\n", + "ALTER TABLE ras2fim.geocurves ADD COLUMN previous_discharge_cms double precision\n", + "\"\"\"\n", + "\n", + "sql = \"\"\"\n", + "WITH lagged as (SELECT \n", + " feature_id,\n", + " (lag(stage_m, 1) OVER (PARTITION BY feature_id ORDER by stage_m)) as previous_stage_m,\n", + " (lag(stage_ft, 1) OVER (PARTITION BY feature_id ORDER by stage_ft)) as previous_stage_ft,\n", + " (lag(discharge_cfs, 1) OVER (PARTITION BY feature_id ORDER by discharge_cfs)) as previous_discharge_cfs,\n", + " (lag(discharge_cms, 1) OVER (PARTITION BY feature_id ORDER by discharge_cms)) as previous_discharge_cms\n", + "FROM ras2fim.geocurves)\n", + "\n", + "UPDATE ras2fim.geocurves gc\n", + "SET previous_stage_ft = lagged.previous_stage_ft,\n", + " previous_stage_m = lagged.previous_stage_m,\n", + " previous_discharge_cfs = lagged.previous_discharge_cfs,\n", + " previous_discharge_cms = lagged.previous_discharge_cms\n", + "FROM lagged\n", + "WHERE gc.feature_id = lagged.feature_id and gc.stage_ft = lagged.stage_ft;\n", + "\"\"\"\n", + "\n", + "sql = \"\"\"\n", + "SELECT\n", + " feature_id,\n", + " max(discharge_cfs) as max_rc_discharge_cfs,\n", + " max(stage_ft) as max_rc_stage_ft,\n", + " max(discharge_cms) as max_rc_discharge_cms,\n", + " max(stage_m) as max_rc_stage_m\n", + "INTO ras2fim.max_geocurves\n", + "FROM ras2fim.geocurves\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "id": "3fae3f0b-7669-4aaf-b50a-bf82aea06a00", + "metadata": {}, + "source": [ + "

12 - Clear the HAND Cache

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40cf4236-7320-4780-a6f5-b83258073bfe", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_max;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_geo;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_zero_stage;\n", + "\"\"\"\n", + "run_sql_in_db(sql)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.5.2.11 Update.ipynb b/Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.5.2.11 Update.ipynb new file mode 100644 index 00000000..243a15e7 --- /dev/null +++ b/Core/Manual_Workflows/FIM_data_loads/10. FIM Version 4.5.2.11 Update.ipynb @@ -0,0 +1,2755 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "220f464f-0726-479f-8871-155c640458de", + "metadata": { + "tags": [] + }, + "source": [ + "### This notebook was created by Corey Krewson in 2023 to facilitate all the steps needed to update the pipelines / EGIS map services, when a new FIM version is released. \n", + "\n", + "Unfortunately, these steps are still very manual, and this notebook is the main source of documentation to making these updates." + ] + }, + { + "cell_type": "markdown", + "id": "3aa5af89-47ec-45b6-a773-ea60bd07e002", + "metadata": { + "tags": [] + }, + "source": [ + "### Load Status for FIM 4.5.2.11\n", + "\n", + "1. `Crosswalk` : Aug 5, 2024 (reloaded with new model_column Aug 14, 2024)\n", + "2. `Lambda FIM_PREFIX` : Aug 5, 2024\n", + "3. `Lambda FIM_VERSION and Memory` : Aug 5, 2024\n", + "4. `ras2fim` : Aug 21, 2024\n", + " - had to reload Sep 16. Wrong starting project (was 5070, now 2277)\n", + " - redone again.. mixed projections on files (Sep 18, 2024)\n", + "5. `ras2fim Boundaries`: Ran in Aug ?? 2024\n", + "6. `AEP`\n", + " - `2 year` : -- done - Aug 23, 2024 - redone : Sep 18\n", + " - `5 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `10 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `25 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `50 year` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `HW / High Water` : -- done - Aug 23, 2024 - redone: Sep 18\n", + " - `Change the hv-vpp-ti-viz-fim-data-prep Lambda memory back to 2048mb` : -- done - Aug 23, 2024\n", + " - Sep 16, 2024: needs reload as ras2fim needed reload\n", + "7. `Catchments`\n", + " - `Branch 0` : -- done - Aug 22, 2024\n", + " - `GMS` : -- done - Aug 22, 2024\n", + "8. `usgs_elev_table` : -- done - Aug 15, 2024\n", + "9. `hydrotable / hydrotable_staggered` : -- done - Aug 16, 2024\n", + "10. `usgs_rating_curve / usgs_rating_curves staggered` : -- done - Aug 16, 2024\n", + "11. `Skills Metrics` : -- Redone - Aug 19, 2024\n", + "12. `FIM Performance` : -- Aug 18/19 - points and poly''s done. Catchments re-done Aug 30\n", + "13. `CatFIM`\n", + " - `Stage Based CatFIM` : -- done Sep 3, 2024\n", + " - `Flow Based CatFIM` : -- done Sep 3, 2024\n", + " - `CatFIM FIM 30` : In progress\n", + "14. `Clear HAND cache` :\n", + "15. `GIT1 and `Terraform ??` : TBD\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e1ee2b5-b109-49e8-8255-f06449b44ee6", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "# Cell to manually pip reload a packages that the Jupyter engine not retained\n", + "!pip install numpy\n", + "!pip install geopandas\n", + "!pip install pyarrow\n", + "!pip install xarray\n", + "!pip install geoalchemy2\n", + "!pip install contextily\n", + "!pip install rioxarray\n", + "print(\"All loaded\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "103a0d12-b2a0-4586-ba0f-0ed6b2c4eb89", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# pd.set_option(\"max_info_rows\", 100000) # override " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b656259", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import codecs\n", + "import csv\n", + "import sys\n", + "\n", + "from datetime import datetime\n", + "\n", + "import boto3\n", + "import geopandas as gpd\n", + "import json\n", + "import pandas as pd\n", + "import s3fs\n", + "import sqlalchemy\n", + "import xarray as xr\n", + "\n", + "from geopandas import GeoDataFrame\n", + "from io import StringIO\n", + "from geoalchemy2 import Geometry\n", + "from shapely import wkt\n", + "from shapely.geometry import Polygon\n", + "from sqlalchemy.exc import DataError # yes, reduntant, fix it later\n", + "from sqlalchemy.types import Text # yes, reduntant, fix it later\n", + "\n", + "sys.path.append(os.path.join(os.path.abspath(''), '..'))\n", + "\n", + "import helper_functions.s3_shared_functions as s3_sf\n", + "import helper_functions.shared_functions as sf\n", + "# import helper_functions.viz_classes\n", + "\n", + "from helper_functions.viz_classes import database\n", + "from helper_functions.viz_db_ingest import lambda_handler as execute_db_ingest\n", + "\n", + "print(\"imports loaded\")\n", + "\n", + "# Note: Aug 2024: Sometimes if you need to do the pip install above, you need to reload this twice.. must be a circular dependency ?? or forced pkg reload\n", + "# Not sure why yet" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e944eff3-6023-48f4-9f57-27304a240447", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Aug 5, 2024: # The variable named FIM_VERSION will continue to be the field that joins all data together.\n", + "# But we need two new public display fields in the UI. We will no longer show a UI field which previously would have been\n", + "# \"FIM_4_5_2_11\". That won't be displayed anymore. The public field of:\n", + "# public_fim_version, for this edition, becomes \"FIM 5_0_0\" (yes.. three segs)\n", + "# public_model_version, for this edition, becomes \"HAND 4_5_2_11\". \n", + "# When we add ras2fim into the system, it's public_fim_version continues to be FIM 5_0_0,\n", + "# but ras2fim public_model_version, becomes \"ras2fim 2_0_3_0\"\n", + "\n", + "# NOTE: sep 19, 2024: creaing the 4.4.0.0 was just for learning purposes. Now Rob has access to UAT db's so I can compare against\n", + "# those next time if needed. We might remove the references to 4.4.0.0 next time\n", + "\n", + "OLD_FIM_VERSION = \"4.4.0.0\"\n", + "NEW_FIM_VERSION = \"4.5.2.11\"\n", + "PUBLIC_FIM_VERSION = \"FIM 5.0.0\" \n", + "FIM_MODEL_VERSION = \"HAND 4.5.2.11\" # on next major build (after Aug 2024, change this to space and dots. ie) HAND 4.5.2.11)\n", + "OLD_FIM_TAG = OLD_FIM_VERSION.replace('.', '_')\n", + "\n", + "FIM_ROOT_DPATH = f\"fim/fim_{NEW_FIM_VERSION.replace('.', '_')}\"\n", + "HAND_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/hand_datasets\"\n", + "QA_DATASETS_DPATH = f\"{FIM_ROOT_DPATH}/qa_datasets\"\n", + "\n", + "FIM_BUCKET = \"hydrovis-ti-deployment-us-east-1\"\n", + "FIM_CROSSWALK_FPATH = os.path.join(HAND_DATASETS_DPATH, \"crosswalk_table.csv\")\n", + "PIPELINE_ARN = 'arn:aws:states:us-east-1:526904826677:stateMachine:hv-vpp-ti-viz-pipeline'\n", + "\n", + "COLUMN_NAME_FIM_VERSION = \"fim_version\"\n", + "COLUMN_NAME_MODEL_VERSION = \"model_version\"\n", + "\n", + "# Sometimes these credential values get updated. To find the latest correct values, go to your AWS Console log page and click on the \"Access Key\"\n", + "# link to get the latest valid set. Using the \"AWS environment variables\" values.\n", + "# If this is not set correctly, you will get an HTTP error 400 when you call S3 lower.\n", + "# You might also see an error of 'An error occurred (NoSuchKey) when calling the GetObject operation: The specified key does not exist.\" the creds are not correct\"\n", + "\n", + "# Helps us get to the keys. Note: This was added Oct 16, 2024 and is untested\n", + "sys.path.append(os.path.join(os.path.abspath(''), '../../../../AWS_Secret_keys'))\n", + "import AWS_Keys\n", + "\n", + "\n", + "S3_CLIENT = boto3.client(\"s3\")\n", + "STEPFUNCTION_CLIENT = boto3.client('stepfunctions')\n", + "VIZ_DB_ENGINE = sf.get_db_engine('viz')\n", + "\n", + "print(\"Global Variables loaded\")" + ] + }, + { + "cell_type": "markdown", + "id": "6a5827eb-3ca3-4b29-8ee7-f7c4f3c2c736", + "metadata": { + "tags": [] + }, + "source": [ + "

1 - UPLOAD FIM4 HYDRO ID/FEATURE ID CROSSWALK

" + ] + }, + { + "cell_type": "markdown", + "id": "28195858-0cb6-4ad3-8966-db1371a8452a", + "metadata": { + "tags": [] + }, + "source": [ + "February 2024 Update from Tyler: This code will need to be updated to handle a new hand_id unique integer that the fim team (Rob Hanna and Matt Luck) has added to the crosswalk, and is now important to fim runs. They also changed the field names / format to match our schema, so this chunk of code should be able to be simplified significantly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "007c59f4-72ff-4e3e-9f99-36a8e830c426", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + " # This was already done for 4.4.0.0, so we can skip it jump from 4.5.2.0 to 4.2.5.11\n", + " \n", + "\n", + "'''\n", + "Be Very Careful to just rename tables. If they have indexes, the index will now point to the new\n", + "table names but maintain the original index name. Those index names can really mess stuff up.\n", + "Best to never rename unless you rename indexes as well. This particular on is ok. \n", + "Note: When various '\"to_sql\" tools are run which have GIST indexes, this index column name issue\n", + "will be the problem.\n", + "\n", + "Why Drop instead of Truncate? if the schema changes for the incoming, truncate will have column\n", + "missmatches.\n", + "\n", + "We really should be backing up indexes and constraints as well.\n", + "\n", + "'''\n", + "\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename, it affects indexes that we might need\n", + "# tbl_name = \"derived.fim4_featureid_crosswalk\"\n", + "# new_table_name = f\"{tbl_name}_{OLD_FIM_TAG}\"\n", + "# sql = f'''\n", + "# CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE {tbl_name};\n", + "# '''\n", + "# sf.execute_sql(sql)\n", + "# print(f\"{tbl_name} copied to {new_table_name} if it does not already exists\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c96a49f2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "print(f\"Getting column name from {FIM_CROSSWALK_FPATH}\")\n", + "\n", + "data = S3_CLIENT.get_object(Bucket=FIM_BUCKET, Key=FIM_CROSSWALK_FPATH)\n", + "d_reader = csv.DictReader(codecs.getreader(\"utf-8\")(data[\"Body\"]))\n", + "headers = d_reader.fieldnames\n", + "\n", + "# Aug 5, 2024 - Updated column names for 4.5.2.11\n", + "header_str = \"(\"\n", + "for header in headers:\n", + " header_str += header\n", + " if header in ['hand_id', 'hydro_id', 'lake_id']:\n", + " header_str += ' integer,'\n", + " elif header in ['branch_id', 'feature_id']:\n", + " header_str += ' bigint,'\n", + " else:\n", + " header_str += ' TEXT,'\n", + "header_str = header_str[:-1] + \")\"\n", + "print(header_str)\n", + "\n", + "db = database(db_type=\"viz\")\n", + "with db.get_db_connection() as conn, conn.cursor() as cur:\n", + " \n", + " print(f\"Deleting/Creating derived.fim4_featureid_crosswalk using columns {header_str}\")\n", + " sql = f\"DROP TABLE IF EXISTS derived.fim4_featureid_crosswalk; CREATE TABLE derived.fim4_featureid_crosswalk {header_str};\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Importing {FIM_CROSSWALK_FPATH} to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"\"\"\n", + " SELECT aws_s3.table_import_from_s3(\n", + " 'derived.fim4_featureid_crosswalk',\n", + " '', \n", + " '(format csv, HEADER true)',\n", + " (SELECT aws_commons.create_s3_uri(\n", + " '{FIM_BUCKET}',\n", + " '{FIM_CROSSWALK_FPATH}',\n", + " 'us-east-1'\n", + " ) AS s3_uri\n", + " ),\n", + " aws_commons.create_aws_credentials('{TI_ACCESS_KEY}', '{TI_SECRET_KEY}', '{TI_TOKEN}')\n", + " );\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " \n", + " # Aug 5, 2024: see notes at the top about the new FIM 5.0.0 system \n", + " # We will manually add a couple of new columns for public display\n", + " # New columns names are public_fim_version (FIM_5_0_0) and public model version (FIM_4_5_2_11)\n", + " print(f\"Adding {COLUMN_NAME_FIM_VERSION} column to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"ALTER TABLE derived.fim4_featureid_crosswalk ADD COLUMN IF NOT EXISTS {COLUMN_NAME_FIM_VERSION} text DEFAULT '{PUBLIC_FIM_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + " \n", + " print(f\"Adding {COLUMN_NAME_MODEL_VERSION} column to derived.fim4_featureid_crosswalk\")\n", + " sql = f\"ALTER TABLE derived.fim4_featureid_crosswalk ADD COLUMN IF NOT EXISTS {COLUMN_NAME_MODEL_VERSION} text DEFAULT '{FIM_MODEL_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(\"Adding feature id index to derived.fim4_featureid_crosswalk\")\n", + " # Drop it already exists\n", + " sql = \"DROP INDEX IF EXISTS derived.fim4_crosswalk_feature_id\"\n", + " cur.execute(sql)\n", + " conn.commit() \n", + " sql = \"CREATE INDEX fim4_crosswalk_feature_id ON derived.fim4_featureid_crosswalk USING btree (feature_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(\"Adding hydro id index to derived.fim4_featureid_crosswalk\")\n", + " # Drop it already exists\n", + " sql = \"DROP INDEX IF EXISTS derived.fim4_crosswalk_hydro_id\"\n", + " cur.execute(sql)\n", + " conn.commit() \n", + " sql = \"CREATE INDEX fim4_crosswalk_hydro_id ON derived.fim4_featureid_crosswalk USING btree (hydro_id)\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + "print(\"\")\n", + "print(f\"Successully loaded derived.fim4_featureid_crosswalk and updated it\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "23500c40-b088-4b62-aa10-fe2f88c52ef9", + "metadata": { + "tags": [] + }, + "source": [ + "

2 - UPDATE FIM HAND PROCESSING LAMBDA ENV VARIABLE WITH NEW FIM PREFIX

\n", + "\n", + "https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions/hv-vpp-ti-viz-hand-fim-processing?tab=configure\n", + "\n", + "Lambda name: hv-vpp-ti-viz-hand-fim-processing\n", + "\n", + "In the Configuration Tab, click on the `Environment variables` (left menu), then change the `FIX_PREFIX` to location of the latest hand_dataset you are working on. Referencial to S3 Bucket name.\n", + "
\n", + "ie) fim/fim_4_5_2_11/hand_datasets\n", + "\n", + "Aug 5, 2024: changed my FIM_PREFIX:\n", + "
from: fim/fim_4_5_2_0/hand_datasets\n", + "
to: fim/fim_4_5_2_11/hand_datasets\n" + ] + }, + { + "cell_type": "markdown", + "id": "040cf1f3-cdfd-467a-9ac0-5478a285f032", + "metadata": { + "tags": [] + }, + "source": [ + "

3 - UPDATE FIM DATA PREP LAMBDA ENV VARIABLE WITH NEW FIM VERSION AND MEMORY

\n", + "\n", + "https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions/hv-vpp-ti-viz-fim-data-prep?tab=code\n", + "\n", + "Lambda name: hv-vpp-ti-viz-hand-fim-processing\n", + "\n", + "In the `Configuration` Tab, click on the `Environment variables` (left menu), then change the `FIM_VERSION` to the latest fim model version. \n", + "
\n", + "ie) 4.5.2.11\n", + "

\n", + "Aug 5, 2024: changed my FIM_VERSION:\n", + "
from: 4.5.2.0\n", + "
to: 4.5.2.11\n", + "

\n", + "Then: Still in the Configuration Tab, now click on the `General Configuration` (left menu), followed \n", + "by the `edit` button on the far right side, to get into the `General Configuration` page details.\n", + "
Change (if they are not already there)\n", + "
Memory (text field) to 4096 (MB) and\n", + "
Emphermeral Storage tp 1024 (MB)\n", + "
\n", + "#### Note: Later in these steps we will change the Memory and Emphermal Storage back to default values, see below ####\n", + "\n", + "Aug 5, 2024: changed my Memory (4096) and Emphermal (1024):\n" + ] + }, + { + "cell_type": "markdown", + "id": "0ef11c15-c1c1-46a8-a65a-fa2a0c1dc97b", + "metadata": { + "tags": [] + }, + "source": [ + "

4 - LOAD AND UPDATE RAS2FIM DATA IN DB

\n", + "\n", + "

Note about ras2fim domain extents

\n", + "As of Aug 2024, a new service came online for a new layer for ras2fim domain extents. Don took care of it.\n", + "The new extent data was loaded as part of different tools and processes, but we will likly want to consolidate\n", + "it to here.\n", + "\n", + "When ras2fim datasets are released, they come with a \"release\" package that has all of the ras2fim models and geocurves\n", + "needed here, but also has domain extents for each HUC in the release package. That entire thing is loaded to S3\n", + "for HV to load. As we will upload a new ras2fim data / geocurves and domain extents at the same time, those load\n", + "scripts should all stay together (here for now). We can add that next time.\n", + "\n", + "However.. ras2fim will likely do releases a lot more regularily than FIM, so it should get it's own independeant load scripts\n", + "which this script can optionally reference if it likes (well.. future versions of this script, ie FIM 4.8.x.x or whatever)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dfc0a44c-8b46-4db5-a9a0-c65e0bf1e20b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Already done for 4.4.0.0 (4.5.2.11)\n", + "\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "\n", + "\n", + "# By doing a backup, we are leaving the original tables with the indexes and we want to keep them with\n", + "# ras2fim as it loads geometry and without those pre-existing indexes, loading can fail\n", + "# tbl_name = \"ras2fim.geocurves\"\n", + "# new_table_name = f\"{tbl_name}_{OLD_FIM_TAG}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE {tbl_name};\"\n", + "# sf.execute_sql(sql)\n", + "# print(f\"{tbl_name} copied to {new_table_name} if it does not already exists\")\n", + "\n", + "\n", + "# tbl_name = \"ras2fim.max_geocurves\"\n", + "# new_table_name = f\"{tbl_name}_{OLD_FIM_TAG}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE {tbl_name};\"\n", + "# sf.execute_sql(sql)\n", + "# print(f\"{tbl_name} copied to {new_table_name} if it does not already exists\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7e8c3939-f2fc-42de-921d-423d69e023f1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# NOTE: This can be removed in future ras2fim loads.\n", + "\n", + "\n", + "# Temp Aug 2024: We originally just did a table rename for the {table name} to add _4_4_0_0 on it.\n", + "# Then discovered that renaming it means the indexes are now with the new renamed tables\n", + "# When we load the ras2fim tables, they can't have some of the indexes in place.\n", + "# So.. for now, we are going to rename the _4_4_0_0 tables back to their original name, the do the backup\n", + "# above.\n", + "#sf.execute_sql(f'ALTER TABLE IF EXISTS ras2fim.geocurves_4_4_0_0 RENAME TO geocurves;')\n", + "#sf.execute_sql(f'ALTER TABLE IF EXISTS ras2fim.max_geocurves_4_4_0_0 RENAME TO max_geocurves')\n", + "#print(\"Done renaming them back\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "60f910bf-4da7-4e62-b9b6-e981f21a23af", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# This function is not efficient, but as ras2fim has a built in geometry columns, it loads it as a string and not a \"geometry\" object.\n", + "# we have to add the records one at a time.\n", + "\n", + "# Aug 2024: Maybe eventually I can make this more generic, but for now it is ras2fim specific\n", + "# see the new one for catfim as it can likely be rolled into one function\n", + "\n", + "# UPDATE: Sep 19, 2024: We had to remove the chunking portion as we discovered that each csv being loaded might have \n", + "# different crs's. You have to know the incoming crs in order to reproject as the incoming csv's can not be used\n", + "# to auto detect the crs. We put in cards for the ras2fim team to have all final csv's come out as a standard\n", + "# projection (perferraly 3857). Going back to chunking will slow down our DB writes and speed it back up again\n", + "\n", + "# Most of the temp comment code is still in place for chunking.\n", + "\n", + "\n", + "def load_ras2fim_files_into_db(csv_file_list, s3_source_parent_prefix, schema_name, db_name):\n", + "\n", + " # TODO: change these to params and make more generic\n", + " # also tell that this is only if you have a geometry column (for now)\n", + "\n", + " print(f\"Loading data to database {schema_name}.{db_name}\")\n", + " print(\"\")\n", + "\n", + " if len(csv_file_list) == 0:\n", + " raise Exception(\"csv file list is empty\")\n", + "\n", + "\n", + " # source_crs = \"epsg:2277\" # (it is coming in as 5070) but we are changing it to 3857 as loading\n", + "\n", + " # The server has limited memory but it is faster to load as many csv's in at a time\n", + " # as resonablty possible. We are going to try it at chunks of 50 (50 csv files) which for ras2fim\n", + " # shouls be appx 2,000 records, but for ras2fim V2, we have 750 (ish) files.\n", + "\n", + " # We can leave this open the entire times as well.\n", + " s3_client = boto3.client(\"s3\")\n", + " default_kwargs = {\"Bucket\": FIM_BUCKET, \"Prefix\": s3_source_parent_prefix}\n", + "\n", + "\n", + " # chunk_size = 25 # number of csv's to load per set\n", + " total_row_count = 0 # all csv row counts combined. You should see this as a record count in the db when done\n", + " r2f_df = None # a re-used concatenating pd dataframe loading up sets of 20 csvs\n", + " # is_new_df = True # After we db load a set, we reset this to start a new set\n", + " is_first_db_set = True # Very first db load\n", + "\n", + " num_recs = len(csv_file_list)\n", + " print(f\"Total number of files to process are {num_recs}\")\n", + "\n", + " # We are going ot keep the db connection open the entire time. \n", + " # It is slow to open/close connections\n", + " # It \"should not\" ?? block any other scripts / services from usign it\n", + " # most Sql servers allow for more than one connection at a time.\n", + " db = database(db_type=\"viz\")\n", + "\n", + " for idx, full_file_url in enumerate(csv_file_list):\n", + "\n", + " print(f\"Dowloading {idx + 1} of {num_recs} files: {full_file_url}\")\n", + "\n", + " is_first_db_set = idx == 0\n", + " # if idx > 4:\n", + " # return # stub test\n", + "\n", + "# if is_new_df is True:\n", + " s3_client = boto3.client(\"s3\")\n", + " default_kwargs = {\"Bucket\": FIM_BUCKET, \"Prefix\": s3_source_parent_prefix}\n", + "\n", + "\n", + " # is_new_df = False\n", + " # else:\n", + " # temp_df = pd.read_csv(full_file_url)\n", + " # total_row_count += len(temp_df)\n", + " # r2f_df = pd.concat([r2f_df, temp_df])\n", + "\n", + " # we want it merge into the db on each xth (chunk size) record or the last record\n", + " # if ((idx + 1) == num_recs) or ((idx+1) % chunk_size == 0):\n", + "\n", + " # download the csv via pandas into a dataframe\n", + " r2f_df = pd.read_csv(full_file_url)\n", + "\n", + " total_row_count += len(r2f_df)\n", + " r2f_df = r2f_df.fillna(0)\n", + "\n", + " cur_csv = r2f_df.loc[0, 'crs']\n", + " # print(f\"Original crs = {cur_csv}\")\n", + "\n", + " # Create a new source_unit_id which traces back to the folder and code to create\n", + " # this specific huc and model in ras2fim\n", + " r2f_df['source_unit_id'] = r2f_df.apply(lambda row: row.unit_name + \"_\" + \n", + " str(row.unit_version), axis=1)\n", + " r2f_df.rename(columns={'source_code': 'feature_id_source_code', 'geometry': 'geom'}, inplace=True)\n", + " r2f_df['geom'] = r2f_df['geom'].apply(wkt.loads)\n", + "\n", + " # print(f\"... Next set of downloads and adjustments complete, now to db load - Last Idx: {idx + 1} \")\n", + "\n", + " r2f_geodf = gpd.GeoDataFrame(data=r2f_df, geometry='geom', crs=cur_csv)\n", + " # print(r2f_geodf)\n", + " # print(\"\")\n", + " r2f_reproj = r2f_geodf.to_crs(\"epsg:3857\")\n", + "\n", + " # If this is the first load, the type must be the value of \"replace\", else \"append\"\n", + " load_type = 'replace' if is_first_db_set is True else 'append'\n", + "\n", + " r2f_reproj.to_postgis(\n", + " name=db_name,\n", + " con=VIZ_DB_ENGINE,\n", + " schema=schema_name,\n", + " if_exists=load_type,\n", + " index=False,\n", + " )\n", + " print(\"... db load complete\")\n", + "\n", + " # Sanity check on crs\n", + " # if is_first_db_set:\n", + " # print(sf.run_sql_in_db(f\"SELECT ST_SRID(geom) FROM {schema_name}.{db_name} LIMIT 1\"))\n", + "\n", + " r2f_df = None\n", + " r2f_geodf = None\n", + " r2f_reproj = None\n", + " # is_new_df = True # reset it for the next set\n", + " s3_client = None # resets it so it is not open so long. It timse out if open too long\n", + " is_first_db_set = False\n", + "\n", + " # break\n", + "\n", + " # else don't write to db tu continue on to the next record\n", + "\n", + " # end for\n", + " print(\"\")\n", + " print(\"--------------------------------------------------------------\")\n", + " print(\"All records now loaded to the database\")\n", + "\n", + " with db.get_db_connection() as conn, conn.cursor() as cur:\n", + " # after all records are loaded to the db.\n", + " print(f\"Adding {COLUMN_NAME_FIM_VERSION} column to {schema_name}.{db_name}\")\n", + " sql = f\"ALTER TABLE {schema_name}.{db_name} ADD COLUMN IF NOT EXISTS {COLUMN_NAME_FIM_VERSION} text DEFAULT '{PUBLIC_FIM_VERSION}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(f\"Adding {COLUMN_NAME_MODEL_VERSION} column to {schema_name}.{db_name}\")\n", + " sql = f\"ALTER TABLE {schema_name}.{db_name} ADD COLUMN IF NOT EXISTS {COLUMN_NAME_MODEL_VERSION} text DEFAULT '{model_version}';\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " print(\"Dropping un-necessary columns from DB ...\")\n", + " drop_col_names = [\"profile_num\", \"model_id\", \"xs_us\", \"xs_ds\", \"unit_name\", \"unit_version\", \"version\", \"crs\"]\n", + " # print(drop_col_names)\n", + " # print(\"\")\n", + "\n", + " sql = f\"ALTER TABLE {schema_name}.{db_name} \"\n", + " for col_name in drop_col_names:\n", + " sql += f\" DROP COLUMN {col_name},\"\n", + "\n", + " # the last char is a comma and we need to change it to be \" CASCASE;\"\n", + " sql = sql[0:-1] + \" CASCADE;\"\n", + " print(sql)\n", + " cur.execute(sql)\n", + " conn.commit()\n", + " print(f\"Total Rows loaded to DB is {total_row_count}\")\n", + " # end of def\n", + "\n", + "print(\"Download and db load ras2fim function loaded\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e57d7bd1-c852-416e-b259-715b023bf743", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Load the ras2fim.geocurves\n", + "\n", + "# Note: For Aug 2024 (ras 2.0.1.0 with appx 11 hucs, this took appx 1 hr 15 mins to run\n", + "\n", + "model_version = \"ras2fim 2.0.1.0\"\n", + "new_s3_version_folder = \"v2_0\"\n", + "s3_source_parent_prefix = f\"ras2fim/{new_s3_version_folder}\"\n", + "\n", + "start_dt = datetime.now()\n", + "print(\"\")\n", + "print(\"Starting loading of ras2fim.geocurves\")\n", + "\n", + "\n", + "# Aug 21 2024, AWS Creds expired and died just after loading rec 2475 of 7948.\n", + "# Commented out truncate, reset csv_list to be recs 2476 and higher and restarted.\n", + "# All over exact time lost, but can esimate it.\n", + "sql = '''\n", + " TRUNCATE TABLE ras2fim.geocurves;\n", + " TRUNCATE TABLE ras2fim.max_geocurves;\n", + "'''\n", + "print(sf.execute_sql(sql))\n", + "print(\"geocurves and max_geocurves tables truncated to start clean\")\n", + "print(\"\")\n", + "\n", + "# Now download the s3 geocurves\n", + "# Overloaded the server as the memory couldn't handle it.\n", + "# r2f_df = s3_sf.download_S3_csv_files_to_df(FIM_BUCKET, s3_source_parent_prefix, True)\n", + "\n", + "# lets just get a list of files, then iterate over them to load each to the db one at a time.\n", + "r2f_file_names = s3_sf.get_s3_subfolder_file_names(FIM_BUCKET, s3_source_parent_prefix, False)\n", + "\n", + "if len(r2f_file_names) == 0:\n", + " raise Exception(\"No file names found\")\n", + "\n", + "\n", + "csv_file_list = list(filter(lambda x: (x.endswith(\".csv\") == True), r2f_file_names))\n", + "if len(csv_file_list) == 0:\n", + " raise Exception(\"No csv file names found\")\n", + "\n", + "# print(csv_file_list)\n", + "\n", + "# Test against just 20 records for a timing test\n", + "# test_list = csv_file_list[:20]\n", + "# print(test_list)\n", + "\n", + "print(\"Loading df into ras2fim geocurve db\")\n", + "\n", + "load_ras2fim_files_into_db(csv_file_list, s3_source_parent_prefix, 'ras2fim', 'geocurves')\n", + "\n", + "# See note above about having to restart at rec num 2475 (our index displays were 1 based and not zero based\n", + "# restart_list = csv_file_list[974:]\n", + "# load_ras2fim_files_into_db(restart_list, s3_source_parent_prefix, 'ras2fim', 'geocurves')\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(\".... ras2fim files now loaded to ras2fim.geocurves\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ded5372c-d94e-4276-be77-b13a94db55cc", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# ras2fim \"previous\" columns loading\n", + "\n", + "print(\"... Starting ras2fim previous stage adding and max_geocurves creating\")\n", + "start_dt = datetime.now()\n", + "\n", + "sql = \"\"\"\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_stage_ft double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_stage_m double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_discharge_cfs double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS previous_discharge_cms double precision;\n", + "ALTER TABLE IF EXISTS ras2fim.geocurves ADD COLUMN IF NOT EXISTS oid INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY;\n", + "\"\"\" \n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = '''DROP TABLE IF EXISTS ras2fim.temp_ras2fim_lagged;'''\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "db = database(db_type=\"viz\")\n", + "with db.get_db_connection() as conn, conn.cursor() as cur:\n", + "\n", + " # PS. It is ok that there are some nulls in the four \"previous\" columns\n", + " sql = \"\"\"\n", + " CREATE TABLE ras2fim.temp_ras2fim_lagged as (SELECT\n", + " feature_id,\n", + " stage_ft,\n", + " (lag(stage_m, 1) OVER (PARTITION BY feature_id ORDER by stage_m)) as previous_stage_m,\n", + " (lag(stage_ft, 1) OVER (PARTITION BY feature_id ORDER by stage_ft)) as previous_stage_ft,\n", + " (lag(discharge_cfs, 1) OVER (PARTITION BY feature_id ORDER by discharge_cfs)) as previous_discharge_cfs,\n", + " (lag(discharge_cms, 1) OVER (PARTITION BY feature_id ORDER by discharge_cms)) as previous_discharge_cms\n", + " FROM ras2fim.geocurves)\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + " sql = \"\"\"\n", + " UPDATE ras2fim.geocurves gc\n", + " SET previous_stage_ft = lagged.previous_stage_ft,\n", + " previous_stage_m = lagged.previous_stage_m,\n", + " previous_discharge_cfs = lagged.previous_discharge_cfs,\n", + " previous_discharge_cms = lagged.previous_discharge_cms\n", + " FROM ras2fim.temp_ras2fim_lagged as lagged\n", + " WHERE gc.feature_id = lagged.feature_id\n", + " and gc.stage_ft = lagged.stage_ft;\n", + " \"\"\"\n", + " cur.execute(sql)\n", + " conn.commit()\n", + "\n", + "\n", + "print(\"Removing ras2fim.temp_ras2fim_lagged table\")\n", + "sql = \"DROP TABLE IF EXISTS ras2fim.temp_ras2fim_lagged;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "print(\"Adding indexes if required\")\n", + "\n", + "sql = \"ALTER TABLE IF EXISTS ras2fim.geocurves OWNER to viz_proc_admin_rw_user;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"ALTER TABLE IF EXISTS ras2fim.geocurves OWNER to viz_proc_admin_rw_user;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.geocurves_discharge_cms_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS geocurves_discharge_cms_index ON ras2fim.geocurves USING btree (discharge_cms ASC NULLS LAST)\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.geocurves_feature_id_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS geocurves_feature_id_index ON ras2fim.geocurves USING btree (feature_id ASC NULLS LAST)\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.geocurves_previous_discharge_cms_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS geocurves_previous_discharge_cms_index\n", + " ON ras2fim.geocurves USING btree (previous_discharge_cms ASC NULLS LAST)\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "\n", + "# Skip for now.. not sure if it will be needed in the next set\n", + "# -- DROP INDEX IF EXISTS ras2fim.idx_geocurves_geom;\n", + "# CREATE INDEX IF NOT EXISTS idx_geocurves_geom\n", + "#     ON ras2fim.geocurves USING gist\n", + "#     (geom)\n", + "#     TABLESPACE pg_default;\n", + "\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(\".... Done - ras2fim previous stage columns added\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1bd997c-f813-49dd-94e0-adf062f3b74b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# ras2fim max_geocurve loading\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "print(\"Start of creating and loading max_geocurves table\")\n", + "\n", + "# Table can't have any indexes as nothing in unique enough\n", + "# We shoudl have an oid column though\n", + "sql = \"DROP TABLE IF EXISTS ras2fim.max_geocurves;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"\"\"\n", + "CREATE TABLE ras2fim.max_geocurves as (\n", + " SELECT\n", + " feature_id,\n", + " max(discharge_cfs) as max_rc_discharge_cfs,\n", + " max(stage_ft) as max_rc_stage_ft,\n", + " max(discharge_cms) as max_rc_discharge_cms,\n", + " max(stage_m) as max_rc_stage_m\n", + " FROM ras2fim.geocurves\n", + " GROUP BY feature_id )\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"DROP INDEX IF EXISTS ras2fim.max_geocurves_feature_id_index;\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "sql = \"\"\"\n", + "CREATE INDEX IF NOT EXISTS max_geocurves_feature_id_index ON \n", + " ras2fim.max_geocurves USING btree (feature_id ASC NULLS LAST);\n", + "\"\"\"\n", + "print(sf.execute_sql(sql))\n", + "\n", + "print(\"max_geocurves table created and filled\")\n", + "\n", + "\n", + "print(\"\")\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "bec1b8bf-e1dc-4525-9066-afef7273e289", + "metadata": { + "tags": [] + }, + "source": [ + "

5 - Load the Ras2Fim boundaries into egis

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "251905aa-259a-4ef4-9590-dcd31375c624", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Moves data from local shapefile to EGIS\n", + "\n", + "# Importing Modules\n", + "import os\n", + "import sys\n", + "import helper_functions.shared_functions as sf\n", + "import geopandas as gpd\n", + "\n", + "# sys path if needed\n", + "sys.path.append(os.path.join(os.path.abspath(''), '..'))\n", + "\n", + "# Dir location of your data\n", + "DATA_DPATH = r\"/home/ec2-user/SageMaker/Don - Campground/Don - Store\"\n", + "# File location of your shapefile data\n", + "DATASET_DPATH = f\"{DATA_DPATH}/main_huc8.shp\"\n", + "# Check path by printing\n", + "print(DATASET_DPATH)\n", + "\n", + "# Only use when you want to create something new\n", + "gdf = gpd.read_file(DATASET_DPATH, columns='geometry')\n", + "gdf.to_postgis(name=\"boundaries2\", con=sf.get_db_engine(db_type=\"viz\"),\n", + " schema=\"ras2fim\", if_exists=\"replace\")\n", + "\n", + "# add an oid field to your data\n", + "sql = \"\"\"\n", + "ALTER TABLE ras2fim.boundaries ADD COLUMN oid SERIAL PRIMARY KEY;\n", + "\"\"\"\n", + "sf.execute_sql(sql)\n", + "\n", + "# delete a table in egis if you made a mistake or such\n", + "sql = \"\"\"\n", + "DROP TABLE IF EXISTS reference.ras2fim_boundaries;\n", + "\"\"\"\n", + "sf.execute_sql(sql, db_type=\"egis\")\n", + "\n", + "# The function move_data_from_viz_to_egis is called because the data needs to \n", + "# be in the egis before publishing to uat or prd" + ] + }, + { + "cell_type": "markdown", + "id": "316b1321-f570-4f53-aeee-f8798330642f", + "metadata": { + "tags": [] + }, + "source": [ + "

6 - Run AEP FIM Pipelines.

\n", + "Updated Documentation from Tyler Early 2024: This can be done in a couple of diferent ways.\n", + "\n", + "1) One option is to use the pipeline_input code created below by Corey to start the AEP pipelines directly from this notebook.
\n", + " However, those pipeline_input dictionaries may very well be be out of date, pending more recent updates to the pipelines.\n", + "{\n", + " \"configuration\": \"reference\",\n", + " \"products_to_run\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"invoke_step_function\": false\n", + "}\n", + "\n", + "Using this test event will produce the pipeline instructions, printing any errors that come up, and you can simply change the invoke_step_function flag to True when you're ready to actually invoke a pipeline run (which you can monitor/manage in the step function gui). You will need to manually update the static_nwm_aep_inundation_extent_library.yml product config file to only run 1 aep configuration at a time, and work through the configs as the pipelines finish (takes about an hour each). I've also found that the fim_data_prep lambda function needs to be temporarilly increased to ~4,500mb of memory to run these pipelines. It's also worth noting that these are very resource intesive pipelines, as FIM is calculated for every reach in the nation. AWS costs can amount to hundreds or even thousands of dollars by running these pipelines, so use responsibly.\n", + "\n", + "A couple other important notes:\n", + "- These AEP configurations write data directly to the aep_fim schema in the egis RDS database, instead of the viz database.\n", + "- You'll need to dump the aep_fim schema after that is complete for backup / deployment into other environments.\n", + "- This process has not been tested with new NWM 3.0 Recurrence Flows, and a good thorough audit / QC check of output data is warranted, given those changes and the recent updates to the pipelines.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a698067", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Aug 6, 2024: Note: This was created after all intervals were created, so only HW was tested against\n", + "\n", + "def get_aep_pipeline_input(stage_interval):\n", + " pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"python_preprocessing\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_nwm_aep_inundation_extent_library\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": f\"rf_{stage_interval}_inundation\",\n", + " \"target_table\": f\"aep_fim.rf_{stage_interval}_inundation\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": f\"rf_{stage_interval}_inundation\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_nwm_aep_inundation_extent_library_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {},\n", + " \"logging_info\": {\n", + " \"Timestamp\": int(datetime.now().timestamp())\n", + " }\n", + " }\n", + "\n", + " return pipeline_input\n", + "\n", + "print(\"function: get_aep_pipeline_input loaded\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f6d6ee69", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 2 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"2\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_2_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 2 year flows ie: rf_2_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4f89d9a", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 5 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"5\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_5_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 5 year flows ie: rf_5_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "791d1a8b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 10 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"10\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_10_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 10 year flows ie: rf_10_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1bb87128", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 25 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"25\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_25_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 25 year flows ie: rf_25_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4832e4e0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### 50 Year Flow\n", + "pipeline_input = get_aep_pipeline_input(\"50\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_50_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : 50 year flows ie: rf_50_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "187e83bc-ebbe-4615-a046-e0ef7b09ad3b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "#### HW (High Water) Flow\n", + "pipeline_input = get_aep_pipeline_input(\"high_water\")\n", + "\n", + "# notice, slightly different object name\n", + "pipeline_name = f\"sagemaker_aep_hw_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(f\"AEP : High Water year flows ie: rf_hw_inundation kicked off. Can take 45 mins. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n", + "print(\"\")" + ] + }, + { + "cell_type": "markdown", + "id": "2c810767-2f5d-46b2-860c-5d5c549f2e2a", + "metadata": { + "tags": [] + }, + "source": [ + "

IMPORTANT: Return hv-vpp-ti-viz-fim-data-prep Lambda memory to 2048mb

\n", + "\n", + "https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions/hv-vpp-ti-viz-fim-data-prep?tab=code\n", + "\n", + "Lambda name: hv-vpp-ti-viz-hand-fim-processing\n" + ] + }, + { + "cell_type": "markdown", + "id": "48074dbe-ead7-467f-ae68-16c746115efc", + "metadata": {}, + "source": [ + "

7 - RUN CATCHMENT WORKFLOWS 2 CONFIGS AT A TIME. CHECK FOR STEP FUNCTION FINISHING BEFORE STARTING NEW ONE

" + ] + }, + { + "cell_type": "markdown", + "id": "9b33a346-ee44-4844-9687-627ccd601263", + "metadata": { + "tags": [] + }, + "source": [ + "### 7a - Branch 0 Catchments. Wait until it is done before kicking off the next GMS (Level Path) catchments load a bit lower. ###" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c77d6e5b-f5fb-422f-a6c3-0f53743cd631", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# TODO: Add backups to these (4.4.0.0) (already not available for 4.4.0.0)\n", + "\n", + "\n", + "# TODO: We likely need to keep the schema, so trun is fine for now, but eventually, get a lsit of the indexes and re-build \n", + "# indexes each time as/if needed. Granted these tables are loaded via Lambdas, so I am not sure how indexes will play into that\n", + "\n", + "sf.execute_sql('''\n", + "TRUNCATE \n", + " fim_catchments.branch_0_catchments, \n", + " fim_catchments.branch_0_catchments_hi, \n", + " fim_catchments.branch_0_catchments_prvi;\n", + "''', db_type=\"egis\")\n", + "\n", + "print(\"Catchment Truncation for Branch 0 Done\")\n", + "print(\"\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a7495759", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"python_preprocessing\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_0_branches\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_0_branches\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_0_branches_hi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_0_branches_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_0_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_0_branches_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_0_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_0_branches_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_0_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {},\n", + " \"logging_info\": {\n", + " \"Timestamp\": int(datetime.now().timestamp())\n", + " }\n", + "}\n", + "\n", + "pipeline_name = f\"sagemaker_0_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "# TODO: For later... fix fim_version value and add model_version column. current fim_version vlaue is showing 4.5.2.11\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(\"Catchments Branch 0 load kicked off. Last runtime: 23:38.019. \"\n", + " f\"Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "d792a88e-51fd-4e28-9360-b90abd99ddaf", + "metadata": {}, + "source": [ + "### 7b - GMS (Level Paths / non branch 0) catchments ###" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ea2a5be-9936-4abe-832a-8582f3c3af64", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# TODO: Add backups to these\n", + "\n", + "sf.execute_sql('''\n", + "TRUNCATE\n", + " fim_catchments.branch_gms_catchments,\n", + " fim_catchments.branch_gms_catchments_hi,\n", + " fim_catchments.branch_gms_catchments_prvi;\n", + "''', db_type=\"egis\")\n", + "\n", + "print(\"Catchment Truncation for GMS (Level Path) Branchs Done\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9ae8917f", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "pipeline_input = {\n", + " \"configuration\": \"reference\",\n", + " \"job_type\": \"auto\",\n", + " \"data_type\": \"channel\",\n", + " \"keep_raw\": False,\n", + " \"reference_time\": datetime.now().strftime('%Y-%m-%d 00:00:00'),\n", + " \"configuration_data_flow\": {\n", + " \"db_max_flows\": [],\n", + " \"db_ingest_groups\": [],\n", + " \"python_preprocessing\": []\n", + " },\n", + " \"pipeline_products\": [\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_gms_branches\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_gms_branches\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_hi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_gms_branches_hi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_hi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_gms_branches_hi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_hi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " },\n", + " {\n", + " \"product\": \"static_hand_catchments_gms_branches_prvi\",\n", + " \"configuration\": \"reference\",\n", + " \"product_type\": \"fim\",\n", + " \"run\": True,\n", + " \"fim_configs\": [\n", + " {\n", + " \"name\": \"catchments_gms_branches_prvi\",\n", + " \"target_table\": \"fim_catchments.branch_gms_catchments_prvi\",\n", + " \"fim_type\": \"hand\",\n", + " \"sql_file\": \"catchments_gms_branches_prvi\"\n", + " }\n", + " ],\n", + " \"services\": [\n", + " \"static_hand_catchments_gms_branches_prvi_noaa\"\n", + " ],\n", + " \"raster_outputs\": {\n", + " \"output_bucket\": \"\",\n", + " \"output_raster_workspaces\": []\n", + " },\n", + " \"postprocess_sql\": [],\n", + " \"product_summaries\": [],\n", + " \"python_preprocesing_dependent\": False\n", + " }\n", + " ],\n", + " \"sql_rename_dict\": {},\n", + " \"logging_info\": {\n", + " \"Timestamp\": int(datetime.now().timestamp())\n", + " }\n", + "}\n", + "\n", + "pipeline_name = f\"sagemaker_gms_catchments_{datetime.now().strftime('%Y%m%dT%H%M')}\"\n", + "\n", + "# TODO: For later... fix fim_version value and add model_version column. current fim_version vlaue is showing 4.5.2.11\n", + "\n", + "STEPFUNCTION_CLIENT.start_execution(\n", + " stateMachineArn = PIPELINE_ARN,\n", + " name = pipeline_name,\n", + " input= json.dumps(pipeline_input)\n", + ")\n", + "\n", + "print(\"Catchments GMS Branches (Level Paths / non branch 0) load kicked off.\"\n", + " f\" Last runtime: 24:45.150. Pipeline : hv-vpp-ti-viz-pipeline - {pipeline_name}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "6ff4dc6b-c41b-412c-9d9f-d812c5c72115", + "metadata": { + "tags": [] + }, + "source": [ + "

8 - Recreate derived.usgs_elev_table

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e4eb95e-e147-4789-a76b-d8bda33bc3cb", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Already run for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.usgs_elev_table RENAME TO usgs_elev_table_fim_{OLD_FIM_TAG};')\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2dd0c144-5a20-4899-b946-a6dd9ae49b53", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# NOTE: Aug 6, 2024 - There is already a 4.4.0.0 backup. How did it get made?\n", + "# Has appx 2,150 HUCs to process, but this section goes quickly.\n", + "\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.usgs_elev_table;')\n", + "\n", + "uet_usecols = ['location_id', 'HydroID', 'dem_adj_elevation', 'nws_lid', 'levpa_id']\n", + "\n", + "paginator = S3_CLIENT.get_paginator('list_objects')\n", + "operation_parameters = {'Bucket': FIM_BUCKET,\n", + " 'Prefix': f'{HAND_DATASETS_DPATH}/',\n", + " 'Delimiter': '/'}\n", + "page_iterator = paginator.paginate(**operation_parameters)\n", + "page_count = 0\n", + "for page in page_iterator:\n", + " page_count += 1\n", + " prefix_objects = page['CommonPrefixes']\n", + " for i, prefix_obj in enumerate(prefix_objects):\n", + " print(f\"Processing {i+1} of {len(prefix_objects)} on page {page_count}\")\n", + " huc_prefix = prefix_obj.get(\"Prefix\")\n", + " usgs_elev_table_key = f'{huc_prefix}usgs_elev_table.csv'\n", + " try:\n", + " uet = S3_CLIENT.get_object(\n", + " Bucket=FIM_BUCKET, \n", + " Key=usgs_elev_table_key\n", + " )['Body']\n", + " uet_df = pd.read_csv(uet, header=0, usecols=uet_usecols)\n", + " uet_df['fim_version'] = PUBLIC_FIM_VERSION\n", + " uet_df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + " uet_df.to_sql(\n", + " con=VIZ_DB_ENGINE,\n", + " dtype={\n", + " \"location_id\": Text(),\n", + " \"nws_data_huc\": Text()\n", + " },\n", + " schema='derived',\n", + " name='usgs_elev_table',\n", + " index=False, \n", + " if_exists='append'\n", + " )\n", + " except Exception as e:\n", + " if \"NoSuchKey\" in str(e):\n", + " pass\n", + " else:\n", + " raise e\n", + " \n", + "print(\"usgs_elev_tables load completed\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "92a02c35-16a9-4cd8-9fd6-61d20b3e6feb", + "metadata": {}, + "source": [ + "

9 - Recreate derived.hydrotable_staggered

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18a2a7c2-7499-4ebc-a878-769e62dfbd6b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Already run for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.hydrotable_staggered RENAME TO hydrotable_staggered_{OLD_FIM_TAG};')\n", + "#print(\"derived.hydrotable_staggered renamed\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33026eb6-fbc7-47f7-a44b-f9cea8f0911b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Takes appx 5.75 to 6 hrs to run\n", + "\n", + "print(\"hydrotable reloaded - started\")\n", + "start_dt = datetime.now()\n", + "\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.hydrotable;')\n", + "sql = '''\n", + "SELECT distinct LPAD(huc8::text, 8, '0') as huc8 FROM derived.featureid_huc_crosswalk WHERE huc8 is not null;\n", + "'''\n", + "df = sf.sql_to_dataframe(sql)\n", + "ht_usecols = ['HydroID', 'feature_id', 'stage', 'discharge_cms']\n", + "\n", + "paginator = S3_CLIENT.get_paginator('list_objects')\n", + "operation_parameters = {'Bucket': FIM_BUCKET,\n", + " 'Prefix': f'{HAND_DATASETS_DPATH}/',\n", + " 'Delimiter': '/'}\n", + "page_iterator = paginator.paginate(**operation_parameters)\n", + "page_count = 0\n", + "for page in page_iterator:\n", + " page_count += 1\n", + " prefix_objects = page['CommonPrefixes']\n", + " for i, prefix_obj in enumerate(prefix_objects):\n", + " print(f\"Processing {i+1} of {len(prefix_objects)} on page {page_count}\")\n", + " branch_prefix = f'{prefix_obj.get(\"Prefix\")}branches/0/'\n", + " branch_files_result = S3_CLIENT.list_objects(\n", + " Bucket=FIM_BUCKET, \n", + " Prefix=branch_prefix, \n", + " Delimiter='/'\n", + " )\n", + " hydro_table_key = None\n", + " for content_obj in branch_files_result.get('Contents'):\n", + " branch_file_prefix = content_obj['Key']\n", + " if 'hydroTable' in branch_file_prefix:\n", + " hydro_table_key = branch_file_prefix\n", + "\n", + " if hydro_table_key:\n", + " # print(f\"Found usgs_elev_table and hydroTable in {branch_prefix}\")\n", + " try:\n", + " # print(\"...Fetching csvs...\")\n", + " ht = S3_CLIENT.get_object(\n", + " Bucket=FIM_BUCKET,\n", + " Key=hydro_table_key\n", + " )['Body']\n", + " # print(\"...Reading with pandas...\")\n", + " ht_df = pd.read_csv(ht, header=0, usecols=ht_usecols)\n", + " # print('...Writing to db...')\n", + " ht_df['fim_version'] = PUBLIC_FIM_VERSION\n", + " ht_df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + " ht_df.to_sql(\n", + " con=VIZ_DB_ENGINE, \n", + " schema='derived',\n", + " name='hydrotable',\n", + " index=False,\n", + " if_exists='append'\n", + " )\n", + " except Exception as e:\n", + " raise e\n", + " print(f'Fetch failed: {e}')\n", + " \n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(\"hydrotable reload done\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cc764e4-7e67-4b51-a100-6021e31416cd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "print(\"hydrotable_staggered started\")\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "sql = '''\n", + "DROP TABLE IF EXISTS derived.hydrotable_staggered;\n", + "SELECT\n", + " et.location_id,\n", + " ht.feature_id,\n", + " (stage + et.dem_adj_elevation) * 3.28084 as elevation_ft,\n", + " LEAD((stage + et.dem_adj_elevation) * 3.28084) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_elevation_ft,\n", + " discharge_cms * 35.3147 as discharge_cfs,\n", + " LEAD(discharge_cms * 35.3147) OVER (PARTITION BY ht.feature_id ORDER BY ht.feature_id, stage) as next_discharge_cfs\n", + "INTO derived.hydrotable_staggered\n", + "FROM derived.hydrotable AS ht\n", + "JOIN derived.usgs_elev_table AS et ON ht.\"HydroID\" = et.\"HydroID\" AND et.location_id IS NOT NULL;\n", + "'''\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"hydrotable_staggered reload done\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74f21c03-ca36-402c-a69b-396162720f66", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# we don't need the hydrotable anymore as it has been reloaded and adjusted above in hydrotable_staggered\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.hydrotable;')\n", + "print(\"Done dropping derived.hydrotable, post hydrotable_staggered load\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "0237f374-5829-4050-b503-958c9d4c3703", + "metadata": { + "tags": [] + }, + "source": [ + "

10 - Recreate derived.usgs_rating_curves_staggered

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "461f20b4-8442-4c0e-9114-ea62764cd789", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Aug 16, 2024 - done for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# TODO: Aug 2024: Change this to a backup without indexes and not rename\n", + "# Aug 27, 2024: This needs to be redone so we don't rename tables, it messes up indexes and index names when we use _to_sql commands later\n", + "\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.usgs_rating_curves RENAME TO usgs_rating_curves_{OLD_FIM_TAG};')\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.usgs_rating_curves_staggered RENAME TO usgs_rating_curves_staggered_{OLD_FIM_TAG};')\n", + "# print(\"usgs rating curve tables renamed and cleaned\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b752fce5-c8d7-4064-92d7-842c22d1723e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "sql = '''\n", + " DROP TABLE IF EXISTS derived.usgs_rating_curves;\n", + " DROP TABLE IF EXISTS derived.usgs_rating_curves_staggered;\n", + "'''\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"Done dropping usgs_rating_curves and usgs_rating_curves_staggered\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6a0cc18-de82-4bd8-bd4d-c3ad021a1dec", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# run the script to load the usgs_rating_curve.csv. Exact duration not yet known. Appx 30 min (??)\n", + "\n", + "start_dt = datetime.now()\n", + "event = {\n", + " 'target_table': 'derived.usgs_rating_curves',\n", + " 'target_cols': ['location_id', 'flow', 'stage', 'navd88_datum', 'elevation_navd88'],\n", + " 'file': f'{QA_DATASETS_DPATH}/usgs_rating_curves.csv',\n", + " 'bucket': FIM_BUCKET,\n", + " 'reference_time': '2023-08-23 00:00:00',\n", + " 'keep_flows_at_or_above': 0,\n", + " 'iteration_index': 0\n", + "}\n", + "\n", + "sf.execute_db_ingest(event, None)\n", + "\n", + "print(\"done loading usgs_rating_curves\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4548d5e8-303e-44e0-a8a5-7b1947214b4e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Takes under a minute\n", + "print(\"Starting usgs_rating_curves_staggered build based on usgs_rating_curve table\")\n", + "\n", + "sql = '''\n", + "SELECT \n", + " location_id,\n", + " flow as discharge_cfs, \n", + " LEAD(flow) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_discharge_cfs,\n", + " stage,\n", + " navd88_datum,\n", + " elevation_navd88 as elevation_ft,\n", + " LEAD(elevation_navd88) OVER (PARTITION BY location_id ORDER BY location_id, stage) as next_elevation_ft\n", + "INTO derived.usgs_rating_curves_staggered\n", + "FROM derived.usgs_rating_curves;\n", + "'''\n", + "\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"Done loading usgs_rating_curves_staggered\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d1a77875-f569-4410-888c-b132714a7c9e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# usgs_rating_curves is a temp table and is loaded with some changes into the usgs_rating_curves_staggered\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.usgs_rating_curves;')\n", + "print(\"Done dropping derived.usgs_rating_curves, post loading usgs_rating_curves_staggered\")" + ] + }, + { + "cell_type": "markdown", + "id": "ee640076-be6f-47f5-b091-f60192502bd0", + "metadata": { + "tags": [] + }, + "source": [ + "

11 - UPDATE SRC SKILL METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95c472f8-0557-4864-8536-1814f3ac4286", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Already run for 4.4.0.0 (4.5.2.11)\n", + "\n", + "'''\n", + "Be Very Careful to just rename tables. If they have indexes, the index will now point to the new\n", + "table names but maintain the original index name. Those index names can really mess stuff up.\n", + "Best to never rename unless you rename indexes as well. This particular on is ok. \n", + "Note: When various '\"to_sql\" tools are run which have GIST indexes, this index column name issue\n", + "will be the problem.\n", + "\n", + "Why Drop instead of Truncate? if the schema changes for the incoming, truncate will have column\n", + "missmatches.\n", + "\n", + "We really should be backing up indexes and constraints as well.\n", + "\n", + "'''\n", + "\n", + "# TODO: Aug 2024: Change this away from \"rename\" to copy / drop. \n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.src_skill_temp RENAME TO src_skill_temp_{OLD_FIM_TAG};')\n", + "# sf.execute_sql(f'ALTER TABLE IF EXISTS derived.src_skill RENAME TO src_skill_{OLD_FIM_TAG};')\n", + "\n", + "# print(\"src_skill and src_skill_temps db renamed\")\n", + "\n", + "\n", + "# TODO: Rob Aug 2024: change this to backup of table and not rename as it messses with indexes\n", + "# Don't need a copy of the reference src_skill table , so just drop it.\n", + "new_table_name = f\"derived.src_skill_temp_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE derived.src_skill_temp;\n", + "'''\n", + "\n", + "\n", + "#print(\"src_skill and src_skill_temps db renamed\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9a249854-b9cd-4ccb-afea-96c35708515d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Prep the dbs for the new load\n", + "#sf.execute_sql('DROP TABLE IF EXISTS derived.src_skill_temp;')\n", + "#sf.execute_sql('DROP TABLE IF EXISTS reference.src_skill;', db_type='egis')\n", + "#print(\"Done dropping src_skill and src_skill_temp tables\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c24f509a-90df-492a-a0d4-aa9eab8e7041", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Load the src_skill_temp table\n", + "start_dt = datetime.now()\n", + "\n", + "event = {\n", + " 'target_table': 'derived.src_skill_temp',\n", + " 'target_cols': None, # This means \"all\"\n", + " 'file': f'{QA_DATASETS_DPATH}/agg_nwm_recurr_flow_elev_stats_location_id.csv',\n", + " 'bucket': FIM_BUCKET,\n", + " 'reference_time': '2023-08-23 00:00:00',\n", + " 'keep_flows_at_or_above': 0,\n", + " 'iteration_index': 0,\n", + " 'db_type': 'viz'\n", + "}\n", + "\n", + "execute_db_ingest(event, None)\n", + "print(\"Done loading derived.src_skill_temp table\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b5639447-9a5a-4add-9c36-ebd945a5a8d0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Load into src_skill table adding geometry to it from external.usgs_gage. Yes.. more/less straight from WRDS tables\n", + "# Some recs appear to be in error in the csv. location id = 394220106431500 (those are dropped below)\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "sf.execute_sql('DROP TABLE IF EXISTS derived.src_skill;')\n", + "\n", + "sql = f\"\"\"\n", + "SELECT\n", + "\t(row_number() OVER ())::int as oid,\n", + "\tgage.name,\n", + "\tLPAD(skill.location_id::text, 8, '0') as location_id,\n", + "\tskill.nrmse,\n", + "\tskill.mean_abs_y_diff_ft,\n", + "\tskill.mean_y_diff_ft,\n", + "\tskill.percent_bias,\n", + " '{PUBLIC_FIM_VERSION}' as {COLUMN_NAME_FIM_VERSION},\n", + " '{FIM_MODEL_VERSION}' as {COLUMN_NAME_MODEL_VERSION},\n", + "\tgage.geo_point as geom\n", + "INTO derived.src_skill\n", + "FROM derived.src_skill_temp skill\n", + "JOIN external.usgs_gage AS gage ON LPAD(gage.usgs_gage_id::text, 8, '0') = LPAD(skill.location_id::text, 8, '0')\n", + "\"\"\"\n", + "\n", + "sf.execute_sql(sql)\n", + "\n", + "print(\"Done loading derived.src_skill table\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "ffa32cd0-6edc-4441-9be3-f5bcba499ad0", + "metadata": { + "tags": [] + }, + "source": [ + "

Then export the derived.src_skill table and import it into the EGIS reference.src_skill table

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0df23345-47a4-490a-b10f-2020e3a2a68e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "sf.move_data_from_viz_to_egis(\"derived.src_skill\", \"reference.src_skill\")\n", + "print(\"Done\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "cf47b262-d5aa-41e3-a12e-99432f52fbfc", + "metadata": { + "tags": [] + }, + "source": [ + "

12 - UPDATE FIM PERFORMANCE METRICS IN DB

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b291a461-e36f-4049-84b6-dd59cd1c4ad2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Make copies of current dbs for 4.4.0.0 (4.5.2.11)\n", + "# DONE: for 4.4.0.0 (4.5.2.11)\n", + "\n", + "# NOTE: Aug 2024: The problem with not droppign them and rebuilding them with indexes, is that if the table schema\n", + "# changes it is not reflected\n", + "\n", + "\n", + "# Points\n", + "new_table_name = f\"reference.fim_performance_points_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.fim_performance_points;\n", + "'''\n", + "sf.execute_sql(sql, db_type='egis')\n", + "print(f\"fim_performance_points copied to {new_table_name} if it does not already exists\")\n", + "\n", + "\n", + "# Catchments\n", + "new_table_name = f\"reference.fim_performance_catchments_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.fim_performance_catchments;\n", + "'''\n", + "sf.execute_sql(sql, db_type='egis')\n", + "print(f\"fim_performance_catchments copied to {new_table_name} if it does not already exists\")\n", + "\n", + "\n", + "# Polys\n", + "new_table_name = f\"reference.fim_performance_polys_{OLD_FIM_TAG}\"\n", + "sql = f'''\n", + " CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.fim_performance_polys;\n", + "'''\n", + "sf.execute_sql(sql, db_type='egis')\n", + "print(f\"fim_performance_polys copied to {new_table_name} if it does not already exists\")\n", + "\n", + "print(\"Done making backups of the FIM performance tables\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4fcdfab-3936-4a0a-8ab9-605e9a64f9bd", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# clean up tables for new load\n", + "\n", + "# TODO: Aug 2024: Add postgresql if / else. Truncate \"if exists\" doesn't exist. :)\n", + "\n", + "table_names = [\n", + " \"reference.fim_performance_points\",\n", + " \"reference.fim_performance_polys\",\n", + " \"reference.fim_performance_catchments\"\n", + "]\n", + "\n", + "for tb_name in table_names:\n", + " sql = f\"TRUNCATE TABLE {tb_name}\"\n", + "# print(sql)\n", + " sf.execute_sql(sql,db_type='egis')\n", + "\n", + "\n", + "print(f\"All fim_performance tables trunated if they exist\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "06ca5581", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "# Load the new fim performance tables\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "# os.environ['EGIS_DB_HOST'] ='' #TI DB\n", + "\n", + "db_type = \"egis\"\n", + "db_engine = sf.get_db_engine(db_type)\n", + "s3 = boto3.client('s3')\n", + "\n", + "# Define bucket and parent directories.\n", + "bucket = \"hydrovis-ti-deployment-us-east-1\"\n", + "\n", + "# file_handles = ['fim_performance_points.csv']\n", + "# file_handles = ['fim_performance_points.csv', 'fim_performance_polys.csv', 'fim_performance_catchments_dissolved.csv']\n", + "# file_handles = ['fim_performance_points.csv', 'fim_performance_polys.csv']\n", + "file_handles = ['fim_performance_catchments.csv']\n", + "\n", + "for file_handle in file_handles:\n", + "\n", + " print(\"Reading file...\")\n", + " # df = pd.read_csv(local_download_path)\n", + " file_to_download = f\"{QA_DATASETS_DPATH}/{file_handle}\"\n", + " df = s3_sf.download_S3_csv_files_to_df_from_list(FIM_BUCKET, [file_to_download], True)\n", + " print(\"File read.\")\n", + "\n", + " # Rename headers.\n", + "\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom'})\n", + " else:\n", + " df = df.rename(columns={'Unnamed: 0': 'oid', 'geometry': 'geom', 'huc':'huc8'})\n", + "\n", + " print(df.dtypes)\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns = df.columns.str.lower()\n", + "\n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df = df.astype({'huc': 'str'})\n", + " else:\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " df = df.astype({'oid': 'int'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + "\n", + " # zfill HUC8 field.\n", + " if file_handle == 'fim_performance_points.csv':\n", + " df['huc'] = df['huc'].apply(lambda x: x.zfill(8))\n", + " else:\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + "\n", + " df['version'] = PUBLIC_FIM_VERSION\n", + " df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + "\n", + " # Upload df to database.\n", + " stripped_layer_name = file_handle.replace(\".csv\", \"\")\n", + " table_name = \"reference.\" + stripped_layer_name\n", + " print(\"Loading data into DB...\")\n", + "\n", + " # Chunk load data into DB\n", + "\n", + " if file_handle in ['fim_performance_catchments.csv']:\n", + "\n", + " print(\"Chunk loading...\")\n", + " # Create list of df chunks\n", + " n = 10000 # chunk row size\n", + " list_df = [df[i:i+n] for i in range(0,df.shape[0],n)]\n", + " # geometry = 'MULTIPOLYGON'\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = list_df[0]\n", + " print(first_chunk_df.shape[0])\n", + "\n", + " first_chunk_df.to_sql(\n", + " name=stripped_layer_name, \n", + " con=db_engine, \n", + " schema='reference',\n", + " if_exists='replace', \n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=3857)\n", + " }\n", + " )\n", + " # Load remaining chunks into newly created table\n", + "\n", + " for remaining_chunk_df in list_df[1:]:\n", + " print(remaining_chunk_df.shape[0])\n", + " remaining_chunk_df.to_sql(\n", + " name=stripped_layer_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='append',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=3857)\n", + " }\n", + " )\n", + " else:\n", + " if 'points' in stripped_layer_name: geometry = 'POINT'\n", + " if 'polys' in stripped_layer_name: geometry = 'POLYGON'\n", + " # print(\"GEOMETRY\")\n", + " # print(geometry)\n", + " df.to_sql(\n", + " name=stripped_layer_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='replace',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'version': sqlalchemy.types.String(),\n", + " 'geom': Geometry(geometry, srid=3857)\n", + " }\n", + " )\n", + "\n", + " print(f\">>> {file_handle} downloaded and loaded\")\n", + "\n", + " # deleted the downloaded file that was just processed.\n", + " # if os.path.exists(local_download_path):\n", + "\n", + "\n", + "print(\"\")\n", + "\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "# print(\"All FIM Performance files loaded\")\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "a52c1563-3c91-4810-96d0-48568b60cbef", + "metadata": { + "tags": [] + }, + "source": [ + "

13 - CatFIM (Stage-Based and Flow-Based)

" + ] + }, + { + "cell_type": "markdown", + "id": "7938fcb2-313c-4cf8-8274-d34d80bdf7bf", + "metadata": {}, + "source": [ + "

Function to load CatFIM Data (Non Public)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37f37c81-d105-4c38-aa49-b4aef40a7543", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "''' Function to load CatFIM data (for any flow / stage / library / sites but non public)'''\n", + "\n", + "\n", + "def load_catfim_table(catfim_type):\n", + "\n", + " '''\n", + " Inputs:\n", + " - catfim_type: name identififer for the set, such as \"flow_based_catfim\" or \"flow_based_catfim_sites\", etc\n", + " Sometimes the file_handle name can be the name of the s3 file (without extension) and/or the table\n", + " name.\n", + " Options: flow_based_catfim, flow_based_catfim_sites, stage_based_catfim, stage_based_catfim_sites\n", + " '''\n", + "\n", + " db_type = \"egis\"\n", + " db_engine = sf.get_db_engine(db_type)\n", + " src_crs = \"3857\"\n", + "\n", + " # --------------------------------------\n", + " # Drop the original Db if already in place\n", + " table_name = catfim_type # yes, dup variable for now\n", + "\n", + " sf.execute_sql(f\"DROP TABLE IF EXISTS reference.{table_name};\", db_type=db_type)\n", + " print(f\"Dropping reference.{table_name} table if it existed\")\n", + " print(\"\")\n", + "\n", + " # --------------------------------------\n", + " # Get the data from S3 and load it into a df\n", + " if catfim_type in ['flow_based_catfim', 'stage_based_catfim']:\n", + " file_to_download = f\"{QA_DATASETS_DPATH}/{catfim_type}_library.csv\"\n", + " else:\n", + " file_to_download = f\"{QA_DATASETS_DPATH}/{catfim_type}.csv\"\n", + "\n", + " # print(f\"Downloading {file_to_download} ... \")\n", + "\n", + " df = s3_sf.download_S3_csv_files_to_df_from_list(FIM_BUCKET, [file_to_download], True)\n", + " num_recs = len(df)\n", + " print(f\"File read. {num_recs} records to load\")\n", + "\n", + " # --------------------------------------\n", + " # Adjusting Columns and data\n", + " # Rename headers. All files this name\n", + " df = df.rename(columns={'Unnamed: 0': 'oid',\n", + " 'geometry': 'geom',\n", + " 'huc': 'huc8'})\n", + "\n", + " # 4.5.2.11, fixing a column name bug\n", + " if catfim_type == 'stage_based_catfim_sites':\n", + " df = df.rename(columns={'nws_lid': 'ahps_lid'})\n", + "\n", + " # Convert all field names to lowercase (needed for ArcGIS Pro).\n", + " df.columns = df.columns.str.lower()\n", + "\n", + " # Remove sites that are in derived.ahps_restricted_sites\n", + " # TODO: Aug 2024: Need to see if this list needs to be updated. Submitted card.\n", + " restricted_sites_df = sf.get_db_values(\"derived.ahps_restricted_sites\", [\"*\"])\n", + " restricted_dict = restricted_sites_df.to_dict('records')\n", + "\n", + " for site in restricted_dict:\n", + " nws_lid = site['nws_lid'].lower()\n", + " #print(nws_lid)\n", + " if \"sites\" in catfim_type:\n", + " # print(True)\n", + " # print(nws_lid)\n", + " df.loc[df.ahps_lid == nws_lid, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid == nws_lid, 'status'] = site['restricted_reason']\n", + " # print(df.loc[df.ahps_lid==nws_lid]['status'])\n", + " else:\n", + " df.loc[df.ahps_lid == nws_lid, 'viz'] = 'no'\n", + " df = df[df['viz'] == 'yes']\n", + "\n", + " # TODO: Aug 2024: This may be a bug or very outdated. It was in the code to load stage for 4.4.0.0\n", + " # and I left it here for 4.5.2.11, but made a card with the FIM team to review and fix it in there code\n", + " # so we can drop this.\n", + " if 'stage_based' in catfim_type:\n", + " for sea_level_site in ['qutg1', 'augg1', 'baxg1', 'lamf1', 'adlg1', 'hrag1', 'stng1']:\n", + " if \"sites\" in catfim_type:\n", + " df.loc[df.ahps_lid==sea_level_site, 'mapped'] = 'no'\n", + " df.loc[df.ahps_lid==sea_level_site, 'status'] = 'Stage thresholds seem to be based on sea level and not channel thalweg'\n", + " else:\n", + " df.loc[df.ahps_lid==sea_level_site, 'viz'] = 'no'\n", + " df = df[df['viz']=='yes'] # Subset df to only sites desired for mapping\n", + " # end if\n", + "\n", + " # Enforce data types on df before loading in DB (TODO: need to create special cases for each layer).\n", + " df = df.astype({'huc8': 'str'})\n", + " df = df.fillna(0)\n", + " try:\n", + " df = df.astype({'feature_id': 'int'})\n", + " df = df.astype({'feature_id': 'str'})\n", + " except KeyError: # If there is no feature_id field\n", + " pass\n", + " try:\n", + " df = df.astype({'nwm_seg': 'int'})\n", + " df = df.astype({'nwm_seg': 'str'})\n", + " except KeyError: # If there is no nwm_seg field\n", + " pass\n", + " try:\n", + " df = df.astype({'usgs_gage': 'int'})\n", + " df = df.astype({'usgs_gage': 'str'})\n", + " except KeyError: # If there is no usgs_gage field\n", + " pass\n", + "\n", + " # zfill HUC8 field.\n", + " df['huc8'] = df['huc8'].apply(lambda x: x.zfill(8))\n", + "\n", + " if '_sites' in catfim_type:\n", + " df = df.astype({'nws_data_rfc_forecast_point': 'str'})\n", + " df = df.astype({'nws_data_rfc_defined_fcst_point': 'str'})\n", + " df = df.astype({'nws_data_riverpoint': 'str'})\n", + "\n", + " # TODO: Aug 27, 2024: For now, let's jsut override the \"version\" column and fix it when we\n", + " # reconsile the fim_version and model_version columns\n", + " df['version'] = PUBLIC_FIM_VERSION\n", + " df[COLUMN_NAME_FIM_VERSION] = PUBLIC_FIM_VERSION\n", + " df[COLUMN_NAME_MODEL_VERSION] = FIM_MODEL_VERSION\n", + "\n", + " # --------------------------------------\n", + " # Load to DB\n", + " # Chunk load data into DB\n", + " if catfim_type in ['flow_based_catfim', 'stage_based_catfim']:\n", + "\n", + " # Create list of df chunks\n", + " n = 1000 # chunk row size\n", + " print(f\"Chunk loading... into {table_name} -- {n} records at a time\")\n", + " print(\"\")\n", + " chunk_df = [df[i:i+n] for i in range(0, df.shape[0], n)]\n", + "\n", + " # Load the first chunk into the DB as a new table\n", + " first_chunk_df = chunk_df[0]\n", + " num_chunks = len(chunk_df)\n", + "\n", + " print(f\" ... loading chunk 1 of {num_chunks}\")\n", + "\n", + " first_chunk_df.to_sql(\n", + " name=table_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='replace',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=src_crs)}\n", + " )\n", + "\n", + " # Load remaining chunks into newly created table\n", + " ctr = 1 # Already loaded one\n", + " for remaining_chunk in chunk_df[1:]:\n", + " # print(remaining_chunk.shape[0])\n", + " ctr += 1\n", + " print(f\" ... loading chunk {ctr} of {num_chunks}\")\n", + " remaining_chunk.to_sql(\n", + " name=table_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='append',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('MULTIPOLYGON', srid=src_crs)\n", + " }\n", + " )\n", + " # end for\n", + " else: # sites tables\n", + " print(f\"Loading data into {table_name} ...\")\n", + "\n", + " df.to_sql(\n", + " name=table_name,\n", + " con=db_engine,\n", + " schema='reference',\n", + " if_exists='replace',\n", + " index=False,\n", + " dtype={'oid': sqlalchemy.types.Integer(),\n", + " 'geom': Geometry('POINT', srid=src_crs)}\n", + " )\n", + "\n", + " # This should auto create a gist index against the geometry column\n", + " # if that index name already exists, the upload will fail, the index can not pre-exist\n", + " # Best to drop the table before loading.\n", + "\n", + " # return\n", + "\n", + "print(\"load_catfim_table function loaded\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "e2b43cdc-8591-47f4-8db7-1058af5863f5", + "metadata": { + "tags": [] + }, + "source": [ + "

13.a - Backup old DBs and prepare new databases (but not the \"public\" FIM 10/30 db's)

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9577edb-4aa6-423b-819e-df8c922c7ec2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# This covers both Stage Based and Flow Based (but not the \"public\" catfim db's)\n", + "\n", + "# The \"Public\" db backups ana loads are in cells lower (12.d and higher)\n", + "\n", + "# DONE for 4.4.0.0. (4.5.2.11)\n", + "\n", + "# # print(\"Starting Data Backups and table drops for stage and flow based catfim\")\n", + "# db_names = [\"stage_based_catfim\", \"stage_based_catfim_sites\",\n", + "# \"flow_based_catfim\", \"flow_based_catfim_sites\"]\n", + "\n", + "# for db_name in db_names:\n", + "# new_table_name = f\"reference.{db_name}_{OLD_FIM_TAG}\"\n", + "# sql = f'''\n", + "# CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.{db_name};\n", + "# '''\n", + "# sf.execute_sql(sql, db_type='egis')\n", + "# print(f\"{db_name} copied to {new_table_name} if it does not already exist\")\n", + "\n", + "\n", + "# Aug 2024: Now we can drop the tables as we don't have any indexes on them at this time other than the gist geom index.\n", + "# By dropping them, we can auto adjust the tables schema. (don't truncate)\n", + "\n", + "# for db_name in db_names:\n", + "# sf.execute_sql(f\"DROP TABLE IF EXISTS reference.{db_name};\", db_type='egis')\n", + "# print(f\"reference.{db_name} table dropped if it existed\")\n", + "\n", + "\n", + "# print(\"Data Backups of flow based catfim are complete\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "4377dc64-963e-447e-a553-1a59c7cb1781", + "metadata": { + "tags": [] + }, + "source": [ + "

13.b - Updated Flow and Stage Based CatFIM Data (Non Public)

\n", + "\n", + "

AUG 2024: IMPORTANT NOTE:

\n", + "The stage based catfim (library) csv has grown to appx 10 GiB. Our current notebook, hv-vpp-ti-viz-notebook only has 15 GiB memory.\n", + "Running tool can easily overwhelm the notebook server and freeze it up forcing a reboot.\n", + "Sometimes when the notebook instance comes back up, it no longer has ths swap system in place. You will need most of the memory\n", + "and some swap to load it. Keep an eye a \"terminal\" windows and keep entering `free -h` to keep an eye on it's usage.\n", + "
\n", + "We will need to review to see if we want to:\n", + "\n", + "1. Upgrade this notebook server with more memory (and harddrive space would be good)\n", + "\n", + "2. Change the load of the catfim library (non sites) data to another system. Maybe we can load it via a lambda to an EC2 or something?\n", + "\n", + "3. Get the FIM Team to break it to smaller pieces, but watch carefully for the OID system (unique id for all records)\n", + "\n", + "**When you are done running this script, Please restart this kernal as it does not appear to be releasing all memory. (memory leak?)**\n", + "\n", + "\n", + "Also looks like Tyler has some notebooks where he was moving this into a lambda load? We need to look into that\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95c55cd0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "print(\"Starting of CatFIM data\")\n", + "\n", + "# catfim_types = ['flow_based_catfim', 'flow_based_catfim_sites']\n", + "# catfim_types = ['stage_based_catfim', 'stage_based_catfim_sites']\n", + "catfim_types = ['stage_based_catfim_sites']\n", + "# catfim_types = ['stage_based_catfim']\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "for catfim_type in catfim_types:\n", + " print(f\"Loading {catfim_type} data\")\n", + " load_catfim_table(catfim_type)\n", + "\n", + "print(\"\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "db3eef2c-8764-4c0a-9e4d-07d9bb6d4dfe", + "metadata": { + "tags": [] + }, + "source": [ + "

13.c - CatFIM Backup old \"public\" FIM 10 / 30 DBs and prepare new databases

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f5cf108d-7360-48a9-a4a2-81b23b9e51b4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "'''\n", + "This covers ONLY Catfim public FIM 10/30 for both flow based and stage based\n", + "'''\n", + "\n", + "''' DONE for 4.4.0.0. (4.5.2.11)'''\n", + "\n", + "# db_name_appendix = f\"{OLD_FIM_TAG}_fim_10\"\n", + "\n", + "# print(\"Starting Data Backups and table drops for stage and flow based PUBLIC catfim\")\n", + "# # db_names = [\"stage_based_catfim_public\", \"stage_based_catfim_sites_public\",\n", + "# # \"flow_based_catfim_public\", \"flow_based_catfim_sites_public\"]\n", + "\n", + "# # stage_based_catfim_sites_public didn't exist for fim 10 but should have in TI (does in other enviros likely)\n", + "# db_names = [\"stage_based_catfim_public\", \n", + "# \"flow_based_catfim_public\", \"flow_based_catfim_sites_public\"]\n", + "\n", + "# for db_name in db_names:\n", + "# new_table_name = f\"reference.{db_name}_{db_name_appendix}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.{db_name}\"\n", + "# sf.execute_sql(sql, db_type='egis')\n", + "# print(f\"{db_name} copied to {new_table_name} if it does not already exist\")\n", + "\n", + " \n", + "# # Aug 2024: Now we can drop the tables as we don't have any indexes on them at this time other than the gist geom index.\n", + "# # By dropping them, we can auto adjust the tables schema. (don't truncate)\n", + "\n", + "# for db_name in db_names:\n", + "# sf.execute_sql(f\"DROP TABLE IF EXISTS reference.{db_name};\", db_type='egis')\n", + "# print(f\"reference.{db_name} table dropped if it existed\")\n", + "\n", + "# print(\"Data Backups of flow based catfim are complete\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "3e451ed4-148f-4ccd-83bf-dff900915efb", + "metadata": { + "tags": [] + }, + "source": [ + "

13.d - Load CatFIM \"public\" FIM 30 DBs

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd38c00d-22ad-476e-ab05-cf293e5bbc15", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "\n", + "print(\"Loading CatFIM Public datasets (FIM 30)\")\n", + "\n", + "catfim_types = [\"stage_based_catfim\", \"stage_based_catfim_sites\",\n", + " \"flow_based_catfim\", \"flow_based_catfim_sites\"]\n", + "\n", + "__public_fim_release = \"fim_30\" # The new fim public release being loaded (ie. fim_10, fim_30, fim_60..)\n", + "\n", + "start_dt = datetime.now()\n", + "\n", + "for catfim_type in catfim_types:\n", + " print(\"\")\n", + " sql = f'''\n", + " DROP TABLE IF EXISTS reference.{catfim_type}_public;\n", + "\n", + " SELECT\n", + " catfim.*,\n", + " '{__public_fim_release}' as public_fim_release\n", + " INTO reference.{catfim_type}_public\n", + " FROM reference.{catfim_type} as catfim\n", + " JOIN reference.public_fim_domain as fim_domain ON ST_Intersects(catfim.geom, fim_domain.geom)\n", + " '''\n", + " print(sf.execute_sql(sql, db_type='egis'))\n", + " print(f\"public {__public_fim_release} data load for {catfim_type} is complete\")\n", + "\n", + "# what about indexes again?\n", + "\n", + "# for db_name in db_names:\n", + "# new_table_name = f\"reference.{db_name}_{db_name_appendix}\"\n", + "# sql = f\"CREATE TABLE IF NOT EXISTS {new_table_name} AS TABLE reference.{db_name}\"\n", + "# sf.execute_sql(sql, db_type='egis')\n", + "# print(f\"{db_name} copied to {new_table_name} if it does not already exist\")\n", + "\n", + "print(\"\")\n", + "end_dt = datetime.now()\n", + "time_duration = end_dt - start_dt\n", + "print(f\"... duration was {str(time_duration).split('.')[0]}\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "65578391-f29e-4de4-8d98-ab48a0375603", + "metadata": { + "tags": [] + }, + "source": [ + "

14 - Clear the HAND Cache

" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a3d1ab20-4148-4d1d-bbb6-a2c3983ba145", + "metadata": {}, + "outputs": [], + "source": [ + "sql = \"\"\"\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_max;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_geo;\n", + "TRUNCATE TABLE fim_cache.hand_hydrotable_cached_zero_stage;\n", + "\"\"\"\n", + "sf.execute_sql(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "8af909c1-d6a6-4ce7-85b5-080d0a556c90", + "metadata": {}, + "source": [ + "

15 - SAVE TO REPO (AND REDEPLOY TO TI WITH NEW VERSION VARIABLE IN TERRAFORM ??)

\n", + "\n", + "TODO: Aug 2024: Come up with system to save changes to this script and related scripts\n", + "Note from Rob: While, un-elegant, there so much quick evolution here that I recommend we even keep seperate named load scripts in GIT\n", + "ie) one for FIM Version 4.4.0.0 and one for 4.5.2.11, etc. So many changes for each edition and very fast script changes WIP may \n", + "make it smarter to keep each script seperately (ie. 4.4.0.0, 4.5.2.11, etc)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/db_updates/.ipynb_checkpoints/Update Recurrence Flows Table-checkpoint.ipynb b/Core/Manual_Workflows/db_updates/.ipynb_checkpoints/Update Recurrence Flows Table-checkpoint.ipynb new file mode 100644 index 00000000..e36d229b --- /dev/null +++ b/Core/Manual_Workflows/db_updates/.ipynb_checkpoints/Update Recurrence Flows Table-checkpoint.ipynb @@ -0,0 +1,623 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b892f6f0-8601-4e1f-94de-36435bf62e7c", + "metadata": { + "tags": [] + }, + "source": [ + "# Use this notebook to update the recurrence flows tables in the viz database" + ] + }, + { + "cell_type": "markdown", + "id": "df2432e7-52d4-4012-9234-d3d14407ca55", + "metadata": {}, + "source": [ + "## RUN THIS FIRST FOR ALL RECURRENCE CODE SECTIONS BELOW" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a3c3b900-a89c-42aa-a325-ca3ce905afb4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Change the sys path to pull from the parent folder for imports\n", + "import sys\n", + "sys.path.append('../')\n", + "from helper_functions.shared_functions import *\n", + "\n", + "# Set the database user to the user with write access - get password from Secrets Manager if this doesn't work.\n", + "# Oct 2024, Moved the two enviro db user and password to the AWS_keys.py file. Not yet tested.\n", + "\n", + "# Get a db_engine for writing back to the database.\n", + "viz_db = get_db_engine(\"viz\")" + ] + }, + { + "cell_type": "markdown", + "id": "6b77ba4e-5f3d-41e1-9934-59a8f4315edd", + "metadata": {}, + "source": [ + "### May 2 2024 - Phase 1 changes to the Recurrence Thresholds for CONUS - adjust HWT:\n", + "#### Reset Cluster 7 from 3.2 to 2.5 AND Cluster 9 from 1.1 to 1.0\n", + "#### Set all HWT that are zero to minimum NWM v3 streamflow of 0.35 (cfs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a886606d-6742-474c-bd91-f387a1a59087", + "metadata": {}, + "outputs": [], + "source": [ + "# STEP 1: change the derived.huc8_rf_threshold table for clusters 7 & 9:\n", + "\n", + "UPDATE derived.huc8_rf_thresholds\n", + "SET bankfull_rf = 'rf_2_5'\n", + "WHERE huc8_rf_thresholds.cluster = 7\n", + "\n", + "UPDATE derived.huc8_rf_thresholds\n", + "SET bankfull_rf = 'rf_1_0'\n", + "WHERE huc8_rf_thresholds.cluster = 9\n", + "\n", + "# STEP 2: make a backup copy of the derived.recurrence_flows_conus table\n", + "\n", + "SELECT *\n", + "INTO derived.recurrence_flows_conus_backup\n", + "FROM derived.recurrence_flows_conus\n", + "\n", + "# STEP 3: Add the runnoff cluster field into a new \"dev\" copy of the table\n", + "\n", + "SELECT thresholds.*,\n", + " clusters.cluster\n", + "INTO dev.recurrence_flows_conus\n", + "FROM derived.recurrence_flows_conus as thresholds\n", + "LEFT JOIN derived.featureid_huc_crosswalk as huc_xwalk ON huc_xwalk.feature_id = thresholds.feature_id\n", + "LEFT JOIN derived.huc8_rf_thresholds as clusters ON clusters.huc8 = huc_xwalk.huc8\n", + "\n", + "# STEP 4: change the high_water_threshold values for all reaches of cluster 7 (from 3.2 to 2.5)\n", + "\n", + "UPDATE dev.recurrence_flows_conus\n", + "SET high_water_threshold = rf_2_5\n", + "WHERE cluster = 7\n", + "\n", + "# STEP 5: change the high_water_threshold values for all reaches of cluster 9 (from 1.1 to 1.0)\n", + "\n", + "UPDATE dev.recurrence_flows_conus\n", + "SET high_water_threshold = rf_1_0\n", + "WHERE cluster = 9\n", + "\n", + "# STEP 6: change all remaining zero high_water_threshold values to 0.35\n", + "\n", + "UPDATE dev.recurrence_flows_conus\n", + "SET high_water_threshold = 0.35\n", + "WHERE high_water_threshold = 0\n", + "\n", + "# STEP 7: copy the dev version of the recurrence_flows_conus table to the derived schema\n", + "\n", + "DROP table derived.recurrence_flows_conus;\n", + "SELECT * \n", + "INTO derived.recurrence_flows_conus\n", + "FROM dev.recurrence_flows_conus" + ] + }, + { + "cell_type": "markdown", + "id": "4d69a244-5a4a-44de-a380-13cb7566936f", + "metadata": {}, + "source": [ + "## CONUS recurrence table" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a3c7de6e-1231-4c39-a590-e58d1406a04e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Import the accompanying csv file to a dataframe - UPDATE THIS TO NEW CSV\n", + "new_recurrence_flows_df = pd.read_csv(\"recurrence_flows_conus_3.csv\")\n", + "\n", + "# Round all columns to two decimals\n", + "new_recurrence_flows_df = new_recurrence_flows_df.round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f7d99b0f-349c-4271-892c-3562ac028932", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "27734" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Define the database table you want to overwrite and upload the data - This can take 5-10 minutes due to the chunking required.\n", + "schema_name = \"derived\"\n", + "table_name = \"recurrence_flows_conus\"\n", + "new_recurrence_flows_df.to_sql(table_name, con=viz_db, schema=schema_name, if_exists='replace', index=False, chunksize=100000)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f52e8cd1-e1fc-44b1-8183-1b85d0d1f985", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "# Change the feature_id column to integer type, and set the primary key to feature_id\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ALTER COLUMN feature_id TYPE integer;\")\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ADD PRIMARY KEY (feature_id);\")" + ] + }, + { + "cell_type": "markdown", + "id": "562fa7f2-af05-4af4-976e-131b4a085324", + "metadata": {}, + "source": [ + "## OTHER domain recurrence tables" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ce69f099-20c8-458a-a7e5-47a6ab9fe7fc", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_5rf_2_0rf_3_0rf_4_0rf_5_0rf_10_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_threshold
0190201900000010.000.000.350.350.350.350.000.000.000.000.000.00
1190201900000020.350.350.350.350.350.710.360.470.580.760.940.36
2190201900000030.350.354.594.945.306.111.655.149.0516.2623.491.65
3190201900000040.000.350.350.350.350.350.000.000.000.000.000.00
4190201900000058.839.5311.3012.0112.7815.019.8213.0315.6919.7123.249.82
..........................................
391517750054000473600.000.000.350.350.350.350.350.350.350.350.350.35
391518750054000473610.000.000.000.350.350.350.350.350.350.350.350.35
391519750054000473620.000.000.000.000.000.000.000.000.000.000.000.00
391520750054000473630.000.000.350.350.350.350.350.350.350.350.350.35
391521750054000473640.000.000.000.000.000.350.000.000.000.000.000.00
\n", + "

391522 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_5 rf_2_0 rf_3_0 rf_4_0 rf_5_0 rf_10_0 \\\n", + "0 19020190000001 0.00 0.00 0.35 0.35 0.35 0.35 \n", + "1 19020190000002 0.35 0.35 0.35 0.35 0.35 0.71 \n", + "2 19020190000003 0.35 0.35 4.59 4.94 5.30 6.11 \n", + "3 19020190000004 0.00 0.35 0.35 0.35 0.35 0.35 \n", + "4 19020190000005 8.83 9.53 11.30 12.01 12.78 15.01 \n", + "... ... ... ... ... ... ... ... \n", + "391517 75005400047360 0.00 0.00 0.35 0.35 0.35 0.35 \n", + "391518 75005400047361 0.00 0.00 0.00 0.35 0.35 0.35 \n", + "391519 75005400047362 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "391520 75005400047363 0.00 0.00 0.35 0.35 0.35 0.35 \n", + "391521 75005400047364 0.00 0.00 0.00 0.00 0.00 0.35 \n", + "\n", + " rf_2_0_17c rf_5_0_17c rf_10_0_17c rf_25_0_17c rf_50_0_17c \\\n", + "0 0.00 0.00 0.00 0.00 0.00 \n", + "1 0.36 0.47 0.58 0.76 0.94 \n", + "2 1.65 5.14 9.05 16.26 23.49 \n", + "3 0.00 0.00 0.00 0.00 0.00 \n", + "4 9.82 13.03 15.69 19.71 23.24 \n", + "... ... ... ... ... ... \n", + "391517 0.35 0.35 0.35 0.35 0.35 \n", + "391518 0.35 0.35 0.35 0.35 0.35 \n", + "391519 0.00 0.00 0.00 0.00 0.00 \n", + "391520 0.35 0.35 0.35 0.35 0.35 \n", + "391521 0.00 0.00 0.00 0.00 0.00 \n", + "\n", + " high_water_threshold \n", + "0 0.00 \n", + "1 0.36 \n", + "2 1.65 \n", + "3 0.00 \n", + "4 9.82 \n", + "... ... \n", + "391517 0.35 \n", + "391518 0.35 \n", + "391519 0.00 \n", + "391520 0.35 \n", + "391521 0.00 \n", + "\n", + "[391522 rows x 13 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Import the accompanying csv file to a dataframe - UPDATE THIS TO NEW CSV\n", + "new_recurrence_flows_df = pd.read_csv(\"recurrence_flows_nwm_v3_AK.csv\")\n", + "\n", + "# Round all columns to two decimals\n", + "new_recurrence_flows_df = new_recurrence_flows_df.round(2)\n", + "new_recurrence_flows_df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "39f8bcc9-a050-4b28-86d4-2ac20396c9f7", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3522" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Define the database table you want to overwrite and upload the data - This can take 5-10 minutes due to the chunking required.\n", + "schema_name = \"derived\"\n", + "table_name = \"recurrence_flows_ak\"\n", + "new_recurrence_flows_df.to_sql(table_name, con=viz_db, schema=schema_name, if_exists='replace', index=False, chunksize=100000)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f409c996-f405-4ecb-ba2e-c4247e7eb1f1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "# Change the feature_id column to integer type, and set the primary key to feature_id\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ALTER COLUMN feature_id TYPE integer;\")\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ADD PRIMARY KEY (feature_id);\")" + ] + }, + { + "cell_type": "markdown", + "id": "13171a68-12ed-43e2-885f-f2e08ea045ed", + "metadata": {}, + "source": [ + "### Extra Stuff" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "930e6d51-118c-4a8b-b946-4001a05b7158", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# This is how you save a local csv from an existing table - how I created the recurrence_flows_conus_2_1 csv.\n", + "import pandas as pd\n", + "df = pd.read_sql(\"SELECT * FROM derived.recurrence_flows_conus\", con=viz_db, index_col=\"feature_id\")\n", + "df.to_csv(\"recurrence_flows_conus_2_1.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6eb689bd-e912-4c96-a9bd-9ab136d0ce9d", + "metadata": {}, + "outputs": [], + "source": [ + "# If you get a permissions error that you're not the owner of the table, a db admin like Shawn or Nick\n", + "# Can change the owner of the target table by running this SQL as postgres:\n", + "ALTER TABLE IF EXISTS derived.recurrence_flows_conus_test\n", + " OWNER to viz_proc_admin_rw_user;" + ] + }, + { + "cell_type": "markdown", + "id": "69ab5ffa-111d-4eee-b0fd-0ca1bf35c0d2", + "metadata": {}, + "source": [ + "## SQL that creates a new table with HW threshold differences - to be used for a WPOD evaluation static service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e521e97-74ae-4703-984e-b0ccf292bfe5", + "metadata": {}, + "outputs": [], + "source": [ + "DROP TABLE IF EXISTS publish.streamflow_aep_high_water_comparison;\n", + "SELECT \n", + " row_number() over () as oid,\n", + " current.feature_id,\n", + " current.high_water_threshold as current_high_water_threshold,\n", + " '3.0' as current_version,\n", + " previous.high_water_threshold as previous_high_water_threshold,\n", + " '2.1' as previous_version,\n", + " ROUND((current.high_water_threshold - previous.high_water_threshold)::numeric, 2) as difference,\n", + " CASE\n", + " WHEN previous.high_water_threshold = 0\n", + " THEN 0\n", + " WHEN previous.high_water_threshold = -21474836.48\n", + " THEN 0\n", + " #ELSE ROUND(100 * ((current.high_water_threshold - previous.high_water_threshold) / current.high_water_threshold)::numeric, 0)\n", + " # v1 = v21 or previous, and v2 = v3 or current ((v2 - v1)/v1)*100\n", + " ELSE ROUND(100 * ((current.high_water_threshold - previous.high_water_threshold) / previous.high_water_threshold)::numeric, 0)\n", + " END as percent_difference,\n", + " strm_order,\n", + " geom\n", + "INTO publish.streamflow_aep_high_water_comparison\n", + "FROM derived.recurrence_flows_conus AS current\n", + "LEFT JOIN derived.recurrence_flows_conus_2_1 AS previous\n", + " ON previous.feature_id = current.feature_id\n", + "LEFT JOIN derived.channels_conus channel\n", + " ON channel.feature_id = current.feature_id" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/db_updates/Update Recurrence Flows Table.ipynb b/Core/Manual_Workflows/db_updates/Update Recurrence Flows Table.ipynb new file mode 100644 index 00000000..e36d229b --- /dev/null +++ b/Core/Manual_Workflows/db_updates/Update Recurrence Flows Table.ipynb @@ -0,0 +1,623 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b892f6f0-8601-4e1f-94de-36435bf62e7c", + "metadata": { + "tags": [] + }, + "source": [ + "# Use this notebook to update the recurrence flows tables in the viz database" + ] + }, + { + "cell_type": "markdown", + "id": "df2432e7-52d4-4012-9234-d3d14407ca55", + "metadata": {}, + "source": [ + "## RUN THIS FIRST FOR ALL RECURRENCE CODE SECTIONS BELOW" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a3c3b900-a89c-42aa-a325-ca3ce905afb4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Change the sys path to pull from the parent folder for imports\n", + "import sys\n", + "sys.path.append('../')\n", + "from helper_functions.shared_functions import *\n", + "\n", + "# Set the database user to the user with write access - get password from Secrets Manager if this doesn't work.\n", + "# Oct 2024, Moved the two enviro db user and password to the AWS_keys.py file. Not yet tested.\n", + "\n", + "# Get a db_engine for writing back to the database.\n", + "viz_db = get_db_engine(\"viz\")" + ] + }, + { + "cell_type": "markdown", + "id": "6b77ba4e-5f3d-41e1-9934-59a8f4315edd", + "metadata": {}, + "source": [ + "### May 2 2024 - Phase 1 changes to the Recurrence Thresholds for CONUS - adjust HWT:\n", + "#### Reset Cluster 7 from 3.2 to 2.5 AND Cluster 9 from 1.1 to 1.0\n", + "#### Set all HWT that are zero to minimum NWM v3 streamflow of 0.35 (cfs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a886606d-6742-474c-bd91-f387a1a59087", + "metadata": {}, + "outputs": [], + "source": [ + "# STEP 1: change the derived.huc8_rf_threshold table for clusters 7 & 9:\n", + "\n", + "UPDATE derived.huc8_rf_thresholds\n", + "SET bankfull_rf = 'rf_2_5'\n", + "WHERE huc8_rf_thresholds.cluster = 7\n", + "\n", + "UPDATE derived.huc8_rf_thresholds\n", + "SET bankfull_rf = 'rf_1_0'\n", + "WHERE huc8_rf_thresholds.cluster = 9\n", + "\n", + "# STEP 2: make a backup copy of the derived.recurrence_flows_conus table\n", + "\n", + "SELECT *\n", + "INTO derived.recurrence_flows_conus_backup\n", + "FROM derived.recurrence_flows_conus\n", + "\n", + "# STEP 3: Add the runnoff cluster field into a new \"dev\" copy of the table\n", + "\n", + "SELECT thresholds.*,\n", + " clusters.cluster\n", + "INTO dev.recurrence_flows_conus\n", + "FROM derived.recurrence_flows_conus as thresholds\n", + "LEFT JOIN derived.featureid_huc_crosswalk as huc_xwalk ON huc_xwalk.feature_id = thresholds.feature_id\n", + "LEFT JOIN derived.huc8_rf_thresholds as clusters ON clusters.huc8 = huc_xwalk.huc8\n", + "\n", + "# STEP 4: change the high_water_threshold values for all reaches of cluster 7 (from 3.2 to 2.5)\n", + "\n", + "UPDATE dev.recurrence_flows_conus\n", + "SET high_water_threshold = rf_2_5\n", + "WHERE cluster = 7\n", + "\n", + "# STEP 5: change the high_water_threshold values for all reaches of cluster 9 (from 1.1 to 1.0)\n", + "\n", + "UPDATE dev.recurrence_flows_conus\n", + "SET high_water_threshold = rf_1_0\n", + "WHERE cluster = 9\n", + "\n", + "# STEP 6: change all remaining zero high_water_threshold values to 0.35\n", + "\n", + "UPDATE dev.recurrence_flows_conus\n", + "SET high_water_threshold = 0.35\n", + "WHERE high_water_threshold = 0\n", + "\n", + "# STEP 7: copy the dev version of the recurrence_flows_conus table to the derived schema\n", + "\n", + "DROP table derived.recurrence_flows_conus;\n", + "SELECT * \n", + "INTO derived.recurrence_flows_conus\n", + "FROM dev.recurrence_flows_conus" + ] + }, + { + "cell_type": "markdown", + "id": "4d69a244-5a4a-44de-a380-13cb7566936f", + "metadata": {}, + "source": [ + "## CONUS recurrence table" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "a3c7de6e-1231-4c39-a590-e58d1406a04e", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Import the accompanying csv file to a dataframe - UPDATE THIS TO NEW CSV\n", + "new_recurrence_flows_df = pd.read_csv(\"recurrence_flows_conus_3.csv\")\n", + "\n", + "# Round all columns to two decimals\n", + "new_recurrence_flows_df = new_recurrence_flows_df.round(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f7d99b0f-349c-4271-892c-3562ac028932", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "27734" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Define the database table you want to overwrite and upload the data - This can take 5-10 minutes due to the chunking required.\n", + "schema_name = \"derived\"\n", + "table_name = \"recurrence_flows_conus\"\n", + "new_recurrence_flows_df.to_sql(table_name, con=viz_db, schema=schema_name, if_exists='replace', index=False, chunksize=100000)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f52e8cd1-e1fc-44b1-8183-1b85d0d1f985", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n", + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "# Change the feature_id column to integer type, and set the primary key to feature_id\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ALTER COLUMN feature_id TYPE integer;\")\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ADD PRIMARY KEY (feature_id);\")" + ] + }, + { + "cell_type": "markdown", + "id": "562fa7f2-af05-4af4-976e-131b4a085324", + "metadata": {}, + "source": [ + "## OTHER domain recurrence tables" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ce69f099-20c8-458a-a7e5-47a6ab9fe7fc", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
feature_idrf_1_5rf_2_0rf_3_0rf_4_0rf_5_0rf_10_0rf_2_0_17crf_5_0_17crf_10_0_17crf_25_0_17crf_50_0_17chigh_water_threshold
0190201900000010.000.000.350.350.350.350.000.000.000.000.000.00
1190201900000020.350.350.350.350.350.710.360.470.580.760.940.36
2190201900000030.350.354.594.945.306.111.655.149.0516.2623.491.65
3190201900000040.000.350.350.350.350.350.000.000.000.000.000.00
4190201900000058.839.5311.3012.0112.7815.019.8213.0315.6919.7123.249.82
..........................................
391517750054000473600.000.000.350.350.350.350.350.350.350.350.350.35
391518750054000473610.000.000.000.350.350.350.350.350.350.350.350.35
391519750054000473620.000.000.000.000.000.000.000.000.000.000.000.00
391520750054000473630.000.000.350.350.350.350.350.350.350.350.350.35
391521750054000473640.000.000.000.000.000.350.000.000.000.000.000.00
\n", + "

391522 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " feature_id rf_1_5 rf_2_0 rf_3_0 rf_4_0 rf_5_0 rf_10_0 \\\n", + "0 19020190000001 0.00 0.00 0.35 0.35 0.35 0.35 \n", + "1 19020190000002 0.35 0.35 0.35 0.35 0.35 0.71 \n", + "2 19020190000003 0.35 0.35 4.59 4.94 5.30 6.11 \n", + "3 19020190000004 0.00 0.35 0.35 0.35 0.35 0.35 \n", + "4 19020190000005 8.83 9.53 11.30 12.01 12.78 15.01 \n", + "... ... ... ... ... ... ... ... \n", + "391517 75005400047360 0.00 0.00 0.35 0.35 0.35 0.35 \n", + "391518 75005400047361 0.00 0.00 0.00 0.35 0.35 0.35 \n", + "391519 75005400047362 0.00 0.00 0.00 0.00 0.00 0.00 \n", + "391520 75005400047363 0.00 0.00 0.35 0.35 0.35 0.35 \n", + "391521 75005400047364 0.00 0.00 0.00 0.00 0.00 0.35 \n", + "\n", + " rf_2_0_17c rf_5_0_17c rf_10_0_17c rf_25_0_17c rf_50_0_17c \\\n", + "0 0.00 0.00 0.00 0.00 0.00 \n", + "1 0.36 0.47 0.58 0.76 0.94 \n", + "2 1.65 5.14 9.05 16.26 23.49 \n", + "3 0.00 0.00 0.00 0.00 0.00 \n", + "4 9.82 13.03 15.69 19.71 23.24 \n", + "... ... ... ... ... ... \n", + "391517 0.35 0.35 0.35 0.35 0.35 \n", + "391518 0.35 0.35 0.35 0.35 0.35 \n", + "391519 0.00 0.00 0.00 0.00 0.00 \n", + "391520 0.35 0.35 0.35 0.35 0.35 \n", + "391521 0.00 0.00 0.00 0.00 0.00 \n", + "\n", + " high_water_threshold \n", + "0 0.00 \n", + "1 0.36 \n", + "2 1.65 \n", + "3 0.00 \n", + "4 9.82 \n", + "... ... \n", + "391517 0.35 \n", + "391518 0.35 \n", + "391519 0.00 \n", + "391520 0.35 \n", + "391521 0.00 \n", + "\n", + "[391522 rows x 13 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Import the accompanying csv file to a dataframe - UPDATE THIS TO NEW CSV\n", + "new_recurrence_flows_df = pd.read_csv(\"recurrence_flows_nwm_v3_AK.csv\")\n", + "\n", + "# Round all columns to two decimals\n", + "new_recurrence_flows_df = new_recurrence_flows_df.round(2)\n", + "new_recurrence_flows_df" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "39f8bcc9-a050-4b28-86d4-2ac20396c9f7", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3522" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Define the database table you want to overwrite and upload the data - This can take 5-10 minutes due to the chunking required.\n", + "schema_name = \"derived\"\n", + "table_name = \"recurrence_flows_ak\"\n", + "new_recurrence_flows_df.to_sql(table_name, con=viz_db, schema=schema_name, if_exists='replace', index=False, chunksize=100000)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f409c996-f405-4ecb-ba2e-c4247e7eb1f1", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "This result object does not return rows. It has been closed automatically.\n" + ] + } + ], + "source": [ + "# Change the feature_id column to integer type, and set the primary key to feature_id\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ALTER COLUMN feature_id TYPE integer;\")\n", + "run_sql_in_db(f\"ALTER TABLE {schema_name}.{table_name} ADD PRIMARY KEY (feature_id);\")" + ] + }, + { + "cell_type": "markdown", + "id": "13171a68-12ed-43e2-885f-f2e08ea045ed", + "metadata": {}, + "source": [ + "### Extra Stuff" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "930e6d51-118c-4a8b-b946-4001a05b7158", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# This is how you save a local csv from an existing table - how I created the recurrence_flows_conus_2_1 csv.\n", + "import pandas as pd\n", + "df = pd.read_sql(\"SELECT * FROM derived.recurrence_flows_conus\", con=viz_db, index_col=\"feature_id\")\n", + "df.to_csv(\"recurrence_flows_conus_2_1.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6eb689bd-e912-4c96-a9bd-9ab136d0ce9d", + "metadata": {}, + "outputs": [], + "source": [ + "# If you get a permissions error that you're not the owner of the table, a db admin like Shawn or Nick\n", + "# Can change the owner of the target table by running this SQL as postgres:\n", + "ALTER TABLE IF EXISTS derived.recurrence_flows_conus_test\n", + " OWNER to viz_proc_admin_rw_user;" + ] + }, + { + "cell_type": "markdown", + "id": "69ab5ffa-111d-4eee-b0fd-0ca1bf35c0d2", + "metadata": {}, + "source": [ + "## SQL that creates a new table with HW threshold differences - to be used for a WPOD evaluation static service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e521e97-74ae-4703-984e-b0ccf292bfe5", + "metadata": {}, + "outputs": [], + "source": [ + "DROP TABLE IF EXISTS publish.streamflow_aep_high_water_comparison;\n", + "SELECT \n", + " row_number() over () as oid,\n", + " current.feature_id,\n", + " current.high_water_threshold as current_high_water_threshold,\n", + " '3.0' as current_version,\n", + " previous.high_water_threshold as previous_high_water_threshold,\n", + " '2.1' as previous_version,\n", + " ROUND((current.high_water_threshold - previous.high_water_threshold)::numeric, 2) as difference,\n", + " CASE\n", + " WHEN previous.high_water_threshold = 0\n", + " THEN 0\n", + " WHEN previous.high_water_threshold = -21474836.48\n", + " THEN 0\n", + " #ELSE ROUND(100 * ((current.high_water_threshold - previous.high_water_threshold) / current.high_water_threshold)::numeric, 0)\n", + " # v1 = v21 or previous, and v2 = v3 or current ((v2 - v1)/v1)*100\n", + " ELSE ROUND(100 * ((current.high_water_threshold - previous.high_water_threshold) / previous.high_water_threshold)::numeric, 0)\n", + " END as percent_difference,\n", + " strm_order,\n", + " geom\n", + "INTO publish.streamflow_aep_high_water_comparison\n", + "FROM derived.recurrence_flows_conus AS current\n", + "LEFT JOIN derived.recurrence_flows_conus_2_1 AS previous\n", + " ON previous.feature_id = current.feature_id\n", + "LEFT JOIN derived.channels_conus channel\n", + " ON channel.feature_id = current.feature_id" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/__init__-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/__init__-checkpoint.py new file mode 100644 index 00000000..e69de29b diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/find_missing_data_in_nwm_shared_bucket-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/find_missing_data_in_nwm_shared_bucket-checkpoint.py new file mode 100644 index 00000000..77425bb8 --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/find_missing_data_in_nwm_shared_bucket-checkpoint.py @@ -0,0 +1,55 @@ +import datetime as dt +import boto3 +import botocore + +S3 = boto3.resource('s3') +STEP = dt.timedelta(hours=1) +BUCKET = 'nws-shared-data-226711853580-us-east-1' +CONFIGURATIONS = ['analysis_assim'] +VARIABLES = { + 'analysis_assim': ['channel_rt', 'forcing'] +} +DOMAINS = { + 'analysis_assim': ['conus', 'puertorico', 'alaska', 'hawaii'] +} + +KEY_TEMPLATE = 'common/data/model/com/nwm/prod/nwm.{YYMMDD}/{full_configuration}/nwm.t{HH}z.{configuration}.{variable}.tm00.{domain}.nc' + +def main(START, END, print_progress=False): + missing_files = [] + iter_dt = START + while iter_dt < END: + for configuration in CONFIGURATIONS: + for variable in VARIABLES[configuration]: + for domain in DOMAINS[configuration]: + if domain == 'hawaii' and variable == 'channel_rt': break + full_configuration = configuration + if variable == 'forcing': + full_configuration = f'forcing_{configuration}' + if domain != 'conus': + full_configuration = f'{full_configuration}_{domain}' + key = KEY_TEMPLATE.format( + YYMMDD=iter_dt.strftime('%Y%m%d'), + full_configuration=full_configuration, + HH=iter_dt.strftime('%H'), + configuration=configuration, + variable=variable, + domain=domain + ) + if print_progress: + print(f"Checking for {key}...") + try: + S3.Object(BUCKET, key).load() + except botocore.exceptions.ClientError as e: + if e.response['Error']['Code'] == "404": + if print_progress: + print("... UH OH! 404!") + missing_files.append(key) + else: + raise + else: + # The file exists! + pass + iter_dt += STEP + + return missing_files \ No newline at end of file diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/s3_shared_functions-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/s3_shared_functions-checkpoint.py new file mode 100644 index 00000000..8a7a41e7 --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/s3_shared_functions-checkpoint.py @@ -0,0 +1,198 @@ + +# This script will eventually cover all types of communication with S3 +# from get lists, uploading, downloading, moving, etc. +import io +import os + +import boto3 +import pandas as pd + + +# ======================================================= +# ***************************** +# CAUTION: TODO: Aug 2024: This needs to be re-thought. I can easily overpower the notebook server depending on teh size of the notebooks +# ***************************** + +# Sep 2024: Deprecate: this is likely no longer used +# def download_S3_csv_files_to_df(bucket_name, s3_src_folder_prefix, is_verbose=False): + +# ''' +# Overview: All files are downloaded and put into a dataframe raw + +# returns: +# a dataframe +# ''' + +# s3_client = boto3.client("s3") + +# default_kwargs = {"Bucket": bucket_name, "Prefix": s3_src_folder_prefix} + +# next_token = "" + +# rtn_df = None +# ctr = 0 + +# print(f"Downloading data from s3://{bucket_name}/{s3_src_folder_prefix}") +# print("") + +# while next_token is not None: +# updated_kwargs = default_kwargs.copy() +# if next_token != "": +# updated_kwargs["ContinuationToken"] = next_token + +# # will limit to 1000 objects - hence tokens +# response = s3_client.list_objects_v2(**updated_kwargs) +# if response.get("KeyCount") == 0: +# # some recs may have been added in earlier pages +# next_token = response.get("NextContinuationToken") +# continue + +# contents = response.get("Contents") +# if contents is None: +# raise Exception("s3 contents not did not load correctly") + +# for result in contents: +# key = result.get("Key") +# if key[-1] != "/": # if it was a folder (ending in a slash, we skip it) +# # download and load the contents into the table +# full_file_url = f"s3://{bucket_name}/{key}" + +# if not full_file_url.endswith(".csv"): +# print(f"... Found file that is not a csv and was skipped : {full_file_url}") +# continue + +# if is_verbose: +# print(f"... Downloading: {key}") + +# #s3_resp = s3.get_object(Bucket=bucket_name, Key=key) +# #csv_content = response['Body'].read().decode('utf-8') + +# # then we let the first rec set the headers +# # pandas can load directly from S3 +# if rtn_df is None: +# # all fields will be loaded as string and future code can change as needed. +# # padnas read_csv is having trouble with data type for columns, so let's do it manually +# rtn_df = pd.read_csv(full_file_url) +# #rtn_df = pd.read_csv(io.StringIO(csv_content)) +# continue + +# #file_df = pd.read_csv(io.StringIO(csv_content)) +# file_df = pd.read_csv(full_file_url) +# rtn_df = pd.concat([rtn_df, file_df]) +# ctr = ctr + 1 + +# # TODO: Takes out this test +# break # just to see how it looks and load + + +# next_token = response.get("NextContinuationToken") +# break + +# # end of while + +# rtn_df = rtn_df.fillna(0) +# print(f"Downloaded {ctr} files from s3://{bucket_name}/{s3_src_folder_prefix}") +# return rtn_df + + + +# ======================================================= +# ***************************** +# CAUTION: TODO: Aug 2024: This needs to be re-thought. I can easily overpower the notebook server depending on teh size of the notebooks +# ***************************** +def download_S3_csv_files_to_df_from_list(bucket_name, list_file_paths, is_verbose=False): + ''' + Overview: + - Send a list of file paths (fully qualified, except for the "s3://" and bucket name" + Returns: + - A dataframe with the + ''' + + if len(list_file_paths) == 0: + raise Exception("No files requested for download") + + rtn_df = None + + s3_client = boto3.client('s3') + for s3_file in list_file_paths: + if s3_file.endswith(".csv") is False: + raise Exception(f"File name is not valid (not a csv): {s3_file}") + + # Manage the direction of the slashes just cases + s3_file = s3_file.replace("\\", "/") + + if s3_file.startswith("/"): # remove it + s3_file = s3_file.lstrip("/") + + full_file_url = f"s3://{bucket_name}/{s3_file}" + if is_verbose: + print(f".. Downloading: {full_file_url}") + + if rtn_df is None: + rtn_df = pd.read_csv(full_file_url) + continue + + file_df = pd.read_csv(full_file_url) + rtn_df = pd.concat([r2f_df, file_df]) + + print("") + print(f".. {len(list_file_paths)} files downloaded and loaded into the dataframe") + + return rtn_df + + +# ======================================================= +def get_s3_subfolder_file_names(bucket_name, s3_src_folder_prefix, is_verbose=False): + + ''' + Overview: Gets a list of file (not folders in a s3 folder (well.. prefix) + + returns: + a list of file names and path (keys), fully qualified including the bucket and src_folder_path + ''' + + s3_client = boto3.client("s3") + + default_kwargs = {"Bucket": bucket_name, "Prefix": s3_src_folder_prefix} + + next_token = "" + + file_list = [] + + print(f"Getting file list from s3://{bucket_name}/{s3_src_folder_prefix}") + print("") + + while next_token is not None: + updated_kwargs = default_kwargs.copy() + if next_token != "": + updated_kwargs["ContinuationToken"] = next_token + + # will limit to 1000 objects - hence tokens, even for list_objects_v2 + response = s3_client.list_objects_v2(**updated_kwargs) + if response.get("KeyCount") == 0: + # some recs may have been added in earlier pages + next_token = response.get("NextContinuationToken") + continue + + contents = response.get("Contents") + if contents is None: + raise Exception("s3 contents not did not load correctly") + + for result in contents: + key = result.get("Key") + if key[-1] != "/": # if it was a folder (ending in a slash, we skip it) + # download and load the contents into the table + full_file_url = f"s3://{bucket_name}/{key}" + + if is_verbose: + print(f"... Found file name: {key}") + + file_list.append(full_file_url) + + next_token = response.get("NextContinuationToken") + + # end of while + + print(f"Found {len(file_list)} file names from s3://{bucket_name}/{s3_src_folder_prefix}") + return file_list + diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_funcs-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_funcs-checkpoint.py new file mode 100644 index 00000000..cb61508c --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_funcs-checkpoint.py @@ -0,0 +1,143 @@ +import boto3 +import os +import psycopg2 + + + +def get_db_credentials(db_type): + """ + This function pulls database credentials from environment variables. + It first checks for a password in an environment variable. + If that doesn't exist, it tries looking or a secret name to query for + the password using the get_secret_password function. + + Returns: + db_host (str): The host address of the PostgreSQL database. + db_name (str): The target database name. + db_user (str): The database user with write access to authenticate with. + db_password (str): The password for the db_user. + + """ + db_type = db_type.upper() + + db_host = os.environ[f'{db_type}_DB_HOST'] + db_name = os.environ[f'{db_type}_DB_DATABASE'] + db_user = os.environ[f'{db_type}_DB_USERNAME'] + try: + db_password = os.getenv(f'{db_type}_DB_PASSWORD') + except Exception: + try: + db_password = get_secret_password(os.getenv(f'{db_type}_RDS_SECRET_NAME'), 'us-east-1', 'password') + except Exception as e: + print(f"Couldn't get db password from environment variable or secret name. ({e})") + + return db_host, db_name, db_user, db_password + +def get_db_engine(db_type): + from sqlalchemy import create_engine + + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + db_engine = create_engine(f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}') + + return db_engine + +def get_db_connection(db_type, asynchronous=False): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + connection = psycopg2.connect( + f"host={db_host} dbname={db_name} user={db_user} password={db_password}", async_=asynchronous + ) + + return connection + +def sql_to_dataframe(sql, db_type="viz", return_geodataframe=False): + if sql.endswith(".sql"): + sql = open(sql, 'r').read() + + db_engine = get_db_engine(db_type) + if not return_geodataframe: + import pandas as pd + df = pd.read_sql(sql, db_engine) + else: + import geopandas as gdp + df = gdp.GeoDataFrame.from_postgis(sql, db_engine) + + db_engine.dispose() + return df + + +def execute_sql(sql, db_type="viz"): + db_connection = get_db_connection(db_type) + + try: + cur = db_connection.cursor() + cur.execute(sql) + db_connection.commit() + except Exception as e: + raise e + finally: + db_connection.close() + +def get_secret_password(secret_name, region_name, key): + """ + Gets a password from a sercret stored in AWS secret manager. + + Args: + secret_name(str): The name of the secret + region_name(str): The name of the region + + Returns: + password(str): The text of the password + """ + + # Create a Secrets Manager client + session = boto3.session.Session() + client = session.client( + service_name='secretsmanager', + region_name=region_name + ) + + # In this sample we only handle the specific exceptions for the 'GetSecretValue' API. + # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html + # We rethrow the exception by default. + + try: + get_secret_value_response = client.get_secret_value( + SecretId=secret_name + ) + except ClientError as e: + if e.response['Error']['Code'] == 'DecryptionFailureException': + # Secrets Manager can't decrypt the protected secret text using the provided KMS key. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InternalServiceErrorException': + # An error occurred on the server side. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidParameterException': + # You provided an invalid value for a parameter. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidRequestException': + # You provided a parameter value that is not valid for the current state of the resource. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'ResourceNotFoundException': + # We can't find the resource that you asked for. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + else: + print(e) + raise e + else: + # Decrypts secret using the associated KMS CMK. + # Depending on whether the secret is a string or binary, one of these fields will be populated. + if 'SecretString' in get_secret_value_response: + secret = get_secret_value_response['SecretString'] + j = json.loads(secret) + password = j[key] + else: + decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary']) + print("password binary:" + decoded_binary_secret) + password = decoded_binary_secret.password + + return password diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_functions-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_functions-checkpoint.py new file mode 100644 index 00000000..1e27e86e --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/shared_functions-checkpoint.py @@ -0,0 +1,831 @@ +from ipywidgets import Checkbox +import json +import os +from IPython.display import display, HTML +import boto3 +import botocore +from sqlalchemy import create_engine, text +import psycopg2 +import psycopg2.extras +import pandas as pd +from matplotlib import pyplot as plt +from matplotlib.colors import LinearSegmentedColormap +from sqlalchemy.exc import ResourceClosedError +from botocore.exceptions import ClientError +import base64 +import re +import time +import matplotlib as mpl +from datetime import timedelta +import sqlalchemy + +pd.options.mode.chained_assignment = None + +display(HTML("")) + +# Oct 16, 2024 - moved hots/db names user names and passwords to AWS_Secret_keys folder. +# this needs to be test + +def load_checklist(service_name): + display(HTML("")) + + service_json = f'service_jsons/{service_name}.json' + + # If service json does not exist, then create a new json file with default checkboxes and values + if not os.path.exists(service_json): + print(f"Creating {service_json} for new {service_name} service ") + data = { + "update_service_metadata": False, + "load_datasets": False, + "create_sql": False, + "check_sql": False, + "save_sql_table": False, + "create_pro_project": False, + "setup_code_review": False, + "finished_code_review": False, + "implement_code_review_changes": False, + "add_sql_to_repo": False, + "add_pro_project_to_repo": False, + "add_notebook_to_repo": False, + "ti_implement": False + } + + with open(service_json, 'w') as f: + json.dump(data, f) + + with open(service_json, 'r') as f: + data = json.load(f) + + update_service_metadata = Checkbox(value=data["update_service_metadata"], description_tooltip="update_service_metadata", description="Update service metadata in first notebook cell") + load_datasets = Checkbox(value=data["load_datasets"], description_tooltip="load_datasets", description="Have Corey or Tyler add any new dependent datasets to the DB") + create_sql = Checkbox(value=data["create_sql"], description_tooltip="create_sql", description="Create SQL for service data") + check_sql = Checkbox(value=data["check_sql"], description_tooltip="check_sql", description="Check SQL output for accuracy") + save_sql_table = Checkbox(value=data["save_sql_table"], description_tooltip="save_sql_table", description="Update SQL to save a table in the dev schema") + create_pro_project = Checkbox(value=data["create_pro_project"], description_tooltip="create_pro_project", description="Create a pro project for the new service") + setup_code_review = Checkbox(value=data["setup_code_review"], description_tooltip="setup_code_review", description="Setup a code review meeting with the team to go over the service") + finished_code_review = Checkbox(value=data["finished_code_review"], description_tooltip="finished_code_review", description="Complete code review") + implement_code_review_changes = Checkbox(value=data["implement_code_review_changes"], description_tooltip="implement_code_review_changes", description="Implement any service changes from the code review") + add_sql_to_repo = Checkbox(value=data["add_sql_to_repo"], description_tooltip="add_sql_to_repo", description="Admin Task - Add SQL to repo (Adding INTO statements)") + add_pro_project_to_repo = Checkbox(value=data["add_pro_project_to_repo"], description_tooltip="add_pro_project_to_repo", description="Admin Task - Add pro poject to repo (Updating to use Query Layer)") + add_notebook_to_repo = Checkbox(value=data["add_notebook_to_repo"], description_tooltip="add_notebook_to_repo", description="Add notebook to repo") + ti_implement = Checkbox(value=data["ti_implement"], description_tooltip="ti_implement", description="Admin Task - Implement service into the TI environment") + + def on_value_change(change): + key = change['owner'].description_tooltip + value = change['new'] + + data[key] = value + with open(service_json, 'w') as f: + json.dump(data, f) + + update_service_metadata.observe(on_value_change, names='value') + load_datasets.observe(on_value_change, names='value') + create_sql.observe(on_value_change, names='value') + check_sql.observe(on_value_change, names='value') + save_sql_table.observe(on_value_change, names='value') + create_pro_project.observe(on_value_change, names='value') + setup_code_review.observe(on_value_change, names='value') + finished_code_review.observe(on_value_change, names='value') + implement_code_review_changes.observe(on_value_change, names='value') + add_sql_to_repo.observe(on_value_change, names='value') + add_pro_project_to_repo.observe(on_value_change, names='value') + add_notebook_to_repo.observe(on_value_change, names='value') + ti_implement.observe(on_value_change, names='value') + + display(update_service_metadata) + display(load_datasets) + display(create_sql) + display(check_sql) + display(save_sql_table) + display(create_pro_project) + display(setup_code_review) + display(finished_code_review) + display(implement_code_review_changes) + display(add_notebook_to_repo) + display(add_sql_to_repo) + display(add_pro_project_to_repo) + display(ti_implement) + +def get_db_credentials(db_type): + """ + This function pulls database credentials from environment variables. + It first checks for a password in an environment variable. + If that doesn't exist, it tries looking or a secret name to query for + the password using the get_secret_password function. + + Returns: + db_host (str): The host address of the PostgreSQL database. + db_name (str): The target database name. + db_user (str): The database user with write access to authenticate with. + db_password (str): The password for the db_user. + + """ + db_type = db_type.upper() + + db_host = os.environ[f'{db_type}_DB_HOST'] + db_name = os.environ[f'{db_type}_DB_DATABASE'] + db_user = os.environ[f'{db_type}_DB_USERNAME'] + try: + db_password = os.getenv(f'{db_type}_DB_PASSWORD') + except Exception: + try: + db_password = get_secret_password(os.getenv(f'{db_type}_RDS_SECRET_NAME'), 'us-east-1', 'password') + except Exception as e: + print(f"Couldn't get db password from environment variable or secret name. ({e})") + + return db_host, db_name, db_user, db_password + +def get_db_connection_url(db_type): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + return f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}' + +def get_db_engine(db_type): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + db_engine = create_engine(f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}') + + return db_engine + + +def get_db_connection(db_type, asynchronous=False): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + connection = psycopg2.connect( + f"host={db_host} dbname={db_name} user={db_user} password={db_password}", async_=asynchronous + ) + + return connection + + +# Aug 18, 2024, updated to add "where" clause +def get_db_values(table, columns, db_type="viz", where=""): + db_engine = get_db_engine(db_type) + + if not type(columns) == list: + raise Exception("columns argument must be a list of column names") + + columns = ",".join(columns) + print(f"Retrieving values for {columns}") + sql = f"SELECT {columns} FROM {table}" + if where != "": + sql = f"{sql} WHERE {where}" + df = pd.read_sql(sql, db_engine) + + return df + + +def run_sql_file_in_db(db_type, sql_file): + print("Getting connection to run sql files") + sql = open(sql_file, 'r').read() + db_connection = get_db_connection(db_type) + + try: + cur = db_connection.cursor() + print(f"Running {sql_file}") + cur.execute(sql) + db_connection.commit() + except Exception as e: + raise e + finally: + db_connection.close() + + +def sql_to_dataframe(sql, db_type="viz", as_geo=False): + if sql.endswith(".sql"): + sql = open(sql, 'r').read() + + db_engine = get_db_engine(db_type) + if not as_geo: + import pandas as pd + df = pd.read_sql(sql, db_engine) + else: + import geopandas as gdp + df = gdp.GeoDataFrame.from_postgis(sql, db_engine) + + db_engine.dispose() + return df + + +def execute_sql(sql, db_type="viz"): + db_connection = get_db_connection(db_type) + + try: + cur = db_connection.cursor() + cur.execute(sql) + db_connection.commit() + except Exception as e: + raise e + finally: + db_connection.close() + +def run_sql_in_db(sql, db_type="viz", return_geodataframe=False): + connection = get_db_engine(db_type) + + try: + if not return_geodataframe: + df = pd.read_sql(sql, connection) + else: + import geopandas as gdp + df = gdp.GeoDataFrame.from_postgis(sql, connection) + except ResourceClosedError as e: + print(e) + # Nothing return because sql created/update tables + return + + return df + +def get_schemas(db_type="viz"): + sql = "SELECT DISTINCT(table_schema) FROM information_schema.tables ORDER BY table_schema;" + return run_sql_in_db(sql, db_type=db_type) + + +def get_tables(schema, containing='', db_type="viz"): + sql = f"SELECT table_name FROM information_schema.tables WHERE table_schema = '{schema}'" + if containing: + sql += f" AND table_name LIKE '%%{containing}%%'" + sql += " ORDER BY table_name;" + + return run_sql_in_db(sql, db_type=db_type) + +def get_columns(schema_and_optional_table, table='', db_type="viz"): + if '.' in schema_and_optional_table and not table: + schema, table = schema_and_optional_table.split('.') + else: + schema = schema_and_optional_table + sql = f""" + SELECT column_name, data_type + FROM information_schema.columns + WHERE table_schema = '{schema}' AND table_name = '{table}'; + """ + + return run_sql_in_db(sql, db_type=db_type) + +def map_column(gdf, column, colormap=None, title=None, basemap=True, categorical=False, legend=True, show_plot=True): + + legend_kwds=None + if categorical: + legend_kwds={'shrink': 0.42, 'label': column} + + if not colormap: + cmap = "Blues" + elif type(colormap) is dict: + cmap = LinearSegmentedColormap.from_list("custom_cmap", list(colormap.values()), N=len(colormap)) + if categorical: + legend_kwds={} + gdf[column] = gdf[column].astype(pd.api.types.CategoricalDtype(categories=colormap.keys())) + else: + cmap = colormap + + if not show_plot: + plt.ioff() + ax = gdf.plot(figsize=(20,20), column=column, legend=legend, cmap=cmap, legend_kwds=legend_kwds) + + ax.set_axis_off() + ax.set_title(title) + + if basemap: + import contextily as cx + cx.add_basemap(ax, source=cx.providers.Stamen.TonerLite) + + return ax + +def sql_to_leafmap(db_alias, sql, layer_name="My Layer", fill_colors=["red", "green", "blue"]): + import leafmap + + db_host, db_name, db_user, db_password = get_db_credentials(db_alias) + con = leafmap.connect_postgis( + database=db_name, host=db_host, user=db_user, password=db_password + ) + m = leafmap.Map() + m.add_gdf_from_postgis( + sql, con, layer_name=layer_name, fill_colors=fill_colors + ) + return m + +# TODO: Aug 2024: Consider moving this to the new s3_shared_functions file (or more like just the s3 code in this function) +def save_gdf_shapefile(gdf, output_folder, shapefile_name): + shapefiles_folder = folder + + gdf.to_file(f'{shapefiles_folder}/{shapefile_name}.shp', index=False) + + for file in os.listdir(shapefiles_folder): + file_basename = os.path.basename(file).split(".")[0] + if file_basename == shapefile_name: + file_path = os.path.join(shapefiles_folder, file) + s3_key = f"{bucket_folder}/{file}" + + print(f"Uploading {file} to {upload_bucket}:/{s3_key}") + s3_client.upload_file( + file_path, upload_bucket, s3_key, ExtraArgs={"ServerSideEncryption": "aws:kms"} + ) + + +# TODO: Aug 2024: Consider moving this to the new s3_shared_functions file (or more like just the s3 code in this function) +def save_gdf_shapefile_to_s3(gdf, shapefile_name): + s3_client = boto3.client('s3') + shapefiles_folder = "shapefiles" + upload_bucket = "hydrovis-dev-fim-us-east-1" + bucket_folder = "sagemaker/shapefiles" + + gdf.to_file(f'{shapefiles_folder}/{shapefile_name}.shp', index=False) + + for file in os.listdir(shapefiles_folder): + file_basename = os.path.basename(file).split(".")[0] + if file_basename == shapefile_name: + file_path = os.path.join(shapefiles_folder, file) + s3_key = f"{bucket_folder}/{file}" + + print(f"Uploading {file} to {upload_bucket}:/{s3_key}") + s3_client.upload_file( + file_path, upload_bucket, s3_key, ExtraArgs={"ServerSideEncryption": "aws:kms"} + ) + + + +def load_df_into_db(table_name, db_engine, df, dtype={'oid': sqlalchemy.types.Integer()}, epsg=None, drop_first=True, bigint_fields=[]): + schema = table_name.split(".")[0] + table = table_name.split(".")[-1] + + # Drop the old table if it exists and recreate it + if drop_first: + connection = database("egis").get_db_connection() + with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + print(f"Dropping {table_name} if it exists") + conn.execute(text(f'DROP TABLE IF EXISTS {table_name};')) # Drop the stage table if it exists + + print("Getting sql to create table") + create_table_statement = pd.io.sql.get_schema(df, table_name) + replace_values = { + '"geom" TEXT': '"geom" GEOMETRY', "REAL": "DOUBLE PRECISION", '"coastal" INTEGER': '"coastal" BOOLEAN' + } # Correct data types + for a, b in replace_values.items(): + create_table_statement = create_table_statement.replace(a, b) + + create_table_statement = create_table_statement.replace(f'"{table_name}"', table_name) + + if epsg: + create_table_statement = create_table_statement.replace(f'"geom" GEOMETRY', f'"geom" GEOMETRY(Geometry,{epsg})') + + if bigint_fields: + for field in bigint_fields: + create_table_statement = create_table_statement.replace(f'"{field}" INTEGER', f'"{field}" BIGINT') + print(create_table_statement) + + print(f"Creating {table_name}") + conn.execute(text(create_table_statement)) # Create the new empty stage table + + print(f"Adding data to {table_name}") + df.to_sql(con=db_engine, schema=schema, name=table, index=False, if_exists='append', chunksize=200000) + +def move_data_to_another_db(origin_db, dest_db, origin_table, dest_table, stage=True, add_oid=True, + add_geom_index=True, columns="*"): + origin_engine = get_db_engine(origin_db) + dest_engine = get_db_engine(dest_db) + + if stage: + dest_final_table = dest_table + dest_final_table_name = dest_final_table.split(".")[1] + + dest_table = f"{dest_table}_stage" + + print(f"Reading {origin_table} from the {origin_db} db") + df = get_db_values(origin_table, columns, db_type=origin_db) + + print(f"Loading {origin_table} into {dest_table} in the {dest_db} db") + load_df_into_db(dest_table, dest_engine, df) + + if add_oid: + print(f"Adding an OID to the {dest_table}") + dest_engine.execute(f'ALTER TABLE {dest_table} ADD COLUMN OID SERIAL PRIMARY KEY;') + + if add_geom_index: + print(f"Adding an spatial index to the {dest_table}") + dest_engine.execute(f'CREATE INDEX ON {dest_table} USING GIST (geom);') # Add a spatial index + + if stage: + print(f"Renaming {dest_table} to {dest_final_table}") + dest_engine.execute(f'DROP TABLE IF EXISTS {dest_final_table};') # Drop the published table if it exists + dest_engine.execute(f'ALTER TABLE {dest_table} RENAME TO {dest_final_table_name};') # Rename the staged table + +def get_service_metadata(run_only=True): + from helper_functions.viz_classes import database + """ + This function pulls service metadata from the admin.services database table. + + Returns: + results (dictionary): A python dictionary containing the database table data. + """ + import psycopg2.extras + service_filter = run_filter = "" + if run_only: + run_filter = " WHERE run is True" + connection = database("viz").get_db_connection() + with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + cur.execute(f"SELECT * FROM admin.services_new {run_filter};") + column_names = [desc[0] for desc in cur.description] + response = cur.fetchall() + cur.close() + connection.close() + return list(map(lambda x: dict(zip(column_names, x)), response)) + +def get_secret_password(secret_name, region_name, key): + """ + Gets a password from a sercret stored in AWS secret manager. + + Args: + secret_name(str): The name of the secret + region_name(str): The name of the region + + Returns: + password(str): The text of the password + """ + + # Create a Secrets Manager client + session = boto3.session.Session() + client = session.client( + service_name='secretsmanager', + region_name=region_name + ) + + # In this sample we only handle the specific exceptions for the 'GetSecretValue' API. + # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html + # We rethrow the exception by default. + + try: + get_secret_value_response = client.get_secret_value( + SecretId=secret_name + ) + except ClientError as e: + if e.response['Error']['Code'] == 'DecryptionFailureException': + # Secrets Manager can't decrypt the protected secret text using the provided KMS key. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InternalServiceErrorException': + # An error occurred on the server side. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidParameterException': + # You provided an invalid value for a parameter. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidRequestException': + # You provided a parameter value that is not valid for the current state of the resource. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'ResourceNotFoundException': + # We can't find the resource that you asked for. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + else: + print(e) + raise e + else: + # Decrypts secret using the associated KMS CMK. + # Depending on whether the secret is a string or binary, one of these fields will be populated. + if 'SecretString' in get_secret_value_response: + secret = get_secret_value_response['SecretString'] + j = json.loads(secret) + password = j[key] + else: + decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary']) + print("password binary:" + decoded_binary_secret) + password = decoded_binary_secret.password + + return password + +def get_configuration(filename, previous_forecasts=0, return_input_files=True, mrf_timestep=1): + """ + Parses the data file path to extract the file configuration, date, hour, reference time, and input files. + + Args: + filename(dictionary): key (path) of a NWM channel file, or max_flows derived file. + + Returns: + data_dict(dictionary): A dictionay containing the following possible values + configuration(str): configuration of the run, i.e. medium_range_3day, analysis_assim, etc + date(str): date of the forecast file (YYYYMMDD) + hour(str): hour of the forecast file (HH) + reference_time(str): the reference time associated with the input file + input_files(list): All of the files needed to run analysis on the given configuration / reference time. + model_type(str): Model run of the NWM. values are analysis_assim, short_range, or medium_range + domain(str): Domain of the forecast. Values are conus, hawaii, or puertorico + forecast_timestep(str): The timestamp of the forecast file, i.e. 018 for the f018 file + mrf_timestep (int): The hour interval to use for mrf forecasts (default is 1, but old model is 3 hours) + """ + input_files = [] + if 'max_flows' in filename: + matches = re.findall(r"max_flows/(.*)/(\d{8})/\D*_(\d+day_)?(\d{2})_max_flows.*", filename)[0] + date = matches[1] + hour = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + input_files.append(filename) + + days_match = re.findall(r"(\d+day)", filename) + if days_match: + configuration = f"{configuration}_{days_match[0]}" + + data_dict = {'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time} + elif 'max_stage' in filename: + matches = re.findall(r"max_stage/(.*)/(\d{8})/(\d{2})_(\d{2})_ahps_forecasts.csv", filename)[0] + date = matches[1] + hour = matches[2] + minute = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:{minute[-2:]}:00" + input_files.append(filename) + + metadata_file = filename.replace("ahps_forecasts", "ahps_metadata") + input_files.append(metadata_file) + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, + 'reference_time': reference_time, 'input_files': input_files + } + elif "pcpanl" in filename: + matches = re.findall(r"(.*)/pcpanl.(\d{8})/st4_(.*).(\d{10})\.01h.grb2", filename)[0] + key_prefix = matches[0] + domain = matches[2] + date = matches[3][:-2] + hour = matches[3][-2:] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {date[-2:]}:00:00" + model_type = "pcpanl" + model_output = "pcpanl" + + data_dict = { + 'date': date, 'hour': hour, 'domain': domain, 'configuration': model_type, + 'reference_time': reference_time, 'model_type': model_type, "model_output": model_output + } + + else: + if 'analysis_assim' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\.(.*)\.tm(.*)\.(.*)\.nc", filename)[0] + elif 'short_range' in filename or 'medium_range_mem1' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\.(.*)\.f(\d{3,5}).(.*)\.nc", filename)[0] + else: + raise Exception(f"Configuration not set for {filename}") + + key_prefix = matches[0] + date = matches[1] + configuration = matches[2] + hour = matches[3] + model_type = matches[4] + model_output = matches[5] + forecast_timestep = matches[6] + domain = matches[7] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time, + 'model_type': model_type, 'domain': domain, 'forecast_timestep': forecast_timestep, "model_output": model_output + } + + if return_input_files: + input_files = get_input_files(key_prefix, reference_time, forecast_timestep, configuration, model_type, + domain, previous_forecasts=previous_forecasts, mrf_timestep=mrf_timestep) + data_dict['input_files'] = input_files + + return data_dict + +# Function to get a daterange list from a start and end date. +def daterange(start_date, end_date): + for n in range(int((end_date - start_date).days + 1)): + yield start_date + timedelta(n) + +# Function to kick off past_event pipelines for a specified date & time range +def run_pipelines(start_date, end_date, reference_hours, configurations, initialize_pipeline_arn, states_to_run_fim = None, skip_fim = False, interval_minutes=20): + lambda_config = botocore.client.Config(max_pool_connections=1, connect_timeout=60, read_timeout=600) + lambda_client = boto3.client('lambda', config=lambda_config) + for configuration in configurations: + for key, value in configuration.items(): + configuration_name = key + bucket = value + for day in daterange(start_date, end_date): + reference_date = day.strftime("%Y-%m-%d") + for reference_hour in reference_hours: + dump_dict = {"configuration": configuration_name, + "bucket": bucket, + "reference_time": f"{reference_date} {reference_hour}", + "states_to_run_fim": states_to_run_fim, + "skip_fim": skip_fim} + lambda_client.invoke(FunctionName=initialize_pipeline_arn, InvocationType='Event', Payload=json.dumps(dump_dict)) + print(f"Invoked viz_initialize_pipeline function with payload: {dump_dict}.") + time.sleep(interval_minutes*60) + +def update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=None, service_sql_name=None, summary_sql_name=None, fim_service=False, feature_service=False, run=False, fim_configs=None, public_service=False, max_flow_method="db"): + + if not fim_configs: + fim_configs = [] + + if not summary_sql_name: + summary_sql_name = [] + + if not max_flows_sql_name: + max_flows_sql_name = [] + + sql = f""" + DELETE FROM admin.services WHERE service = '{service}'; + """ + run_sql_in_db(sql, db_type="viz") + + sql = f""" + INSERT INTO admin.services( + service, configuration, postprocess_max_flows, postprocess_service, postprocess_summary, summary, description, tags, credits, egis_server, egis_folder, fim_service, feature_service, run, fim_configs, public_service, max_flow_method) + VALUES ('{service}', '{configuration}', array{str(max_flows_sql_name).lower()}::text[], '{service_sql_name}', array{str(summary_sql_name).lower()}::json[], '{summary}', '{description}', '{tags}', '{credits}', '{egis_server}', '{egis_folder}', {str(fim_service).lower()}, {str(feature_service).lower()}, {str(run).lower()}, array{str(fim_configs).lower()}::text[], {str(public_service).lower()}, '{max_flow_method}') + """ + + sql = sql.replace("'None'", "null") + + run_sql_in_db(sql, db_type="viz") + +def update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_format=None, file_step=None, file_window=None): + + if step not in ['ingest', 'fim_prep', 'max_flows']: + raise Exception("step must be one of ingest, fim_prep, or max_flows") + + if target_keys: + if isinstance(target_keys, str) and "(" in target_keys: + pass + else: + if not isinstance(target_keys, list): + target_keys = [target_keys] + + target_keys = f"({','.join(target_keys)})" + + sql = f""" + DELETE FROM admin.pipeline_data_flows WHERE service = '{service}' AND flow_id = '{flow_id}'; + """ + run_sql_in_db(sql, db_type="viz") + + sql = f""" + INSERT INTO admin.pipeline_data_flows( + service, flow_id, step, file_format, source_table, target_table, target_keys, file_step, file_window) + VALUES ('{service}', '{flow_id}', '{step}', '{file_format}', '{source_table}', '{target_table}', '{target_keys}', '{file_step}', '{file_window}'); + """ + sql = sql.replace("'None'", "null") + + run_sql_in_db(sql, db_type="viz") + +def clear_db_connections(user="viz_proc_dev_rw_user"): + sql = f""" + SELECT pg_terminate_backend(pg_stat_activity.pid) + FROM pg_stat_activity + WHERE pg_stat_activity.datname = 'vizprocessing' + AND pid <> pg_backend_pid(); + """ + + run_sql_in_db(sql, db_type="viz") + +def show_colors(colors): + """ + Draw a square for each color contained in the colors list + given in argument. + """ + with plt.rc_context(plt.rcParamsDefault): + fig = plt.figure(figsize=(6, 1), frameon=False) + ax = fig.add_subplot(111) + for x, color in enumerate(colors): + ax.add_patch( + mpl.patches.Rectangle( + (x, 0), 1, 1, facecolor=color + ) + ) + ax.set_xlim((0, len(colors))) + ax.set_ylim((0, 1)) + ax.set_xticks([]) + ax.set_yticks([]) + ax.set_aspect("equal") + + return fig + +def show_symbology(symbology_list): + """ + Args: + - symbology_list(list): list containing a list of color, upper bound scale, and label + """ + color_scale = [] + bound_scale = [] + labels = [] + for class_break in symbology_list: + color = '#%02x%02x%02x' % tuple(class_break[0][:3]) if type(class_break[0]) is list else class_break[0] + color_scale.append(color) + bound_scale.append(class_break[1]) + labels.append(class_break[2]) + + print(bound_scale) + print(labels) + display(show_colors(color_scale)) + +def open_raster(bucket, file, variable): + download_path = check_if_file_exists(bucket, file, download=True) + print(f"--> Downloaded {file} to {download_path}") + + print(f"Opening {variable} in raster for {file}") + import rioxarray as rxr + ds = rxr.open_rasterio(download_path, variable=variable) + + # for some files like NBM alaska, the line above opens the attribute itself + try: + data = ds[variable] + except: + data = ds + + if "alaska" in file: + proj4 = "+proj=stere +lat_0=90 +lat_ts=60 +lon_0=-135 +x_0=0 +y_0=0 +R=6370000 +units=m +no_defs" + else: + try: + proj4 = data.proj4 + except: + proj4 = ds.proj4 + + from rasterio.crs import CRS + crs = CRS.from_proj4(proj4) + + os.remove(download_path) + + return [data, crs] + +def create_raster(data, crs, raster_name): + print(f"Creating raster for {raster_name}") + data.rio.write_crs(crs, inplace=True) + data.rio.write_nodata(0, inplace=True) + + if "grid_mapping" in data.attrs: + data.attrs.pop("grid_mapping") + + if "_FillValue" in data.attrs: + data.attrs.pop("_FillValue") + + local_raster = f'/tmp/{raster_name}.tif' + + print(f"Saving raster to {local_raster}") + data.rio.to_raster(local_raster) + + return local_raster + + +# TODO: Aug 2024: Move this to new s3_shared_functions +def upload_raster(local_raster, output_bucket, output_workspace): + raster_name = os.path.basename(local_raster) + + s3_raster_key = f"{output_workspace}/tif/{raster_name}" + + print(f"--> Uploading raster to s3://{output_bucket}/{s3_raster_key}") + s3 = boto3.client('s3') + + s3.upload_file(local_raster, output_bucket, s3_raster_key) + os.remove(local_raster) + + return s3_raster_key + + + + +def sum_rasters(bucket, input_files, variable): + print(f"Adding {variable} variable of {len(input_files)} raster(s)...") + sum_initiated = False + for input_file in input_files: + print(f"Adding {input_file}...") + data, crs = open_raster(bucket, input_file, variable) + time_index = 0 + if len(data.time) > 1: + time_index = -1 + for i, t in enumerate(data.time): + if str(float(data.sel(time=t)[0][0])) != 'nan': + time_index = i + break + if (time_index < 0): + raise Exception(f"No valid time steps were found in file: {input_file}") + + if not sum_initiated: + data_sum = data.sel(time=data.time[time_index]) + sum_initiated = True + else: + data_sum += data.sel(time=data.time[time_index]) + print("Done adding rasters!") + return data_sum, crs + + +def move_data_from_viz_to_egis(viz_schema_and_table, egis_schema_and_table): + egis_connection = get_db_connection('egis') + + viz_schema, viz_table = viz_schema_and_table.split('.') + + with egis_connection: + with egis_connection.cursor() as cur: + sql = f""" + DROP SCHEMA IF EXISTS transfer_from_viz CASCADE; + + CREATE SCHEMA transfer_from_viz; + + IMPORT FOREIGN SCHEMA {viz_schema} LIMIT TO ({viz_table}) + FROM SERVER vizprc_db + INTO transfer_from_viz; + + SELECT * + INTO {egis_schema_and_table} + FROM transfer_from_viz.{viz_table}; + + DROP SCHEMA IF EXISTS transfer_from_viz CASCADE; + """ + cur.execute(sql) + egis_connection.close() + print(f'Successfully copied {viz_schema_and_table} from the VIZ DB to {egis_schema_and_table} in the EGIS DB!') diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/sync_s3_folders-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/sync_s3_folders-checkpoint.py new file mode 100644 index 00000000..2d0921ba --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/sync_s3_folders-checkpoint.py @@ -0,0 +1,44 @@ +import boto3 + + +# Function to download files from a folder in S3 +def download_files_from_s3(src, dst, ignore_str): + from_profile = src['profile'] + from_bucket = src['bucket'] + from_path = src['path'] + from_s3_session = boto3.Session(profile_name=from_profile) + from_client = from_s3_session.client('s3') + + to_profile = dst['profile'] + to_bucket = dst['bucket'] + to_s3_session = boto3.Session(profile_name=to_profile) + to_client = to_s3_session.client('s3') + + # Retrieve list of objects in the specified folder + paginator = from_client.get_paginator('list_objects_v2') + pages = paginator.paginate(Bucket=from_bucket, Prefix=from_path) + + for page in pages: + # Iterate over each object and download it + for obj in page['Contents']: + key = obj['Key'] + if ignore_str and ignore_str in key: + continue + print(f'Writing {key} from {from_bucket} to {to_bucket}') + obj = from_client.get_object(Bucket=from_bucket, Key=key) + content = obj['Body'].read() + to_client.put_object(Body=content, Bucket=to_bucket, Key=key) + + +if __name__ == '__main__': + src = { + 'profile': 'ti', + 'bucket': 'hydrovis-ti-deployment-us-east-1', + 'path': 'viz_db_dumps/vizDB_derived_v2.1.7_dump.sql' + } + dst = { + 'profile': 'prod', + 'bucket': 'hydrovis-uat-deployment-us-east-1' + } + ignore_str = '' + download_files_from_s3(src, dst, ignore_str) diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_db_ingest-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_db_ingest-checkpoint.py new file mode 100644 index 00000000..c439d7fd --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_db_ingest-checkpoint.py @@ -0,0 +1,147 @@ +################################################################################ +################################ Viz DB Ingest ################################# +################################################################################ +""" +This function downloads a file from S3 and ingets it into the vizprocessing RDS +database. + +Args: + event (dictionary): The event passed from the state machine. + context (object): Automatic metadata regarding the invocation. + +Returns: + dictionary: The details of the file that was ingested, to be returned to the state machine. +""" +################################################################################ +import os +import boto3 +import json +import re +from datetime import datetime +import numpy as np +import pandas as pd +import xarray as xr +from io import StringIO +from psycopg2.errors import UndefinedTable, BadCopyFileFormat, InvalidTextRepresentation +from .viz_classes import database +from .viz_lambda_shared_funcs import check_if_file_exists, get_db_connection_url + +s3 = boto3.client('s3') +s3_resource = boto3.resource('s3') + +class MissingS3FileException(Exception): + """ my custom exception class """ + +def lambda_handler(event, context): + + target_table = event['target_table'] + target_cols = event['target_cols'] + db_type = event.get('db_type', 'viz') + file = event['file'] + bucket = event['bucket'] + reference_time = event['reference_time'] + keep_flows_at_or_above = event['keep_flows_at_or_above'] + reference_time_dt = datetime.strptime(reference_time, '%Y-%m-%d %H:%M:%S') + create_table = event.get('iteration_index') == 0 + + print(f"Checking existance of {file} on S3/Google Cloud/Para Nomads.") + download_path = check_if_file_exists(bucket, file, download=True) + + if not target_table: + dump_dict = { + "file": file, + "target_table": target_table, + "reference_time": reference_time, + "rows_imported": 0 + } + return json.dumps(dump_dict) + + viz_db = database(db_type=db_type) + with viz_db.get_db_connection() as connection: + cursor = connection.cursor() + try: + nwm_version = 0 + + if file.endswith('.nc'): + print('Opening file with xarray...') + ds = xr.open_dataset(download_path) + ds_vars = [var for var in ds.variables] + + if not target_cols: + target_cols = ds_vars + + try: + ds['forecast_hour'] = int(re.findall("(\d{8})/[a-z0-9_]*/.*t(\d{2})z.*[ftm](\d*)\.", file)[0][-1]) + if 'forecast_hour' not in target_cols: + target_cols.append('forecast_hour') + except: + print("Regex pattern for the forecast hour didn't match the netcdf file") + + try: + ds['nwm_vers'] = float(ds.NWM_version_number.replace("v","")) + if 'nwm_vers' not in target_cols: + target_cols.append('nwm_vers') + except: + print("NWM_version_number property is not available in the netcdf file") + + drop_vars = [var for var in ds_vars if var not in target_cols] + print('Converting to Pandas DataFrame...') + df = ds.to_dask_dataframe().reset_index() + print('Dropping unwanted columns...') + df = df.drop(columns=drop_vars) + ds.close() + if 'streamflow' in target_cols: + df = df.loc[df['streamflow'] >= keep_flows_at_or_above].round({'streamflow': 2}).copy() # noqa + df = df[target_cols] + + elif file.endswith('.csv'): + df = pd.read_csv(download_path) + for column in df: # Replace any 'None' strings with nulls + df[column].replace('None', np.nan, inplace=True) + df = df.copy() + else: + print("File format not supported.") + exit() + + print(f"--> Preparing and Importing {file}") + schema, table = target_table.split('.') + + #df.to_sql(table, get_db_connection_url('viz'), schema, if_exists="replace", index=False, chunksize=10000, method='multi', parallel=True) + df.to_sql(table, get_db_connection_url('viz'), schema, if_exists="replace", index=False, chunksize=10000, method='multi') + +# f = StringIO() # Use StringIO to store the temporary text file in memory (faster than on disk) +# df.to_csv(f, sep='\t', index=False, header=False) +# f.seek(0) +# try: +# with viz_db.get_db_connection() as connection: +# cursor = connection.cursor() +# cursor.copy_expert(f"COPY {target_table} FROM STDIN WITH DELIMITER E'\t' null as ''", f) +# connection.commit() +# except (UndefinedTable, BadCopyFileFormat, InvalidTextRepresentation): +# if not create_table: +# raise + +# print("Error encountered. Recreating table now and retrying import...") +# create_table_df = df.head(0) +# schema, table = target_table.split('.') +# create_table_df.to_sql(con=viz_db.engine, schema=schema, name=table, index=False, if_exists='replace') +# with viz_db.get_db_connection() as connection: +# cursor = connection.cursor() +# cursor.copy_expert(f"COPY {target_table} FROM STDIN WITH DELIMITER E'\t' null as ''", f) +# connection.commit() + + print(f"--> Import of {len(df)} rows Complete. Removing {download_path} and closing db connection.") + os.remove(download_path) + + except Exception as e: + print(f"Error: {e}") + raise e + + dump_dict = { + "file": file, + "target_table": target_table, + "reference_time": reference_time, + "rows_imported": len(df), + "nwm_version": nwm_version + } + return json.dumps(dump_dict) # Return some info on the import \ No newline at end of file diff --git a/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_lambda_shared_funcs-checkpoint.py b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_lambda_shared_funcs-checkpoint.py new file mode 100644 index 00000000..9339b62d --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/.ipynb_checkpoints/viz_lambda_shared_funcs-checkpoint.py @@ -0,0 +1,733 @@ +import os +import boto3 +import base64 +import json +import time +import re +import urllib.parse +from datetime import datetime, timedelta +from botocore.exceptions import ClientError + +class MissingS3FileException(Exception): + """ my custom exception class """ + +def get_secret_password(secret_name, region_name, key): + """ + Gets a password from a sercret stored in AWS secret manager. + + Args: + secret_name(str): The name of the secret + region_name(str): The name of the region + + Returns: + password(str): The text of the password + """ + + # Create a Secrets Manager client + session = boto3.session.Session() + client = session.client( + service_name='secretsmanager', + region_name=region_name + ) + + # In this sample we only handle the specific exceptions for the 'GetSecretValue' API. + # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html + # We rethrow the exception by default. + + try: + get_secret_value_response = client.get_secret_value( + SecretId=secret_name + ) + except ClientError as e: + if e.response['Error']['Code'] == 'DecryptionFailureException': + # Secrets Manager can't decrypt the protected secret text using the provided KMS key. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InternalServiceErrorException': + # An error occurred on the server side. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidParameterException': + # You provided an invalid value for a parameter. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidRequestException': + # You provided a parameter value that is not valid for the current state of the resource. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'ResourceNotFoundException': + # We can't find the resource that you asked for. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + else: + print(e) + raise e + else: + # Decrypts secret using the associated KMS CMK. + # Depending on whether the secret is a string or binary, one of these fields will be populated. + if 'SecretString' in get_secret_value_response: + secret = get_secret_value_response['SecretString'] + j = json.loads(secret) + password = j[key] + else: + decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary']) + print("password binary:" + decoded_binary_secret) + password = decoded_binary_secret.password + + return password + + +def check_s3_file_existence(bucket, file): + """ + Checks S3 files to see if they exist + + Args: + bucket(str): S3 bucket where the file resides + file(str): key (path) to the file in the bucket + + Returns: + Boolean: True if the file exists + """ + s3_resource = boto3.resource('s3') + try: + s3_resource.Object(bucket, file).load() + return True + except ClientError as e: + if e.response['Error']['Code'] == "404": + return False + else: + raise + + +def check_s3_fileset(bucket, input_files, file_threshold=100, retry=True, retry_limit=10): + """ + Checks a full set of s3 files for availability and returns the ready files. + + Args: + bucket(str): The S3 bucket + input_files(list): The list of input files to check + file_threshold (int): The percent required of input_file to proceed + retry (boolean): Should the function retry on missing files + retry_limit (int): The number of retries to attempt on missing files + + Returns: + ready_files (list): A list of available S3 files. + """ + total_files = len(input_files) + non_existent_files = [file for file in input_files if not check_s3_file_existence(bucket, file)] + + if retry: + files_ready = False + retries = 0 + while not files_ready and retries < retry_limit: + non_existent_files = [file for file in non_existent_files if not check_s3_file_existence(bucket, file)] + + if not non_existent_files: + files_ready = True + else: + print(f"Waiting 1 minute until checking for files again. Missing files {non_existent_files}") + time.sleep(60) + retries += 1 + + available_files = [file for file in input_files if file not in non_existent_files] + + if non_existent_files: + if (len(available_files) * 100 / total_files) < file_threshold: + raise Exception(f"Error - Failed to get the following files: {non_existent_files}") + + return available_files + + +def parse_s3_sns_message(event): + """ + Parses the event json string passed from a S3 file notification SNS topic trigger, to return the data bucket + and key. + + Args: + event(str): The event passed from triggering SNS topic. + + Returns: + data_key(str): The key(path) of the triggering S3 file. + data_bucket(str): The S3 bucket of the triggering S3 file. + """ + print("Parsing lambda event to get S3 key and bucket.") + if "Records" in event: + message = json.loads(event["Records"][0]['Sns']['Message']) + data_key = urllib.parse.unquote_plus(message["Records"][0]['s3']['object']['key'], encoding='utf-8') + data_bucket = message["Records"][0]['s3']['bucket']['name'] + else: + data_key = event['data_key'] + data_bucket = event['data_bucket'] + return data_key, data_bucket + + +def get_most_recent_s3_file(bucket, configuration): + """ + Gets the most recent s3 file of a particular configuration. + + Args: + bucket (string): The s3 bucket to search through. + configuration (string): The configuration to search. Valid values are replace_route + or any of the used NWM configurations ('short_range', 'medium_range_mem1', etc.) + + Returns: + file (string): The path to the most recent S3 object that meets the criteria. + """ + s3 = boto3.client('s3') + + # Set the S3 prefix based on the confiuration + def get_s3_prefix(configuration, date): + if configuration == 'replace_route': + prefix = f"replace_route/{date}/wrf_hydro/" + elif configuration == 'ahps': + prefix = f"max_stage/ahps/{date}/" + else: + nwm_dataflow_version = os.environ.get("NWM_DATAFLOW_VERSION") if os.environ.get("NWM_DATAFLOW_VERSION") else "prod" + prefix = f"common/data/model/com/nwm/{nwm_dataflow_version}/nwm.{date}/{configuration}/" + + return prefix + + # Get all S3 files that match the bucket / prefix + def list_s3_files(bucket, prefix): + files = [] + paginator = s3.get_paginator('list_objects_v2') + for result in paginator.paginate(Bucket=bucket, Prefix=prefix): + for key in result['Contents']: + # Skip folders + if not key['Key'].endswith('/'): + files.append(key['Key']) + if len(files) == 0: + raise Exception("No Files Found.") + return files + + # Start with looking at files today, but try yesterday if that doesn't work (in case this runs close to midnight) + today = datetime.today().strftime('%Y%m%d') + yesterday = (datetime.today() - timedelta(1)).strftime('%Y%m%d') + try: + files = list_s3_files(bucket, get_s3_prefix(configuration, today)) + except Exception as e: + print(f"Failed to get files for today ({e}). Trying again with yesterday's files") + files = list_s3_files(bucket, get_s3_prefix(configuration, yesterday)) + + # It seems this list is always sorted by default, but adding some sorting logic here may be necessary + return files[-1:].pop() + + +def get_configuration(filename, previous_forecasts=0, return_input_files=True, mrf_timestep=1): + """ + Parses the data file path to extract the file configuration, date, hour, reference time, and input files. + + Args: + filename(dictionary): key (path) of a NWM channel file, or max_flows derived file. + + Returns: + data_dict(dictionary): A dictionay containing the following possible values + configuration(str): configuration of the run, i.e. medium_range_3day, analysis_assim, etc + date(str): date of the forecast file (YYYYMMDD) + hour(str): hour of the forecast file (HH) + reference_time(str): the reference time associated with the input file + input_files(list): All of the files needed to run analysis on the given configuration / reference time. + model_type(str): Model run of the NWM. values are analysis_assim, short_range, or medium_range + domain(str): Domain of the forecast. Values are conus, hawaii, or puertorico + forecast_timestep(str): The timestamp of the forecast file, i.e. 018 for the f018 file + mrf_timestep (int): The hour interval to use for mrf forecasts (default is 1, but old model is 3 hours) + """ + input_files = [] + if 'max_flows' in filename: + matches = re.findall(r"max_flows/(.*)/(\d{8})/\D*_(\d+day_)?(\d{2})_max_flows.*", filename)[0] + date = matches[1] + hour = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + input_files.append(filename) + + days_match = re.findall(r"(\d+day)", filename) + if days_match: + configuration = f"{configuration}_{days_match[0]}" + + data_dict = {'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time} + elif 'max_stage' in filename: + matches = re.findall(r"max_stage/(.*)/(\d{8})/(\d{2})_(\d{2})_ahps_forecasts.csv", filename)[0] + date = matches[1] + hour = matches[2] + minute = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:{minute[-2:]}:00" + input_files.append(filename) + + metadata_file = filename.replace("ahps_forecasts", "ahps_metadata") + input_files.append(metadata_file) + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, + 'reference_time': reference_time, 'input_files': input_files + } + else: + if 'analysis_assim' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\..*\.tm(.*)\.(.*)\.nc", filename)[0] + elif 'short_range' in filename or 'medium_range_mem1' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\..*\.f(\d{3,5}).(.*)\.nc", filename)[0] + else: + raise Exception(f"Configuration not set for {filename}") + + key_prefix = matches[0] + date = matches[1] + configuration = matches[2] + hour = matches[3] + model_type = matches[4] + forecast_timestep = matches[5] + domain = matches[6] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time, + 'model_type': model_type, 'domain': domain, 'forecast_timestep': forecast_timestep + } + + if return_input_files: + input_files = get_input_files(key_prefix, reference_time, forecast_timestep, configuration, model_type, + domain, previous_forecasts=previous_forecasts, mrf_timestep=mrf_timestep) + data_dict['input_files'] = input_files + + return data_dict + + +def get_input_files(key_prefix, reference_time, forecast_timestep, configuration, model_type, domain, + previous_forecasts=0, mrf_timestep=1): + """ + Using the file metadata, get a list of all the input files for the specified configuration. + + Args: + key_prefix(str): AWS S3 key prefix for the forecast file. This prefix is static and the constant for all + files, + reference_time(str): Reference time for the forecast ("2021-08-13 02:00:00"), + forecast_timestep(str): The timestep of the forecast (i.e 072 for f072) + configuration(str): The configuration for the forecast, i.e. short_range, short_range_hawaii, + analysis_assim_puertorico, etc, + model_type(str): The model run for the forecast, i.e. short_range, medium_range, analysis_assim, + domain(str): Domain of the forecast, i.e. conus, hawaii, puertorico, + previous_forecasts(int): The number of previous forecast to retrieve. This is in addition to the forecast + being ran. For example a previous_forecasts of 4 for analysis_assim will return 5 + total forecast (1 current, 4 previous) + mrf_timestep (int): The hour interval to use for mrf forecasts (default is 1, but old model uses 3 hours) + + Returns: + input_files(list): List of AWS keys for the specified forecast + """ + input_files = [] + reference_date = datetime.strptime(reference_time, "%Y-%m-%d %H:%M:%S") + + if domain != 'conus' and "analysis_assim" not in configuration: + forecast_length = 12 # hours + elif model_type == 'medium_range': + forecast_length = 6 # hours + else: + forecast_length = 1 # hours + + previous_hours = previous_forecasts * forecast_length # compute hours between the desired forecasts + + # Loop through the desired forecasts + for previous_hour in range(0, previous_hours+forecast_length, forecast_length): + previous_date_time = reference_date - timedelta(hours=previous_hour) + previous_date = previous_date_time.strftime("%Y%m%d") + previous_hour = previous_date_time.strftime("%H") + base_file = f"{key_prefix}/nwm.{previous_date}/{configuration}/nwm.t{previous_hour}z.{model_type}.channel_rt" + + if configuration in ['analysis_assim', 'analysis_assim_puertorico']: + input_files.append(f"{base_file}.tm00.{domain}.nc") + elif configuration == 'analysis_assim_hawaii': + input_files.append(f"{base_file}.tm0000.{domain}.nc") + else: + if configuration == 'short_range_hawaii': + leads = [] + for lead1 in range(0, 4800, 100): + for lead2 in [0, 15, 30, 45]: + lead = lead1+lead2 + leads.append(f"{lead:05}") + leads.pop(0) + leads.append(f"{4800:05}") + elif configuration == 'short_range': + leads = [f"{lead:03}" for lead in range(1, 19)] + elif configuration == 'short_range_puertorico': + leads = [f"{lead:03}" for lead in range(1, 49)] + elif configuration == 'medium_range_mem1': + if mrf_timestep == 3: + base_file = f"{base_file}_1" + leads = [f"{lead:03}" for lead in range(3, int(forecast_timestep)+1, 3)] + else: + base_file = f"{base_file}_1" + leads = [f"{lead:03}" for lead in range(1, int(forecast_timestep)+1)] + else: + raise Exception(f"function not configured for {configuration}") + + for lead in leads: + input_files.append(f"{base_file}.f{lead}.{domain}.nc") + + return sorted(input_files) + + +def get_db_credentials(db_type): + """ + This function pulls database credentials from environment variables. + It first checks for a password in an environment variable. + If that doesn't exist, it tries looking or a secret name to query for + the password using the get_secret_password function. + + Returns: + db_host (str): The host address of the PostgreSQL database. + db_name (str): The target database name. + db_user (str): The database user with write access to authenticate with. + db_password (str): The password for the db_user. + + """ + db_type = db_type.upper() + + db_host = os.environ[f'{db_type}_DB_HOST'] + db_name = os.environ[f'{db_type}_DB_DATABASE'] + db_user = os.environ[f'{db_type}_DB_USERNAME'] + try: + db_password = os.getenv(f'{db_type}_DB_PASSWORD') + except Exception: + try: + db_password = get_secret_password(os.getenv(f'{db_type}_RDS_SECRET_NAME'), 'us-east-1', 'password') + except Exception as e: + print(f"Couldn't get db password from environment variable or secret name. ({e})") + + return db_host, db_name, db_user, db_password + +def get_db_connection_url(db_type): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + return f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}' + +def get_db_engine(db_type): + from sqlalchemy import create_engine + + print("Creating the viz DB engine") + + db_engine = create_engine(get_db_connection_url(db_type)) + + return db_engine + + +def get_db_connection(db_type, asynchronous=False): + import psycopg2 + + print("Creating the viz DB engine") + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + connection = psycopg2.connect( + f"host={db_host} dbname={db_name} user={db_user} password={db_password}", async_=asynchronous + ) + + return connection + + +def get_db_values(table, columns, db_type="viz"): + import pandas as pd + + print("Connecting to DB") + db_engine = get_db_engine(db_type) + + if not type(columns) == list: + raise Exception("columns argument must be a list of column names") + + columns = ",".join(columns) + print(f"Retrieving values for {columns}") + df = pd.read_sql(f'SELECT {columns} FROM {table}', db_engine) + + return df + + +def get_service_metadata(include_ingest_sources=True, include_latest_ref_time=False): + """ + This function pulls service metadata from the admin.services database table. + + Returns: + results (dictionary): A python dictionary containing the database table data. + """ + import psycopg2.extras + + if include_ingest_sources is True: + extra_sql = " join admin.services_ingest_sources ON admin.services.service = admin.services_ingest_sources.service" + else: + extra_sql = "" + + if include_latest_ref_time is True: + extra_sql += """ LEFT OUTER JOIN (SELECT service as service2, to_char(min(reference_time)::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') as reference_time + FROM admin.services_ingest_sources a JOIN + (SELECT target, max(reference_time) as reference_time FROM admin.ingest_status where status='Import Complete' group by target) b + ON a.ingest_table = b.target group by service) AS ref_times + on admin.services.service = ref_times.service2""" + + connection = get_db_connection("viz") + with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + cur.execute(f"SELECT * FROM admin.services{extra_sql};") + column_names = [desc[0] for desc in cur.description] + response = cur.fetchall() + cur.close() + connection.close() + return list(map(lambda x: dict(zip(column_names, x)), response)) + + +def load_df_into_db(table_name, db_engine, df): + import pandas as pd + + schema = table_name.split(".")[0] + table = table_name.split(".")[-1] + + print(f"Dropping {table_name} if it exists") + db_engine.execute(f'DROP TABLE IF EXISTS {table_name};') # Drop the stage table if it exists + + print("Getting sql to create table") + create_table_statement = pd.io.sql.get_schema(df, table_name) + replace_values = {'"geom" TEXT': '"geom" GEOMETRY', "REAL": "DOUBLE PRECISION"} # Correct data types + for a, b in replace_values.items(): + create_table_statement = create_table_statement.replace(a, b) + + create_table_statement = create_table_statement.replace(f'"{table_name}"', table_name) + + print(f"Creating {table_name}") + db_engine.execute(create_table_statement) # Create the new empty stage table + + print(f"Adding data to {table_name}") + df.to_sql(con=db_engine, schema=schema, name=table, index=False, if_exists='append') + +def run_sql_in_db(sql, db_type="viz", geodataframe=False): + db_connection = get_db_connection(db_type) + + if geodataframe: + import geopandas as gpd + return gpd.read_postgis(sql, db_connection) + else: + import pandas as pd + return pd.read_sql(sql, db_connection) + +def run_sql_file_in_db(sql_file, db_type): + print("Getting connection to run sql files") + sql = open(sql_file, 'r').read() + print(f"Running {sql_file}") + run_sql_in_db(sql, db_type) + +def move_data_to_another_db(origin_db, dest_db, origin_table, dest_table, stage=True, add_oid=True, + add_geom_index=True): + import pandas as pd + + origin_engine = get_db_engine(origin_db) + dest_engine = get_db_engine(dest_db) + + if stage: + dest_final_table = dest_table + dest_final_table_name = dest_final_table.split(".")[1] + + dest_table = f"{dest_table}_stage" + + print(f"Reading {origin_table} from the {origin_db} db") + df = pd.read_sql(f'SELECT * FROM {origin_table}', origin_engine) # Read from the newly created table + + print(f"Loading {origin_table} into {dest_table} in the {dest_db} db") + load_df_into_db(dest_table, dest_engine, df) + + if add_oid: + print(f"Adding an OID to the {dest_table}") + dest_engine.execute(f'ALTER TABLE {dest_table} ADD COLUMN OID SERIAL PRIMARY KEY;') + + if add_geom_index: + print(f"Adding an spatial index to the {dest_table}") + dest_engine.execute(f'CREATE INDEX ON {dest_table} USING GIST (geom);') # Add a spatial index + + if stage: + print(f"Renaming {dest_table} to {dest_final_table}") + dest_engine.execute(f'DROP TABLE IF EXISTS {dest_final_table};') # Drop the published table if it exists + dest_engine.execute(f'ALTER TABLE {dest_table} RENAME TO {dest_final_table_name};') # Rename the staged table + +def check_if_file_exists(bucket, file, download=False): + import requests + from .viz_classes import s3_file + import xarray as xr + import tempfile + + s3 = boto3.client('s3') + file_exists = False + + tempdir = tempfile.mkdtemp() + download_path = os.path.join(tempdir, os.path.basename(file)) + https_file = None + + if "https" in file: + https_file = file + if requests.head(file).status_code == 200: + file_exists = True + print(f"{file} exists.") + else: + raise Exception(f"https file doesn't seem to exist: {file}") + else: + if s3_file(bucket, file).check_existence(): + file_exists = True + print(f"{file} exists in {bucket}") + else: + if "/prod" in file: + https_file = file.replace('common/data/model/com/nwm/prod', 'https://storage.googleapis.com/national-water-model') + if requests.head(https_file).status_code == 200: + file_exists = True + print("File does not exist on S3 (even though it should), but does exists on Google Cloud.") + else: + raise Exception("Code could not handle request for file") + + if not file_exists: + raise MissingS3FileException(f"{file} does not exist on S3.") + + + if download: + if https_file: + print(f"Downloading {https_file}") + tries = 0 + while tries < 3: + open(download_path, 'wb').write(requests.get(https_file, allow_redirects=True).content) + + try: + xr.open_dataset(download_path) + tries = 3 + except: + print(f"Failed to open {download_path}. Retrying in case file was corrupted on download") + tries +=1 + else: + print(f"Downloading {file} from s3") + s3.download_file(bucket, file, download_path) + + return download_path + + return file + +def parse_range_token_value(reference_date_file, range_token): + range_min = 0 + range_step = 1 + number_format = '%01d' + + parts = range_token.split(',') + num_parts = len(parts) + + if num_parts == 1: + range_max = parts[0] + elif num_parts == 2: + range_min, range_max = parts + elif num_parts == 3: + range_min, range_max, range_step = parts + elif num_parts == 4: + range_min, range_max, range_step, number_format = parts + else: + raise ValueError("Invalid Token Used") + + try: + range_min = int(range_min) + range_max = int(range_max) + range_step = int(range_step) + except ValueError: + raise ValueError("Ranges must be integers") + + new_input_files = [] + for i in range(range_min, range_max, range_step): + range_value = number_format % i + new_input_file = reference_date_file.replace(f"{{{{range:{range_token}}}}}", range_value) + new_input_files.append(new_input_file) + + return new_input_files + + +def get_file_tokens(file_pattern): + token_dict = {} + tokens = re.findall("{{[a-z]*:[^{]*}}", file_pattern) + token_dict = {'datetime': [], 'range': [], 'variable': []} + for token in tokens: + token_key = token.split(":")[0][2:] + token_value = token.split(":")[1][:-2] + + token_dict[token_key].append(token_value) + + return token_dict + +def parse_datetime_token_value(input_file, reference_date, datetime_token): + og_datetime_token = datetime_token + if "reftime" in datetime_token: + reftime = datetime_token.split(",")[0].replace("reftime", "") + datetime_token = datetime_token.split(",")[-1].replace(" ","") + arithmetic = reftime[0] + date_delta_value = int(reftime[1:][:-1]) + date_delta = reftime[1:][-1] + + if date_delta.upper() == "M": + date_delta = datetime.timedelta(minutes=date_delta_value) + elif date_delta.upper() == "H": + date_delta = datetime.timedelta(hours=date_delta_value) + elif date_delta.upper() == "D": + date_delta = datetime.timedelta(days=date_delta_value) + else: + raise Exception("timedelta is only configured for minutes, hours, and days") + + if arithmetic == "+": + reference_date = reference_date + date_delta + else: + reference_date = reference_date - date_delta + + datetime_value = reference_date.strftime(datetime_token) + new_input_file = input_file.replace(f"{{{{datetime:{og_datetime_token}}}}}", datetime_value) + + return new_input_file + +def parse_variable_token_value(input_file, variable_token): + + variable_value = os.environ[variable_token] + new_input_file = input_file.replace(f"{{{{variable:{variable_token}}}}}", variable_value) + + return new_input_file + +def get_formatted_files(file_pattern, token_dict, reference_date): + reference_date_file = file_pattern + reference_date_files = [] + for variable_token in token_dict['variable']: + reference_date_file = parse_variable_token_value(reference_date_file, variable_token) + + for datetime_token in token_dict['datetime']: + reference_date_file = parse_datetime_token_value(reference_date_file, reference_date, datetime_token) + + if token_dict['range']: + for range_token in token_dict['range']: + reference_date_files = parse_range_token_value(reference_date_file, range_token) + else: + reference_date_files = [reference_date_file] + + return reference_date_files + +def generate_file_list(file_pattern, file_step, file_window, reference_time): + import pandas as pd + import isodate + + file_list = [] + if 'common/data/model/com/nwm/prod' in file_pattern and (datetime.today() - timedelta(29)) > reference_time: + file_pattern = file_pattern.replace('common/data/model/com/nwm/prod', 'https://storage.googleapis.com/national-water-model') + + if file_window: + if not file_step: + file_step = None + reference_dates = pd.date_range(reference_time-isodate.parse_duration(file_window), reference_time, freq=file_step) + else: + reference_dates = [reference_time] + + token_dict = get_file_tokens(file_pattern) + + for reference_date in reference_dates: + reference_date_files = get_formatted_files(file_pattern, token_dict, reference_date) + file_list.extend(reference_date_files) + + return file_list + +def gen_dict_extract(key, var): + if hasattr(var,'items'): + for k, v in var.items(): + if k == key: + yield v + if isinstance(v, dict): + for result in gen_dict_extract(key, v): + yield result + elif isinstance(v, list): + for d in v: + for result in gen_dict_extract(key, d): + yield result \ No newline at end of file diff --git a/Core/Manual_Workflows/helper_functions/__init__.py b/Core/Manual_Workflows/helper_functions/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/Core/Manual_Workflows/helper_functions/find_missing_data_in_nwm_shared_bucket.py b/Core/Manual_Workflows/helper_functions/find_missing_data_in_nwm_shared_bucket.py new file mode 100644 index 00000000..77425bb8 --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/find_missing_data_in_nwm_shared_bucket.py @@ -0,0 +1,55 @@ +import datetime as dt +import boto3 +import botocore + +S3 = boto3.resource('s3') +STEP = dt.timedelta(hours=1) +BUCKET = 'nws-shared-data-226711853580-us-east-1' +CONFIGURATIONS = ['analysis_assim'] +VARIABLES = { + 'analysis_assim': ['channel_rt', 'forcing'] +} +DOMAINS = { + 'analysis_assim': ['conus', 'puertorico', 'alaska', 'hawaii'] +} + +KEY_TEMPLATE = 'common/data/model/com/nwm/prod/nwm.{YYMMDD}/{full_configuration}/nwm.t{HH}z.{configuration}.{variable}.tm00.{domain}.nc' + +def main(START, END, print_progress=False): + missing_files = [] + iter_dt = START + while iter_dt < END: + for configuration in CONFIGURATIONS: + for variable in VARIABLES[configuration]: + for domain in DOMAINS[configuration]: + if domain == 'hawaii' and variable == 'channel_rt': break + full_configuration = configuration + if variable == 'forcing': + full_configuration = f'forcing_{configuration}' + if domain != 'conus': + full_configuration = f'{full_configuration}_{domain}' + key = KEY_TEMPLATE.format( + YYMMDD=iter_dt.strftime('%Y%m%d'), + full_configuration=full_configuration, + HH=iter_dt.strftime('%H'), + configuration=configuration, + variable=variable, + domain=domain + ) + if print_progress: + print(f"Checking for {key}...") + try: + S3.Object(BUCKET, key).load() + except botocore.exceptions.ClientError as e: + if e.response['Error']['Code'] == "404": + if print_progress: + print("... UH OH! 404!") + missing_files.append(key) + else: + raise + else: + # The file exists! + pass + iter_dt += STEP + + return missing_files \ No newline at end of file diff --git a/Core/Manual_Workflows/helper_functions/s3_shared_functions.py b/Core/Manual_Workflows/helper_functions/s3_shared_functions.py new file mode 100644 index 00000000..8a7a41e7 --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/s3_shared_functions.py @@ -0,0 +1,198 @@ + +# This script will eventually cover all types of communication with S3 +# from get lists, uploading, downloading, moving, etc. +import io +import os + +import boto3 +import pandas as pd + + +# ======================================================= +# ***************************** +# CAUTION: TODO: Aug 2024: This needs to be re-thought. I can easily overpower the notebook server depending on teh size of the notebooks +# ***************************** + +# Sep 2024: Deprecate: this is likely no longer used +# def download_S3_csv_files_to_df(bucket_name, s3_src_folder_prefix, is_verbose=False): + +# ''' +# Overview: All files are downloaded and put into a dataframe raw + +# returns: +# a dataframe +# ''' + +# s3_client = boto3.client("s3") + +# default_kwargs = {"Bucket": bucket_name, "Prefix": s3_src_folder_prefix} + +# next_token = "" + +# rtn_df = None +# ctr = 0 + +# print(f"Downloading data from s3://{bucket_name}/{s3_src_folder_prefix}") +# print("") + +# while next_token is not None: +# updated_kwargs = default_kwargs.copy() +# if next_token != "": +# updated_kwargs["ContinuationToken"] = next_token + +# # will limit to 1000 objects - hence tokens +# response = s3_client.list_objects_v2(**updated_kwargs) +# if response.get("KeyCount") == 0: +# # some recs may have been added in earlier pages +# next_token = response.get("NextContinuationToken") +# continue + +# contents = response.get("Contents") +# if contents is None: +# raise Exception("s3 contents not did not load correctly") + +# for result in contents: +# key = result.get("Key") +# if key[-1] != "/": # if it was a folder (ending in a slash, we skip it) +# # download and load the contents into the table +# full_file_url = f"s3://{bucket_name}/{key}" + +# if not full_file_url.endswith(".csv"): +# print(f"... Found file that is not a csv and was skipped : {full_file_url}") +# continue + +# if is_verbose: +# print(f"... Downloading: {key}") + +# #s3_resp = s3.get_object(Bucket=bucket_name, Key=key) +# #csv_content = response['Body'].read().decode('utf-8') + +# # then we let the first rec set the headers +# # pandas can load directly from S3 +# if rtn_df is None: +# # all fields will be loaded as string and future code can change as needed. +# # padnas read_csv is having trouble with data type for columns, so let's do it manually +# rtn_df = pd.read_csv(full_file_url) +# #rtn_df = pd.read_csv(io.StringIO(csv_content)) +# continue + +# #file_df = pd.read_csv(io.StringIO(csv_content)) +# file_df = pd.read_csv(full_file_url) +# rtn_df = pd.concat([rtn_df, file_df]) +# ctr = ctr + 1 + +# # TODO: Takes out this test +# break # just to see how it looks and load + + +# next_token = response.get("NextContinuationToken") +# break + +# # end of while + +# rtn_df = rtn_df.fillna(0) +# print(f"Downloaded {ctr} files from s3://{bucket_name}/{s3_src_folder_prefix}") +# return rtn_df + + + +# ======================================================= +# ***************************** +# CAUTION: TODO: Aug 2024: This needs to be re-thought. I can easily overpower the notebook server depending on teh size of the notebooks +# ***************************** +def download_S3_csv_files_to_df_from_list(bucket_name, list_file_paths, is_verbose=False): + ''' + Overview: + - Send a list of file paths (fully qualified, except for the "s3://" and bucket name" + Returns: + - A dataframe with the + ''' + + if len(list_file_paths) == 0: + raise Exception("No files requested for download") + + rtn_df = None + + s3_client = boto3.client('s3') + for s3_file in list_file_paths: + if s3_file.endswith(".csv") is False: + raise Exception(f"File name is not valid (not a csv): {s3_file}") + + # Manage the direction of the slashes just cases + s3_file = s3_file.replace("\\", "/") + + if s3_file.startswith("/"): # remove it + s3_file = s3_file.lstrip("/") + + full_file_url = f"s3://{bucket_name}/{s3_file}" + if is_verbose: + print(f".. Downloading: {full_file_url}") + + if rtn_df is None: + rtn_df = pd.read_csv(full_file_url) + continue + + file_df = pd.read_csv(full_file_url) + rtn_df = pd.concat([r2f_df, file_df]) + + print("") + print(f".. {len(list_file_paths)} files downloaded and loaded into the dataframe") + + return rtn_df + + +# ======================================================= +def get_s3_subfolder_file_names(bucket_name, s3_src_folder_prefix, is_verbose=False): + + ''' + Overview: Gets a list of file (not folders in a s3 folder (well.. prefix) + + returns: + a list of file names and path (keys), fully qualified including the bucket and src_folder_path + ''' + + s3_client = boto3.client("s3") + + default_kwargs = {"Bucket": bucket_name, "Prefix": s3_src_folder_prefix} + + next_token = "" + + file_list = [] + + print(f"Getting file list from s3://{bucket_name}/{s3_src_folder_prefix}") + print("") + + while next_token is not None: + updated_kwargs = default_kwargs.copy() + if next_token != "": + updated_kwargs["ContinuationToken"] = next_token + + # will limit to 1000 objects - hence tokens, even for list_objects_v2 + response = s3_client.list_objects_v2(**updated_kwargs) + if response.get("KeyCount") == 0: + # some recs may have been added in earlier pages + next_token = response.get("NextContinuationToken") + continue + + contents = response.get("Contents") + if contents is None: + raise Exception("s3 contents not did not load correctly") + + for result in contents: + key = result.get("Key") + if key[-1] != "/": # if it was a folder (ending in a slash, we skip it) + # download and load the contents into the table + full_file_url = f"s3://{bucket_name}/{key}" + + if is_verbose: + print(f"... Found file name: {key}") + + file_list.append(full_file_url) + + next_token = response.get("NextContinuationToken") + + # end of while + + print(f"Found {len(file_list)} file names from s3://{bucket_name}/{s3_src_folder_prefix}") + return file_list + diff --git a/Core/Manual_Workflows/helper_functions/shared_funcs.py b/Core/Manual_Workflows/helper_functions/shared_funcs.py new file mode 100644 index 00000000..cb61508c --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/shared_funcs.py @@ -0,0 +1,143 @@ +import boto3 +import os +import psycopg2 + + + +def get_db_credentials(db_type): + """ + This function pulls database credentials from environment variables. + It first checks for a password in an environment variable. + If that doesn't exist, it tries looking or a secret name to query for + the password using the get_secret_password function. + + Returns: + db_host (str): The host address of the PostgreSQL database. + db_name (str): The target database name. + db_user (str): The database user with write access to authenticate with. + db_password (str): The password for the db_user. + + """ + db_type = db_type.upper() + + db_host = os.environ[f'{db_type}_DB_HOST'] + db_name = os.environ[f'{db_type}_DB_DATABASE'] + db_user = os.environ[f'{db_type}_DB_USERNAME'] + try: + db_password = os.getenv(f'{db_type}_DB_PASSWORD') + except Exception: + try: + db_password = get_secret_password(os.getenv(f'{db_type}_RDS_SECRET_NAME'), 'us-east-1', 'password') + except Exception as e: + print(f"Couldn't get db password from environment variable or secret name. ({e})") + + return db_host, db_name, db_user, db_password + +def get_db_engine(db_type): + from sqlalchemy import create_engine + + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + db_engine = create_engine(f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}') + + return db_engine + +def get_db_connection(db_type, asynchronous=False): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + connection = psycopg2.connect( + f"host={db_host} dbname={db_name} user={db_user} password={db_password}", async_=asynchronous + ) + + return connection + +def sql_to_dataframe(sql, db_type="viz", return_geodataframe=False): + if sql.endswith(".sql"): + sql = open(sql, 'r').read() + + db_engine = get_db_engine(db_type) + if not return_geodataframe: + import pandas as pd + df = pd.read_sql(sql, db_engine) + else: + import geopandas as gdp + df = gdp.GeoDataFrame.from_postgis(sql, db_engine) + + db_engine.dispose() + return df + + +def execute_sql(sql, db_type="viz"): + db_connection = get_db_connection(db_type) + + try: + cur = db_connection.cursor() + cur.execute(sql) + db_connection.commit() + except Exception as e: + raise e + finally: + db_connection.close() + +def get_secret_password(secret_name, region_name, key): + """ + Gets a password from a sercret stored in AWS secret manager. + + Args: + secret_name(str): The name of the secret + region_name(str): The name of the region + + Returns: + password(str): The text of the password + """ + + # Create a Secrets Manager client + session = boto3.session.Session() + client = session.client( + service_name='secretsmanager', + region_name=region_name + ) + + # In this sample we only handle the specific exceptions for the 'GetSecretValue' API. + # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html + # We rethrow the exception by default. + + try: + get_secret_value_response = client.get_secret_value( + SecretId=secret_name + ) + except ClientError as e: + if e.response['Error']['Code'] == 'DecryptionFailureException': + # Secrets Manager can't decrypt the protected secret text using the provided KMS key. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InternalServiceErrorException': + # An error occurred on the server side. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidParameterException': + # You provided an invalid value for a parameter. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidRequestException': + # You provided a parameter value that is not valid for the current state of the resource. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'ResourceNotFoundException': + # We can't find the resource that you asked for. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + else: + print(e) + raise e + else: + # Decrypts secret using the associated KMS CMK. + # Depending on whether the secret is a string or binary, one of these fields will be populated. + if 'SecretString' in get_secret_value_response: + secret = get_secret_value_response['SecretString'] + j = json.loads(secret) + password = j[key] + else: + decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary']) + print("password binary:" + decoded_binary_secret) + password = decoded_binary_secret.password + + return password diff --git a/Core/Manual_Workflows/helper_functions/shared_functions.py b/Core/Manual_Workflows/helper_functions/shared_functions.py new file mode 100644 index 00000000..1e27e86e --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/shared_functions.py @@ -0,0 +1,831 @@ +from ipywidgets import Checkbox +import json +import os +from IPython.display import display, HTML +import boto3 +import botocore +from sqlalchemy import create_engine, text +import psycopg2 +import psycopg2.extras +import pandas as pd +from matplotlib import pyplot as plt +from matplotlib.colors import LinearSegmentedColormap +from sqlalchemy.exc import ResourceClosedError +from botocore.exceptions import ClientError +import base64 +import re +import time +import matplotlib as mpl +from datetime import timedelta +import sqlalchemy + +pd.options.mode.chained_assignment = None + +display(HTML("")) + +# Oct 16, 2024 - moved hots/db names user names and passwords to AWS_Secret_keys folder. +# this needs to be test + +def load_checklist(service_name): + display(HTML("")) + + service_json = f'service_jsons/{service_name}.json' + + # If service json does not exist, then create a new json file with default checkboxes and values + if not os.path.exists(service_json): + print(f"Creating {service_json} for new {service_name} service ") + data = { + "update_service_metadata": False, + "load_datasets": False, + "create_sql": False, + "check_sql": False, + "save_sql_table": False, + "create_pro_project": False, + "setup_code_review": False, + "finished_code_review": False, + "implement_code_review_changes": False, + "add_sql_to_repo": False, + "add_pro_project_to_repo": False, + "add_notebook_to_repo": False, + "ti_implement": False + } + + with open(service_json, 'w') as f: + json.dump(data, f) + + with open(service_json, 'r') as f: + data = json.load(f) + + update_service_metadata = Checkbox(value=data["update_service_metadata"], description_tooltip="update_service_metadata", description="Update service metadata in first notebook cell") + load_datasets = Checkbox(value=data["load_datasets"], description_tooltip="load_datasets", description="Have Corey or Tyler add any new dependent datasets to the DB") + create_sql = Checkbox(value=data["create_sql"], description_tooltip="create_sql", description="Create SQL for service data") + check_sql = Checkbox(value=data["check_sql"], description_tooltip="check_sql", description="Check SQL output for accuracy") + save_sql_table = Checkbox(value=data["save_sql_table"], description_tooltip="save_sql_table", description="Update SQL to save a table in the dev schema") + create_pro_project = Checkbox(value=data["create_pro_project"], description_tooltip="create_pro_project", description="Create a pro project for the new service") + setup_code_review = Checkbox(value=data["setup_code_review"], description_tooltip="setup_code_review", description="Setup a code review meeting with the team to go over the service") + finished_code_review = Checkbox(value=data["finished_code_review"], description_tooltip="finished_code_review", description="Complete code review") + implement_code_review_changes = Checkbox(value=data["implement_code_review_changes"], description_tooltip="implement_code_review_changes", description="Implement any service changes from the code review") + add_sql_to_repo = Checkbox(value=data["add_sql_to_repo"], description_tooltip="add_sql_to_repo", description="Admin Task - Add SQL to repo (Adding INTO statements)") + add_pro_project_to_repo = Checkbox(value=data["add_pro_project_to_repo"], description_tooltip="add_pro_project_to_repo", description="Admin Task - Add pro poject to repo (Updating to use Query Layer)") + add_notebook_to_repo = Checkbox(value=data["add_notebook_to_repo"], description_tooltip="add_notebook_to_repo", description="Add notebook to repo") + ti_implement = Checkbox(value=data["ti_implement"], description_tooltip="ti_implement", description="Admin Task - Implement service into the TI environment") + + def on_value_change(change): + key = change['owner'].description_tooltip + value = change['new'] + + data[key] = value + with open(service_json, 'w') as f: + json.dump(data, f) + + update_service_metadata.observe(on_value_change, names='value') + load_datasets.observe(on_value_change, names='value') + create_sql.observe(on_value_change, names='value') + check_sql.observe(on_value_change, names='value') + save_sql_table.observe(on_value_change, names='value') + create_pro_project.observe(on_value_change, names='value') + setup_code_review.observe(on_value_change, names='value') + finished_code_review.observe(on_value_change, names='value') + implement_code_review_changes.observe(on_value_change, names='value') + add_sql_to_repo.observe(on_value_change, names='value') + add_pro_project_to_repo.observe(on_value_change, names='value') + add_notebook_to_repo.observe(on_value_change, names='value') + ti_implement.observe(on_value_change, names='value') + + display(update_service_metadata) + display(load_datasets) + display(create_sql) + display(check_sql) + display(save_sql_table) + display(create_pro_project) + display(setup_code_review) + display(finished_code_review) + display(implement_code_review_changes) + display(add_notebook_to_repo) + display(add_sql_to_repo) + display(add_pro_project_to_repo) + display(ti_implement) + +def get_db_credentials(db_type): + """ + This function pulls database credentials from environment variables. + It first checks for a password in an environment variable. + If that doesn't exist, it tries looking or a secret name to query for + the password using the get_secret_password function. + + Returns: + db_host (str): The host address of the PostgreSQL database. + db_name (str): The target database name. + db_user (str): The database user with write access to authenticate with. + db_password (str): The password for the db_user. + + """ + db_type = db_type.upper() + + db_host = os.environ[f'{db_type}_DB_HOST'] + db_name = os.environ[f'{db_type}_DB_DATABASE'] + db_user = os.environ[f'{db_type}_DB_USERNAME'] + try: + db_password = os.getenv(f'{db_type}_DB_PASSWORD') + except Exception: + try: + db_password = get_secret_password(os.getenv(f'{db_type}_RDS_SECRET_NAME'), 'us-east-1', 'password') + except Exception as e: + print(f"Couldn't get db password from environment variable or secret name. ({e})") + + return db_host, db_name, db_user, db_password + +def get_db_connection_url(db_type): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + return f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}' + +def get_db_engine(db_type): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + db_engine = create_engine(f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}') + + return db_engine + + +def get_db_connection(db_type, asynchronous=False): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + connection = psycopg2.connect( + f"host={db_host} dbname={db_name} user={db_user} password={db_password}", async_=asynchronous + ) + + return connection + + +# Aug 18, 2024, updated to add "where" clause +def get_db_values(table, columns, db_type="viz", where=""): + db_engine = get_db_engine(db_type) + + if not type(columns) == list: + raise Exception("columns argument must be a list of column names") + + columns = ",".join(columns) + print(f"Retrieving values for {columns}") + sql = f"SELECT {columns} FROM {table}" + if where != "": + sql = f"{sql} WHERE {where}" + df = pd.read_sql(sql, db_engine) + + return df + + +def run_sql_file_in_db(db_type, sql_file): + print("Getting connection to run sql files") + sql = open(sql_file, 'r').read() + db_connection = get_db_connection(db_type) + + try: + cur = db_connection.cursor() + print(f"Running {sql_file}") + cur.execute(sql) + db_connection.commit() + except Exception as e: + raise e + finally: + db_connection.close() + + +def sql_to_dataframe(sql, db_type="viz", as_geo=False): + if sql.endswith(".sql"): + sql = open(sql, 'r').read() + + db_engine = get_db_engine(db_type) + if not as_geo: + import pandas as pd + df = pd.read_sql(sql, db_engine) + else: + import geopandas as gdp + df = gdp.GeoDataFrame.from_postgis(sql, db_engine) + + db_engine.dispose() + return df + + +def execute_sql(sql, db_type="viz"): + db_connection = get_db_connection(db_type) + + try: + cur = db_connection.cursor() + cur.execute(sql) + db_connection.commit() + except Exception as e: + raise e + finally: + db_connection.close() + +def run_sql_in_db(sql, db_type="viz", return_geodataframe=False): + connection = get_db_engine(db_type) + + try: + if not return_geodataframe: + df = pd.read_sql(sql, connection) + else: + import geopandas as gdp + df = gdp.GeoDataFrame.from_postgis(sql, connection) + except ResourceClosedError as e: + print(e) + # Nothing return because sql created/update tables + return + + return df + +def get_schemas(db_type="viz"): + sql = "SELECT DISTINCT(table_schema) FROM information_schema.tables ORDER BY table_schema;" + return run_sql_in_db(sql, db_type=db_type) + + +def get_tables(schema, containing='', db_type="viz"): + sql = f"SELECT table_name FROM information_schema.tables WHERE table_schema = '{schema}'" + if containing: + sql += f" AND table_name LIKE '%%{containing}%%'" + sql += " ORDER BY table_name;" + + return run_sql_in_db(sql, db_type=db_type) + +def get_columns(schema_and_optional_table, table='', db_type="viz"): + if '.' in schema_and_optional_table and not table: + schema, table = schema_and_optional_table.split('.') + else: + schema = schema_and_optional_table + sql = f""" + SELECT column_name, data_type + FROM information_schema.columns + WHERE table_schema = '{schema}' AND table_name = '{table}'; + """ + + return run_sql_in_db(sql, db_type=db_type) + +def map_column(gdf, column, colormap=None, title=None, basemap=True, categorical=False, legend=True, show_plot=True): + + legend_kwds=None + if categorical: + legend_kwds={'shrink': 0.42, 'label': column} + + if not colormap: + cmap = "Blues" + elif type(colormap) is dict: + cmap = LinearSegmentedColormap.from_list("custom_cmap", list(colormap.values()), N=len(colormap)) + if categorical: + legend_kwds={} + gdf[column] = gdf[column].astype(pd.api.types.CategoricalDtype(categories=colormap.keys())) + else: + cmap = colormap + + if not show_plot: + plt.ioff() + ax = gdf.plot(figsize=(20,20), column=column, legend=legend, cmap=cmap, legend_kwds=legend_kwds) + + ax.set_axis_off() + ax.set_title(title) + + if basemap: + import contextily as cx + cx.add_basemap(ax, source=cx.providers.Stamen.TonerLite) + + return ax + +def sql_to_leafmap(db_alias, sql, layer_name="My Layer", fill_colors=["red", "green", "blue"]): + import leafmap + + db_host, db_name, db_user, db_password = get_db_credentials(db_alias) + con = leafmap.connect_postgis( + database=db_name, host=db_host, user=db_user, password=db_password + ) + m = leafmap.Map() + m.add_gdf_from_postgis( + sql, con, layer_name=layer_name, fill_colors=fill_colors + ) + return m + +# TODO: Aug 2024: Consider moving this to the new s3_shared_functions file (or more like just the s3 code in this function) +def save_gdf_shapefile(gdf, output_folder, shapefile_name): + shapefiles_folder = folder + + gdf.to_file(f'{shapefiles_folder}/{shapefile_name}.shp', index=False) + + for file in os.listdir(shapefiles_folder): + file_basename = os.path.basename(file).split(".")[0] + if file_basename == shapefile_name: + file_path = os.path.join(shapefiles_folder, file) + s3_key = f"{bucket_folder}/{file}" + + print(f"Uploading {file} to {upload_bucket}:/{s3_key}") + s3_client.upload_file( + file_path, upload_bucket, s3_key, ExtraArgs={"ServerSideEncryption": "aws:kms"} + ) + + +# TODO: Aug 2024: Consider moving this to the new s3_shared_functions file (or more like just the s3 code in this function) +def save_gdf_shapefile_to_s3(gdf, shapefile_name): + s3_client = boto3.client('s3') + shapefiles_folder = "shapefiles" + upload_bucket = "hydrovis-dev-fim-us-east-1" + bucket_folder = "sagemaker/shapefiles" + + gdf.to_file(f'{shapefiles_folder}/{shapefile_name}.shp', index=False) + + for file in os.listdir(shapefiles_folder): + file_basename = os.path.basename(file).split(".")[0] + if file_basename == shapefile_name: + file_path = os.path.join(shapefiles_folder, file) + s3_key = f"{bucket_folder}/{file}" + + print(f"Uploading {file} to {upload_bucket}:/{s3_key}") + s3_client.upload_file( + file_path, upload_bucket, s3_key, ExtraArgs={"ServerSideEncryption": "aws:kms"} + ) + + + +def load_df_into_db(table_name, db_engine, df, dtype={'oid': sqlalchemy.types.Integer()}, epsg=None, drop_first=True, bigint_fields=[]): + schema = table_name.split(".")[0] + table = table_name.split(".")[-1] + + # Drop the old table if it exists and recreate it + if drop_first: + connection = database("egis").get_db_connection() + with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + print(f"Dropping {table_name} if it exists") + conn.execute(text(f'DROP TABLE IF EXISTS {table_name};')) # Drop the stage table if it exists + + print("Getting sql to create table") + create_table_statement = pd.io.sql.get_schema(df, table_name) + replace_values = { + '"geom" TEXT': '"geom" GEOMETRY', "REAL": "DOUBLE PRECISION", '"coastal" INTEGER': '"coastal" BOOLEAN' + } # Correct data types + for a, b in replace_values.items(): + create_table_statement = create_table_statement.replace(a, b) + + create_table_statement = create_table_statement.replace(f'"{table_name}"', table_name) + + if epsg: + create_table_statement = create_table_statement.replace(f'"geom" GEOMETRY', f'"geom" GEOMETRY(Geometry,{epsg})') + + if bigint_fields: + for field in bigint_fields: + create_table_statement = create_table_statement.replace(f'"{field}" INTEGER', f'"{field}" BIGINT') + print(create_table_statement) + + print(f"Creating {table_name}") + conn.execute(text(create_table_statement)) # Create the new empty stage table + + print(f"Adding data to {table_name}") + df.to_sql(con=db_engine, schema=schema, name=table, index=False, if_exists='append', chunksize=200000) + +def move_data_to_another_db(origin_db, dest_db, origin_table, dest_table, stage=True, add_oid=True, + add_geom_index=True, columns="*"): + origin_engine = get_db_engine(origin_db) + dest_engine = get_db_engine(dest_db) + + if stage: + dest_final_table = dest_table + dest_final_table_name = dest_final_table.split(".")[1] + + dest_table = f"{dest_table}_stage" + + print(f"Reading {origin_table} from the {origin_db} db") + df = get_db_values(origin_table, columns, db_type=origin_db) + + print(f"Loading {origin_table} into {dest_table} in the {dest_db} db") + load_df_into_db(dest_table, dest_engine, df) + + if add_oid: + print(f"Adding an OID to the {dest_table}") + dest_engine.execute(f'ALTER TABLE {dest_table} ADD COLUMN OID SERIAL PRIMARY KEY;') + + if add_geom_index: + print(f"Adding an spatial index to the {dest_table}") + dest_engine.execute(f'CREATE INDEX ON {dest_table} USING GIST (geom);') # Add a spatial index + + if stage: + print(f"Renaming {dest_table} to {dest_final_table}") + dest_engine.execute(f'DROP TABLE IF EXISTS {dest_final_table};') # Drop the published table if it exists + dest_engine.execute(f'ALTER TABLE {dest_table} RENAME TO {dest_final_table_name};') # Rename the staged table + +def get_service_metadata(run_only=True): + from helper_functions.viz_classes import database + """ + This function pulls service metadata from the admin.services database table. + + Returns: + results (dictionary): A python dictionary containing the database table data. + """ + import psycopg2.extras + service_filter = run_filter = "" + if run_only: + run_filter = " WHERE run is True" + connection = database("viz").get_db_connection() + with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + cur.execute(f"SELECT * FROM admin.services_new {run_filter};") + column_names = [desc[0] for desc in cur.description] + response = cur.fetchall() + cur.close() + connection.close() + return list(map(lambda x: dict(zip(column_names, x)), response)) + +def get_secret_password(secret_name, region_name, key): + """ + Gets a password from a sercret stored in AWS secret manager. + + Args: + secret_name(str): The name of the secret + region_name(str): The name of the region + + Returns: + password(str): The text of the password + """ + + # Create a Secrets Manager client + session = boto3.session.Session() + client = session.client( + service_name='secretsmanager', + region_name=region_name + ) + + # In this sample we only handle the specific exceptions for the 'GetSecretValue' API. + # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html + # We rethrow the exception by default. + + try: + get_secret_value_response = client.get_secret_value( + SecretId=secret_name + ) + except ClientError as e: + if e.response['Error']['Code'] == 'DecryptionFailureException': + # Secrets Manager can't decrypt the protected secret text using the provided KMS key. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InternalServiceErrorException': + # An error occurred on the server side. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidParameterException': + # You provided an invalid value for a parameter. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidRequestException': + # You provided a parameter value that is not valid for the current state of the resource. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'ResourceNotFoundException': + # We can't find the resource that you asked for. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + else: + print(e) + raise e + else: + # Decrypts secret using the associated KMS CMK. + # Depending on whether the secret is a string or binary, one of these fields will be populated. + if 'SecretString' in get_secret_value_response: + secret = get_secret_value_response['SecretString'] + j = json.loads(secret) + password = j[key] + else: + decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary']) + print("password binary:" + decoded_binary_secret) + password = decoded_binary_secret.password + + return password + +def get_configuration(filename, previous_forecasts=0, return_input_files=True, mrf_timestep=1): + """ + Parses the data file path to extract the file configuration, date, hour, reference time, and input files. + + Args: + filename(dictionary): key (path) of a NWM channel file, or max_flows derived file. + + Returns: + data_dict(dictionary): A dictionay containing the following possible values + configuration(str): configuration of the run, i.e. medium_range_3day, analysis_assim, etc + date(str): date of the forecast file (YYYYMMDD) + hour(str): hour of the forecast file (HH) + reference_time(str): the reference time associated with the input file + input_files(list): All of the files needed to run analysis on the given configuration / reference time. + model_type(str): Model run of the NWM. values are analysis_assim, short_range, or medium_range + domain(str): Domain of the forecast. Values are conus, hawaii, or puertorico + forecast_timestep(str): The timestamp of the forecast file, i.e. 018 for the f018 file + mrf_timestep (int): The hour interval to use for mrf forecasts (default is 1, but old model is 3 hours) + """ + input_files = [] + if 'max_flows' in filename: + matches = re.findall(r"max_flows/(.*)/(\d{8})/\D*_(\d+day_)?(\d{2})_max_flows.*", filename)[0] + date = matches[1] + hour = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + input_files.append(filename) + + days_match = re.findall(r"(\d+day)", filename) + if days_match: + configuration = f"{configuration}_{days_match[0]}" + + data_dict = {'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time} + elif 'max_stage' in filename: + matches = re.findall(r"max_stage/(.*)/(\d{8})/(\d{2})_(\d{2})_ahps_forecasts.csv", filename)[0] + date = matches[1] + hour = matches[2] + minute = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:{minute[-2:]}:00" + input_files.append(filename) + + metadata_file = filename.replace("ahps_forecasts", "ahps_metadata") + input_files.append(metadata_file) + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, + 'reference_time': reference_time, 'input_files': input_files + } + elif "pcpanl" in filename: + matches = re.findall(r"(.*)/pcpanl.(\d{8})/st4_(.*).(\d{10})\.01h.grb2", filename)[0] + key_prefix = matches[0] + domain = matches[2] + date = matches[3][:-2] + hour = matches[3][-2:] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {date[-2:]}:00:00" + model_type = "pcpanl" + model_output = "pcpanl" + + data_dict = { + 'date': date, 'hour': hour, 'domain': domain, 'configuration': model_type, + 'reference_time': reference_time, 'model_type': model_type, "model_output": model_output + } + + else: + if 'analysis_assim' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\.(.*)\.tm(.*)\.(.*)\.nc", filename)[0] + elif 'short_range' in filename or 'medium_range_mem1' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\.(.*)\.f(\d{3,5}).(.*)\.nc", filename)[0] + else: + raise Exception(f"Configuration not set for {filename}") + + key_prefix = matches[0] + date = matches[1] + configuration = matches[2] + hour = matches[3] + model_type = matches[4] + model_output = matches[5] + forecast_timestep = matches[6] + domain = matches[7] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time, + 'model_type': model_type, 'domain': domain, 'forecast_timestep': forecast_timestep, "model_output": model_output + } + + if return_input_files: + input_files = get_input_files(key_prefix, reference_time, forecast_timestep, configuration, model_type, + domain, previous_forecasts=previous_forecasts, mrf_timestep=mrf_timestep) + data_dict['input_files'] = input_files + + return data_dict + +# Function to get a daterange list from a start and end date. +def daterange(start_date, end_date): + for n in range(int((end_date - start_date).days + 1)): + yield start_date + timedelta(n) + +# Function to kick off past_event pipelines for a specified date & time range +def run_pipelines(start_date, end_date, reference_hours, configurations, initialize_pipeline_arn, states_to_run_fim = None, skip_fim = False, interval_minutes=20): + lambda_config = botocore.client.Config(max_pool_connections=1, connect_timeout=60, read_timeout=600) + lambda_client = boto3.client('lambda', config=lambda_config) + for configuration in configurations: + for key, value in configuration.items(): + configuration_name = key + bucket = value + for day in daterange(start_date, end_date): + reference_date = day.strftime("%Y-%m-%d") + for reference_hour in reference_hours: + dump_dict = {"configuration": configuration_name, + "bucket": bucket, + "reference_time": f"{reference_date} {reference_hour}", + "states_to_run_fim": states_to_run_fim, + "skip_fim": skip_fim} + lambda_client.invoke(FunctionName=initialize_pipeline_arn, InvocationType='Event', Payload=json.dumps(dump_dict)) + print(f"Invoked viz_initialize_pipeline function with payload: {dump_dict}.") + time.sleep(interval_minutes*60) + +def update_service_metadata(service, configuration, summary, description, tags, credits, egis_server, egis_folder, max_flows_sql_name=None, service_sql_name=None, summary_sql_name=None, fim_service=False, feature_service=False, run=False, fim_configs=None, public_service=False, max_flow_method="db"): + + if not fim_configs: + fim_configs = [] + + if not summary_sql_name: + summary_sql_name = [] + + if not max_flows_sql_name: + max_flows_sql_name = [] + + sql = f""" + DELETE FROM admin.services WHERE service = '{service}'; + """ + run_sql_in_db(sql, db_type="viz") + + sql = f""" + INSERT INTO admin.services( + service, configuration, postprocess_max_flows, postprocess_service, postprocess_summary, summary, description, tags, credits, egis_server, egis_folder, fim_service, feature_service, run, fim_configs, public_service, max_flow_method) + VALUES ('{service}', '{configuration}', array{str(max_flows_sql_name).lower()}::text[], '{service_sql_name}', array{str(summary_sql_name).lower()}::json[], '{summary}', '{description}', '{tags}', '{credits}', '{egis_server}', '{egis_folder}', {str(fim_service).lower()}, {str(feature_service).lower()}, {str(run).lower()}, array{str(fim_configs).lower()}::text[], {str(public_service).lower()}, '{max_flow_method}') + """ + + sql = sql.replace("'None'", "null") + + run_sql_in_db(sql, db_type="viz") + +def update_service_data_flows(service, flow_id, step, source_table, target_table, target_keys, file_format=None, file_step=None, file_window=None): + + if step not in ['ingest', 'fim_prep', 'max_flows']: + raise Exception("step must be one of ingest, fim_prep, or max_flows") + + if target_keys: + if isinstance(target_keys, str) and "(" in target_keys: + pass + else: + if not isinstance(target_keys, list): + target_keys = [target_keys] + + target_keys = f"({','.join(target_keys)})" + + sql = f""" + DELETE FROM admin.pipeline_data_flows WHERE service = '{service}' AND flow_id = '{flow_id}'; + """ + run_sql_in_db(sql, db_type="viz") + + sql = f""" + INSERT INTO admin.pipeline_data_flows( + service, flow_id, step, file_format, source_table, target_table, target_keys, file_step, file_window) + VALUES ('{service}', '{flow_id}', '{step}', '{file_format}', '{source_table}', '{target_table}', '{target_keys}', '{file_step}', '{file_window}'); + """ + sql = sql.replace("'None'", "null") + + run_sql_in_db(sql, db_type="viz") + +def clear_db_connections(user="viz_proc_dev_rw_user"): + sql = f""" + SELECT pg_terminate_backend(pg_stat_activity.pid) + FROM pg_stat_activity + WHERE pg_stat_activity.datname = 'vizprocessing' + AND pid <> pg_backend_pid(); + """ + + run_sql_in_db(sql, db_type="viz") + +def show_colors(colors): + """ + Draw a square for each color contained in the colors list + given in argument. + """ + with plt.rc_context(plt.rcParamsDefault): + fig = plt.figure(figsize=(6, 1), frameon=False) + ax = fig.add_subplot(111) + for x, color in enumerate(colors): + ax.add_patch( + mpl.patches.Rectangle( + (x, 0), 1, 1, facecolor=color + ) + ) + ax.set_xlim((0, len(colors))) + ax.set_ylim((0, 1)) + ax.set_xticks([]) + ax.set_yticks([]) + ax.set_aspect("equal") + + return fig + +def show_symbology(symbology_list): + """ + Args: + - symbology_list(list): list containing a list of color, upper bound scale, and label + """ + color_scale = [] + bound_scale = [] + labels = [] + for class_break in symbology_list: + color = '#%02x%02x%02x' % tuple(class_break[0][:3]) if type(class_break[0]) is list else class_break[0] + color_scale.append(color) + bound_scale.append(class_break[1]) + labels.append(class_break[2]) + + print(bound_scale) + print(labels) + display(show_colors(color_scale)) + +def open_raster(bucket, file, variable): + download_path = check_if_file_exists(bucket, file, download=True) + print(f"--> Downloaded {file} to {download_path}") + + print(f"Opening {variable} in raster for {file}") + import rioxarray as rxr + ds = rxr.open_rasterio(download_path, variable=variable) + + # for some files like NBM alaska, the line above opens the attribute itself + try: + data = ds[variable] + except: + data = ds + + if "alaska" in file: + proj4 = "+proj=stere +lat_0=90 +lat_ts=60 +lon_0=-135 +x_0=0 +y_0=0 +R=6370000 +units=m +no_defs" + else: + try: + proj4 = data.proj4 + except: + proj4 = ds.proj4 + + from rasterio.crs import CRS + crs = CRS.from_proj4(proj4) + + os.remove(download_path) + + return [data, crs] + +def create_raster(data, crs, raster_name): + print(f"Creating raster for {raster_name}") + data.rio.write_crs(crs, inplace=True) + data.rio.write_nodata(0, inplace=True) + + if "grid_mapping" in data.attrs: + data.attrs.pop("grid_mapping") + + if "_FillValue" in data.attrs: + data.attrs.pop("_FillValue") + + local_raster = f'/tmp/{raster_name}.tif' + + print(f"Saving raster to {local_raster}") + data.rio.to_raster(local_raster) + + return local_raster + + +# TODO: Aug 2024: Move this to new s3_shared_functions +def upload_raster(local_raster, output_bucket, output_workspace): + raster_name = os.path.basename(local_raster) + + s3_raster_key = f"{output_workspace}/tif/{raster_name}" + + print(f"--> Uploading raster to s3://{output_bucket}/{s3_raster_key}") + s3 = boto3.client('s3') + + s3.upload_file(local_raster, output_bucket, s3_raster_key) + os.remove(local_raster) + + return s3_raster_key + + + + +def sum_rasters(bucket, input_files, variable): + print(f"Adding {variable} variable of {len(input_files)} raster(s)...") + sum_initiated = False + for input_file in input_files: + print(f"Adding {input_file}...") + data, crs = open_raster(bucket, input_file, variable) + time_index = 0 + if len(data.time) > 1: + time_index = -1 + for i, t in enumerate(data.time): + if str(float(data.sel(time=t)[0][0])) != 'nan': + time_index = i + break + if (time_index < 0): + raise Exception(f"No valid time steps were found in file: {input_file}") + + if not sum_initiated: + data_sum = data.sel(time=data.time[time_index]) + sum_initiated = True + else: + data_sum += data.sel(time=data.time[time_index]) + print("Done adding rasters!") + return data_sum, crs + + +def move_data_from_viz_to_egis(viz_schema_and_table, egis_schema_and_table): + egis_connection = get_db_connection('egis') + + viz_schema, viz_table = viz_schema_and_table.split('.') + + with egis_connection: + with egis_connection.cursor() as cur: + sql = f""" + DROP SCHEMA IF EXISTS transfer_from_viz CASCADE; + + CREATE SCHEMA transfer_from_viz; + + IMPORT FOREIGN SCHEMA {viz_schema} LIMIT TO ({viz_table}) + FROM SERVER vizprc_db + INTO transfer_from_viz; + + SELECT * + INTO {egis_schema_and_table} + FROM transfer_from_viz.{viz_table}; + + DROP SCHEMA IF EXISTS transfer_from_viz CASCADE; + """ + cur.execute(sql) + egis_connection.close() + print(f'Successfully copied {viz_schema_and_table} from the VIZ DB to {egis_schema_and_table} in the EGIS DB!') diff --git a/Core/Manual_Workflows/helper_functions/sync_s3_folders.py b/Core/Manual_Workflows/helper_functions/sync_s3_folders.py new file mode 100644 index 00000000..2d0921ba --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/sync_s3_folders.py @@ -0,0 +1,44 @@ +import boto3 + + +# Function to download files from a folder in S3 +def download_files_from_s3(src, dst, ignore_str): + from_profile = src['profile'] + from_bucket = src['bucket'] + from_path = src['path'] + from_s3_session = boto3.Session(profile_name=from_profile) + from_client = from_s3_session.client('s3') + + to_profile = dst['profile'] + to_bucket = dst['bucket'] + to_s3_session = boto3.Session(profile_name=to_profile) + to_client = to_s3_session.client('s3') + + # Retrieve list of objects in the specified folder + paginator = from_client.get_paginator('list_objects_v2') + pages = paginator.paginate(Bucket=from_bucket, Prefix=from_path) + + for page in pages: + # Iterate over each object and download it + for obj in page['Contents']: + key = obj['Key'] + if ignore_str and ignore_str in key: + continue + print(f'Writing {key} from {from_bucket} to {to_bucket}') + obj = from_client.get_object(Bucket=from_bucket, Key=key) + content = obj['Body'].read() + to_client.put_object(Body=content, Bucket=to_bucket, Key=key) + + +if __name__ == '__main__': + src = { + 'profile': 'ti', + 'bucket': 'hydrovis-ti-deployment-us-east-1', + 'path': 'viz_db_dumps/vizDB_derived_v2.1.7_dump.sql' + } + dst = { + 'profile': 'prod', + 'bucket': 'hydrovis-uat-deployment-us-east-1' + } + ignore_str = '' + download_files_from_s3(src, dst, ignore_str) diff --git a/Core/Manual_Workflows/helper_functions/viz_db_ingest.py b/Core/Manual_Workflows/helper_functions/viz_db_ingest.py new file mode 100644 index 00000000..c439d7fd --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/viz_db_ingest.py @@ -0,0 +1,147 @@ +################################################################################ +################################ Viz DB Ingest ################################# +################################################################################ +""" +This function downloads a file from S3 and ingets it into the vizprocessing RDS +database. + +Args: + event (dictionary): The event passed from the state machine. + context (object): Automatic metadata regarding the invocation. + +Returns: + dictionary: The details of the file that was ingested, to be returned to the state machine. +""" +################################################################################ +import os +import boto3 +import json +import re +from datetime import datetime +import numpy as np +import pandas as pd +import xarray as xr +from io import StringIO +from psycopg2.errors import UndefinedTable, BadCopyFileFormat, InvalidTextRepresentation +from .viz_classes import database +from .viz_lambda_shared_funcs import check_if_file_exists, get_db_connection_url + +s3 = boto3.client('s3') +s3_resource = boto3.resource('s3') + +class MissingS3FileException(Exception): + """ my custom exception class """ + +def lambda_handler(event, context): + + target_table = event['target_table'] + target_cols = event['target_cols'] + db_type = event.get('db_type', 'viz') + file = event['file'] + bucket = event['bucket'] + reference_time = event['reference_time'] + keep_flows_at_or_above = event['keep_flows_at_or_above'] + reference_time_dt = datetime.strptime(reference_time, '%Y-%m-%d %H:%M:%S') + create_table = event.get('iteration_index') == 0 + + print(f"Checking existance of {file} on S3/Google Cloud/Para Nomads.") + download_path = check_if_file_exists(bucket, file, download=True) + + if not target_table: + dump_dict = { + "file": file, + "target_table": target_table, + "reference_time": reference_time, + "rows_imported": 0 + } + return json.dumps(dump_dict) + + viz_db = database(db_type=db_type) + with viz_db.get_db_connection() as connection: + cursor = connection.cursor() + try: + nwm_version = 0 + + if file.endswith('.nc'): + print('Opening file with xarray...') + ds = xr.open_dataset(download_path) + ds_vars = [var for var in ds.variables] + + if not target_cols: + target_cols = ds_vars + + try: + ds['forecast_hour'] = int(re.findall("(\d{8})/[a-z0-9_]*/.*t(\d{2})z.*[ftm](\d*)\.", file)[0][-1]) + if 'forecast_hour' not in target_cols: + target_cols.append('forecast_hour') + except: + print("Regex pattern for the forecast hour didn't match the netcdf file") + + try: + ds['nwm_vers'] = float(ds.NWM_version_number.replace("v","")) + if 'nwm_vers' not in target_cols: + target_cols.append('nwm_vers') + except: + print("NWM_version_number property is not available in the netcdf file") + + drop_vars = [var for var in ds_vars if var not in target_cols] + print('Converting to Pandas DataFrame...') + df = ds.to_dask_dataframe().reset_index() + print('Dropping unwanted columns...') + df = df.drop(columns=drop_vars) + ds.close() + if 'streamflow' in target_cols: + df = df.loc[df['streamflow'] >= keep_flows_at_or_above].round({'streamflow': 2}).copy() # noqa + df = df[target_cols] + + elif file.endswith('.csv'): + df = pd.read_csv(download_path) + for column in df: # Replace any 'None' strings with nulls + df[column].replace('None', np.nan, inplace=True) + df = df.copy() + else: + print("File format not supported.") + exit() + + print(f"--> Preparing and Importing {file}") + schema, table = target_table.split('.') + + #df.to_sql(table, get_db_connection_url('viz'), schema, if_exists="replace", index=False, chunksize=10000, method='multi', parallel=True) + df.to_sql(table, get_db_connection_url('viz'), schema, if_exists="replace", index=False, chunksize=10000, method='multi') + +# f = StringIO() # Use StringIO to store the temporary text file in memory (faster than on disk) +# df.to_csv(f, sep='\t', index=False, header=False) +# f.seek(0) +# try: +# with viz_db.get_db_connection() as connection: +# cursor = connection.cursor() +# cursor.copy_expert(f"COPY {target_table} FROM STDIN WITH DELIMITER E'\t' null as ''", f) +# connection.commit() +# except (UndefinedTable, BadCopyFileFormat, InvalidTextRepresentation): +# if not create_table: +# raise + +# print("Error encountered. Recreating table now and retrying import...") +# create_table_df = df.head(0) +# schema, table = target_table.split('.') +# create_table_df.to_sql(con=viz_db.engine, schema=schema, name=table, index=False, if_exists='replace') +# with viz_db.get_db_connection() as connection: +# cursor = connection.cursor() +# cursor.copy_expert(f"COPY {target_table} FROM STDIN WITH DELIMITER E'\t' null as ''", f) +# connection.commit() + + print(f"--> Import of {len(df)} rows Complete. Removing {download_path} and closing db connection.") + os.remove(download_path) + + except Exception as e: + print(f"Error: {e}") + raise e + + dump_dict = { + "file": file, + "target_table": target_table, + "reference_time": reference_time, + "rows_imported": len(df), + "nwm_version": nwm_version + } + return json.dumps(dump_dict) # Return some info on the import \ No newline at end of file diff --git a/Core/Manual_Workflows/helper_functions/viz_lambda_shared_funcs.py b/Core/Manual_Workflows/helper_functions/viz_lambda_shared_funcs.py new file mode 100644 index 00000000..9339b62d --- /dev/null +++ b/Core/Manual_Workflows/helper_functions/viz_lambda_shared_funcs.py @@ -0,0 +1,733 @@ +import os +import boto3 +import base64 +import json +import time +import re +import urllib.parse +from datetime import datetime, timedelta +from botocore.exceptions import ClientError + +class MissingS3FileException(Exception): + """ my custom exception class """ + +def get_secret_password(secret_name, region_name, key): + """ + Gets a password from a sercret stored in AWS secret manager. + + Args: + secret_name(str): The name of the secret + region_name(str): The name of the region + + Returns: + password(str): The text of the password + """ + + # Create a Secrets Manager client + session = boto3.session.Session() + client = session.client( + service_name='secretsmanager', + region_name=region_name + ) + + # In this sample we only handle the specific exceptions for the 'GetSecretValue' API. + # See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html + # We rethrow the exception by default. + + try: + get_secret_value_response = client.get_secret_value( + SecretId=secret_name + ) + except ClientError as e: + if e.response['Error']['Code'] == 'DecryptionFailureException': + # Secrets Manager can't decrypt the protected secret text using the provided KMS key. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InternalServiceErrorException': + # An error occurred on the server side. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidParameterException': + # You provided an invalid value for a parameter. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'InvalidRequestException': + # You provided a parameter value that is not valid for the current state of the resource. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + elif e.response['Error']['Code'] == 'ResourceNotFoundException': + # We can't find the resource that you asked for. + # Deal with the exception here, and/or rethrow at your discretion. + raise e + else: + print(e) + raise e + else: + # Decrypts secret using the associated KMS CMK. + # Depending on whether the secret is a string or binary, one of these fields will be populated. + if 'SecretString' in get_secret_value_response: + secret = get_secret_value_response['SecretString'] + j = json.loads(secret) + password = j[key] + else: + decoded_binary_secret = base64.b64decode(get_secret_value_response['SecretBinary']) + print("password binary:" + decoded_binary_secret) + password = decoded_binary_secret.password + + return password + + +def check_s3_file_existence(bucket, file): + """ + Checks S3 files to see if they exist + + Args: + bucket(str): S3 bucket where the file resides + file(str): key (path) to the file in the bucket + + Returns: + Boolean: True if the file exists + """ + s3_resource = boto3.resource('s3') + try: + s3_resource.Object(bucket, file).load() + return True + except ClientError as e: + if e.response['Error']['Code'] == "404": + return False + else: + raise + + +def check_s3_fileset(bucket, input_files, file_threshold=100, retry=True, retry_limit=10): + """ + Checks a full set of s3 files for availability and returns the ready files. + + Args: + bucket(str): The S3 bucket + input_files(list): The list of input files to check + file_threshold (int): The percent required of input_file to proceed + retry (boolean): Should the function retry on missing files + retry_limit (int): The number of retries to attempt on missing files + + Returns: + ready_files (list): A list of available S3 files. + """ + total_files = len(input_files) + non_existent_files = [file for file in input_files if not check_s3_file_existence(bucket, file)] + + if retry: + files_ready = False + retries = 0 + while not files_ready and retries < retry_limit: + non_existent_files = [file for file in non_existent_files if not check_s3_file_existence(bucket, file)] + + if not non_existent_files: + files_ready = True + else: + print(f"Waiting 1 minute until checking for files again. Missing files {non_existent_files}") + time.sleep(60) + retries += 1 + + available_files = [file for file in input_files if file not in non_existent_files] + + if non_existent_files: + if (len(available_files) * 100 / total_files) < file_threshold: + raise Exception(f"Error - Failed to get the following files: {non_existent_files}") + + return available_files + + +def parse_s3_sns_message(event): + """ + Parses the event json string passed from a S3 file notification SNS topic trigger, to return the data bucket + and key. + + Args: + event(str): The event passed from triggering SNS topic. + + Returns: + data_key(str): The key(path) of the triggering S3 file. + data_bucket(str): The S3 bucket of the triggering S3 file. + """ + print("Parsing lambda event to get S3 key and bucket.") + if "Records" in event: + message = json.loads(event["Records"][0]['Sns']['Message']) + data_key = urllib.parse.unquote_plus(message["Records"][0]['s3']['object']['key'], encoding='utf-8') + data_bucket = message["Records"][0]['s3']['bucket']['name'] + else: + data_key = event['data_key'] + data_bucket = event['data_bucket'] + return data_key, data_bucket + + +def get_most_recent_s3_file(bucket, configuration): + """ + Gets the most recent s3 file of a particular configuration. + + Args: + bucket (string): The s3 bucket to search through. + configuration (string): The configuration to search. Valid values are replace_route + or any of the used NWM configurations ('short_range', 'medium_range_mem1', etc.) + + Returns: + file (string): The path to the most recent S3 object that meets the criteria. + """ + s3 = boto3.client('s3') + + # Set the S3 prefix based on the confiuration + def get_s3_prefix(configuration, date): + if configuration == 'replace_route': + prefix = f"replace_route/{date}/wrf_hydro/" + elif configuration == 'ahps': + prefix = f"max_stage/ahps/{date}/" + else: + nwm_dataflow_version = os.environ.get("NWM_DATAFLOW_VERSION") if os.environ.get("NWM_DATAFLOW_VERSION") else "prod" + prefix = f"common/data/model/com/nwm/{nwm_dataflow_version}/nwm.{date}/{configuration}/" + + return prefix + + # Get all S3 files that match the bucket / prefix + def list_s3_files(bucket, prefix): + files = [] + paginator = s3.get_paginator('list_objects_v2') + for result in paginator.paginate(Bucket=bucket, Prefix=prefix): + for key in result['Contents']: + # Skip folders + if not key['Key'].endswith('/'): + files.append(key['Key']) + if len(files) == 0: + raise Exception("No Files Found.") + return files + + # Start with looking at files today, but try yesterday if that doesn't work (in case this runs close to midnight) + today = datetime.today().strftime('%Y%m%d') + yesterday = (datetime.today() - timedelta(1)).strftime('%Y%m%d') + try: + files = list_s3_files(bucket, get_s3_prefix(configuration, today)) + except Exception as e: + print(f"Failed to get files for today ({e}). Trying again with yesterday's files") + files = list_s3_files(bucket, get_s3_prefix(configuration, yesterday)) + + # It seems this list is always sorted by default, but adding some sorting logic here may be necessary + return files[-1:].pop() + + +def get_configuration(filename, previous_forecasts=0, return_input_files=True, mrf_timestep=1): + """ + Parses the data file path to extract the file configuration, date, hour, reference time, and input files. + + Args: + filename(dictionary): key (path) of a NWM channel file, or max_flows derived file. + + Returns: + data_dict(dictionary): A dictionay containing the following possible values + configuration(str): configuration of the run, i.e. medium_range_3day, analysis_assim, etc + date(str): date of the forecast file (YYYYMMDD) + hour(str): hour of the forecast file (HH) + reference_time(str): the reference time associated with the input file + input_files(list): All of the files needed to run analysis on the given configuration / reference time. + model_type(str): Model run of the NWM. values are analysis_assim, short_range, or medium_range + domain(str): Domain of the forecast. Values are conus, hawaii, or puertorico + forecast_timestep(str): The timestamp of the forecast file, i.e. 018 for the f018 file + mrf_timestep (int): The hour interval to use for mrf forecasts (default is 1, but old model is 3 hours) + """ + input_files = [] + if 'max_flows' in filename: + matches = re.findall(r"max_flows/(.*)/(\d{8})/\D*_(\d+day_)?(\d{2})_max_flows.*", filename)[0] + date = matches[1] + hour = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + input_files.append(filename) + + days_match = re.findall(r"(\d+day)", filename) + if days_match: + configuration = f"{configuration}_{days_match[0]}" + + data_dict = {'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time} + elif 'max_stage' in filename: + matches = re.findall(r"max_stage/(.*)/(\d{8})/(\d{2})_(\d{2})_ahps_forecasts.csv", filename)[0] + date = matches[1] + hour = matches[2] + minute = matches[3] + configuration = matches[0] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:{minute[-2:]}:00" + input_files.append(filename) + + metadata_file = filename.replace("ahps_forecasts", "ahps_metadata") + input_files.append(metadata_file) + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, + 'reference_time': reference_time, 'input_files': input_files + } + else: + if 'analysis_assim' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\..*\.tm(.*)\.(.*)\.nc", filename)[0] + elif 'short_range' in filename or 'medium_range_mem1' in filename: + matches = re.findall(r"(.*)/nwm.(\d{8})/(.*)/nwm.t(\d{2})z\.(.*)\..*\.f(\d{3,5}).(.*)\.nc", filename)[0] + else: + raise Exception(f"Configuration not set for {filename}") + + key_prefix = matches[0] + date = matches[1] + configuration = matches[2] + hour = matches[3] + model_type = matches[4] + forecast_timestep = matches[5] + domain = matches[6] + reference_time = f"{date[:4]}-{date[-4:][:2]}-{date[-2:]} {hour[-2:]}:00:00" + + data_dict = { + 'date': date, 'hour': hour, 'configuration': configuration, 'reference_time': reference_time, + 'model_type': model_type, 'domain': domain, 'forecast_timestep': forecast_timestep + } + + if return_input_files: + input_files = get_input_files(key_prefix, reference_time, forecast_timestep, configuration, model_type, + domain, previous_forecasts=previous_forecasts, mrf_timestep=mrf_timestep) + data_dict['input_files'] = input_files + + return data_dict + + +def get_input_files(key_prefix, reference_time, forecast_timestep, configuration, model_type, domain, + previous_forecasts=0, mrf_timestep=1): + """ + Using the file metadata, get a list of all the input files for the specified configuration. + + Args: + key_prefix(str): AWS S3 key prefix for the forecast file. This prefix is static and the constant for all + files, + reference_time(str): Reference time for the forecast ("2021-08-13 02:00:00"), + forecast_timestep(str): The timestep of the forecast (i.e 072 for f072) + configuration(str): The configuration for the forecast, i.e. short_range, short_range_hawaii, + analysis_assim_puertorico, etc, + model_type(str): The model run for the forecast, i.e. short_range, medium_range, analysis_assim, + domain(str): Domain of the forecast, i.e. conus, hawaii, puertorico, + previous_forecasts(int): The number of previous forecast to retrieve. This is in addition to the forecast + being ran. For example a previous_forecasts of 4 for analysis_assim will return 5 + total forecast (1 current, 4 previous) + mrf_timestep (int): The hour interval to use for mrf forecasts (default is 1, but old model uses 3 hours) + + Returns: + input_files(list): List of AWS keys for the specified forecast + """ + input_files = [] + reference_date = datetime.strptime(reference_time, "%Y-%m-%d %H:%M:%S") + + if domain != 'conus' and "analysis_assim" not in configuration: + forecast_length = 12 # hours + elif model_type == 'medium_range': + forecast_length = 6 # hours + else: + forecast_length = 1 # hours + + previous_hours = previous_forecasts * forecast_length # compute hours between the desired forecasts + + # Loop through the desired forecasts + for previous_hour in range(0, previous_hours+forecast_length, forecast_length): + previous_date_time = reference_date - timedelta(hours=previous_hour) + previous_date = previous_date_time.strftime("%Y%m%d") + previous_hour = previous_date_time.strftime("%H") + base_file = f"{key_prefix}/nwm.{previous_date}/{configuration}/nwm.t{previous_hour}z.{model_type}.channel_rt" + + if configuration in ['analysis_assim', 'analysis_assim_puertorico']: + input_files.append(f"{base_file}.tm00.{domain}.nc") + elif configuration == 'analysis_assim_hawaii': + input_files.append(f"{base_file}.tm0000.{domain}.nc") + else: + if configuration == 'short_range_hawaii': + leads = [] + for lead1 in range(0, 4800, 100): + for lead2 in [0, 15, 30, 45]: + lead = lead1+lead2 + leads.append(f"{lead:05}") + leads.pop(0) + leads.append(f"{4800:05}") + elif configuration == 'short_range': + leads = [f"{lead:03}" for lead in range(1, 19)] + elif configuration == 'short_range_puertorico': + leads = [f"{lead:03}" for lead in range(1, 49)] + elif configuration == 'medium_range_mem1': + if mrf_timestep == 3: + base_file = f"{base_file}_1" + leads = [f"{lead:03}" for lead in range(3, int(forecast_timestep)+1, 3)] + else: + base_file = f"{base_file}_1" + leads = [f"{lead:03}" for lead in range(1, int(forecast_timestep)+1)] + else: + raise Exception(f"function not configured for {configuration}") + + for lead in leads: + input_files.append(f"{base_file}.f{lead}.{domain}.nc") + + return sorted(input_files) + + +def get_db_credentials(db_type): + """ + This function pulls database credentials from environment variables. + It first checks for a password in an environment variable. + If that doesn't exist, it tries looking or a secret name to query for + the password using the get_secret_password function. + + Returns: + db_host (str): The host address of the PostgreSQL database. + db_name (str): The target database name. + db_user (str): The database user with write access to authenticate with. + db_password (str): The password for the db_user. + + """ + db_type = db_type.upper() + + db_host = os.environ[f'{db_type}_DB_HOST'] + db_name = os.environ[f'{db_type}_DB_DATABASE'] + db_user = os.environ[f'{db_type}_DB_USERNAME'] + try: + db_password = os.getenv(f'{db_type}_DB_PASSWORD') + except Exception: + try: + db_password = get_secret_password(os.getenv(f'{db_type}_RDS_SECRET_NAME'), 'us-east-1', 'password') + except Exception as e: + print(f"Couldn't get db password from environment variable or secret name. ({e})") + + return db_host, db_name, db_user, db_password + +def get_db_connection_url(db_type): + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + return f'postgresql://{db_user}:{db_password}@{db_host}/{db_name}' + +def get_db_engine(db_type): + from sqlalchemy import create_engine + + print("Creating the viz DB engine") + + db_engine = create_engine(get_db_connection_url(db_type)) + + return db_engine + + +def get_db_connection(db_type, asynchronous=False): + import psycopg2 + + print("Creating the viz DB engine") + db_host, db_name, db_user, db_password = get_db_credentials(db_type) + connection = psycopg2.connect( + f"host={db_host} dbname={db_name} user={db_user} password={db_password}", async_=asynchronous + ) + + return connection + + +def get_db_values(table, columns, db_type="viz"): + import pandas as pd + + print("Connecting to DB") + db_engine = get_db_engine(db_type) + + if not type(columns) == list: + raise Exception("columns argument must be a list of column names") + + columns = ",".join(columns) + print(f"Retrieving values for {columns}") + df = pd.read_sql(f'SELECT {columns} FROM {table}', db_engine) + + return df + + +def get_service_metadata(include_ingest_sources=True, include_latest_ref_time=False): + """ + This function pulls service metadata from the admin.services database table. + + Returns: + results (dictionary): A python dictionary containing the database table data. + """ + import psycopg2.extras + + if include_ingest_sources is True: + extra_sql = " join admin.services_ingest_sources ON admin.services.service = admin.services_ingest_sources.service" + else: + extra_sql = "" + + if include_latest_ref_time is True: + extra_sql += """ LEFT OUTER JOIN (SELECT service as service2, to_char(min(reference_time)::timestamp without time zone, 'YYYY-MM-DD HH24:MI:SS UTC') as reference_time + FROM admin.services_ingest_sources a JOIN + (SELECT target, max(reference_time) as reference_time FROM admin.ingest_status where status='Import Complete' group by target) b + ON a.ingest_table = b.target group by service) AS ref_times + on admin.services.service = ref_times.service2""" + + connection = get_db_connection("viz") + with connection.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: + cur.execute(f"SELECT * FROM admin.services{extra_sql};") + column_names = [desc[0] for desc in cur.description] + response = cur.fetchall() + cur.close() + connection.close() + return list(map(lambda x: dict(zip(column_names, x)), response)) + + +def load_df_into_db(table_name, db_engine, df): + import pandas as pd + + schema = table_name.split(".")[0] + table = table_name.split(".")[-1] + + print(f"Dropping {table_name} if it exists") + db_engine.execute(f'DROP TABLE IF EXISTS {table_name};') # Drop the stage table if it exists + + print("Getting sql to create table") + create_table_statement = pd.io.sql.get_schema(df, table_name) + replace_values = {'"geom" TEXT': '"geom" GEOMETRY', "REAL": "DOUBLE PRECISION"} # Correct data types + for a, b in replace_values.items(): + create_table_statement = create_table_statement.replace(a, b) + + create_table_statement = create_table_statement.replace(f'"{table_name}"', table_name) + + print(f"Creating {table_name}") + db_engine.execute(create_table_statement) # Create the new empty stage table + + print(f"Adding data to {table_name}") + df.to_sql(con=db_engine, schema=schema, name=table, index=False, if_exists='append') + +def run_sql_in_db(sql, db_type="viz", geodataframe=False): + db_connection = get_db_connection(db_type) + + if geodataframe: + import geopandas as gpd + return gpd.read_postgis(sql, db_connection) + else: + import pandas as pd + return pd.read_sql(sql, db_connection) + +def run_sql_file_in_db(sql_file, db_type): + print("Getting connection to run sql files") + sql = open(sql_file, 'r').read() + print(f"Running {sql_file}") + run_sql_in_db(sql, db_type) + +def move_data_to_another_db(origin_db, dest_db, origin_table, dest_table, stage=True, add_oid=True, + add_geom_index=True): + import pandas as pd + + origin_engine = get_db_engine(origin_db) + dest_engine = get_db_engine(dest_db) + + if stage: + dest_final_table = dest_table + dest_final_table_name = dest_final_table.split(".")[1] + + dest_table = f"{dest_table}_stage" + + print(f"Reading {origin_table} from the {origin_db} db") + df = pd.read_sql(f'SELECT * FROM {origin_table}', origin_engine) # Read from the newly created table + + print(f"Loading {origin_table} into {dest_table} in the {dest_db} db") + load_df_into_db(dest_table, dest_engine, df) + + if add_oid: + print(f"Adding an OID to the {dest_table}") + dest_engine.execute(f'ALTER TABLE {dest_table} ADD COLUMN OID SERIAL PRIMARY KEY;') + + if add_geom_index: + print(f"Adding an spatial index to the {dest_table}") + dest_engine.execute(f'CREATE INDEX ON {dest_table} USING GIST (geom);') # Add a spatial index + + if stage: + print(f"Renaming {dest_table} to {dest_final_table}") + dest_engine.execute(f'DROP TABLE IF EXISTS {dest_final_table};') # Drop the published table if it exists + dest_engine.execute(f'ALTER TABLE {dest_table} RENAME TO {dest_final_table_name};') # Rename the staged table + +def check_if_file_exists(bucket, file, download=False): + import requests + from .viz_classes import s3_file + import xarray as xr + import tempfile + + s3 = boto3.client('s3') + file_exists = False + + tempdir = tempfile.mkdtemp() + download_path = os.path.join(tempdir, os.path.basename(file)) + https_file = None + + if "https" in file: + https_file = file + if requests.head(file).status_code == 200: + file_exists = True + print(f"{file} exists.") + else: + raise Exception(f"https file doesn't seem to exist: {file}") + else: + if s3_file(bucket, file).check_existence(): + file_exists = True + print(f"{file} exists in {bucket}") + else: + if "/prod" in file: + https_file = file.replace('common/data/model/com/nwm/prod', 'https://storage.googleapis.com/national-water-model') + if requests.head(https_file).status_code == 200: + file_exists = True + print("File does not exist on S3 (even though it should), but does exists on Google Cloud.") + else: + raise Exception("Code could not handle request for file") + + if not file_exists: + raise MissingS3FileException(f"{file} does not exist on S3.") + + + if download: + if https_file: + print(f"Downloading {https_file}") + tries = 0 + while tries < 3: + open(download_path, 'wb').write(requests.get(https_file, allow_redirects=True).content) + + try: + xr.open_dataset(download_path) + tries = 3 + except: + print(f"Failed to open {download_path}. Retrying in case file was corrupted on download") + tries +=1 + else: + print(f"Downloading {file} from s3") + s3.download_file(bucket, file, download_path) + + return download_path + + return file + +def parse_range_token_value(reference_date_file, range_token): + range_min = 0 + range_step = 1 + number_format = '%01d' + + parts = range_token.split(',') + num_parts = len(parts) + + if num_parts == 1: + range_max = parts[0] + elif num_parts == 2: + range_min, range_max = parts + elif num_parts == 3: + range_min, range_max, range_step = parts + elif num_parts == 4: + range_min, range_max, range_step, number_format = parts + else: + raise ValueError("Invalid Token Used") + + try: + range_min = int(range_min) + range_max = int(range_max) + range_step = int(range_step) + except ValueError: + raise ValueError("Ranges must be integers") + + new_input_files = [] + for i in range(range_min, range_max, range_step): + range_value = number_format % i + new_input_file = reference_date_file.replace(f"{{{{range:{range_token}}}}}", range_value) + new_input_files.append(new_input_file) + + return new_input_files + + +def get_file_tokens(file_pattern): + token_dict = {} + tokens = re.findall("{{[a-z]*:[^{]*}}", file_pattern) + token_dict = {'datetime': [], 'range': [], 'variable': []} + for token in tokens: + token_key = token.split(":")[0][2:] + token_value = token.split(":")[1][:-2] + + token_dict[token_key].append(token_value) + + return token_dict + +def parse_datetime_token_value(input_file, reference_date, datetime_token): + og_datetime_token = datetime_token + if "reftime" in datetime_token: + reftime = datetime_token.split(",")[0].replace("reftime", "") + datetime_token = datetime_token.split(",")[-1].replace(" ","") + arithmetic = reftime[0] + date_delta_value = int(reftime[1:][:-1]) + date_delta = reftime[1:][-1] + + if date_delta.upper() == "M": + date_delta = datetime.timedelta(minutes=date_delta_value) + elif date_delta.upper() == "H": + date_delta = datetime.timedelta(hours=date_delta_value) + elif date_delta.upper() == "D": + date_delta = datetime.timedelta(days=date_delta_value) + else: + raise Exception("timedelta is only configured for minutes, hours, and days") + + if arithmetic == "+": + reference_date = reference_date + date_delta + else: + reference_date = reference_date - date_delta + + datetime_value = reference_date.strftime(datetime_token) + new_input_file = input_file.replace(f"{{{{datetime:{og_datetime_token}}}}}", datetime_value) + + return new_input_file + +def parse_variable_token_value(input_file, variable_token): + + variable_value = os.environ[variable_token] + new_input_file = input_file.replace(f"{{{{variable:{variable_token}}}}}", variable_value) + + return new_input_file + +def get_formatted_files(file_pattern, token_dict, reference_date): + reference_date_file = file_pattern + reference_date_files = [] + for variable_token in token_dict['variable']: + reference_date_file = parse_variable_token_value(reference_date_file, variable_token) + + for datetime_token in token_dict['datetime']: + reference_date_file = parse_datetime_token_value(reference_date_file, reference_date, datetime_token) + + if token_dict['range']: + for range_token in token_dict['range']: + reference_date_files = parse_range_token_value(reference_date_file, range_token) + else: + reference_date_files = [reference_date_file] + + return reference_date_files + +def generate_file_list(file_pattern, file_step, file_window, reference_time): + import pandas as pd + import isodate + + file_list = [] + if 'common/data/model/com/nwm/prod' in file_pattern and (datetime.today() - timedelta(29)) > reference_time: + file_pattern = file_pattern.replace('common/data/model/com/nwm/prod', 'https://storage.googleapis.com/national-water-model') + + if file_window: + if not file_step: + file_step = None + reference_dates = pd.date_range(reference_time-isodate.parse_duration(file_window), reference_time, freq=file_step) + else: + reference_dates = [reference_time] + + token_dict = get_file_tokens(file_pattern) + + for reference_date in reference_dates: + reference_date_files = get_formatted_files(file_pattern, token_dict, reference_date) + file_list.extend(reference_date_files) + + return file_list + +def gen_dict_extract(key, var): + if hasattr(var,'items'): + for k, v in var.items(): + if k == key: + yield v + if isinstance(v, dict): + for result in gen_dict_extract(key, v): + yield result + elif isinstance(v, list): + for d in v: + for result in gen_dict_extract(key, d): + yield result \ No newline at end of file diff --git a/Core/Manual_Workflows/static_services/.ipynb_checkpoints/Flowline Reference Services-checkpoint.ipynb b/Core/Manual_Workflows/static_services/.ipynb_checkpoints/Flowline Reference Services-checkpoint.ipynb new file mode 100644 index 00000000..e7e03612 --- /dev/null +++ b/Core/Manual_Workflows/static_services/.ipynb_checkpoints/Flowline Reference Services-checkpoint.ipynb @@ -0,0 +1,204 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7b243f1c-31a9-4278-af9a-0bc0e6c217a6", + "metadata": {}, + "source": [ + "### Create the tables for the Flowline Services - located in the reference schema / EGIS database " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8925ab42-79f4-4153-8388-d6529d7f8c09", + "metadata": {}, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import execute_sql, move_data_from_viz_to_egis" + ] + }, + { + "cell_type": "markdown", + "id": "6798fb7c-a2df-4394-b68b-d55a44a07f01", + "metadata": { + "tags": [] + }, + "source": [ + "#### SQL statement that creates the CONUS Channels and Thresholds reference table for the Flowlines Service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8cda26f4-0a6b-44ff-b8d9-d23920ab9d8a", + "metadata": {}, + "outputs": [], + "source": [ + "## NOTE: some columns had the datatype cast to match those in the current reference table so that the mapx would not need to be adjusted\n", + "sql = f'''\n", + "DROP TABLE IF EXISTS dev.flowlines_conus;\n", + "SELECT channels.feature_id, \n", + " channels.strm_order::BIGINT, \n", + "\tchannels.name::TEXT, \n", + "\tchannels.huc6, \n", + "\tCAST('3.0' AS double precision) as nwm_vers, \n", + "\tchannels.geom, \n", + "\tthresholds.high_water_threshold, \n", + "\tthresholds.rf_2_0_17c, \n", + "\tthresholds.rf_5_0_17c, \n", + "\tthresholds.rf_10_0_17c, \n", + "\tthresholds.rf_25_0_17c, \n", + "\tthresholds.rf_50_0_17c, \n", + "\trow_number() over() as oid,\n", + "\tchannels.feature_id::TEXT AS feature_id_str\n", + "INTO dev.flowlines_conus\n", + "FROM derived.channels_conus AS channels\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON channels.feature_id = thresholds.feature_id\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "89a81c7a-64c9-4a22-a0b9-0df9c545f30f", + "metadata": {}, + "source": [ + "#### Move the CONUS dev table from viz to an \"on deck\" version in the egis database" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09a00731-753a-46f7-b99c-f1f9aab84d72", + "metadata": {}, + "outputs": [], + "source": [ + "move_data_from_viz_to_egis('dev.flowlines_conus', 'reference.channels_conus_ondeck')" + ] + }, + { + "cell_type": "markdown", + "id": "e6950833-cb1b-4408-9941-d17c130b96c2", + "metadata": { + "tags": [] + }, + "source": [ + "#### Create a \"retired\" CONUS reference table and rename the \"on deck\" table to the live version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15ede287-d437-401e-9558-c255c8fde251", + "metadata": {}, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.channels_conus_retired;\n", + " ALTER TABLE reference.channels_conus RENAME TO channels_conus_retired;\n", + " ALTER TABLE reference.channels_conus_ondeck RENAME TO channels_conus;\n", + "''', 'egis')" + ] + }, + { + "cell_type": "markdown", + "id": "79bff0e9-902d-4509-a1ce-1e3a5f514d44", + "metadata": {}, + "source": [ + "#### SQL statement that creates the ALASKA Channels and Thresholds reference table for the Flowlines Service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea6341fa-6d16-4164-95e6-25118331b64d", + "metadata": {}, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS dev.flowlines_ak;\n", + "SELECT channels.feature_id, \n", + " channels.strm_order, \n", + "\tchannels.name::TEXT, \n", + "\tchannels.huc6, \n", + "\tCAST('3.0' AS double precision) as nwm_vers, \n", + "\tchannels.geom, \n", + "\tthresholds.high_water_threshold, \n", + "\tthresholds.rf_2_0_17c, \n", + "\tthresholds.rf_5_0_17c, \n", + "\tthresholds.rf_10_0_17c, \n", + "\tthresholds.rf_25_0_17c, \n", + "\tthresholds.rf_50_0_17c, \n", + "\trow_number() over() as oid,\n", + "\tchannels.feature_id::TEXT AS feature_id_str\n", + "INTO dev.flowlines_ak\n", + "FROM derived.channels_alaska AS channels\n", + "JOIN derived.recurrence_flows_ak AS thresholds ON channels.feature_id = thresholds.feature_id\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "755e103c-40bf-4b5d-bb09-6893f6422288", + "metadata": {}, + "source": [ + "#### Move the Alaska dev table from viz to \"on deck\" version in the egis database" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ed265bdb-0b08-463b-8e85-323c3d7f2e98", + "metadata": {}, + "outputs": [], + "source": [ + "move_data_from_viz_to_egis('dev.flowlines_ak', 'reference.channels_ak_ondeck')" + ] + }, + { + "cell_type": "markdown", + "id": "0d9fa03e-4f5d-41ea-864c-5054bcd49477", + "metadata": {}, + "source": [ + "#### Create a \"retired\" Alaska reference table and rename the \"on deck\" table to the live version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54cbea12-bcba-476b-931d-d5b5aeb1f0dc", + "metadata": {}, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.channels_ak_retired;\n", + " ALTER TABLE reference.channels_ak RENAME TO channels_ak_retired;\n", + " ALTER TABLE reference.channels_ak_ondeck RENAME TO channels_ak;\n", + "''', 'egis')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/static_services/.ipynb_checkpoints/Public FIM Domain-checkpoint.ipynb b/Core/Manual_Workflows/static_services/.ipynb_checkpoints/Public FIM Domain-checkpoint.ipynb new file mode 100644 index 00000000..7f00b1c9 --- /dev/null +++ b/Core/Manual_Workflows/static_services/.ipynb_checkpoints/Public FIM Domain-checkpoint.ipynb @@ -0,0 +1,256 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "850b3abf-a9f1-4e19-86cf-facfd80f7910", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "OLD_PUBLIC_FIM_PERCENT = 10\n", + "NEW_PUBLIC_FIM_PERCENT = 30\n", + "NOAA_GEOPLATFORM_SUBLAYER_INDEX = 9" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "edaea545-4504-4f71-9d83-2576d59c3f34", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "# place full requests.get URL below\n", + "r = requests.get('https://services2.arcgis.com/C8EMgrsFcRFL6LrL/arcgis/rest/services/Updated_FIM_Implementation/FeatureServer'\n", + " f'/{NOAA_GEOPLATFORM_SUBLAYER_INDEX}/query?.....'\n", + "geojson = r.json()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c62f2d71-e12c-44d4-8774-061e8dee79e9", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "from shapely.geometry import shape\n", + "features = [f for f in geojson['features']]\n", + "geom = [shape(f['geometry']) for f in features]\n", + "df = gpd.GeoDataFrame({'geom': geom})\n", + "df = df.set_geometry('geom')\n", + "df = df.set_crs('EPSG:3857')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57b0734e-d48a-4441-aa56-9d5eb023af5f", + "metadata": {}, + "outputs": [], + "source": [ + "df.to_postgis(f'public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain', get_db_engine('viz'), schema='derived', if_exists='append')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "052af1b7-3fec-464d-b062-1183590715a4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "sys.path.append(os.path.dirname(os.path.abspath('')))\n", + "from helper_functions.shared_functions import execute_sql, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "ce4fc53e-1501-489c-9efd-0e9e19ba5727", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "WITH unioned AS (\n", + " SELECT geom FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain\n", + " UNION\n", + " SELECT geom FROM derived.public_fim{OLD_PUBLIC_FIM_PERCENT}_domain\n", + ")\n", + "\n", + "SELECT\n", + "1 as oid,\n", + "ST_Buffer(ST_Union(ST_Buffer(geom, 1)), -1) as geom\n", + "INTO derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain\n", + "FROM unioned\n", + "GROUP BY oid;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "5f008b27-5499-4adf-8cd5-844bda366387", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
st_npoints
01371585
\n", + "
" + ], + "text/plain": [ + " st_npoints\n", + "0 1371585" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql_to_dataframe(f\"SELECT ST_NPoints(geom) FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f35cad99-0174-460e-873d-6a30cc38a8a5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_ondeck;\n", + "SELECT *\n", + "INTO derived.public_fim_domain_ondeck\n", + "FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain RENAME TO public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "bb797856-e530-410e-9b83-ceb182b99ab9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import execute_sql, move_data_from_viz_to_egis, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "17b174ce-c4ea-4703-9d80-d3946f5a2eac", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully copied derived.public_fim_domain from the VIZ DB to reference.public_fim_domain_ondeck in the EGIS DB!\n" + ] + } + ], + "source": [ + "move_data_from_viz_to_egis('derived.public_fim_domain', 'reference.public_fim_domain_ondeck')" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "7b288760-01c8-47ed-8524-bae3e746994d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain RENAME TO public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "''', 'egis')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f909d2ea-7c64-4ee3-a4af-c8c4fef24a41", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/static_services/Flowline Reference Services.ipynb b/Core/Manual_Workflows/static_services/Flowline Reference Services.ipynb new file mode 100644 index 00000000..e7e03612 --- /dev/null +++ b/Core/Manual_Workflows/static_services/Flowline Reference Services.ipynb @@ -0,0 +1,204 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7b243f1c-31a9-4278-af9a-0bc0e6c217a6", + "metadata": {}, + "source": [ + "### Create the tables for the Flowline Services - located in the reference schema / EGIS database " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8925ab42-79f4-4153-8388-d6529d7f8c09", + "metadata": {}, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import execute_sql, move_data_from_viz_to_egis" + ] + }, + { + "cell_type": "markdown", + "id": "6798fb7c-a2df-4394-b68b-d55a44a07f01", + "metadata": { + "tags": [] + }, + "source": [ + "#### SQL statement that creates the CONUS Channels and Thresholds reference table for the Flowlines Service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8cda26f4-0a6b-44ff-b8d9-d23920ab9d8a", + "metadata": {}, + "outputs": [], + "source": [ + "## NOTE: some columns had the datatype cast to match those in the current reference table so that the mapx would not need to be adjusted\n", + "sql = f'''\n", + "DROP TABLE IF EXISTS dev.flowlines_conus;\n", + "SELECT channels.feature_id, \n", + " channels.strm_order::BIGINT, \n", + "\tchannels.name::TEXT, \n", + "\tchannels.huc6, \n", + "\tCAST('3.0' AS double precision) as nwm_vers, \n", + "\tchannels.geom, \n", + "\tthresholds.high_water_threshold, \n", + "\tthresholds.rf_2_0_17c, \n", + "\tthresholds.rf_5_0_17c, \n", + "\tthresholds.rf_10_0_17c, \n", + "\tthresholds.rf_25_0_17c, \n", + "\tthresholds.rf_50_0_17c, \n", + "\trow_number() over() as oid,\n", + "\tchannels.feature_id::TEXT AS feature_id_str\n", + "INTO dev.flowlines_conus\n", + "FROM derived.channels_conus AS channels\n", + "JOIN derived.recurrence_flows_conus AS thresholds ON channels.feature_id = thresholds.feature_id\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "89a81c7a-64c9-4a22-a0b9-0df9c545f30f", + "metadata": {}, + "source": [ + "#### Move the CONUS dev table from viz to an \"on deck\" version in the egis database" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09a00731-753a-46f7-b99c-f1f9aab84d72", + "metadata": {}, + "outputs": [], + "source": [ + "move_data_from_viz_to_egis('dev.flowlines_conus', 'reference.channels_conus_ondeck')" + ] + }, + { + "cell_type": "markdown", + "id": "e6950833-cb1b-4408-9941-d17c130b96c2", + "metadata": { + "tags": [] + }, + "source": [ + "#### Create a \"retired\" CONUS reference table and rename the \"on deck\" table to the live version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15ede287-d437-401e-9558-c255c8fde251", + "metadata": {}, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.channels_conus_retired;\n", + " ALTER TABLE reference.channels_conus RENAME TO channels_conus_retired;\n", + " ALTER TABLE reference.channels_conus_ondeck RENAME TO channels_conus;\n", + "''', 'egis')" + ] + }, + { + "cell_type": "markdown", + "id": "79bff0e9-902d-4509-a1ce-1e3a5f514d44", + "metadata": {}, + "source": [ + "#### SQL statement that creates the ALASKA Channels and Thresholds reference table for the Flowlines Service" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea6341fa-6d16-4164-95e6-25118331b64d", + "metadata": {}, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS dev.flowlines_ak;\n", + "SELECT channels.feature_id, \n", + " channels.strm_order, \n", + "\tchannels.name::TEXT, \n", + "\tchannels.huc6, \n", + "\tCAST('3.0' AS double precision) as nwm_vers, \n", + "\tchannels.geom, \n", + "\tthresholds.high_water_threshold, \n", + "\tthresholds.rf_2_0_17c, \n", + "\tthresholds.rf_5_0_17c, \n", + "\tthresholds.rf_10_0_17c, \n", + "\tthresholds.rf_25_0_17c, \n", + "\tthresholds.rf_50_0_17c, \n", + "\trow_number() over() as oid,\n", + "\tchannels.feature_id::TEXT AS feature_id_str\n", + "INTO dev.flowlines_ak\n", + "FROM derived.channels_alaska AS channels\n", + "JOIN derived.recurrence_flows_ak AS thresholds ON channels.feature_id = thresholds.feature_id\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "markdown", + "id": "755e103c-40bf-4b5d-bb09-6893f6422288", + "metadata": {}, + "source": [ + "#### Move the Alaska dev table from viz to \"on deck\" version in the egis database" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ed265bdb-0b08-463b-8e85-323c3d7f2e98", + "metadata": {}, + "outputs": [], + "source": [ + "move_data_from_viz_to_egis('dev.flowlines_ak', 'reference.channels_ak_ondeck')" + ] + }, + { + "cell_type": "markdown", + "id": "0d9fa03e-4f5d-41ea-864c-5054bcd49477", + "metadata": {}, + "source": [ + "#### Create a \"retired\" Alaska reference table and rename the \"on deck\" table to the live version" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54cbea12-bcba-476b-931d-d5b5aeb1f0dc", + "metadata": {}, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.channels_ak_retired;\n", + " ALTER TABLE reference.channels_ak RENAME TO channels_ak_retired;\n", + " ALTER TABLE reference.channels_ak_ondeck RENAME TO channels_ak;\n", + "''', 'egis')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Core/Manual_Workflows/static_services/Public FIM Domain.ipynb b/Core/Manual_Workflows/static_services/Public FIM Domain.ipynb new file mode 100644 index 00000000..7f00b1c9 --- /dev/null +++ b/Core/Manual_Workflows/static_services/Public FIM Domain.ipynb @@ -0,0 +1,256 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "850b3abf-a9f1-4e19-86cf-facfd80f7910", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "OLD_PUBLIC_FIM_PERCENT = 10\n", + "NEW_PUBLIC_FIM_PERCENT = 30\n", + "NOAA_GEOPLATFORM_SUBLAYER_INDEX = 9" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "edaea545-4504-4f71-9d83-2576d59c3f34", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "# place full requests.get URL below\n", + "r = requests.get('https://services2.arcgis.com/C8EMgrsFcRFL6LrL/arcgis/rest/services/Updated_FIM_Implementation/FeatureServer'\n", + " f'/{NOAA_GEOPLATFORM_SUBLAYER_INDEX}/query?.....'\n", + "geojson = r.json()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c62f2d71-e12c-44d4-8774-061e8dee79e9", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "from shapely.geometry import shape\n", + "features = [f for f in geojson['features']]\n", + "geom = [shape(f['geometry']) for f in features]\n", + "df = gpd.GeoDataFrame({'geom': geom})\n", + "df = df.set_geometry('geom')\n", + "df = df.set_crs('EPSG:3857')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57b0734e-d48a-4441-aa56-9d5eb023af5f", + "metadata": {}, + "outputs": [], + "source": [ + "df.to_postgis(f'public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain', get_db_engine('viz'), schema='derived', if_exists='append')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "052af1b7-3fec-464d-b062-1183590715a4", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import sys\n", + "import os\n", + "sys.path.append(os.path.dirname(os.path.abspath('')))\n", + "from helper_functions.shared_functions import execute_sql, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "ce4fc53e-1501-489c-9efd-0e9e19ba5727", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "WITH unioned AS (\n", + " SELECT geom FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_new_only_domain\n", + " UNION\n", + " SELECT geom FROM derived.public_fim{OLD_PUBLIC_FIM_PERCENT}_domain\n", + ")\n", + "\n", + "SELECT\n", + "1 as oid,\n", + "ST_Buffer(ST_Union(ST_Buffer(geom, 1)), -1) as geom\n", + "INTO derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain\n", + "FROM unioned\n", + "GROUP BY oid;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "5f008b27-5499-4adf-8cd5-844bda366387", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
st_npoints
01371585
\n", + "
" + ], + "text/plain": [ + " st_npoints\n", + "0 1371585" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sql_to_dataframe(f\"SELECT ST_NPoints(geom) FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f35cad99-0174-460e-873d-6a30cc38a8a5", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sql = f'''\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_ondeck;\n", + "SELECT *\n", + "INTO derived.public_fim_domain_ondeck\n", + "FROM derived.public_fim{NEW_PUBLIC_FIM_PERCENT}_domain;\n", + "\n", + "DROP TABLE IF EXISTS derived.public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain RENAME TO public_fim_domain_retired;\n", + "ALTER TABLE derived.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "'''\n", + "execute_sql(sql)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "bb797856-e530-410e-9b83-ceb182b99ab9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from helper_functions.shared_functions import execute_sql, move_data_from_viz_to_egis, sql_to_dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "17b174ce-c4ea-4703-9d80-d3946f5a2eac", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Successfully copied derived.public_fim_domain from the VIZ DB to reference.public_fim_domain_ondeck in the EGIS DB!\n" + ] + } + ], + "source": [ + "move_data_from_viz_to_egis('derived.public_fim_domain', 'reference.public_fim_domain_ondeck')" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "7b288760-01c8-47ed-8524-bae3e746994d", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "execute_sql('''\n", + " DROP TABLE IF EXISTS reference.public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain RENAME TO public_fim_domain_retired;\n", + " ALTER TABLE reference.public_fim_domain_ondeck RENAME TO public_fim_domain;\n", + "''', 'egis')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f909d2ea-7c64-4ee3-a4af-c8c4fef24a41", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "conda_python3", + "language": "python", + "name": "conda_python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}