From 83a6147c5eaa788136e933515cba041f84644102 Mon Sep 17 00:00:00 2001 From: Chao <30786839+ChaoEcohydroRS@users.noreply.github.com> Date: Sun, 5 Jan 2025 20:40:05 -0500 Subject: [PATCH 1/5] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 812d929..ae7206e 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ ATLAS Ocean Kd (AOK) - calculating ocean Kd values using ICESat-2 > [!WARNING] > This package is currently under active development to produce the most reliable calculations of Kd values. > The code is therefore unstable, may have significant uncertainties, and should be used with caution. +> This repository contains Python code developed in collaboration to replicate the functionality of the original MATLAB scripts (https://github.com/emilyeidam/icesat-2_kdph +) by Dr. Emily Eidam (emily.eidam@oregonstate.edu). The code facilitates processing ICESat-2 data to calculate the diffuse attenuation coefficient (Kd) based on space-based lidar photon profiles, following methods described in the original MATLAB code. Please cite appropriately both Python and the MATLAB version under the GNU GPLv3 license if you use this code in your research. [![All Contributors](https://img.shields.io/github/all-contributors/icesat2py/aok?color=ee8449&style=flat-square)](#contributors) From 0f695e05af49086ef99ceba0838a6487d8ed00e0 Mon Sep 17 00:00:00 2001 From: Chao <30786839+ChaoEcohydroRS@users.noreply.github.com> Date: Sun, 5 Jan 2025 20:51:56 -0500 Subject: [PATCH 2/5] Update README.md --- README.md | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index ae7206e..1ef0cc0 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,35 @@ ATLAS Ocean Kd (AOK) - calculating ocean Kd values using ICESat-2 > This package is currently under active development to produce the most reliable calculations of Kd values. > The code is therefore unstable, may have significant uncertainties, and should be used with caution. > This repository contains Python code developed in collaboration to replicate the functionality of the original MATLAB scripts (https://github.com/emilyeidam/icesat-2_kdph -) by Dr. Emily Eidam (emily.eidam@oregonstate.edu). The code facilitates processing ICESat-2 data to calculate the diffuse attenuation coefficient (Kd) based on space-based lidar photon profiles, following methods described in the original MATLAB code. Please cite appropriately both Python and the MATLAB version under the GNU GPLv3 license if you use this code in your research. +) by Dr. Emily Eidam (emily.eidam@oregonstate.edu). The code facilitates processing ICESat-2 data to calculate the diffuse attenuation coefficient (Kd) based on space-based lidar photon profiles, following methods described in the original MATLAB code. Please cite appropriately both Python and the MATLAB version under the GNU GPLv3 license (can you check which one is better @Jessica) if you use this code in your research. [![All Contributors](https://img.shields.io/github/all-contributors/icesat2py/aok?color=ee8449&style=flat-square)](#contributors) # Quickstart -## Calculating Kd -Coming soon... +# Installation -## Installation -Coming soon... +1. Clone the repository: + + ```bash + git clone https://github.com/ChaoEcohydroRS/icesat-2_kdph_py.git + cd IS2_Kd_Proj + + +2. Install the required packages: + ``` + pip install -r requirements.txt + ``` + +3. Ensure .h5 files are placed in the appropriate default folder structure. + +# Usage +1. Edit the config.py file to set up file paths and any parameters. +2. Run the entire workflow through main.py: + + ```bash + python main.py + ``` # Contributing @@ -41,3 +59,12 @@ Our full attribution guidelines are coming soon. We use the [All Contributors Specification](https://allcontributors.org/docs/en/specification) to recognize our incredible [contributor team](CONTRIBUTORS.md). +# Citation +If you use this code, please cite: + +Eidam, E.F., K. Bisson, C. Wang, C. Walker, and A. Gibbons (2024). ICESat-2 and ocean particulates: A roadmap for calculating Kd from space-based lidar photon profiles. Remote Sensing of Environment. Vol. 311. https://doi.org/10.1016/j.rse.2024.114222 + +# License +This project is licensed under the GNU GPLv3 license. + + From dc4698317f0af8dce9d01ac5cdfc16835fc1023e Mon Sep 17 00:00:00 2001 From: Chao <30786839+ChaoEcohydroRS@users.noreply.github.com> Date: Sun, 5 Jan 2025 21:04:22 -0500 Subject: [PATCH 3/5] Add files via upload --- .../00_experiment_with_erddap.ipynb | 185 + icesat2_kdph-main/01_find_all_stations.ipynb | 720 + .../02_match_argo2granules_ipx.ipynb | 2130 ++ .../02_match_buoys2granules_ipx.ipynb | 7685 ++++++ .../02_match_ships2granules_ipx.ipynb | 1838 ++ .../02_match_turbidity2granules_ipx.ipynb | 22955 ++++++++++++++++ icesat2_kdph-main/03_calckd_buoys.ipynb | 1490 + .../03_load_turbidity_data.ipynb | 191 + icesat2_kdph-main/03_proc_icesat4matlab.ipynb | 618 + .../04_plot_kd2kd_comparison.ipynb | 216 + .../04_plot_kd2turb_comparison.ipynb | 242 + icesat2_kdph-main/LICENSE | 21 + icesat2_kdph-main/Main.ipynb | 363 + .../__pycache__/config.cpython-311.pyc | Bin 0 -> 495 bytes .../__pycache__/ioos_mod.cpython-39.pyc | Bin 0 -> 2734 bytes icesat2_kdph-main/config.py | 112 + .../data/Dataset_Kd_Paper_2018.csv | 11681 ++++++++ icesat2_kdph-main/data/erddaps.json | 374 + .../GetIS2_Data_InSitu_Site_Date.ipynb | 2509 ++ .../atl06_ancillary.ipynb | 369 + .../atl06_subsetting.ipynb | 289 + .../experiment_with_erddap.ipynb | 798 + .../kd_utils/Kd_analysis - Copy.py | 47 + icesat2_kdph-main/kd_utils/Kd_analysis.py | 98 + .../kd_utils/Kd_analysis_premeeting18Nov.py | 264 + .../kd_utils/SeafloorFilterByGEBCO_Module.py | 108 + icesat2_kdph-main/kd_utils/__init__.py | 8 + .../__pycache__/Kd_analysis.cpython-311.pyc | Bin 0 -> 4693 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 792 bytes .../bathy_processing.cpython-311.pyc | Bin 0 -> 7444 bytes .../data_processing.cpython-311.pyc | Bin 0 -> 24126 bytes .../__pycache__/interpolation.cpython-311.pyc | Bin 0 -> 1306 bytes .../sea_photons_analysis.cpython-311.pyc | Bin 0 -> 10976 bytes .../__pycache__/visualization.cpython-311.pyc | Bin 0 -> 13828 bytes .../kd_utils/bathy_processing.py | 158 + icesat2_kdph-main/kd_utils/data_processing.py | 586 + icesat2_kdph-main/kd_utils/interpolation.py | 19 + icesat2_kdph-main/kd_utils/kd_utils.py | 1181 + .../kd_utils/sea_photons_analysis.py | 323 + icesat2_kdph-main/kd_utils/visualization.py | 217 + icesat2_kdph-main/load_icesatcsv.m | 10 + .../results/all_relevant_stations.pkl | Bin 0 -> 923518 bytes icesat2_kdph-main/results/glider_matches.pkl | Bin 0 -> 170527 bytes .../results/labeled_relevant_stations.pkl | Bin 0 -> 941140 bytes icesat2_kdph-main/troubleshoot_ipx.ipynb | 1115 + 45 files changed, 58920 insertions(+) create mode 100644 icesat2_kdph-main/00_experiment_with_erddap.ipynb create mode 100644 icesat2_kdph-main/01_find_all_stations.ipynb create mode 100644 icesat2_kdph-main/02_match_argo2granules_ipx.ipynb create mode 100644 icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb create mode 100644 icesat2_kdph-main/02_match_ships2granules_ipx.ipynb create mode 100644 icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb create mode 100644 icesat2_kdph-main/03_calckd_buoys.ipynb create mode 100644 icesat2_kdph-main/03_load_turbidity_data.ipynb create mode 100644 icesat2_kdph-main/03_proc_icesat4matlab.ipynb create mode 100644 icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb create mode 100644 icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb create mode 100644 icesat2_kdph-main/LICENSE create mode 100644 icesat2_kdph-main/Main.ipynb create mode 100644 icesat2_kdph-main/__pycache__/config.cpython-311.pyc create mode 100644 icesat2_kdph-main/__pycache__/ioos_mod.cpython-39.pyc create mode 100644 icesat2_kdph-main/config.py create mode 100644 icesat2_kdph-main/data/Dataset_Kd_Paper_2018.csv create mode 100644 icesat2_kdph-main/data/erddaps.json create mode 100644 icesat2_kdph-main/examples_from_others/GetIS2_Data_InSitu_Site_Date.ipynb create mode 100644 icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb create mode 100644 icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb create mode 100644 icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb create mode 100644 icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py create mode 100644 icesat2_kdph-main/kd_utils/Kd_analysis.py create mode 100644 icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py create mode 100644 icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py create mode 100644 icesat2_kdph-main/kd_utils/__init__.py create mode 100644 icesat2_kdph-main/kd_utils/__pycache__/Kd_analysis.cpython-311.pyc create mode 100644 icesat2_kdph-main/kd_utils/__pycache__/__init__.cpython-311.pyc create mode 100644 icesat2_kdph-main/kd_utils/__pycache__/bathy_processing.cpython-311.pyc create mode 100644 icesat2_kdph-main/kd_utils/__pycache__/data_processing.cpython-311.pyc create mode 100644 icesat2_kdph-main/kd_utils/__pycache__/interpolation.cpython-311.pyc create mode 100644 icesat2_kdph-main/kd_utils/__pycache__/sea_photons_analysis.cpython-311.pyc create mode 100644 icesat2_kdph-main/kd_utils/__pycache__/visualization.cpython-311.pyc create mode 100644 icesat2_kdph-main/kd_utils/bathy_processing.py create mode 100644 icesat2_kdph-main/kd_utils/data_processing.py create mode 100644 icesat2_kdph-main/kd_utils/interpolation.py create mode 100644 icesat2_kdph-main/kd_utils/kd_utils.py create mode 100644 icesat2_kdph-main/kd_utils/sea_photons_analysis.py create mode 100644 icesat2_kdph-main/kd_utils/visualization.py create mode 100644 icesat2_kdph-main/load_icesatcsv.m create mode 100644 icesat2_kdph-main/results/all_relevant_stations.pkl create mode 100644 icesat2_kdph-main/results/glider_matches.pkl create mode 100644 icesat2_kdph-main/results/labeled_relevant_stations.pkl create mode 100644 icesat2_kdph-main/troubleshoot_ipx.ipynb diff --git a/icesat2_kdph-main/00_experiment_with_erddap.ipynb b/icesat2_kdph-main/00_experiment_with_erddap.ipynb new file mode 100644 index 0000000..17a29cf --- /dev/null +++ b/icesat2_kdph-main/00_experiment_with_erddap.ipynb @@ -0,0 +1,185 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "7c61dc4e-92fc-456f-83cc-59ac2f81e80e", + "metadata": {}, + "outputs": [], + "source": [ + "from erddapy import ERDDAP\n", + "import pandas as pd\n", + "import json\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "184e085b-8ab3-4074-991e-13896f68ffe3", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['https://erddap.observations.voiceoftheocean.org/erddap/',\n", + " 'https://erddap.ogsl.ca/erddap/',\n", + " 'https://coastwatch.pfeg.noaa.gov/erddap/',\n", + " 'https://apdrc.soest.hawaii.edu/erddap/',\n", + " 'https://www.ncei.noaa.gov/erddap/',\n", + " 'https://erddap.bco-dmo.org/erddap/',\n", + " 'https://erddap.emodnet.eu/erddap/',\n", + " 'https://erddap.emodnet-physics.eu/erddap/',\n", + " 'https://erddap.marine.ie/erddap/',\n", + " 'https://cwcgom.aoml.noaa.gov/erddap/',\n", + " 'https://erddap.sensors.ioos.us/erddap/',\n", + " 'https://erddap.axiomdatascience.com/erddap/',\n", + " 'http://erddap.cencoos.org/erddap/',\n", + " 'http://www.neracoos.org/erddap/',\n", + " 'https://gliders.ioos.us/erddap/',\n", + " 'https://pae-paha.pacioos.hawaii.edu/erddap/',\n", + " 'https://sccoos.org/erddap/', 'http://erddap.secoora.org/erddap/',\n", + " 'http://osmc.noaa.gov/erddap/', 'http://dap.onc.uvic.ca/erddap/',\n", + " 'https://oceanwatch.pifsc.noaa.gov/erddap/',\n", + " 'https://erddap.dataexplorer.oceanobservatories.org/erddap/',\n", + " 'https://erddap-goldcopy.dataexplorer.oceanobservatories.org/erddap/',\n", + " 'https://members.oceantrack.org/erddap/',\n", + " 'http://www.myroms.org:8080/erddap/',\n", + " 'http://tds.marine.rutgers.edu/erddap/',\n", + " 'https://comet.nefsc.noaa.gov/erddap/',\n", + " 'https://opendap.co-ops.nos.noaa.gov/erddap/',\n", + " 'https://gcoos5.geos.tamu.edu/erddap/',\n", + " 'https://gcoos4.tamu.edu/erddap/',\n", + " 'https://coastwatch.glerl.noaa.gov/erddap/',\n", + " 'https://spraydata.ucsd.edu/erddap/',\n", + " 'https://salishsea.eos.ubc.ca/erddap/',\n", + " 'http://bmlsc.ucdavis.edu:8080/erddap/',\n", + " 'https://upwell.pfeg.noaa.gov/erddap/',\n", + " 'https://bluehub.jrc.ec.europa.eu/erddap/',\n", + " 'https://www.ifremer.fr/erddap/',\n", + " 'https://ferret.pmel.noaa.gov/pmel/erddap',\n", + " 'https://ferret.pmel.noaa.gov/alamo/erddap/',\n", + " 'https://ferret.pmel.noaa.gov/socat/erddap/',\n", + " 'https://catalogue.hakai.org/erddap/',\n", + " 'https://wilson.coas.oregonstate.edu/erddap/',\n", + " 'https://polarwatch.noaa.gov/erddap/',\n", + " 'http://nrm-erddap.nci.org.au/erddap/',\n", + " 'https://geoport.usgs.esipfed.org/erddap/',\n", + " 'https://erddap.incois.gov.in/erddap/',\n", + " 'https://erddap.ichec.ie/erddap/',\n", + " 'https://www.smartatlantic.ca/erddap/',\n", + " 'https://erddap.griidc.org/erddap/', 'https://atn.ioos.us/erddap/',\n", + " 'https://pub-data.diver.orr.noaa.gov/erddap/',\n", + " 'https://jeodpp.jrc.ec.europa.eu/services/erddap/',\n", + " 'https://erddap.gcoos.org/erddap/',\n", + " 'https://basin.ceoe.udel.edu/erddap/',\n", + " 'https://cioosatlantic.ca/erddap/',\n", + " 'https://data.cioospacific.ca/erddap/',\n", + " 'http://erddap.emso.eu:8080/erddap/',\n", + " 'http://erddap.sochic-h2020.eu/erddap/',\n", + " 'https://coastwatch.noaa.gov/erddap/',\n", + " 'https://canwinerddap.ad.umanitoba.ca/erddap/index.html',\n", + " 'https://oceanview.pfeg.noaa.gov/erddap/index.html',\n", + " 'https://erddap.oa.iode.org/erddap/'], dtype=object)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load a list of all the ERDDAPs and their urls.\n", + "# This is saved as a JSON with the code bc I cant get the direct link to the git site to work.\n", + "f = open('erddaps.json')\n", + "data_json = pd.read_json(f)\n", + "erddap_links = data_json['url'].unique()\n", + "\n", + "erddap_links=erddap_links\n", + "\n", + "erddap_links\n", + "# # load in all possible erddap servers straight from site (not working...why??):\n", + "# url = 'https://github.com/IrishMarineInstitute/awesome-erddap/blob/df70c66a0784a384f398492d356df46dae4281d4/erddaps.json'\n", + "# response = urllib.request.urlopen(url)\n", + "# data_json = json.loads(response.read())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aae785f2-b5f0-4712-bb8d-5730e22537f2", + "metadata": {}, + "outputs": [], + "source": [ + "# set up for the ERDDAP API\n", + "e = ERDDAP(\n", + " server=\"https://erddap.bco-dmo.org/erddap\", # pick a specific ERDDAP server\n", + " protocol=\"tabledap\", # pick if you want grid(raster) or table data\n", + " response=\"csv\") # pick type of data output\n", + "e.dataset_id = \"bcodmo_dataset_817952\" # define the dataset on that ERDDAP server\n", + "\n", + "# define by space/time/variable\n", + "e.constraints = {\n", + " \"time>=\": \"2017-01-13T00:00:00Z\",\n", + " \"time<=\": \"2017-01-16T23:59:59Z\"}\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4bdc3fd2-15ed-4794-bc84-0cec694410aa", + "metadata": {}, + "outputs": [], + "source": [ + "# look at the station metadata for this query:\n", + "info_url = e.get_info_url()\n", + "pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fe6099f-7dc1-468a-bfcd-3f2ea4729c79", + "metadata": {}, + "outputs": [], + "source": [ + "# define the variables you want to download (or leave blank and download all columns)\n", + "e.variables = [\n", + " \"longitude\",\n", + " \"latitude\",\n", + " \"time\",\n", + " \"Temperature\"]\n", + "\n", + "# or load the data into a dataframe\n", + "url = e.get_download_url()\n", + "df_bcodmo = e.to_pandas(parse_dates=True)\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/01_find_all_stations.ipynb b/icesat2_kdph-main/01_find_all_stations.ipynb new file mode 100644 index 0000000..0c76d9a --- /dev/null +++ b/icesat2_kdph-main/01_find_all_stations.ipynb @@ -0,0 +1,720 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "842adedb", + "metadata": {}, + "source": [ + "Goal: find all stations with any relevant data in Oct 2018 - Dec 2023\n", + "\n", + "Order of operations:\n", + "- Find all active stations in this time frame\n", + "- get dataset info for each that could match \n", + "- check variable names for key words\n", + "- save that dataset location and active time range" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3e8e3110-5c8f-47e5-b807-23e3bedb6604", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "# pip install --quiet erddapy" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "141611e8", + "metadata": {}, + "outputs": [], + "source": [ + "from erddapy import ERDDAP\n", + "import pandas as pd\n", + "import numpy as np\n", + "import urllib.request\n", + "import json \n", + "import re\n", + "\n", + "pd.set_option('display.max_rows', None)\n", + "pd.set_option('display.max_columns', None)\n", + "\n", + "# help(ERDDAP.get_search_url) " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4e6dbb59", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(62,)\n" + ] + } + ], + "source": [ + "# load a list of all the ERDDAPs and their urls.\n", + "# This is saved as a JSON with the code bc I cant get the direct link to the git site to work.\n", + "f = open('erddaps.json')\n", + "data_json = pd.read_json(f)\n", + "erddap_links = data_json['url'].unique()\n", + "\n", + "erddap_links=erddap_links\n", + "\n", + "print(erddap_links)\n", + "# # load in all possible erddap servers straight from site (not working...why??):\n", + "# url = 'https://github.com/IrishMarineInstitute/awesome-erddap/blob/df70c66a0784a384f398492d356df46dae4281d4/erddaps.json'\n", + "# response = urllib.request.urlopen(url)\n", + "# data_json = json.loads(response.read())\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "606c95c1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "----No matching sites exist\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "----No matching sites exist\n", + "----No matching sites exist\n", + "-Saving matching sites\n", + "32426\n" + ] + } + ], + "source": [ + "# try searching for all possibly matching stations for this time (there will be a ton)\n", + "\n", + "\n", + "min_time = \"2018-10-01T00:00:00Z\"\n", + "max_time = \"2024-01-01T00:00:00Z\"\n", + "\n", + "kw = {\n", + " \"min_time\": min_time,\n", + " \"max_time\": max_time,\n", + "}\n", + "\n", + "# save a dataframe of every station that has data in the range\n", + "# this is a fast loop that makes the next (very slow) loop faster\n", + "\n", + "# initialize empty lists\n", + "allsites = list()\n", + "allurl = []\n", + "for orgs in erddap_links:\n", + " # print('Searching ' + orgs)\n", + " \n", + " # start making the erddap object for this erddap url \n", + " e = ERDDAP(\n", + " server=orgs, \n", + " protocol=\"tabledap\", # Want table data (not a grid map of data) \n", + " response=\"csv\") #in csv format for pandas\n", + "\n", + " url = e.get_search_url(search_for='', response=\"csv\", **kw)# search for a match to our time/location\n", + " try:\n", + " temp = pd.read_csv(url)[\"Dataset ID\"].unique() # try to save the data\n", + " except:\n", + " print(\"----No matching sites exist\") # ignore this entry if there is no data\n", + " else:\n", + " print(\"-Saving matching sites\")\n", + " allsites.extend(temp) # save the site name(s)\n", + " for _ in range(len(temp)): allurl.append(orgs) # save a url for each site\n", + "\n", + "# add blank columns for saving the time range and lat/lon range for each match\n", + "FF = pd.DataFrame(allsites,columns=['sites'])\n", + "FF = FF.assign(url=allurl)\n", + "FF[\"time_coverage_start\"] = np.nan\n", + "FF[\"time_coverage_end\"] = np.nan\n", + "FF[\"geospatial_lat_min\"] = np.nan\n", + "FF[\"geospatial_lat_max\"] = np.nan\n", + "FF[\"geospatial_lon_min\"] = np.nan\n", + "FF[\"geospatial_lon_max\"] = np.nan\n", + "FF[\"check_sum\"] = 1\n", + "# note: some sites have messy metadata (eg listing lat/lon everywhere) and will show up as a match even when there is no relevant data.\n", + "print(len(FF))\n", + "del e" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "2f14c6ec", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "100\n", + "200\n", + "300\n", + "400\n", + "500\n", + "600\n", + "700\n", + "800\n", + "900\n", + "1000\n", + "1100\n", + "1200\n", + "1300\n", + "1400\n", + "1500\n", + "1600\n", + "1700\n", + "1800\n", + "1900\n", + "2000\n", + "2100\n", + "2200\n", + "2300\n", + "2400\n", + "2500\n", + "2600\n", + "2700\n", + "2800\n", + "2900\n", + "3000\n", + "3100\n", + "3200\n", + "3300\n", + "3400\n", + "3500\n", + "3600\n", + "3700\n", + "3800\n", + "3900\n", + "4000\n", + "4100\n", + "4200\n", + "4300\n", + "4400\n", + "4500\n", + "4600\n", + "4700\n", + "4800\n", + "4900\n", + "5000\n", + "5100\n", + "5200\n", + "5300\n", + "5400\n", + "5500\n", + "5600\n", + "5700\n", + "5800\n", + "5900\n", + "6000\n", + "6100\n", + "6200\n", + "6300\n", + "6400\n", + "6500\n", + "6600\n", + "6700\n", + "6800\n", + "6900\n", + "7000\n", + "7100\n", + "7200\n", + "7300\n", + "7400\n", + "7500\n", + "7600\n", + "7700\n", + "7800\n", + "7900\n", + "8000\n", + "8100\n", + "8200\n", + "8300\n", + "8400\n", + "8500\n", + "8600\n", + "8700\n", + "8800\n", + "8900\n", + "9000\n", + "9100\n", + "9200\n", + "9300\n", + "9400\n", + "9500\n", + "9600\n", + "9700\n", + "9800\n", + "9900\n", + "10000\n", + "10100\n", + "10200\n", + "10300\n", + "10400\n", + "10500\n", + "10600\n", + "10700\n", + "10800\n", + "10900\n", + "11000\n", + "11100\n", + "11200\n", + "11300\n", + "11400\n", + "11500\n", + "11600\n", + "11700\n", + "11800\n", + "11900\n", + "12000\n", + "12100\n", + "12200\n", + "12300\n", + "12400\n", + "12500\n", + "12600\n", + "12700\n", + "12800\n", + "12900\n", + "13000\n", + "13100\n", + "13200\n", + "13300\n", + "13400\n", + "13500\n", + "13600\n", + "13700\n", + "13800\n", + "13900\n", + "14000\n", + "14100\n", + "14200\n", + "14300\n", + "14400\n", + "14500\n", + "14600\n", + "14700\n", + "14800\n", + "14900\n", + "15000\n", + "15100\n", + "15200\n", + "15300\n", + "15400\n", + "15500\n", + "15600\n", + "15700\n", + "15800\n", + "15900\n", + "16000\n", + "16100\n", + "16200\n", + "16300\n", + "16400\n", + "16500\n", + "16600\n", + "16700\n", + "16800\n", + "16900\n", + "17000\n", + "17100\n", + "17200\n", + "17300\n", + "17400\n", + "17500\n", + "17600\n", + "17700\n", + "17800\n", + "17900\n", + "18000\n", + "18100\n", + "18200\n", + "18300\n", + "18400\n", + "18500\n", + "18600\n", + "18700\n", + "18800\n", + "18900\n", + "19000\n", + "19100\n", + "19200\n", + "19300\n", + "19400\n", + "19500\n", + "19600\n", + "19700\n", + "19800\n", + "19900\n", + "20000\n", + "20100\n", + "20200\n", + "20300\n", + "20400\n", + "20500\n", + "20600\n", + "20700\n", + "20800\n", + "20900\n", + "21000\n", + "21100\n", + "21200\n", + "21300\n", + "21400\n", + "21500\n", + "21600\n", + "21700\n", + "21800\n", + "21900\n", + "22000\n", + "22100\n", + "22200\n", + "22300\n", + "22400\n", + "22500\n", + "22600\n", + "22700\n", + "22800\n", + "22900\n", + "23000\n", + "23100\n", + "23200\n", + "23300\n", + "23400\n", + "23500\n", + "23600\n", + "23700\n", + "23800\n", + "23900\n", + "24000\n", + "24100\n", + "24200\n", + "24300\n", + "24400\n", + "24500\n", + "24600\n", + "24700\n", + "24800\n", + "24900\n", + "25000\n", + "25100\n", + "25200\n", + "25300\n", + "25400\n", + "25500\n", + "25600\n", + "25700\n", + "25800\n", + "25900\n", + "26000\n", + "26100\n", + "26200\n", + "26300\n", + "26400\n", + "26500\n", + "26600\n", + "26700\n", + "26800\n", + "26900\n", + "27000\n", + "27100\n", + "27200\n", + "27300\n", + "27400\n", + "27500\n", + "27600\n", + "27700\n", + "27800\n", + "27900\n", + "28000\n", + "28100\n", + "28200\n", + "28300\n", + "28400\n", + "28500\n", + "28600\n", + "28700\n", + "28800\n", + "28900\n", + "29000\n", + "29100\n", + "29200\n", + "29300\n", + "29400\n", + "29500\n", + "29600\n", + "29700\n", + "29800\n", + "29900\n", + "30000\n", + "30100\n", + "30200\n", + "30300\n", + "30400\n", + "30500\n", + "30600\n", + "30700\n", + "30800\n", + "30900\n", + "31000\n", + "31100\n", + "31200\n", + "31300\n", + "31400\n", + "31500\n", + "31600\n", + "31700\n", + "31800\n", + "31900\n", + "32000\n", + "32100\n", + "32200\n", + "32300\n", + "32400\n" + ] + } + ], + "source": [ + "# now search for matching keywords in each erddap site found above (~40k entries)\n", + "# I only pull in metadata from ERDDAP (no actual data)\n", + "# this cell takes a looooong time (2 h?)\n", + "searchterms = r\"chl|turb|sedi|par|phot|secchi|ssc\"\n", + "\n", + "for jj in range(len(FF)):\n", + " if jj % 100 ==0:\n", + " print(jj)# give a printout every 100 for my sanity\n", + " \n", + " # make the info URL for this site for the full icesat-2 time range\n", + " e = ERDDAP(server=FF['url'][jj], protocol=\"tabledap\", response=\"csv\")\n", + " e.dataset_id = FF['sites'][jj]\n", + " e.constraints = {\"time>=\": min_time, \"time<=\": max_time}\n", + " info_url = e.get_info_url()\n", + "# print(info_url)\n", + "\n", + " # make a dataframe for all the metadata for this station\n", + " # some of these urls are bogus - if fail then fill with NaNs\n", + " try:\n", + " df = pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n", + " except:\n", + " FF.loc[jj,\"check_sum\"] = np.nan\n", + "# print(str(jj),' does not exist') \n", + " else:\n", + " # search the Variable Names for relevant measurements and minimum amount of metadata (lat/lon)\n", + " idx = df[\"Variable Name\"].str.contains(searchterms, flags = re.IGNORECASE)\n", + " if any(idx==True)==True:# if there IS a relevant variable \n", + " e.constraints = {}# find the entire time range for the station and its location\n", + " info_url = e.get_info_url() # just get metadata instead of downloading data(e.get_download_url)\n", + " try:\n", + " df = pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n", + " except:\n", + " FF.loc[jj,\"check_sum\"] = np.nan\n", + "# print(str(jj),' does not exist')\n", + " else:\n", + "\n", + " # sometimes metadata is missing - leave blank if any is empty\n", + " try:\n", + " FF.loc[jj,\"time_coverage_start\"] = df.loc[df['Attribute Name']=='time_coverage_start', 'Value'].item()\n", + " except:\n", + " pass\n", + "\n", + " try:\n", + " FF.loc[jj,\"time_coverage_end\"] = df.loc[df['Attribute Name']=='time_coverage_end', 'Value'].item()\n", + " except:\n", + " pass\n", + "\n", + " try:\n", + " FF.loc[jj,\"geospatial_lat_min\"] = df.loc[df['Attribute Name']=='geospatial_lat_min', 'Value'].item()\n", + " except:\n", + " pass\n", + "\n", + " try:\n", + " FF.loc[jj,\"geospatial_lat_max\"] = df.loc[df['Attribute Name']=='geospatial_lat_max', 'Value'].item()\n", + " except:\n", + " pass\n", + "\n", + " try:\n", + " FF.loc[jj,\"geospatial_lon_min\"] = df.loc[df['Attribute Name']=='geospatial_lon_min', 'Value'].item()\n", + " except:\n", + " pass\n", + "\n", + " try:\n", + " FF.loc[jj,\"geospatial_lon_max\"] = df.loc[df['Attribute Name']=='geospatial_lon_max', 'Value'].item()\n", + " except:\n", + " pass\n", + "\n", + " else: # otherwise ignore this site\n", + "# print(str(jj),' has no relevant data')\n", + " FF.loc[jj,\"check_sum\"] = np.nan\n", + "\n", + "# remove any entries that failed\n", + "FF = FF.dropna(subset=\"check_sum\") \n", + "FF.reset_index(drop=True, inplace=True)\n", + "FF = FF.drop(columns=\"check_sum\")\n", + "# make any text entries into actual numbers\n", + "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", + "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", + "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", + "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", + "# save for future reference\n", + "FF.to_pickle(\"all_relevant_stations.pkl\")\n", + "\n", + "# also save a csv for curious viewers\n", + "FF_save.to_csv('erddap_station_search_results.csv',index=False)\n", + "print(len(FF_save))\n", + "FF_save" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d4d4d48", + "metadata": {}, + "outputs": [], + "source": [ + "# after running that slow code I realized that I didnt save enough information...\n", + "\n", + "\n", + "# add columns to identify which type of data is present in each dataset\n", + "lib = {'buoy','glider','ship','turbid','ssc','photo','chl','radiation'}\n", + "\n", + "FF[\"buoy\"] = False\n", + "FF[\"glider\"] = False\n", + "FF[\"ship\"] = False\n", + "FF[\"turbid\"] = False\n", + "FF[\"ssc\"] = False\n", + "FF[\"photo\"] = False\n", + "FF[\"chl\"] = False\n", + "FF['radiation'] = False\n", + "FF['bad'] = False\n", + "\n", + "for jj in range(len(FF)):\n", + " if jj % 100 ==0:\n", + " print(jj)# give a printout every 100 for my sanity\n", + "\n", + " # make the info URL for this site for this time range\n", + " e = ERDDAP(server=FF['url'][jj],\n", + " protocol=\"tabledap\",\n", + " response=\"csv\"\n", + " )\n", + " e.dataset_id = FF['sites'][jj]\n", + " # e.constraints = {\"time>=\": min_time, \"time<=\": max_time}\n", + " info_url = e.get_info_url()\n", + " try:\n", + " ds_info = pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n", + " except:\n", + " FF.loc[jj,\"bad\"] = True\n", + " else:\n", + " for kwd in lib:\n", + " idx = ds_info[\"Value\"].str.contains(kwd, flags = re.IGNORECASE)\n", + " if any(idx==True)==True:\n", + " FF.loc[jj,kwd] = True\n", + "\n", + "FF = FF[FF.bad == False] \n", + "FF.reset_index(drop=True, inplace=True)\n", + "FF = FF.drop(columns=\"bad\")\n", + "FF.to_pickle(\"labeled_relevant_stations.pkl\")\n", + "\n", + "# now we can look at how many stations are available for each data type\n", + "print(len(FF[(FF.buoy == True) & (FF.radiation == True)]))\n", + "FF[(FF.ship == True) & (FF.radiation == True)]" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/02_match_argo2granules_ipx.ipynb b/icesat2_kdph-main/02_match_argo2granules_ipx.ipynb new file mode 100644 index 0000000..87a661b --- /dev/null +++ b/icesat2_kdph-main/02_match_argo2granules_ipx.ipynb @@ -0,0 +1,2130 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "aaeebceb-4eeb-4e6c-90f0-be6360b21969", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "The goal is to find matching ICESat-2 ATL03 photon data matching the times and lat/lon of the published Kd values from BGC ARGO floats (10.5281/zenodo.8228242). \n", + "\n", + "The Kd CSV file was edited after download from Zenodo. Kd calculations were sorted by date. This pre-processing could jsut as easily be done in python but I already had the csv open to look at the contents. Edited version is called Dataset_Kd_Paper_2018. \n", + "\n", + "Actions:\n", + "- Load lat/lon and time for each Kd calculation\n", + "- Check if there is a matching pass for ICESat-2 within +- x hours and x km.\n", + "- The notebook saves pickle files of GeoDataFrames (pandas), appending the matching row of the spreadsheet of latlontimes. \n", + "- These GDFs are the output of the icesat2.atl03sp search function. The contents of each GDF can be found here: https://slideruleearth.io/web/rtd/user_guide/ICESat-2.html#photon-segments\n", + "- Also saves a new copy of Dataset_Kd_Paper_2018_dep with only the matching kd rows.\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2256384a-86a8-43c0-801b-5953747525ba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet rtree\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet hdbscan" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8f821b93-0ec9-41db-af0e-61e26934504d", + "metadata": {}, + "outputs": [], + "source": [ + "import icepyx as ipx\n", + "from datetime import datetime, timedelta\n", + "import time\n", + "import os\n", + "import re\n", + "import glob\n", + "import pandas as pd\n", + "import numpy as np\n", + "import logging\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from config import workspace_path, atl03_path,\\\n", + " other_data_path ,shoreline_data ,gebco_path ,\\\n", + " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", + " ignore_subsurface_height_thres ,output_path \n", + "\n", + "\n", + " \n", + "from kd_utils.data_processing import load_data, \\\n", + " extract_file_params, \\\n", + " Extract_sea_photons, \\\n", + " filter_photon_dataset_by_hull_area\n", + " \n", + "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", + " get_sea_surface_height\n", + " \n", + " \n", + "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", + "\n", + "from kd_utils.visualization import plot_photon_height, \\\n", + " plot_kd_photons, \\\n", + " plot_filtered_seafloor_photons\n", + " \n", + "from kd_utils.Kd_analysis import process_kd_calculation\n", + "\n", + "from kd_utils.interpolation import geoid_correction, \\\n", + " refraction_correction, \\\n", + " interpolate_labels, \\\n", + " apply_interpolation\n", + "\n", + "\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "# pd.set_option('display.max_rows', None)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", + "metadata": {}, + "outputs": [], + "source": [ + "def buoy_bound_box(lat,lon,buffer_km):\n", + " # define a buffer distance around the buoy to search for icesat-2 data\n", + " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", + " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", + " # define bounding box around the buoy (WSEN)\n", + " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", + " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", + " # region = sliderule.toregion(bbox)\n", + " minx = lon - lon_buff\n", + " miny = lat - lat_buff\n", + " maxx = lon + lon_buff\n", + " maxy = lat + lat_buff\n", + "\n", + " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", + " poly = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", + "\n", + " return poly\n", + "\n", + "def main():\n", + " try:\n", + " \n", + " # Load IS2 and extract sea photons\n", + " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", + " \n", + " ## For debugging\n", + " #IS2_atl03_beams=['gt1r']\n", + " \n", + " # Check beam types and ensure we have what we want (e.g., strong beams)\n", + " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", + " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", + " if not IS2_atl03_beams:\n", + " print('No Strong Beam')\n", + " # sys.exit() # Terminate the program\n", + " else:\n", + " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", + " \n", + " # Extract sea photon by applying the land mask\n", + " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", + " \n", + " \n", + " # Main processing function to apply binning beam-by-beam \n", + " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", + " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", + " \n", + " \n", + " # filter to get subsurface photons\n", + " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", + " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", + " \n", + " \n", + " # Visualization of the filtered seafloor photons\n", + " # Uncomment the following lines to visualize if needed\n", + " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", + " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", + " # sea_photon_dataset=sea_photon_dataset, \n", + " # sea_surface_height=sea_surface_height, \n", + " # output_path=output_path)\n", + " \n", + " ########################\n", + " # Todo: move the filter to the begining\n", + " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", + " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", + " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", + " # Filter out points below the seafloor\n", + " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", + " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", + " ]\n", + " \n", + " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", + " \n", + " #Filter dataframe based on beam list\n", + " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", + " \n", + " ###################################\n", + " ### Todo: move the filter to the begining\n", + " # Steps to standardize KD calculation by filtering out \n", + " # segments lacking sufficient subsurface photons.\n", + " # Approach: Use the ConvexHull of photons within \n", + " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", + " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", + " \n", + " # Apply filtering based on hull area if desired\n", + " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", + " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", + " )\n", + " \n", + " # Visualization\n", + " # Uncomment the following line to visualize if needed\n", + " \n", + " # plot_target_beam=['gt1l']\n", + " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", + " \n", + " ########################################### \n", + " # calculate kd and save it to table\n", + " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", + " \n", + " \n", + " ## Todo move this part into a function so that it will not looks too busy here\n", + " # Extract the timestamp using regex and use it to set the output file name\n", + " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", + " timestamp = match.group(1) if match else \"unknown\"\n", + " \n", + " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", + " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", + " \n", + " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", + " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", + " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", + " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", + " def find_closest(group):\n", + " if not group.empty:\n", + " center = group['relative_AT_dist_center'].iloc[0]\n", + " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", + " closest_index = group['dist_to_center'].idxmin()\n", + " return group.loc[[closest_index]]\n", + " else:\n", + " return pd.DataFrame(columns=group.columns)\n", + " \n", + " # Filter out empty or all-NA entries\n", + " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", + " \n", + " # Group by 'lat_bins' and apply the find_closest function\n", + " closest_to_center = unique_photon_dataset_filtered\\\n", + " .groupby('lat_bins', observed=False)\\\n", + " .apply(find_closest, include_groups=True)\n", + " # .reset_index()\n", + " \n", + " # Remove the index without resetting it if 'lat_bins' already exists\n", + " closest_to_center.index = closest_to_center.index.droplevel(0)\n", + " \n", + " # Ensure relevant entries are excluded before concatenation\n", + " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", + " \n", + " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", + " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", + " \n", + " \n", + " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", + " \n", + " logging.info(\"SUCCESS!\")\n", + " \n", + " except Exception as e:\n", + " logging.error(f\"An error occurred: {e}\")\n", + "\n", + "# if __name__ == '__main__':\n", + " \n", + "# # Get arguments function\n", + "# args = get_args() \n", + " \n", + "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", + " \n", + "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", + " \n", + "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", + " \n", + "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", + " \n", + "# #Get the gebco list\n", + "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", + "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + "\n", + "# #Initialize with an empty list\n", + "# GEBCO_file_path_lists = []\n", + "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + "# #put the find one into the list\n", + "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + "\n", + " \n", + "# # Get all other necessary parameters\n", + "# horizontal_res = args.horizontal_res\n", + " \n", + "# vertical_res = args.vertical_res\n", + " \n", + "# subsurface_thresh = args.subsurface_thresh\n", + " \n", + "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", + " \n", + "# # When all paramters ready, call the main function\n", + "# main()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "1d72dbef-f954-499f-be76-c1de3233b325", + "metadata": {}, + "outputs": [], + "source": [ + "# load time, lat and lon\n", + "df = pd.read_csv(\"data/Dataset_Kd_Paper_2018.csv\")\n", + "# convert matlab time to datetime objects\n", + "df[\"dt_float\"] = pd.to_datetime(df[\"dt_float\"]-719529,unit='d',utc=True).round('s')\n", + "# remove all rows from before icesat2 launched\n", + "df = df[df[\"dt_float\"]>datetime.fromisoformat('2018-10-01T00:00:00Z')]\n", + "df.reset_index(drop=True, inplace=True)\n", + "# df" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "processing 100/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter your Earthdata Login username: gloverha\n", + "Enter your Earthdata password: ········\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "order ID: 5000005875967\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875967 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875968\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875968 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875969\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875969 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 200/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875970\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875970 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 300/5129\n", + "processing 400/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875971\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875971 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875972\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875972 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 500/5129\n", + "processing 600/5129\n", + "processing 700/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875973\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875973 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875974\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875974 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875975\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875975 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875976\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875976 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875977\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875977 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 800/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875978\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875978 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 900/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875979\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875979 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875980\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875980 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 1000/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875981\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875981 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875982\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875982 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875983\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875983 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875984\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875984 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 1100/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875985\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875985 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875986\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875986 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875987\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875987 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875988\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875988 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 1200/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875989\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875989 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 1500/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875991\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875991 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875992\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875992 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 1600/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875993\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875993 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875994\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875994 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 1700/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875995\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875995 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875996\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875996 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 1800/5129\n", + "processing 1900/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875997\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875997 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875998\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875998 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005875999\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005875999 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 2000/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876000\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876000 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876001\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876001 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876002\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876002 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876003\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876003 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876004\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876004 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 2100/5129\n", + "processing 2200/5129\n", + "processing 2300/5129\n", + "processing 2400/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876005\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876005 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876006\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876006 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876007\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876007 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 2500/5129\n", + "processing 2600/5129\n", + "processing 2700/5129\n", + "processing 2800/5129\n", + "processing 2900/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876008\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876008 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876009\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876009 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876010\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876010 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876011\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876011 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 3000/5129\n", + "processing 3100/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876012\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876012 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876013\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876013 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 3200/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876014\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876014 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876015\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876015 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876016\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876016 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 3300/5129\n", + "processing 3400/5129\n", + "processing 3500/5129\n", + "processing 3600/5129\n", + "processing 3700/5129\n", + "processing 3800/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876018\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876018 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876019\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876019 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876021\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876021 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876022\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876022 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876023\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876023 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876024\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876024 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876025\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876025 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876026\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876026 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876027\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876027 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 3900/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876028\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876028 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876029\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876029 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 4000/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876030\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876030 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 4100/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876031\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876031 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876032\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876032 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876033\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876033 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876034\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876034 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 4200/5129\n", + "processing 4300/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876035\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876035 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876036\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876036 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 4400/5129\n", + "processing 4500/5129\n", + "processing 4600/5129\n", + "processing 4700/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876037\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876037 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876038\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876038 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876039\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876039 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876040\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876040 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876041\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876041 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876042\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876042 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876043\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876043 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 4800/5129\n", + "processing 4900/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876044\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876044 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876045\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876045 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876046\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876046 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876047\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876047 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876048\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876048 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876049\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876049 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 5000/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876050\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876050 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876051\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876051 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 2 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876052\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876052 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "Total number of data order requests is 1 for 2 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876053\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876053 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "processing 5100/5129\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876054\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876054 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n", + "5129\n" + ] + } + ], + "source": [ + "df[\"check_sum\"] = False\n", + "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", + "search_hrs = 12\n", + "search_km = 4\n", + "for jj in range(100,len(df)):\n", + " if jj % 100 ==0:\n", + " print('processing '+str(jj) +'/'+str(len(df)))# give a printout every 100 for my sanity\n", + " # define a search region around the buoy \n", + " lat = df['lat_float'][jj]\n", + " lon = df['lon_float'][jj]\n", + " \n", + " spatial_extent = buoy_bound_box(lat,lon,search_km)\n", + " t_start = (df['dt_float'][jj]-timedelta(hours=search_hrs))\n", + " t_end = (df['dt_float'][jj]+timedelta(hours=search_hrs))\n", + " short_name = 'ATL03'\n", + " date_range = [t_start,t_end]\n", + " region = ipx.Query(short_name, spatial_extent, date_range)\n", + " try:\n", + " region.download_granules('data/')\n", + " print('success')\n", + " df[\"check_sum\"] = True# if data exists and is downloaded - note in the argo csv \n", + " except:\n", + " continue\n", + " \n", + "\n", + "# df = pd.read_pickle('glider_matches.pkl')\n", + "df=df[df[\"check_sum\"]==True]\n", + "print(len(df))\n", + "# df.reset_index(drop=True, inplace=True)\n", + "df.to_csv('results/Dataset_Kd_Paper_2018_dep_4km12h.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:36:01,671 - INFO - ./data/processed_ATL03_20221110022321_07691706_006_01.h5\n", + "2024-12-03 21:36:01,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:36:45,615 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:36:45,616 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:36:45,677 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:36:45,678 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:36:45,770 - INFO - SUCCESS!\n", + "2024-12-03 21:36:45,780 - INFO - ./data/processed_ATL03_20220228153332_10441406_006_01.h5\n", + "2024-12-03 21:36:45,786 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:36:46,193 - INFO - ./data/processed_ATL03_20181031050117_04970112_006_02.h5\n", + "2024-12-03 21:36:46,200 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:36:46,764 - INFO - ./data/processed_ATL03_20210918222329_13331206_006_02.h5\n", + "2024-12-03 21:36:46,770 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:36:47,193 - INFO - ./data/processed_ATL03_20190521030409_08070308_006_02.h5\n", + "2024-12-03 21:36:47,203 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:37:29,816 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:37:29,817 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:37:29,862 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:37:29,862 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:37:29,941 - INFO - SUCCESS!\n", + "2024-12-03 21:37:29,952 - INFO - ./data/processed_ATL03_20210220082739_08911006_006_01.h5\n", + "2024-12-03 21:37:29,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:37:30,599 - INFO - ./data/processed_ATL03_20190626024324_13570302_006_02.h5\n", + "2024-12-03 21:37:30,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:37:51,300 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:37:51,301 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:37:51,405 - INFO - SUCCESS!\n", + "2024-12-03 21:37:51,417 - INFO - ./data/processed_ATL03_20210101105852_01291006_006_01.h5\n", + "2024-12-03 21:37:51,423 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:37:51,893 - INFO - ./data/processed_ATL03_20200210023858_06930606_006_01.h5\n", + "2024-12-03 21:37:51,899 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:37:52,652 - INFO - ./data/processed_ATL03_20221130045019_10761706_006_02.h5\n", + "2024-12-03 21:37:52,658 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l']\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:38:13,287 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-03 21:38:13,330 - INFO - ./data/processed_ATL03_20220821205409_09311602_006_01.h5\n", + "2024-12-03 21:38:13,336 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:38:34,420 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:38:34,421 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:38:34,509 - INFO - SUCCESS!\n", + "2024-12-03 21:38:34,519 - INFO - ./data/processed_ATL03_20220903094331_11221608_006_01.h5\n", + "2024-12-03 21:38:34,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:39:16,009 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:39:16,009 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:39:16,048 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:39:16,048 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:39:16,139 - INFO - SUCCESS!\n", + "2024-12-03 21:39:16,148 - INFO - ./data/processed_ATL03_20210216000557_08241014_006_01.h5\n", + "2024-12-03 21:39:16,156 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:39:58,212 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:39:58,212 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:39:58,271 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:39:58,272 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:39:58,353 - INFO - SUCCESS!\n", + "2024-12-03 21:39:58,363 - INFO - ./data/processed_ATL03_20230131135652_06421801_006_02.h5\n", + "2024-12-03 21:39:58,371 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:41:00,434 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:41:00,434 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:41:00,491 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:41:00,492 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:41:00,549 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:41:00,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:41:00,640 - INFO - SUCCESS!\n", + "2024-12-03 21:41:00,652 - INFO - ./data/processed_ATL03_20230121145754_04891814_006_02.h5\n", + "2024-12-03 21:41:00,658 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:41:42,085 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:41:42,086 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:41:42,147 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:41:42,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:41:42,239 - INFO - SUCCESS!\n", + "2024-12-03 21:41:42,250 - INFO - ./data/processed_ATL03_20191107102440_06340507_006_01.h5\n", + "2024-12-03 21:41:42,256 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:41:42,787 - INFO - ./data/processed_ATL03_20200219140630_08380602_006_01.h5\n", + "2024-12-03 21:41:42,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:41:43,382 - INFO - ./data/processed_ATL03_20221205162609_11601702_006_02.h5\n", + "2024-12-03 21:41:43,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:42:04,851 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:42:04,852 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:42:04,949 - INFO - SUCCESS!\n", + "2024-12-03 21:42:04,963 - INFO - ./data/processed_ATL03_20190902114623_10140406_006_02.h5\n", + "2024-12-03 21:42:04,975 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:42:05,398 - INFO - ./data/processed_ATL03_20190329173700_00070306_006_02.h5\n", + "2024-12-03 21:42:05,404 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:42:46,983 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:42:46,984 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:42:47,005 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:42:47,005 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:42:47,090 - INFO - SUCCESS!\n", + "2024-12-03 21:42:47,100 - INFO - ./data/processed_ATL03_20211014091744_03351302_006_01.h5\n", + "2024-12-03 21:42:47,106 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:43:08,855 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:43:08,855 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:43:08,958 - INFO - SUCCESS!\n", + "2024-12-03 21:43:08,972 - INFO - ./data/processed_ATL03_20210804125607_06401202_006_01.h5\n", + "2024-12-03 21:43:08,979 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:43:50,667 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:43:50,668 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:43:50,728 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:43:50,728 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:43:50,821 - INFO - SUCCESS!\n", + "2024-12-03 21:43:50,833 - INFO - ./data/processed_ATL03_20190613015947_11580302_006_02.h5\n", + "2024-12-03 21:43:50,839 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:44:32,360 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:44:32,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:44:32,415 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:44:32,415 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:44:32,502 - INFO - SUCCESS!\n", + "2024-12-03 21:44:32,512 - INFO - ./data/processed_ATL03_20201020040408_03970902_006_01.h5\n", + "2024-12-03 21:44:32,518 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:45:13,542 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:45:13,542 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:45:13,561 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:45:13,561 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:45:13,648 - INFO - SUCCESS!\n", + "2024-12-03 21:45:13,661 - INFO - ./data/processed_ATL03_20230131140354_06421802_006_02.h5\n", + "2024-12-03 21:45:13,666 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:45:14,087 - INFO - ./data/processed_ATL03_20220126040658_05331402_006_01.h5\n", + "2024-12-03 21:45:14,093 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:46:17,054 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:46:17,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:46:17,088 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:46:17,088 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:46:17,124 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:46:17,125 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:46:17,166 - INFO - SUCCESS!\n", + "2024-12-03 21:46:17,177 - INFO - ./data/processed_ATL03_20210710170614_02601214_006_01.h5\n", + "2024-12-03 21:46:17,186 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:46:58,999 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:46:59,000 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:46:59,054 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:46:59,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:46:59,151 - INFO - SUCCESS!\n", + "2024-12-03 21:46:59,161 - INFO - ./data/processed_ATL03_20220821080545_09221614_006_01.h5\n", + "2024-12-03 21:46:59,167 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:46:59,592 - INFO - ./data/processed_ATL03_20210709162010_02451203_006_01.h5\n", + "2024-12-03 21:46:59,598 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:47:20,595 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:47:20,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:47:20,701 - INFO - SUCCESS!\n", + "2024-12-03 21:47:20,714 - INFO - ./data/processed_ATL03_20190211213415_06940206_006_02.h5\n", + "2024-12-03 21:47:20,723 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:47:41,862 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:47:41,863 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:47:41,958 - INFO - SUCCESS!\n", + "2024-12-03 21:47:41,970 - INFO - ./data/processed_ATL03_20210630030952_00991206_006_01.h5\n", + "2024-12-03 21:47:41,979 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:48:03,132 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:48:03,133 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:48:03,231 - INFO - SUCCESS!\n", + "2024-12-03 21:48:03,246 - INFO - ./data/processed_ATL03_20201116164551_08170908_006_01.h5\n", + "2024-12-03 21:48:03,252 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:48:03,649 - INFO - ./data/processed_ATL03_20200629212148_00690806_006_01.h5\n", + "2024-12-03 21:48:03,656 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:49:05,539 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:49:05,539 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:49:05,549 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:49:05,550 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:49:05,604 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:49:05,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:49:05,689 - INFO - SUCCESS!\n", + "2024-12-03 21:49:05,699 - INFO - ./data/processed_ATL03_20190506031153_05780308_006_02.h5\n", + "2024-12-03 21:49:05,709 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:49:06,125 - INFO - ./data/processed_ATL03_20181213181733_11620114_006_02.h5\n", + "2024-12-03 21:49:06,134 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:49:06,527 - INFO - ./data/processed_ATL03_20210703140243_01521202_006_01.h5\n", + "2024-12-03 21:49:06,534 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:50:09,315 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:50:09,315 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:50:09,371 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:50:09,372 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:50:09,427 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:50:09,427 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:50:09,471 - INFO - SUCCESS!\n", + "2024-12-03 21:50:09,482 - INFO - ./data/processed_ATL03_20191010201542_02130502_006_02.h5\n", + "2024-12-03 21:50:09,488 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:51:13,225 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 21:51:13,225 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:51:13,290 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:51:13,291 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:51:13,352 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:51:13,353 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:51:13,429 - INFO - SUCCESS!\n", + "2024-12-03 21:51:13,446 - INFO - ./data/processed_ATL03_20230305110600_11441803_006_02.h5\n", + "2024-12-03 21:51:13,452 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-03 21:51:13,876 - INFO - ./data/processed_ATL03_20200221023939_08610606_006_01.h5\n", + "2024-12-03 21:51:13,882 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:51:14,683 - INFO - ./data/processed_ATL03_20210211090957_07541006_006_01.h5\n", + "2024-12-03 21:51:14,693 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:51:15,355 - INFO - ./data/processed_ATL03_20190926024902_13750403_006_02.h5\n", + "2024-12-03 21:51:15,362 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 21:51:57,337 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 21:51:57,338 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:51:57,350 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 21:51:57,351 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 21:51:57,397 - INFO - SUCCESS!\n" + ] + } + ], + "source": [ + "h5names = glob.glob('data/processed_*.h5')\n", + "\n", + "\n", + "for jj in range(len(h5names)):\n", + " # code from chao (in Main.ipynb)\n", + " atl03_file_inloop = h5names[jj]\n", + " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", + " # print(ATL03_h5_file_path)\n", + " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", + " # print(shoreline_data_path)\n", + " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", + " # print(GEBCO_full_path)\n", + " OutputPath = os.path.join(workspace_path, output_path)\n", + " # print(OutputPath)\n", + " \n", + " \n", + " #Get the gebco list\n", + " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + " \n", + " #Initialize with an empty list\n", + " GEBCO_file_path_lists = []\n", + " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + " #put the find one into the list\n", + " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + " \n", + " # print(GEBCO_file_path_lists)\n", + " \n", + " # Get all other necessary parameters\n", + " horizontal_res = horizontal_res\n", + " vertical_res = vertical_res\n", + " subsurface_thresh = subsurface_thresh\n", + " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", + " \n", + " # Configure logging\n", + " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", + " \n", + " \n", + " # When all paramters ready, call the main function\n", + " main()\n", + " # delete the hefty h5 file once done with processing - only store calculated kd values\n", + " os.remove(ATL03_h5_file_path)\n", + "\n", + "\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb b/icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb new file mode 100644 index 0000000..b7a05ae --- /dev/null +++ b/icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb @@ -0,0 +1,7685 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "id": "fe17c663-98a1-4c47-b0b8-dbd94cf8a89e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet \"sliderule @ git+https://github.com/SlideRuleEarth/sliderule#subdirectory=clients/python\"" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2256384a-86a8-43c0-801b-5953747525ba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet rtree\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet hdbscan" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8072f95f-1db6-4c31-8af8-293fd665bad4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet erddapy" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8f821b93-0ec9-41db-af0e-61e26934504d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from erddapy import ERDDAP\n", + "from sliderule import sliderule, icesat2, earthdata\n", + "import icepyx as ipx\n", + "from datetime import datetime, timedelta,timezone\n", + "\n", + "import time\n", + "import os\n", + "import re\n", + "import glob\n", + "import pandas as pd\n", + "import numpy as np\n", + "import logging\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# from config import get_args\n", + "from config import workspace_path, atl03_path,\\\n", + " other_data_path ,shoreline_data ,gebco_path ,\\\n", + " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", + " ignore_subsurface_height_thres ,output_path \n", + "\n", + "\n", + " \n", + "from kd_utils.data_processing import load_data, \\\n", + " extract_file_params, \\\n", + " Extract_sea_photons, \\\n", + " filter_photon_dataset_by_hull_area\n", + " \n", + " \n", + "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", + " get_sea_surface_height\n", + " \n", + " \n", + "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", + "\n", + "from kd_utils.visualization import plot_photon_height, \\\n", + " plot_kd_photons, \\\n", + " plot_filtered_seafloor_photons\n", + " \n", + "from kd_utils.Kd_analysis import process_kd_calculation\n", + "\n", + "from kd_utils.interpolation import geoid_correction, \\\n", + " refraction_correction, \\\n", + " interpolate_labels, \\\n", + " apply_interpolation\n", + "\n", + "\n", + "# Configure logging\n", + "# logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", + "sliderule.init(verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", + "metadata": {}, + "outputs": [], + "source": [ + "def fname2datetime(fname):\n", + " y = int(fname[6:10])\n", + " m = int(fname[10:12])\n", + " d = int(fname[12:14])\n", + " H = int(fname[14:16])\n", + " M = int(fname[16:18])\n", + " S = int(fname[18:20])\n", + "\n", + " t = datetime(y,m,d,H,M,S, tzinfo=timezone.utc)\n", + " return t\n", + "\n", + "def buoy_bound_box(lat,lon,buffer_km):\n", + " # define a buffer distance around the buoy to search for icesat-2 data\n", + " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", + " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", + " # define bounding box around the buoy (WSEN)\n", + " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", + " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", + " # region = sliderule.toregion(bbox)\n", + " minx = lon - lon_buff\n", + " miny = lat - lat_buff\n", + " maxx = lon + lon_buff\n", + " maxy = lat + lat_buff\n", + "\n", + " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", + " poly_ipx = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", + " poly_cmr = [{'lon': minx, 'lat': miny},\n", + " {'lon': maxx, 'lat': miny},\n", + " {'lon': maxx, 'lat': maxy},\n", + " {'lon': minx, 'lat': maxy},\n", + " {'lon': minx, 'lat': miny}] # Closing the loop by repeating the first point\n", + "\n", + " return poly_cmr, poly_ipx\n", + "\n", + "def main():\n", + " try:\n", + " \n", + " # Load IS2 and extract sea photons\n", + " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", + " \n", + " ## For debugging\n", + " #IS2_atl03_beams=['gt1r']\n", + " \n", + " # Check beam types and ensure we have what we want (e.g., strong beams)\n", + " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", + " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", + " if not IS2_atl03_beams:\n", + " print('No Strong Beam')\n", + " # sys.exit() # Terminate the program\n", + " else:\n", + " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", + " \n", + " # Extract sea photon by applying the land mask\n", + " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", + " \n", + " \n", + " # Main processing function to apply binning beam-by-beam \n", + " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", + " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", + " \n", + " \n", + " # filter to get subsurface photons\n", + " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", + " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", + " \n", + " \n", + " # Visualization of the filtered seafloor photons\n", + " # Uncomment the following lines to visualize if needed\n", + " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", + " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", + " # sea_photon_dataset=sea_photon_dataset, \n", + " # sea_surface_height=sea_surface_height, \n", + " # output_path=output_path)\n", + " \n", + " ########################\n", + " # Todo: move the filter to the begining\n", + " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", + " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", + " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", + " # Filter out points below the seafloor\n", + " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", + " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", + " ]\n", + " \n", + " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", + " \n", + " #Filter dataframe based on beam list\n", + " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", + " \n", + " ###################################\n", + " ### Todo: move the filter to the begining\n", + " # Steps to standardize KD calculation by filtering out \n", + " # segments lacking sufficient subsurface photons.\n", + " # Approach: Use the ConvexHull of photons within \n", + " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", + " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", + " \n", + " # Apply filtering based on hull area if desired\n", + " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", + " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", + " )\n", + " \n", + " # Visualization\n", + " # Uncomment the following line to visualize if needed\n", + " \n", + " # plot_target_beam=['gt1l']\n", + " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", + " \n", + " ########################################### \n", + " # calculate kd and save it to table\n", + " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", + " \n", + " \n", + " ## Todo move this part into a function so that it will not looks too busy here\n", + " # Extract the timestamp using regex and use it to set the output file name\n", + " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", + " timestamp = match.group(1) if match else \"unknown\"\n", + " \n", + " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", + " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", + " \n", + " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", + " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", + " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", + " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", + " def find_closest(group):\n", + " if not group.empty:\n", + " center = group['relative_AT_dist_center'].iloc[0]\n", + " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", + " closest_index = group['dist_to_center'].idxmin()\n", + " return group.loc[[closest_index]]\n", + " else:\n", + " return pd.DataFrame(columns=group.columns)\n", + " \n", + " # Filter out empty or all-NA entries\n", + " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", + " \n", + " # Group by 'lat_bins' and apply the find_closest function\n", + " closest_to_center = unique_photon_dataset_filtered\\\n", + " .groupby('lat_bins', observed=False)\\\n", + " .apply(find_closest, include_groups=True)\n", + " # .reset_index()\n", + " \n", + " # Remove the index without resetting it if 'lat_bins' already exists\n", + " closest_to_center.index = closest_to_center.index.droplevel(0)\n", + " \n", + " # Ensure relevant entries are excluded before concatenation\n", + " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", + " \n", + " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", + " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", + " \n", + " \n", + " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", + " \n", + " logging.info(\"SUCCESS!\")\n", + " \n", + " except Exception as e:\n", + " logging.error(f\"An error occurred: {e}\")\n", + "\n", + "# if __name__ == '__main__':\n", + " \n", + "# # Get arguments function\n", + "# args = get_args() \n", + " \n", + "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", + " \n", + "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", + " \n", + "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", + " \n", + "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", + " \n", + "# #Get the gebco list\n", + "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", + "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + "\n", + "# #Initialize with an empty list\n", + "# GEBCO_file_path_lists = []\n", + "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + "# #put the find one into the list\n", + "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + "\n", + " \n", + "# # Get all other necessary parameters\n", + "# horizontal_res = args.horizontal_res\n", + " \n", + "# vertical_res = args.vertical_res\n", + " \n", + "# subsurface_thresh = args.subsurface_thresh\n", + " \n", + "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", + " \n", + "# # When all paramters ready, call the main function\n", + "# main()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1d72dbef-f954-499f-be76-c1de3233b325", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sitesurltime_coverage_starttime_coverage_endgeospatial_lat_mingeospatial_lat_maxgeospatial_lon_mingeospatial_lon_maxgeospatial_lat_unitsgeospatial_lon_units...glidershipturbsscphotchlturbidphotoradiationphoton_data
0ooi-ce01issp-sp001-10-paradj000https://erddap.dataexplorer.oceanobservatories...2014-04-17T22:28:00Z2023-09-22T08:00:00Z44.66012044.660120-124.098120-124.098120degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
1ooi-ce04osps-sf01b-3c-parada102https://erddap.dataexplorer.oceanobservatories...2015-08-03T15:10:00Z2024-04-09T22:00:00Z44.36935344.369353-124.954108-124.954108degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
2ooi-ce02shsp-sp001-09-paradj000https://erddap.dataexplorer.oceanobservatories...2015-03-18T19:36:00Z2023-09-23T08:08:00Z44.63555044.635550-124.301470-124.301470degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
3ooi-ce06issp-sp001-10-paradj000https://erddap.dataexplorer.oceanobservatories...2015-04-10T18:28:00Z2023-09-23T08:02:00Z47.13553047.135530-124.270170-124.270170degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
4ooi-ce09ospm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-19T01:02:00Z2024-04-19T13:09:00Z46.85163046.851630-124.974420-124.974420degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
5ooi-ce07shsp-sp001-09-paradj000https://erddap.dataexplorer.oceanobservatories...2015-04-09T23:25:00Z2022-04-26T20:04:00Z46.98358046.983580-124.552130-124.552130degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
6ooi-cp02pmci-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-17T01:02:00Z2022-11-18T18:36:00Z40.22663340.226633-70.889067-70.889067degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
7ooi-cp02pmco-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-13T18:02:00Z2022-11-18T15:30:00Z40.09681740.096817-70.879150-70.879150degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
8ooi-cp01cnpm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2017-11-06T19:02:00Z2022-04-24T18:27:00Z40.13390740.133907-70.770433-70.770433degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
9ooi-cp03ispm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2017-11-12T05:02:00Z2022-04-25T18:24:00Z40.36200540.362005-70.878502-70.878502degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
10ooi-cp04ospm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-15T20:02:00Z2022-11-11T18:03:00Z39.93600039.936000-70.879417-70.879417degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
11ooi-cp02pmui-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2013-11-24T01:32:00Z2022-11-19T09:24:00Z40.36491740.364917-70.780483-70.780483degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
12ooi-cp02pmuo-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2013-11-23T16:02:00Z2022-11-18T09:10:00Z39.93933339.939333-70.770183-70.770183degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
13ooi-rs03axps-sf03a-3c-parada301https://erddap.dataexplorer.oceanobservatories...2014-10-07T21:49:00Z2024-07-01T08:03:00Z45.81671245.816712-129.754055-129.754055degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
14ooi-rs01sbps-sf01a-3c-parada101https://erddap.dataexplorer.oceanobservatories...2014-10-07T20:47:00Z2024-07-01T07:44:00Z44.51516144.515161-125.389899-125.389899degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
\n", + "

15 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " sites \\\n", + "0 ooi-ce01issp-sp001-10-paradj000 \n", + "1 ooi-ce04osps-sf01b-3c-parada102 \n", + "2 ooi-ce02shsp-sp001-09-paradj000 \n", + "3 ooi-ce06issp-sp001-10-paradj000 \n", + "4 ooi-ce09ospm-wfp01-05-paradk000 \n", + "5 ooi-ce07shsp-sp001-09-paradj000 \n", + "6 ooi-cp02pmci-wfp01-05-paradk000 \n", + "7 ooi-cp02pmco-wfp01-05-paradk000 \n", + "8 ooi-cp01cnpm-wfp01-05-paradk000 \n", + "9 ooi-cp03ispm-wfp01-05-paradk000 \n", + "10 ooi-cp04ospm-wfp01-05-paradk000 \n", + "11 ooi-cp02pmui-wfp01-05-paradk000 \n", + "12 ooi-cp02pmuo-wfp01-05-paradk000 \n", + "13 ooi-rs03axps-sf03a-3c-parada301 \n", + "14 ooi-rs01sbps-sf01a-3c-parada101 \n", + "\n", + " url time_coverage_start \\\n", + "0 https://erddap.dataexplorer.oceanobservatories... 2014-04-17T22:28:00Z \n", + "1 https://erddap.dataexplorer.oceanobservatories... 2015-08-03T15:10:00Z \n", + "2 https://erddap.dataexplorer.oceanobservatories... 2015-03-18T19:36:00Z \n", + "3 https://erddap.dataexplorer.oceanobservatories... 2015-04-10T18:28:00Z \n", + "4 https://erddap.dataexplorer.oceanobservatories... 2014-04-19T01:02:00Z \n", + "5 https://erddap.dataexplorer.oceanobservatories... 2015-04-09T23:25:00Z \n", + "6 https://erddap.dataexplorer.oceanobservatories... 2014-04-17T01:02:00Z \n", + "7 https://erddap.dataexplorer.oceanobservatories... 2014-04-13T18:02:00Z \n", + "8 https://erddap.dataexplorer.oceanobservatories... 2017-11-06T19:02:00Z \n", + "9 https://erddap.dataexplorer.oceanobservatories... 2017-11-12T05:02:00Z \n", + "10 https://erddap.dataexplorer.oceanobservatories... 2014-04-15T20:02:00Z \n", + "11 https://erddap.dataexplorer.oceanobservatories... 2013-11-24T01:32:00Z \n", + "12 https://erddap.dataexplorer.oceanobservatories... 2013-11-23T16:02:00Z \n", + "13 https://erddap.dataexplorer.oceanobservatories... 2014-10-07T21:49:00Z \n", + "14 https://erddap.dataexplorer.oceanobservatories... 2014-10-07T20:47:00Z \n", + "\n", + " time_coverage_end geospatial_lat_min geospatial_lat_max \\\n", + "0 2023-09-22T08:00:00Z 44.660120 44.660120 \n", + "1 2024-04-09T22:00:00Z 44.369353 44.369353 \n", + "2 2023-09-23T08:08:00Z 44.635550 44.635550 \n", + "3 2023-09-23T08:02:00Z 47.135530 47.135530 \n", + "4 2024-04-19T13:09:00Z 46.851630 46.851630 \n", + "5 2022-04-26T20:04:00Z 46.983580 46.983580 \n", + "6 2022-11-18T18:36:00Z 40.226633 40.226633 \n", + "7 2022-11-18T15:30:00Z 40.096817 40.096817 \n", + "8 2022-04-24T18:27:00Z 40.133907 40.133907 \n", + "9 2022-04-25T18:24:00Z 40.362005 40.362005 \n", + "10 2022-11-11T18:03:00Z 39.936000 39.936000 \n", + "11 2022-11-19T09:24:00Z 40.364917 40.364917 \n", + "12 2022-11-18T09:10:00Z 39.939333 39.939333 \n", + "13 2024-07-01T08:03:00Z 45.816712 45.816712 \n", + "14 2024-07-01T07:44:00Z 44.515161 44.515161 \n", + "\n", + " geospatial_lon_min geospatial_lon_max geospatial_lat_units \\\n", + "0 -124.098120 -124.098120 degrees_north \n", + "1 -124.954108 -124.954108 degrees_north \n", + "2 -124.301470 -124.301470 degrees_north \n", + "3 -124.270170 -124.270170 degrees_north \n", + "4 -124.974420 -124.974420 degrees_north \n", + "5 -124.552130 -124.552130 degrees_north \n", + "6 -70.889067 -70.889067 degrees_north \n", + "7 -70.879150 -70.879150 degrees_north \n", + "8 -70.770433 -70.770433 degrees_north \n", + "9 -70.878502 -70.878502 degrees_north \n", + "10 -70.879417 -70.879417 degrees_north \n", + "11 -70.780483 -70.780483 degrees_north \n", + "12 -70.770183 -70.770183 degrees_north \n", + "13 -129.754055 -129.754055 degrees_north \n", + "14 -125.389899 -125.389899 degrees_north \n", + "\n", + " geospatial_lon_units ... glider ship turb ssc phot chl \\\n", + "0 degrees_east ... False False False False True False \n", + "1 degrees_east ... False False False False True False \n", + "2 degrees_east ... False False False False True False \n", + "3 degrees_east ... False False False False True False \n", + "4 degrees_east ... False False False False True False \n", + "5 degrees_east ... False False False False True False \n", + "6 degrees_east ... False False False False True False \n", + "7 degrees_east ... False False False False True False \n", + "8 degrees_east ... False False False False True False \n", + "9 degrees_east ... False False False False True False \n", + "10 degrees_east ... False False False False True False \n", + "11 degrees_east ... False False False False True False \n", + "12 degrees_east ... False False False False True False \n", + "13 degrees_east ... False False False False True False \n", + "14 degrees_east ... False False False False True False \n", + "\n", + " turbid photo radiation photon_data \n", + "0 False True True False \n", + "1 False True True False \n", + "2 False True True False \n", + "3 False True True False \n", + "4 False True True False \n", + "5 False True True False \n", + "6 False True True False \n", + "7 False True True False \n", + "8 False True True False \n", + "9 False True True False \n", + "10 False True True False \n", + "11 False True True False \n", + "12 False True True False \n", + "13 False True True False \n", + "14 False True True False \n", + "\n", + "[15 rows x 22 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load a list of all the relevant ERDDAPs and their urls\n", + "FF = pd.read_pickle(\"results/labeled_relevant_stations.pkl\")\n", + "FF = FF[(FF.buoy == True) & ((FF.phot==True) | (FF.photo==True) | (FF.radiation==True))]\n", + "FF.reset_index(drop=True, inplace=True)\n", + "# # remove stations with PAR data in air or just no good data\n", + "FF = FF[27:42]\n", + "# FF = FF.drop(index=[34,35,36,37,39,40])\n", + "FF.reset_index(drop=True, inplace=True)\n", + "\n", + "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", + "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", + "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", + "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", + "FF[\"photon_data\"] = False\n", + "\n", + "FF\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "processing 0/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter your Earthdata Login username: gloverha\n", + "Enter your Earthdata password: ········\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "order ID: 5000005876110\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876110 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876111\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876111 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876112\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876112 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876113\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876113 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876114\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876114 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876115\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876115 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876116\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876116 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876117\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876117 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876118\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876118 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876119\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876119 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876121\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876121 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876122\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876122 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 1/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876123\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876123 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876124\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876124 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876125\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876125 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876126\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876126 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876127\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876127 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876128\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876128 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876129\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876129 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876130\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876130 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876131\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876131 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876133\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876133 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876134\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876134 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876135\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876135 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876136\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876136 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876137\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876137 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876138\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876138 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876139\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876139 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876140\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876140 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876141\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876141 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876142\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876142 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876143\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876143 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876144\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876144 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876146\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876146 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876147\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876147 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876148\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876148 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876149\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876149 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 2/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876150\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876150 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876151\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876151 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876152\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876152 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876153\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876153 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876154\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876154 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876155\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876155 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876156\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876156 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876157\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876157 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876158\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876158 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876160\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876160 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 3/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876161\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876161 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876162\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876162 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876163\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876163 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876164\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876164 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876165\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876165 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876166\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876166 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876167\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876167 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876168\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876168 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876169\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876169 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876170\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876170 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 4/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876172\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876172 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876173\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876173 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876174\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876174 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876175\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876175 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876176\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876176 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876177\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876177 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876179\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876179 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876181\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876181 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876183\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876183 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876184\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876184 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876187\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876187 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876189\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876189 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876191\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876191 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876194\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876194 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876196\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876196 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876198\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876198 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876200\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876200 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876201\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876201 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876203\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876203 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876205\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876205 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876207\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876207 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876210\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876210 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876212\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876212 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876214\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876214 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876216\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876216 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876218\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876218 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876221\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876221 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876223\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876223 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876224\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876224 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876225\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876225 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876226\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876226 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876227\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876227 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876228\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876228 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876229\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876229 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876230\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876230 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876231\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876231 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876232\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876232 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876233\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876233 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876234\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876234 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876235\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876235 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876236\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876236 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 5/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876237\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876237 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876238\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876238 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876239\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876239 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876240\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876240 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876241\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876241 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876242\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876244 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876245\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876245 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876246\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876246 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876247\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876247 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876249\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876249 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876250\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876250 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876251\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876251 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876252\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876252 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876253\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876253 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876254\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876254 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876255\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876255 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876256\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876256 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876257\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876257 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876258\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876258 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876259\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876259 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876260\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876260 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876261\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876261 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876262\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876262 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876263\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876263 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876264\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876264 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876265\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876265 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876266\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876266 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876267\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876267 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876268\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876268 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876269\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876269 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 7/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876270\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876270 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876271\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876271 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876272\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876272 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876273\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876273 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876274\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876274 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876275\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876275 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876276\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876276 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876277\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876277 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876278\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876278 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876279\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876279 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876280\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876283 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876284\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876284 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876285\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876285 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876286\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876286 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876287\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876287 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876288\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876288 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876289\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876289 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876290\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876290 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876291\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876291 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876292\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876292 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876293\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876293 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876294\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876294 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876295\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876295 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 8/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876296\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876296 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876297\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876297 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876298\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876298 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876299\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876299 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876300\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876300 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876301\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876301 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876302\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876302 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876303\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876303 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876304\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876304 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876305\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876305 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 9/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876306\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876306 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876307\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876307 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876308\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876308 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876309\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876309 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876310\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876310 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876311\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876311 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876312\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876312 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876313\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876313 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876314\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876314 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876315\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876315 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876316\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876316 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876317\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876317 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 10/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876318\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876318 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876319\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876319 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876320\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876320 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876321\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876321 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876322\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876327 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876328\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876328 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876329\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876329 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876330\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876330 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876331\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876331 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876332\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876332 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876333\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876333 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876334\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876334 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876335\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876335 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876336\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876336 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876337\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876337 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876338\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876338 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876339\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876339 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876340\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876340 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876341\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876341 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876342\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876342 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876343\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876343 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876344\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876344 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876345\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876345 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876346\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876346 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 11/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876347\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876347 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876348\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876348 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876349\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876349 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876350\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876350 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876351\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876351 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876352\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876352 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876353\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876353 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876354\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876354 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876355\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876355 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876356\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876356 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876357\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876357 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876358\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876358 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876359\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876359 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876360\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876360 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876361\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876361 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876362\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876362 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876363\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876363 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876364\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876364 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876365\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876365 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876366\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876366 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876367\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876367 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876368\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876368 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876369\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876369 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876370\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876370 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876371\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876371 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 12/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876372\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876372 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876373\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876373 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876374\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876374 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876375\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876375 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876376\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876376 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876377\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876377 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876378\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876378 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876379\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876379 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876380\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876380 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876381\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876381 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876382\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876382 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876383\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876383 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876384\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876384 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876385\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876385 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876386\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876386 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876387\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876387 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876389\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876389 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876390\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876390 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876391\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876391 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876392\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876392 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876394\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876394 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876395\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876395 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876396\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876396 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876397\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876397 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876399\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876399 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876400\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876400 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 13/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876401\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876401 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876402\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876402 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876403\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876403 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876404\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876404 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876405\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876405 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876406\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876406 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876407\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876407 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876408\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876408 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876409\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876409 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876410\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876410 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876411\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876411 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876412\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876412 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876413\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876413 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876414\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876414 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876415\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876415 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876416\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876416 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876417\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876417 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876418\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876418 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876419\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876419 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876420\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876420 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876421\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876421 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876422\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876422 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876423\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876423 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876425\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876425 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876426\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876426 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876427\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876427 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876428\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876428 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 14/15\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876429\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876429 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876430\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876430 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876431\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876431 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876432\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876432 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876434\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876434 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876435\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876435 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876436\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876436 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876437\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876437 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876438\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876438 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876439\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876439 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876440\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876440 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876441\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876441 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876442\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876442 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876443\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876443 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876444\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876444 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876445\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876445 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876446\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876446 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876447\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876447 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876448\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876448 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876449\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876449 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876451\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876451 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876453\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876453 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876454\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876454 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876455\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876455 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876456\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876456 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876457\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876457 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876458\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876458 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876459\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876459 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876460\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876460 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876462\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876462 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876463\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876463 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876464\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876464 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876465\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876465 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876466\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876466 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876467\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876467 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876468\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876468 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876469\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876469 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876471\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876471 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876472\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876472 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876474\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876474 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876475\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876475 of 1 order(s) is downloaded.\n", + "Download complete\n" + ] + } + ], + "source": [ + "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", + "search_hrs = 6\n", + "search_km = 4\n", + "for jj in range(len(FF)):\n", + " print('processing '+str(jj) +'/'+str(len(FF)))# give a printout every 100 for my sanity\n", + "\n", + " # define a search region around the buoy \n", + " lat = FF['geospatial_lat_min'][jj]\n", + " lon = FF['geospatial_lon_min'][jj]\n", + " poly_cmr,poly_ipx = buoy_bound_box(lat,lon,search_km)\n", + "\n", + " # search CMR for ATL03 granules in the bounding box\n", + " grns = earthdata.cmr(short_name=\"ATL03\",\n", + " polygon=poly_cmr,\n", + " version='006')\n", + " # save the times for each granule as a datetime object\n", + " icesat_times = [fname2datetime(fname) for fname in grns]\n", + "\n", + " # now check if buoy data exists for these granules,\n", + " e = ERDDAP(server=FF['url'][jj],\n", + " protocol=\"tabledap\",\n", + " response=\"csv\")\n", + " e.dataset_id = FF['sites'][jj]\n", + "\n", + " for t in icesat_times:\n", + " # add a time buffer to search for relevant buoy data for each granule,\n", + " t_start = (t-timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", + " t_end = (t+timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", + " e.constraints = {\"time>=\": t_start,\n", + " \"time<=\": t_end}\n", + " # try to download the associated buoy data\n", + " try:\n", + " buoy = e.to_pandas() \n", + " except:\n", + " continue\n", + " \n", + " # if buoy data exists, download the ATL03 photons in the bounding box at this time\n", + " short_name = 'ATL03'\n", + " t_start = (t-timedelta(hours=search_hrs))\n", + " t_end = (t+timedelta(hours=search_hrs))\n", + " date_range = [t_start,t_end]\n", + " region = ipx.Query(short_name, poly_ipx, date_range)\n", + " try:\n", + " region.download_granules('data/')\n", + " except:\n", + " continue\n", + " # buoy.to_csv('data/data_'+str(e.dataset_id)+'_'+str(t_start)+'.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:21:33,727 - INFO - ./data/processed_ATL03_20220924031319_00521702_006_01.h5\n", + "2024-12-04 03:21:33,733 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:22:38,645 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:22:38,645 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:22:38,656 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:22:38,657 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:22:38,675 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:22:38,676 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:22:38,705 - INFO - SUCCESS!\n", + "2024-12-04 03:22:38,725 - INFO - ./data/processed_ATL03_20230104101806_02271806_006_02.h5\n", + "2024-12-04 03:22:38,736 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:23:14,867 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:23:14,868 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:23:14,945 - INFO - SUCCESS!\n", + "2024-12-04 03:23:14,963 - INFO - ./data/processed_ATL03_20190105194142_01280202_006_02.h5\n", + "2024-12-04 03:23:14,969 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:23:16,112 - ERROR - An error occurred: cannot convert float NaN to integer\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:23:16,132 - INFO - ./data/processed_ATL03_20190406152134_01280302_006_02.h5\n", + "2024-12-04 03:23:16,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:23:31,517 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:23:31,518 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:23:31,576 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:23:31,576 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:23:31,637 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:23:31,637 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:23:31,704 - INFO - SUCCESS!\n", + "2024-12-04 03:23:31,721 - INFO - ./data/processed_ATL03_20210628002806_00671202_006_01.h5\n", + "2024-12-04 03:23:31,728 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:23:42,456 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:23:42,457 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:23:42,515 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:23:42,515 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:23:42,606 - INFO - SUCCESS!\n", + "2024-12-04 03:23:42,625 - INFO - ./data/processed_ATL03_20221206204321_11781702_006_02.h5\n", + "2024-12-04 03:23:42,632 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:23:49,128 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:23:49,128 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:23:49,230 - INFO - SUCCESS!\n", + "2024-12-04 03:23:49,253 - INFO - ./data/processed_ATL03_20230329175841_01281902_006_02.h5\n", + "2024-12-04 03:23:49,261 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:24:20,547 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:24:20,548 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:24:20,608 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:24:20,608 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:24:20,700 - INFO - SUCCESS!\n", + "2024-12-04 03:24:20,719 - INFO - ./data/processed_ATL03_20211208050247_11721306_006_01.h5\n", + "2024-12-04 03:24:20,730 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:24:26,438 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:24:26,491 - INFO - ./data/processed_ATL03_20230623141210_00522002_006_02.h5\n", + "2024-12-04 03:24:26,497 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:24:42,318 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:24:42,318 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:24:42,370 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:24:42,371 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:24:42,429 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:24:42,429 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:24:42,523 - INFO - SUCCESS!\n", + "2024-12-04 03:24:42,543 - INFO - ./data/processed_ATL03_20231204182027_11722106_006_02.h5\n", + "2024-12-04 03:24:42,550 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:24:44,023 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:24:44,042 - INFO - ./data/processed_ATL03_20201101082201_05830902_006_01.h5\n", + "2024-12-04 03:24:44,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:24:44,488 - INFO - ./data/processed_ATL03_20201004015316_01510906_006_01.h5\n", + "2024-12-04 03:24:44,496 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:24:58,688 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:24:58,689 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:24:58,746 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:24:58,747 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:24:58,839 - INFO - SUCCESS!\n", + "2024-12-04 03:24:58,858 - INFO - ./data/processed_ATL03_20220331111930_01281502_006_01.h5\n", + "2024-12-04 03:24:58,865 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:25,147 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:25:25,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:25:25,198 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:25:25,199 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:25:25,257 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:25:25,258 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:25:25,328 - INFO - SUCCESS!\n", + "2024-12-04 03:25:25,348 - INFO - ./data/processed_ATL03_20210730073729_05601206_006_01.h5\n", + "2024-12-04 03:25:25,358 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:31,024 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:25:31,025 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:25:31,116 - INFO - SUCCESS!\n", + "2024-12-04 03:25:31,135 - INFO - ./data/processed_ATL03_20191202035308_10120502_006_01.h5\n", + "2024-12-04 03:25:31,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:25:31,818 - INFO - ./data/processed_ATL03_20220404111111_01891502_006_02.h5\n", + "2024-12-04 03:25:31,824 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:37,393 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:25:37,444 - INFO - ./data/processed_ATL03_20210408163907_02271106_006_02.h5\n", + "2024-12-04 03:25:37,450 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:25:38,176 - INFO - ./data/processed_ATL03_20181104071937_05600106_006_02.h5\n", + "2024-12-04 03:25:38,185 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:38,802 - INFO - ./data/processed_ATL03_20220730020120_05831602_006_02.h5\n", + "2024-12-04 03:25:38,808 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:39,598 - INFO - ./data/processed_ATL03_20240328130929_01512306_006_01.h5\n", + "2024-12-04 03:25:39,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:40,129 - INFO - ./data/processed_ATL03_20190308164535_10730202_006_02.h5\n", + "2024-12-04 03:25:40,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:54,231 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:25:54,232 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:25:54,257 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:25:54,258 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:25:54,306 - INFO - SUCCESS!\n", + "2024-12-04 03:25:54,331 - INFO - ./data/processed_ATL03_20181105190348_05830102_006_02.h5\n", + "2024-12-04 03:25:54,337 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:25:54,923 - INFO - ./data/processed_ATL03_20181214090444_11720106_006_02.h5\n", + "2024-12-04 03:25:54,935 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:55,366 - INFO - ./data/processed_ATL03_20240102165627_02272206_006_01.h5\n", + "2024-12-04 03:25:55,374 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:25:56,168 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:25:56,187 - INFO - ./data/processed_ATL03_20210605135114_11111106_006_01.h5\n", + "2024-12-04 03:25:56,195 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:26:05,105 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:26:05,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:26:05,133 - INFO - SUCCESS!\n", + "2024-12-04 03:26:05,149 - INFO - ./data/processed_ATL03_20181218055622_12310107_006_02.h5\n", + "2024-12-04 03:26:05,155 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:26:23,235 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:26:23,236 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:26:23,290 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:26:23,290 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:26:23,381 - INFO - SUCCESS!\n", + "2024-12-04 03:26:23,400 - INFO - ./data/processed_ATL03_20190903043904_10250402_006_02.h5\n", + "2024-12-04 03:26:23,409 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:26:23,839 - INFO - ./data/processed_ATL03_20210505030740_06311102_006_01.h5\n", + "2024-12-04 03:26:23,846 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:26:24,287 - INFO - ./data/processed_ATL03_20220330200106_01181506_006_01.h5\n", + "2024-12-04 03:26:24,296 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:26:29,753 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:26:29,753 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:26:29,781 - INFO - SUCCESS!\n", + "2024-12-04 03:26:29,797 - INFO - ./data/processed_ATL03_20231001090908_01892102_006_02.h5\n", + "2024-12-04 03:26:29,805 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:26:40,494 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:26:40,494 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:26:40,553 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:26:40,554 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:26:40,641 - INFO - SUCCESS!\n", + "2024-12-04 03:26:40,660 - INFO - ./data/processed_ATL03_20201006131149_01890902_006_01.h5\n", + "2024-12-04 03:26:40,667 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:26:49,005 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:26:49,008 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:26:49,111 - INFO - SUCCESS!\n", + "2024-12-04 03:26:49,126 - INFO - ./data/processed_ATL03_20201009101333_02330901_006_01.h5\n", + "2024-12-04 03:26:49,136 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:27:05,510 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:27:05,511 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:27:05,538 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:27:05,539 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:27:05,624 - INFO - SUCCESS!\n", + "2024-12-04 03:27:05,643 - INFO - ./data/processed_ATL03_20220828003726_10251602_006_01.h5\n", + "2024-12-04 03:27:05,652 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:27:12,336 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:27:12,337 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:27:12,387 - INFO - SUCCESS!\n", + "2024-12-04 03:27:12,404 - INFO - ./data/processed_ATL03_20211004195127_01891302_006_01.h5\n", + "2024-12-04 03:27:12,411 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:27:20,891 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:27:20,892 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:27:20,986 - INFO - SUCCESS!\n", + "2024-12-04 03:27:21,004 - INFO - ./data/processed_ATL03_20230922095129_00522102_006_02.h5\n", + "2024-12-04 03:27:21,011 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:27:31,828 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:27:31,882 - INFO - ./data/processed_ATL03_20191203001854_10250502_006_01.h5\n", + "2024-12-04 03:27:31,888 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:27:32,322 - INFO - ./data/processed_ATL03_20210901212338_10731202_006_02.h5\n", + "2024-12-04 03:27:32,327 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:27:40,670 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:27:40,671 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:27:40,768 - INFO - SUCCESS!\n", + "2024-12-04 03:27:40,787 - INFO - ./data/processed_ATL03_20200910024320_11720806_006_02.h5\n", + "2024-12-04 03:27:40,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:27:41,249 - INFO - ./data/processed_ATL03_20240322011031_00522302_006_01.h5\n", + "2024-12-04 03:27:41,255 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:28:04,497 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:28:04,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:04,552 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:28:04,553 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:04,609 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:28:04,609 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:04,697 - INFO - SUCCESS!\n", + "2024-12-04 03:28:04,714 - INFO - ./data/processed_ATL03_20190603123329_10120302_006_02.h5\n", + "2024-12-04 03:28:04,722 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:28:18,397 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:28:18,398 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:18,454 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:28:18,455 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:18,546 - INFO - SUCCESS!\n", + "2024-12-04 03:28:18,563 - INFO - ./data/processed_ATL03_20210101090005_01281002_006_01.h5\n", + "2024-12-04 03:28:18,572 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:28:19,115 - INFO - ./data/processed_ATL03_20230405055805_02271906_006_02.h5\n", + "2024-12-04 03:28:19,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:28:19,994 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:28:20,012 - INFO - ./data/processed_ATL03_20210706001126_01891202_006_01.h5\n", + "2024-12-04 03:28:20,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:28:21,172 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:28:21,190 - INFO - ./data/processed_ATL03_20230307072158_11721806_006_02.h5\n", + "2024-12-04 03:28:21,196 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:28:21,669 - INFO - ./data/processed_ATL03_20231228173021_01512206_006_01.h5\n", + "2024-12-04 03:28:21,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:28:27,904 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:28:27,955 - INFO - ./data/processed_ATL03_20201002132006_01280902_006_01.h5\n", + "2024-12-04 03:28:27,964 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:28:29,014 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:28:29,035 - INFO - ./data/processed_ATL03_20221228221901_01281802_006_02.h5\n", + "2024-12-04 03:28:29,044 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:28:59,208 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:28:59,208 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:59,293 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:28:59,294 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:59,367 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:28:59,368 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:28:59,485 - INFO - SUCCESS!\n", + "2024-12-04 03:28:59,504 - INFO - ./data/processed_ATL03_20240331002816_01892302_006_01.h5\n", + "2024-12-04 03:28:59,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:15,109 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:29:15,109 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:29:15,138 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:29:15,138 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:29:15,256 - INFO - SUCCESS!\n", + "2024-12-04 03:29:15,274 - INFO - ./data/processed_ATL03_20190214060841_07300206_006_02.h5\n", + "2024-12-04 03:29:15,280 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:29:15,717 - INFO - ./data/processed_ATL03_20191011184015_02270506_006_02.h5\n", + "2024-12-04 03:29:15,726 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:16,237 - INFO - ./data/processed_ATL03_20210401132132_01181106_006_02.h5\n", + "2024-12-04 03:29:16,246 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:16,980 - INFO - ./data/processed_ATL03_20210704122716_01661206_006_01.h5\n", + "2024-12-04 03:29:16,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:17,796 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:29:17,815 - INFO - ./data/processed_ATL03_20211230153937_01281402_006_01.h5\n", + "2024-12-04 03:29:17,825 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:18,383 - INFO - ./data/processed_ATL03_20230831224917_11112006_006_02.h5\n", + "2024-12-04 03:29:18,391 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:19,414 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:29:19,437 - INFO - ./data/processed_ATL03_20200927135412_00520902_006_02.h5\n", + "2024-12-04 03:29:19,452 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:39,495 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:29:39,496 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:29:39,517 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:29:39,518 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:29:39,551 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:29:39,551 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:29:39,634 - INFO - SUCCESS!\n", + "2024-12-04 03:29:39,663 - INFO - ./data/processed_ATL03_20190203025931_05600206_006_02.h5\n", + "2024-12-04 03:29:39,671 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:29:54,976 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:29:54,977 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:29:55,039 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:29:55,040 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:29:55,131 - INFO - SUCCESS!\n", + "2024-12-04 03:29:55,151 - INFO - ./data/processed_ATL03_20211007075856_02271306_006_01.h5\n", + "2024-12-04 03:29:55,159 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:02,795 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:30:02,796 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:30:02,931 - INFO - SUCCESS!\n", + "2024-12-04 03:30:02,949 - INFO - ./data/processed_ATL03_20190710105239_01890402_006_02.h5\n", + "2024-12-04 03:30:02,955 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:30:03,526 - INFO - ./data/processed_ATL03_20220603203049_11111506_006_01.h5\n", + "2024-12-04 03:30:03,533 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:04,094 - INFO - ./data/processed_ATL03_20210227145346_10021006_006_01.h5\n", + "2024-12-04 03:30:04,100 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:04,585 - INFO - ./data/processed_ATL03_20220626070745_00671602_006_01.h5\n", + "2024-12-04 03:30:04,592 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:17,339 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:30:17,340 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:30:17,421 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:30:17,422 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:30:17,526 - INFO - SUCCESS!\n", + "2024-12-04 03:30:17,544 - INFO - ./data/processed_ATL03_20220509214619_07301506_006_01.h5\n", + "2024-12-04 03:30:17,553 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:33,455 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:30:33,456 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:30:33,516 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:30:33,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:30:33,611 - INFO - SUCCESS!\n", + "2024-12-04 03:30:33,627 - INFO - ./data/processed_ATL03_20210511150652_07301106_006_01.h5\n", + "2024-12-04 03:30:33,638 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:30:34,672 - INFO - ./data/processed_ATL03_20230526151041_10121902_006_02.h5\n", + "2024-12-04 03:30:34,685 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:35,309 - INFO - ./data/processed_ATL03_20221013112140_03471707_006_01.h5\n", + "2024-12-04 03:30:35,325 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:45,985 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:30:46,052 - INFO - ./data/processed_ATL03_20230923092545_00672102_006_02.h5\n", + "2024-12-04 03:30:46,065 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:30:57,207 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:30:57,207 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:30:57,304 - INFO - SUCCESS!\n", + "2024-12-04 03:30:57,334 - INFO - ./data/processed_ATL03_20210627005345_00521202_006_01.h5\n", + "2024-12-04 03:30:57,345 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:31:19,908 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:31:19,909 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:31:19,969 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:31:19,970 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:31:20,027 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:31:20,028 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:31:20,118 - INFO - SUCCESS!\n", + "2024-12-04 03:31:20,139 - INFO - ./data/processed_ATL03_20190504223907_05600306_006_02.h5\n", + "2024-12-04 03:31:20,145 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:31:27,100 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-04 03:31:27,119 - INFO - ./data/processed_ATL03_20190912200409_11720406_006_02.h5\n", + "2024-12-04 03:31:27,126 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:31:27,915 - INFO - ./data/processed_ATL03_20230307162312_11781802_006_02.h5\n", + "2024-12-04 03:31:27,921 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:31:53,930 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:31:53,931 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:31:53,948 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:31:53,949 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:31:54,008 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:31:54,009 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:31:54,100 - INFO - SUCCESS!\n", + "2024-12-04 03:31:54,116 - INFO - ./data/processed_ATL03_20210731192138_05831202_006_01.h5\n", + "2024-12-04 03:31:54,122 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:02,102 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:32:02,103 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:32:02,202 - INFO - SUCCESS!\n", + "2024-12-04 03:32:02,218 - INFO - ./data/processed_ATL03_20210131040156_05831002_006_01.h5\n", + "2024-12-04 03:32:02,227 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:32:03,055 - INFO - ./data/processed_ATL03_20190315044444_11720206_006_02.h5\n", + "2024-12-04 03:32:03,061 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:03,514 - INFO - ./data/processed_ATL03_20230402175022_01891902_006_02.h5\n", + "2024-12-04 03:32:03,523 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:11,156 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:32:11,156 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:32:11,271 - INFO - SUCCESS!\n", + "2024-12-04 03:32:11,287 - INFO - ./data/processed_ATL03_20220127225716_05601406_006_01.h5\n", + "2024-12-04 03:32:11,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:17,606 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:32:17,607 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:32:17,734 - INFO - SUCCESS!\n", + "2024-12-04 03:32:17,752 - INFO - ./data/processed_ATL03_20211201170335_10731302_006_01.h5\n", + "2024-12-04 03:32:17,758 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:32:18,290 - INFO - ./data/processed_ATL03_20191102135842_05600506_006_01.h5\n", + "2024-12-04 03:32:18,296 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:19,220 - INFO - ./data/processed_ATL03_20210908092250_11721206_006_02.h5\n", + "2024-12-04 03:32:19,231 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:19,712 - INFO - ./data/processed_ATL03_20190505135732_05700302_006_02.h5\n", + "2024-12-04 03:32:19,718 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:20,135 - INFO - ./data/processed_ATL03_20220629154104_01181606_006_01.h5\n", + "2024-12-04 03:32:20,147 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:20,572 - INFO - ./data/processed_ATL03_20190607122509_10730302_006_02.h5\n", + "2024-12-04 03:32:20,581 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:27,030 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:32:27,031 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:32:27,127 - INFO - SUCCESS!\n", + "2024-12-04 03:32:27,148 - INFO - ./data/processed_ATL03_20210828213159_10121202_006_01.h5\n", + "2024-12-04 03:32:27,158 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:44,490 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:32:44,491 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:32:44,540 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:32:44,541 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:32:44,629 - INFO - SUCCESS!\n", + "2024-12-04 03:32:44,645 - INFO - ./data/processed_ATL03_20191005064105_01280502_006_02.h5\n", + "2024-12-04 03:32:44,655 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:32:45,195 - INFO - ./data/processed_ATL03_20190512015642_06690306_006_02.h5\n", + "2024-12-04 03:32:45,200 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:45,653 - INFO - ./data/processed_ATL03_20190413032043_02270306_006_02.h5\n", + "2024-12-04 03:32:45,659 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:32:46,116 - INFO - ./data/processed_ATL03_20200802124213_05830802_006_01.h5\n", + "2024-12-04 03:32:46,122 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:01,567 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:33:01,567 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:33:01,593 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:33:01,594 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:33:01,695 - INFO - SUCCESS!\n", + "2024-12-04 03:33:01,712 - INFO - ./data/processed_ATL03_20201110234705_07300906_006_01.h5\n", + "2024-12-04 03:33:01,724 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:33:02,340 - INFO - ./data/processed_ATL03_20230927091728_01282102_006_02.h5\n", + "2024-12-04 03:33:02,346 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:09,781 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:33:09,831 - INFO - ./data/processed_ATL03_20190806214443_06080406_006_02.h5\n", + "2024-12-04 03:33:09,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:11,977 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:33:12,001 - INFO - ./data/processed_ATL03_20230508042538_07301906_006_02.h5\n", + "2024-12-04 03:33:12,010 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:12,453 - INFO - ./data/processed_ATL03_20230730002128_06082006_006_02.h5\n", + "2024-12-04 03:33:12,459 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:12,933 - INFO - ./data/processed_ATL03_20200820005033_08500807_006_01.h5\n", + "2024-12-04 03:33:12,938 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:18,453 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:33:18,454 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:33:18,553 - INFO - SUCCESS!\n", + "2024-12-04 03:33:18,567 - INFO - ./data/processed_ATL03_20220607202232_11721506_006_01.h5\n", + "2024-12-04 03:33:18,575 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:33:19,240 - INFO - ./data/processed_ATL03_20220503094710_06311502_006_01.h5\n", + "2024-12-04 03:33:19,250 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:19,745 - INFO - ./data/processed_ATL03_20191104014253_05830502_006_01.h5\n", + "2024-12-04 03:33:19,751 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:20,477 - INFO - ./data/processed_ATL03_20190808092853_06310402_006_02.h5\n", + "2024-12-04 03:33:20,484 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:21,037 - INFO - ./data/processed_ATL03_20221206114207_11721706_006_02.h5\n", + "2024-12-04 03:33:21,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:27,010 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:33:27,072 - INFO - ./data/processed_ATL03_20220309004237_11721406_006_01.h5\n", + "2024-12-04 03:33:27,084 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:33:27,650 - INFO - ./data/processed_ATL03_20190410151314_01890302_006_02.h5\n", + "2024-12-04 03:33:27,657 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:33:42,828 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:33:42,881 - INFO - ./data/processed_ATL03_20220525180429_09721506_006_01.h5\n", + "2024-12-04 03:33:42,887 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:34:03,943 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:34:03,944 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:03,971 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:34:03,972 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:04,013 - INFO - SUCCESS!\n", + "2024-12-04 03:34:04,028 - INFO - ./data/processed_ATL03_20190204144341_05830202_006_02.h5\n", + "2024-12-04 03:34:04,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:34:11,339 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:34:11,339 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:11,425 - INFO - SUCCESS!\n", + "2024-12-04 03:34:11,441 - INFO - ./data/processed_ATL03_20230825104956_10122002_006_02.h5\n", + "2024-12-04 03:34:11,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:34:25,543 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:34:25,544 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:25,588 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:34:25,589 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:25,648 - INFO - SUCCESS!\n", + "2024-12-04 03:34:25,663 - INFO - ./data/processed_ATL03_20190902081319_10120402_006_02.h5\n", + "2024-12-04 03:34:25,669 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:34:43,806 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:34:43,807 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:43,831 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:34:43,832 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:43,894 - INFO - SUCCESS!\n", + "2024-12-04 03:34:43,909 - INFO - ./data/processed_ATL03_20230331063207_01511906_006_02.h5\n", + "2024-12-04 03:34:43,915 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:34:44,476 - INFO - ./data/processed_ATL03_20230904224044_11722006_006_02.h5\n", + "2024-12-04 03:34:44,483 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:34:54,836 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:34:54,837 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:34:54,939 - INFO - SUCCESS!\n", + "2024-12-04 03:34:54,955 - INFO - ./data/processed_ATL03_20220129104127_05831402_006_01.h5\n", + "2024-12-04 03:34:54,963 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:02,262 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:35:02,310 - INFO - ./data/processed_ATL03_20240627084945_01512406_006_01.h5\n", + "2024-12-04 03:35:02,317 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:35:02,930 - INFO - ./data/processed_ATL03_20221223225257_00521802_006_02.h5\n", + "2024-12-04 03:35:02,936 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:11,380 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:35:11,433 - INFO - ./data/processed_ATL03_20230829104135_10732002_006_02.h5\n", + "2024-12-04 03:35:11,440 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:35:11,878 - INFO - ./data/processed_ATL03_20210406043137_01891102_006_02.h5\n", + "2024-12-04 03:35:11,884 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:12,414 - INFO - ./data/processed_ATL03_20220906160228_11721606_006_01.h5\n", + "2024-12-04 03:35:12,420 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:19,179 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:35:19,180 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:35:19,284 - INFO - SUCCESS!\n", + "2024-12-04 03:35:19,302 - INFO - ./data/processed_ATL03_20211030150137_05831302_006_01.h5\n", + "2024-12-04 03:35:19,308 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:41,011 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:35:41,012 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:35:41,063 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:35:41,064 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:35:41,117 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:35:41,117 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:35:41,192 - INFO - SUCCESS!\n", + "2024-12-04 03:35:41,207 - INFO - ./data/processed_ATL03_20210328051355_00521102_006_01.h5\n", + "2024-12-04 03:35:41,213 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:35:42,057 - INFO - ./data/processed_ATL03_20181111103718_06690106_006_02.h5\n", + "2024-12-04 03:35:42,063 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:42,480 - INFO - ./data/processed_ATL03_20210708121857_02271206_006_01.h5\n", + "2024-12-04 03:35:42,489 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:42,914 - INFO - ./data/processed_ATL03_20231003211642_02272106_006_02.h5\n", + "2024-12-04 03:35:42,920 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:43,340 - INFO - ./data/processed_ATL03_20190109193321_01890202_006_02.h5\n", + "2024-12-04 03:35:43,346 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:35:57,364 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:35:57,365 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:35:57,373 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:35:57,373 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:35:57,399 - INFO - SUCCESS!\n", + "2024-12-04 03:35:57,417 - INFO - ./data/processed_ATL03_20231231044855_01892202_006_01.h5\n", + "2024-12-04 03:35:57,425 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:36:14,972 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:36:14,973 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:36:15,046 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:36:15,046 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:36:15,144 - INFO - SUCCESS!\n", + "2024-12-04 03:36:15,164 - INFO - ./data/processed_ATL03_20211002083255_01511306_006_01.h5\n", + "2024-12-04 03:36:15,173 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:36:25,883 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:36:25,934 - INFO - ./data/processed_ATL03_20200804042356_06080806_006_01.h5\n", + "2024-12-04 03:36:25,944 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:36:26,362 - INFO - ./data/processed_ATL03_20221230105205_01511806_006_02.h5\n", + "2024-12-04 03:36:26,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:36:40,334 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:36:40,335 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:36:40,362 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:36:40,362 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:36:40,412 - INFO - SUCCESS!\n", + "2024-12-04 03:36:40,430 - INFO - ./data/processed_ATL03_20210530015203_10121102_006_01.h5\n", + "2024-12-04 03:36:40,440 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:36:41,269 - INFO - ./data/processed_ATL03_20190908201229_11110406_006_02.h5\n", + "2024-12-04 03:36:41,278 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:37:04,619 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:37:04,619 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:04,655 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:37:04,655 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:04,711 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:37:04,712 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:04,797 - INFO - SUCCESS!\n", + "2024-12-04 03:37:04,817 - INFO - ./data/processed_ATL03_20240304135951_11722206_006_01.h5\n", + "2024-12-04 03:37:04,827 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:37:05,252 - INFO - ./data/processed_ATL03_20190506102318_05830302_006_02.h5\n", + "2024-12-04 03:37:05,259 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:37:11,524 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-04 03:37:11,540 - INFO - ./data/processed_ATL03_20220101041247_01511406_006_01.h5\n", + "2024-12-04 03:37:11,546 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:37:25,786 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:37:25,787 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:25,833 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:37:25,833 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:25,881 - INFO - SUCCESS!\n", + "2024-12-04 03:37:25,896 - INFO - ./data/processed_ATL03_20201227093402_00521002_006_01.h5\n", + "2024-12-04 03:37:25,903 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:37:33,793 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:37:33,843 - INFO - ./data/processed_ATL03_20190803181849_05600406_006_02.h5\n", + "2024-12-04 03:37:33,850 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:37:42,029 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:37:42,030 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:42,087 - INFO - SUCCESS!\n", + "2024-12-04 03:37:42,103 - INFO - ./data/processed_ATL03_20210129161746_05601006_006_01.h5\n", + "2024-12-04 03:37:42,108 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:37:42,899 - INFO - ./data/processed_ATL03_20190112074049_02270206_006_02.h5\n", + "2024-12-04 03:37:42,906 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:37:56,944 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:37:56,945 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:57,003 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:37:57,004 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:37:57,093 - INFO - SUCCESS!\n", + "2024-12-04 03:37:57,111 - INFO - ./data/processed_ATL03_20210507151511_06691106_006_01.h5\n", + "2024-12-04 03:37:57,117 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:10,741 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:38:10,742 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:38:10,752 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:38:10,752 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:38:10,810 - INFO - SUCCESS!\n", + "2024-12-04 03:38:10,826 - INFO - ./data/processed_ATL03_20210102213314_01511006_006_01.h5\n", + "2024-12-04 03:38:10,832 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:25,415 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:38:25,415 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:38:25,426 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:38:25,426 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:38:25,455 - INFO - SUCCESS!\n", + "2024-12-04 03:38:25,469 - INFO - ./data/processed_ATL03_20210703125256_01511206_006_01.h5\n", + "2024-12-04 03:38:25,476 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:39,247 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:38:39,248 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:38:39,280 - INFO - SUCCESS!\n", + "2024-12-04 03:38:39,296 - INFO - ./data/processed_ATL03_20220808172625_07301606_006_01.h5\n", + "2024-12-04 03:38:39,302 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:38:40,060 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:38:40,077 - INFO - ./data/processed_ATL03_20181207210535_10730102_006_02.h5\n", + "2024-12-04 03:38:40,085 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:40,543 - INFO - ./data/processed_ATL03_20220728141707_05601606_006_02.h5\n", + "2024-12-04 03:38:40,550 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:42,118 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:38:42,136 - INFO - ./data/processed_ATL03_20191113170759_07300506_006_01.h5\n", + "2024-12-04 03:38:42,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:42,612 - INFO - ./data/processed_ATL03_20190305131941_10250202_006_02.h5\n", + "2024-12-04 03:38:42,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:43,081 - INFO - ./data/processed_ATL03_20190614002420_11720306_006_02.h5\n", + "2024-12-04 03:38:43,091 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:43,550 - INFO - ./data/processed_ATL03_20201030203751_05600906_006_01.h5\n", + "2024-12-04 03:38:43,557 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:38:56,409 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:38:56,410 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:38:56,458 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:38:56,459 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:38:56,519 - INFO - SUCCESS!\n", + "2024-12-04 03:38:56,533 - INFO - ./data/processed_ATL03_20221028214101_05831702_006_01.h5\n", + "2024-12-04 03:38:56,541 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:38:57,222 - INFO - ./data/processed_ATL03_20221027095652_05601706_006_01.h5\n", + "2024-12-04 03:38:57,228 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:04,617 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:39:04,617 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:39:04,721 - INFO - SUCCESS!\n", + "2024-12-04 03:39:04,737 - INFO - ./data/processed_ATL03_20240629200816_01892402_006_01.h5\n", + "2024-12-04 03:39:04,743 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:13,282 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-04 03:39:13,298 - INFO - ./data/processed_ATL03_20230130204643_06311802_006_02.h5\n", + "2024-12-04 03:39:13,303 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:21,060 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:39:21,061 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:39:21,089 - INFO - SUCCESS!\n", + "2024-12-04 03:39:21,104 - INFO - ./data/processed_ATL03_20201209222310_11720906_006_01.h5\n", + "2024-12-04 03:39:21,110 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:33,881 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:39:33,882 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:39:33,939 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:39:33,939 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:39:34,026 - INFO - SUCCESS!\n", + "2024-12-04 03:39:34,042 - INFO - ./data/processed_ATL03_20220630065930_01281602_006_01.h5\n", + "2024-12-04 03:39:34,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:39:34,846 - INFO - ./data/processed_ATL03_20210609134254_11721106_006_01.h5\n", + "2024-12-04 03:39:34,852 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:35,332 - INFO - ./data/processed_ATL03_20201005012737_01660906_006_01.h5\n", + "2024-12-04 03:39:35,338 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:35,770 - INFO - ./data/processed_ATL03_20210310180303_11721006_006_01.h5\n", + "2024-12-04 03:39:35,781 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:36,617 - INFO - ./data/processed_ATL03_20200808041536_06690806_006_01.h5\n", + "2024-12-04 03:39:36,623 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:37,044 - INFO - ./data/processed_ATL03_20230606030124_11721906_006_03.h5\n", + "2024-12-04 03:39:37,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:44,173 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:39:44,174 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:39:44,266 - INFO - SUCCESS!\n", + "2024-12-04 03:39:44,283 - INFO - ./data/processed_ATL03_20230630021115_01512006_006_02.h5\n", + "2024-12-04 03:39:44,289 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:39:58,344 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:39:58,345 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:39:58,400 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:39:58,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:39:58,490 - INFO - SUCCESS!\n", + "2024-12-04 03:39:58,509 - INFO - ./data/processed_ATL03_20220930151228_01511706_006_01.h5\n", + "2024-12-04 03:39:58,515 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:13,724 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:40:13,724 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:40:13,779 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:40:13,780 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:40:13,868 - INFO - SUCCESS!\n", + "2024-12-04 03:40:13,884 - INFO - ./data/processed_ATL03_20231227045714_01282202_006_02.h5\n", + "2024-12-04 03:40:13,889 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:40:14,790 - INFO - ./data/processed_ATL03_20211029031727_05601306_006_01.h5\n", + "2024-12-04 03:40:14,799 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:15,338 - INFO - ./data/processed_ATL03_20191007184835_01660506_006_02.h5\n", + "2024-12-04 03:40:15,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:16,025 - INFO - ./data/processed_ATL03_20190610003240_11110306_006_02.h5\n", + "2024-12-04 03:40:16,032 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:16,454 - INFO - ./data/processed_ATL03_20230705013717_02272006_006_02.h5\n", + "2024-12-04 03:40:16,461 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:16,862 - INFO - ./data/processed_ATL03_20240822172808_10122402_006_01.h5\n", + "2024-12-04 03:40:16,868 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:24,115 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:40:24,116 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:40:24,210 - INFO - SUCCESS!\n", + "2024-12-04 03:40:24,226 - INFO - ./data/processed_ATL03_20200801161627_05700802_006_01.h5\n", + "2024-12-04 03:40:24,232 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:40:24,662 - INFO - ./data/processed_ATL03_20181104223802_05700102_006_02.h5\n", + "2024-12-04 03:40:24,668 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:25,242 - INFO - ./data/processed_ATL03_20190804093713_05700402_006_02.h5\n", + "2024-12-04 03:40:25,251 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:25,667 - INFO - ./data/processed_ATL03_20210501234145_05831102_006_01.h5\n", + "2024-12-04 03:40:25,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:26,489 - INFO - ./data/processed_ATL03_20230228192246_10731802_006_02.h5\n", + "2024-12-04 03:40:26,498 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:33,733 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:40:33,734 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:40:33,785 - INFO - SUCCESS!\n", + "2024-12-04 03:40:33,806 - INFO - ./data/processed_ATL03_20230702132948_01892002_006_02.h5\n", + "2024-12-04 03:40:33,812 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:40:55,302 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:40:55,303 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:40:55,364 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:40:55,365 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:40:55,422 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:40:55,423 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:40:55,516 - INFO - SUCCESS!\n", + "2024-12-04 03:40:55,536 - INFO - ./data/processed_ATL03_20210702001946_01281202_006_01.h5\n", + "2024-12-04 03:40:55,542 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:03,595 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:41:03,659 - INFO - ./data/processed_ATL03_20190712230010_02270406_006_02.h5\n", + "2024-12-04 03:41:03,665 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:04,782 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:41:04,800 - INFO - ./data/processed_ATL03_20210930195943_01281302_006_02.h5\n", + "2024-12-04 03:41:04,806 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:05,363 - INFO - ./data/processed_ATL03_20211225161337_00521402_006_01.h5\n", + "2024-12-04 03:41:05,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:25,457 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:41:25,458 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:41:25,484 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:41:25,485 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:41:25,500 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:41:25,501 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:41:25,580 - INFO - SUCCESS!\n", + "2024-12-04 03:41:25,597 - INFO - ./data/processed_ATL03_20230530150221_10731902_006_02.h5\n", + "2024-12-04 03:41:25,606 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:41,412 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:41:41,413 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:41:41,437 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:41:41,437 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:41:41,496 - INFO - SUCCESS!\n", + "2024-12-04 03:41:41,516 - INFO - ./data/processed_ATL03_20220704065109_01891602_006_02.h5\n", + "2024-12-04 03:41:41,522 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:41:42,065 - INFO - ./data/processed_ATL03_20210530221749_10251102_006_01.h5\n", + "2024-12-04 03:41:42,071 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:42,489 - INFO - ./data/processed_ATL03_20210925203343_00521302_006_02.h5\n", + "2024-12-04 03:41:42,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:43,797 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:41:43,816 - INFO - ./data/processed_ATL03_20220601082323_10731502_006_01.h5\n", + "2024-12-04 03:41:43,823 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:41:57,904 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:41:57,904 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:41:57,945 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:41:57,946 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:41:58,017 - INFO - SUCCESS!\n", + "2024-12-04 03:41:58,037 - INFO - ./data/processed_ATL03_20220106033849_02271406_006_01.h5\n", + "2024-12-04 03:41:58,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:42:05,129 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:42:05,130 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:42:05,160 - INFO - SUCCESS!\n", + "2024-12-04 03:42:05,177 - INFO - ./data/processed_ATL03_20210403171306_01511106_006_02.h5\n", + "2024-12-04 03:42:05,184 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:42:05,967 - INFO - ./data/processed_ATL03_20221001144648_01661706_006_01.h5\n", + "2024-12-04 03:42:05,973 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:42:20,047 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:42:20,048 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:42:20,106 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:42:20,107 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:42:20,193 - INFO - SUCCESS!\n", + "2024-12-04 03:42:20,213 - INFO - ./data/processed_ATL03_20210802110321_06081206_006_01.h5\n", + "2024-12-04 03:42:20,222 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:42:20,629 - INFO - ./data/processed_ATL03_20220827041140_10121602_006_01.h5\n", + "2024-12-04 03:42:20,635 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:42:21,183 - INFO - ./data/processed_ATL03_20230628133808_01282002_006_02.h5\n", + "2024-12-04 03:42:21,189 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:42:22,305 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:42:22,324 - INFO - ./data/processed_ATL03_20230324183248_00521902_006_02.h5\n", + "2024-12-04 03:42:22,330 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:42:45,273 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:42:45,274 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:42:45,336 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:42:45,336 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:42:45,393 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:42:45,394 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:42:45,489 - INFO - SUCCESS!\n", + "2024-12-04 03:42:45,509 - INFO - ./data/processed_ATL03_20220706185839_02271606_006_02.h5\n", + "2024-12-04 03:42:45,514 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:42:46,672 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-04 03:42:46,693 - INFO - ./data/processed_ATL03_20220529045726_10251502_006_01.h5\n", + "2024-12-04 03:42:46,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:42:53,497 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:42:53,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:42:53,556 - INFO - SUCCESS!\n", + "2024-12-04 03:42:53,578 - INFO - ./data/processed_ATL03_20221103131425_06691706_006_01.h5\n", + "2024-12-04 03:42:53,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:42:54,018 - INFO - ./data/processed_ATL03_20220302124325_10731402_006_01.h5\n", + "2024-12-04 03:42:54,024 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:43:00,903 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:43:00,958 - INFO - ./data/processed_ATL03_20230928215038_01512106_006_02.h5\n", + "2024-12-04 03:43:00,965 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:43:17,516 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:43:17,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:43:17,548 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:43:17,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:43:17,621 - INFO - SUCCESS!\n", + "2024-12-04 03:43:17,643 - INFO - ./data/processed_ATL03_20240131153216_06692206_006_01.h5\n", + "2024-12-04 03:43:17,652 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:43:18,116 - INFO - ./data/processed_ATL03_20210105085144_01891002_006_01.h5\n", + "2024-12-04 03:43:18,123 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:43:25,430 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:43:25,430 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:43:25,550 - INFO - SUCCESS!\n", + "2024-12-04 03:43:25,566 - INFO - ./data/processed_ATL03_20220430062116_05831502_006_02.h5\n", + "2024-12-04 03:43:25,574 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:43:33,695 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:43:33,695 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:43:33,787 - INFO - SUCCESS!\n", + "2024-12-04 03:43:33,807 - INFO - ./data/processed_ATL03_20220929023918_01281702_006_01.h5\n", + "2024-12-04 03:43:33,813 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:43:34,448 - INFO - ./data/processed_ATL03_20240327003625_01282302_006_01.h5\n", + "2024-12-04 03:43:34,454 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:43:59,322 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:43:59,323 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:43:59,370 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:43:59,371 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:43:59,427 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:43:59,428 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:43:59,522 - INFO - SUCCESS!\n", + "2024-12-04 03:43:59,543 - INFO - ./data/processed_ATL03_20220103153118_01891402_006_01.h5\n", + "2024-12-04 03:43:59,549 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:07,935 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-04 03:44:07,986 - INFO - ./data/processed_ATL03_20190810213623_06690406_006_02.h5\n", + "2024-12-04 03:44:07,995 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:20,907 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:44:20,908 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:44:20,935 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:44:20,936 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:44:21,009 - INFO - SUCCESS!\n", + "2024-12-04 03:44:21,026 - INFO - ./data/processed_ATL03_20190805060259_05830402_006_02.h5\n", + "2024-12-04 03:44:21,038 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:28,480 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-04 03:44:28,481 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:44:28,572 - INFO - SUCCESS!\n", + "2024-12-04 03:44:28,588 - INFO - ./data/processed_ATL03_20240129032445_06312202_006_01.h5\n", + "2024-12-04 03:44:28,595 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:44:29,044 - INFO - ./data/processed_ATL03_20210405014140_01721101_006_02.h5\n", + "2024-12-04 03:44:29,050 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:29,674 - INFO - ./data/processed_ATL03_20210430115735_05601106_006_02.h5\n", + "2024-12-04 03:44:29,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:30,368 - INFO - ./data/processed_ATL03_20231222053110_00522202_006_02.h5\n", + "2024-12-04 03:44:30,374 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:31,232 - INFO - ./data/processed_ATL03_20210730225553_05701202_006_01.h5\n", + "2024-12-04 03:44:31,238 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:31,656 - INFO - ./data/processed_ATL03_20240826172001_10732402_006_01.h5\n", + "2024-12-04 03:44:31,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:48,054 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:44:48,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:44:48,115 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-04 03:44:48,116 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:44:48,207 - INFO - SUCCESS!\n", + "2024-12-04 03:44:48,226 - INFO - ./data/processed_ATL03_20200801005803_05600806_006_01.h5\n", + "2024-12-04 03:44:48,232 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-04 03:44:48,667 - INFO - ./data/processed_ATL03_20210402043956_01281102_006_02.h5\n", + "2024-12-04 03:44:48,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:49,549 - INFO - ./data/processed_ATL03_20220702190657_01661606_006_02.h5\n", + "2024-12-04 03:44:49,555 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-04 03:44:57,015 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-04 03:44:57,016 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-04 03:44:57,066 - INFO - SUCCESS!\n", + "2024-12-04 03:44:57,081 - INFO - ./data/processed_ATL03_20221003023056_01891702_006_01.h5\n", + "2024-12-04 03:44:57,087 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + } + ], + "source": [ + "h5names = glob.glob('data/processed_*.h5')\n", + "\n", + "\n", + "for jj in range(len(h5names)):\n", + " # code from chao (in Main.ipynb)\n", + " atl03_file_inloop = h5names[jj]\n", + " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", + " # print(ATL03_h5_file_path)\n", + " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", + " # print(shoreline_data_path)\n", + " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", + " # print(GEBCO_full_path)\n", + " OutputPath = os.path.join(workspace_path, output_path)\n", + " # print(OutputPath)\n", + " \n", + " \n", + " #Get the gebco list\n", + " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + " \n", + " #Initialize with an empty list\n", + " GEBCO_file_path_lists = []\n", + " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + " #put the find one into the list\n", + " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + " \n", + " # print(GEBCO_file_path_lists)\n", + " \n", + " # Get all other necessary parameters\n", + " horizontal_res = horizontal_res\n", + " vertical_res = vertical_res\n", + " subsurface_thresh = subsurface_thresh\n", + " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", + " \n", + " # Configure logging\n", + " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", + " \n", + " \n", + " # When all paramters ready, call the main function\n", + " main()\n", + " # delete the hefty h5 file once done with processing - only store calculated kd values\n", + " os.remove(ATL03_h5_file_path)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/02_match_ships2granules_ipx.ipynb b/icesat2_kdph-main/02_match_ships2granules_ipx.ipynb new file mode 100644 index 0000000..e277afc --- /dev/null +++ b/icesat2_kdph-main/02_match_ships2granules_ipx.ipynb @@ -0,0 +1,1838 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "2256384a-86a8-43c0-801b-5953747525ba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet rtree" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet hdbscan" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8072f95f-1db6-4c31-8af8-293fd665bad4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet erddapy" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "8f821b93-0ec9-41db-af0e-61e26934504d", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + " var py_version = '3.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", + " var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n", + " var reloading = false;\n", + " var Bokeh = root.Bokeh;\n", + " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks;\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + " if (js_modules == null) js_modules = [];\n", + " if (js_exports == null) js_exports = {};\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + "\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " if (!reloading) {\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " }\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + " window._bokeh_on_load = on_load\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"jspanel\"], function(jsPanel) {\n", + "\twindow.jsPanel = jsPanel\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-modal\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-tooltip\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-hint\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-layout\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-contextmenu\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-dock\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"gridstack\"], function(GridStack) {\n", + "\twindow.GridStack = GridStack\n", + "\ton_load()\n", + " })\n", + " require([\"notyf\"], function() {\n", + "\ton_load()\n", + " })\n", + " root._bokeh_is_loading = css_urls.length + 9;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", + " }\n", + "\n", + " var existing_stylesheets = []\n", + " var links = document.getElementsByTagName('link')\n", + " for (var i = 0; i < links.length; i++) {\n", + " var link = links[i]\n", + " if (link.href != null) {\n", + "\texisting_stylesheets.push(link.href)\n", + " }\n", + " }\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " if (existing_stylesheets.indexOf(url) !== -1) {\n", + "\ton_load()\n", + "\tcontinue;\n", + " }\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } var existing_scripts = []\n", + " var scripts = document.getElementsByTagName('script')\n", + " for (var i = 0; i < scripts.length; i++) {\n", + " var script = scripts[i]\n", + " if (script.src != null) {\n", + "\texisting_scripts.push(script.src)\n", + " }\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (var i = 0; i < js_modules.length; i++) {\n", + " var url = js_modules[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (const name in js_exports) {\n", + " var url = js_exports[name];\n", + " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " element.textContent = `\n", + " import ${name} from \"${url}\"\n", + " window.${name} = ${name}\n", + " window._bokeh_on_load()\n", + " `\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n", + " var js_modules = [];\n", + " var js_exports = {};\n", + " var css_urls = [];\n", + " var inline_js = [ function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + "function(Bokeh) {} // ensure no trailing comma for IE\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " if ((root.Bokeh !== undefined) || (force === true)) {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " // Cache old bokeh versions\n", + " if (Bokeh != undefined && !reloading) {\n", + "\tvar NewBokeh = root.Bokeh;\n", + "\tif (Bokeh.versions === undefined) {\n", + "\t Bokeh.versions = new Map();\n", + "\t}\n", + "\tif (NewBokeh.version !== Bokeh.version) {\n", + "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", + "\t}\n", + "\troot.Bokeh = Bokeh;\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " }\n", + " root._bokeh_is_initializing = false\n", + " }\n", + "\n", + " function load_or_wait() {\n", + " // Implement a backoff loop that tries to ensure we do not load multiple\n", + " // versions of Bokeh and its dependencies at the same time.\n", + " // In recent versions we use the root._bokeh_is_initializing flag\n", + " // to determine whether there is an ongoing attempt to initialize\n", + " // bokeh, however for backward compatibility we also try to ensure\n", + " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", + " // before older versions are fully initialized.\n", + " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", + " root._bokeh_is_initializing = false;\n", + " root._bokeh_onload_callbacks = undefined;\n", + " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", + " load_or_wait();\n", + " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", + " setTimeout(load_or_wait, 100);\n", + " } else {\n", + " Bokeh = root.Bokeh;\n", + " bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", + " root._bokeh_is_initializing = true\n", + " root._bokeh_onload_callbacks = []\n", + " if (!reloading && (!bokeh_loaded || is_dev)) {\n", + "\troot.Bokeh = undefined;\n", + " }\n", + " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", + "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + "\trun_inline_js();\n", + " });\n", + " }\n", + " }\n", + " // Give older versions of the autoload script a head-start to ensure\n", + " // they initialize before we start loading newer version.\n", + " setTimeout(load_or_wait, 100)\n", + "}(window));" + ], + "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n var reloading = false;\n var Bokeh = root.Bokeh;\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n Bokeh = root.Bokeh;\n bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n if (!reloading && (!bokeh_loaded || is_dev)) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", + " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", + "}\n", + "\n", + "\n", + " function JupyterCommManager() {\n", + " }\n", + "\n", + " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", + " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " comm_manager.register_target(comm_id, function(comm) {\n", + " comm.on_msg(msg_handler);\n", + " });\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", + " comm.onMsg = msg_handler;\n", + " });\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " console.log(message)\n", + " var content = {data: message.data, comm_id};\n", + " var buffers = []\n", + " for (var buffer of message.buffers || []) {\n", + " buffers.push(new DataView(buffer))\n", + " }\n", + " var metadata = message.metadata || {};\n", + " var msg = {content, buffers, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " })\n", + " }\n", + " }\n", + "\n", + " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", + " if (comm_id in window.PyViz.comms) {\n", + " return window.PyViz.comms[comm_id];\n", + " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", + " if (msg_handler) {\n", + " comm.on_msg(msg_handler);\n", + " }\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", + " comm.open();\n", + " if (msg_handler) {\n", + " comm.onMsg = msg_handler;\n", + " }\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", + " comm_promise.then((comm) => {\n", + " window.PyViz.comms[comm_id] = comm;\n", + " if (msg_handler) {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " var content = {data: message.data};\n", + " var metadata = message.metadata || {comm_id};\n", + " var msg = {content, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " }) \n", + " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", + " return comm_promise.then((comm) => {\n", + " comm.send(data, metadata, buffers, disposeOnDone);\n", + " });\n", + " };\n", + " var comm = {\n", + " send: sendClosure\n", + " };\n", + " }\n", + " window.PyViz.comms[comm_id] = comm;\n", + " return comm;\n", + " }\n", + " window.PyViz.comm_manager = new JupyterCommManager();\n", + " \n", + "\n", + "\n", + "var JS_MIME_TYPE = 'application/javascript';\n", + "var HTML_MIME_TYPE = 'text/html';\n", + "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", + "var CLASS_NAME = 'output';\n", + "\n", + "/**\n", + " * Render data to the DOM node\n", + " */\n", + "function render(props, node) {\n", + " var div = document.createElement(\"div\");\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(div);\n", + " node.appendChild(script);\n", + "}\n", + "\n", + "/**\n", + " * Handle when a new output is added\n", + " */\n", + "function handle_add_output(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + " if (id !== undefined) {\n", + " var nchildren = toinsert.length;\n", + " var html_node = toinsert[nchildren-1].children[0];\n", + " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var scripts = [];\n", + " var nodelist = html_node.querySelectorAll(\"script\");\n", + " for (var i in nodelist) {\n", + " if (nodelist.hasOwnProperty(i)) {\n", + " scripts.push(nodelist[i])\n", + " }\n", + " }\n", + "\n", + " scripts.forEach( function (oldScript) {\n", + " var newScript = document.createElement(\"script\");\n", + " var attrs = [];\n", + " var nodemap = oldScript.attributes;\n", + " for (var j in nodemap) {\n", + " if (nodemap.hasOwnProperty(j)) {\n", + " attrs.push(nodemap[j])\n", + " }\n", + " }\n", + " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", + " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", + " oldScript.parentNode.replaceChild(newScript, oldScript);\n", + " });\n", + " if (JS_MIME_TYPE in output.data) {\n", + " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", + " }\n", + " output_area._hv_plot_id = id;\n", + " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", + " window.PyViz.plot_index[id] = Bokeh.index[id];\n", + " } else {\n", + " window.PyViz.plot_index[id] = null;\n", + " }\n", + " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + "function handle_clear_output(event, handle) {\n", + " var id = handle.cell.output_area._hv_plot_id;\n", + " var server_id = handle.cell.output_area._bokeh_server_id;\n", + " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", + " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", + " if (server_id !== null) {\n", + " comm.send({event_type: 'server_delete', 'id': server_id});\n", + " return;\n", + " } else if (comm !== null) {\n", + " comm.send({event_type: 'delete', 'id': id});\n", + " }\n", + " delete PyViz.plot_index[id];\n", + " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", + " var doc = window.Bokeh.index[id].model.document\n", + " doc.clear();\n", + " const i = window.Bokeh.documents.indexOf(doc);\n", + " if (i > -1) {\n", + " window.Bokeh.documents.splice(i, 1);\n", + " }\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle kernel restart event\n", + " */\n", + "function handle_kernel_cleanup(event, handle) {\n", + " delete PyViz.comms[\"hv-extension-comm\"];\n", + " window.PyViz.plot_index = {}\n", + "}\n", + "\n", + "/**\n", + " * Handle update_display_data messages\n", + " */\n", + "function handle_update_output(event, handle) {\n", + " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", + " handle_add_output(event, handle)\n", + "}\n", + "\n", + "function register_renderer(events, OutputArea) {\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[0]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " events.on('output_added.OutputArea', handle_add_output);\n", + " events.on('output_updated.OutputArea', handle_update_output);\n", + " events.on('clear_output.CodeCell', handle_clear_output);\n", + " events.on('delete.Cell', handle_clear_output);\n", + " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", + "\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " safe: true,\n", + " index: 0\n", + " });\n", + "}\n", + "\n", + "if (window.Jupyter !== undefined) {\n", + " try {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " } catch(err) {\n", + " }\n", + "}\n" + ], + "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from erddapy import ERDDAP\n", + "from sliderule import sliderule, icesat2, earthdata\n", + "import icepyx as ipx\n", + "from datetime import datetime, timedelta,timezone\n", + "\n", + "import time\n", + "import os\n", + "import re\n", + "import glob\n", + "import pandas as pd\n", + "import numpy as np\n", + "import logging\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from config import workspace_path, atl03_path,\\\n", + " other_data_path ,shoreline_data ,gebco_path ,\\\n", + " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", + " ignore_subsurface_height_thres ,output_path \n", + "\n", + "\n", + " \n", + "from kd_utils.data_processing import load_data, \\\n", + " extract_file_params, \\\n", + " Extract_sea_photons, \\\n", + " filter_photon_dataset_by_hull_area\n", + " \n", + "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", + " get_sea_surface_height\n", + " \n", + " \n", + "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", + "\n", + "from kd_utils.visualization import plot_photon_height, \\\n", + " plot_kd_photons, \\\n", + " plot_filtered_seafloor_photons\n", + " \n", + "from kd_utils.Kd_analysis import process_kd_calculation\n", + "\n", + "from kd_utils.interpolation import geoid_correction, \\\n", + " refraction_correction, \\\n", + " interpolate_labels, \\\n", + " apply_interpolation\n", + "\n", + "\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "# pd.set_option('display.max_rows', None)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", + "metadata": {}, + "outputs": [], + "source": [ + "def fname2datetime(fname):\n", + " y = int(fname[6:10])\n", + " m = int(fname[10:12])\n", + " d = int(fname[12:14])\n", + " H = int(fname[14:16])\n", + " M = int(fname[16:18])\n", + " S = int(fname[18:20])\n", + "\n", + " t = datetime(y,m,d,H,M,S, tzinfo=timezone.utc)\n", + " return t\n", + "\n", + "def buoy_bound_box(lat,lon,buffer_km):\n", + " # define a buffer distance around the buoy to search for icesat-2 data\n", + " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", + " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", + " # define bounding box around the buoy (WSEN)\n", + " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", + " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", + " # region = sliderule.toregion(bbox)\n", + " minx = lon - lon_buff\n", + " miny = lat - lat_buff\n", + " maxx = lon + lon_buff\n", + " maxy = lat + lat_buff\n", + "\n", + " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", + " poly_ipx = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", + " poly_cmr = [{'lon': minx, 'lat': miny},\n", + " {'lon': maxx, 'lat': miny},\n", + " {'lon': maxx, 'lat': maxy},\n", + " {'lon': minx, 'lat': maxy},\n", + " {'lon': minx, 'lat': miny}] # Closing the loop by repeating the first point\n", + "\n", + " return poly_cmr, poly_ipx\n", + "\n", + "\n", + "def main():\n", + " try:\n", + " \n", + " # Load IS2 and extract sea photons\n", + " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", + " \n", + " ## For debugging\n", + " #IS2_atl03_beams=['gt1r']\n", + " \n", + " # Check beam types and ensure we have what we want (e.g., strong beams)\n", + " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", + " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", + " if not IS2_atl03_beams:\n", + " print('No Strong Beam')\n", + " # sys.exit() # Terminate the program\n", + " else:\n", + " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", + " \n", + " # Extract sea photon by applying the land mask\n", + " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", + " \n", + " \n", + " # Main processing function to apply binning beam-by-beam \n", + " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", + " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", + " \n", + " \n", + " # filter to get subsurface photons\n", + " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", + " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", + " \n", + " \n", + " # Visualization of the filtered seafloor photons\n", + " # Uncomment the following lines to visualize if needed\n", + " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", + " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", + " # sea_photon_dataset=sea_photon_dataset, \n", + " # sea_surface_height=sea_surface_height, \n", + " # output_path=output_path)\n", + " \n", + " ########################\n", + " # Todo: move the filter to the begining\n", + " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", + " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", + " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", + " # Filter out points below the seafloor\n", + " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", + " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", + " ]\n", + " \n", + " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", + " \n", + " #Filter dataframe based on beam list\n", + " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", + " \n", + " ###################################\n", + " ### Todo: move the filter to the begining\n", + " # Steps to standardize KD calculation by filtering out \n", + " # segments lacking sufficient subsurface photons.\n", + " # Approach: Use the ConvexHull of photons within \n", + " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", + " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", + " \n", + " # Apply filtering based on hull area if desired\n", + " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", + " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", + " )\n", + " \n", + " # Visualization\n", + " # Uncomment the following line to visualize if needed\n", + " \n", + " # plot_target_beam=['gt1l']\n", + " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", + " \n", + " ########################################### \n", + " # calculate kd and save it to table\n", + " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", + " \n", + " \n", + " ## Todo move this part into a function so that it will not looks too busy here\n", + " # Extract the timestamp using regex and use it to set the output file name\n", + " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", + " timestamp = match.group(1) if match else \"unknown\"\n", + " \n", + " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", + " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", + " \n", + " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", + " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", + " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", + " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", + " def find_closest(group):\n", + " if not group.empty:\n", + " center = group['relative_AT_dist_center'].iloc[0]\n", + " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", + " closest_index = group['dist_to_center'].idxmin()\n", + " return group.loc[[closest_index]]\n", + " else:\n", + " return pd.DataFrame(columns=group.columns)\n", + " \n", + " # Filter out empty or all-NA entries\n", + " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", + " \n", + " # Group by 'lat_bins' and apply the find_closest function\n", + " closest_to_center = unique_photon_dataset_filtered\\\n", + " .groupby('lat_bins', observed=False)\\\n", + " .apply(find_closest, include_groups=True)\n", + " # .reset_index()\n", + " \n", + " # Remove the index without resetting it if 'lat_bins' already exists\n", + " closest_to_center.index = closest_to_center.index.droplevel(0)\n", + " \n", + " # Ensure relevant entries are excluded before concatenation\n", + " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", + " \n", + " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", + " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", + " \n", + " \n", + " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", + " \n", + " logging.info(\"SUCCESS!\")\n", + " \n", + " except Exception as e:\n", + " logging.error(f\"An error occurred: {e}\")\n", + "\n", + "# if __name__ == '__main__':\n", + " \n", + "# # Get arguments function\n", + "# args = get_args() \n", + " \n", + "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", + " \n", + "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", + " \n", + "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", + " \n", + "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", + " \n", + "# #Get the gebco list\n", + "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", + "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + "\n", + "# #Initialize with an empty list\n", + "# GEBCO_file_path_lists = []\n", + "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + "# #put the find one into the list\n", + "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + "\n", + " \n", + "# # Get all other necessary parameters\n", + "# horizontal_res = args.horizontal_res\n", + " \n", + "# vertical_res = args.vertical_res\n", + " \n", + "# subsurface_thresh = args.subsurface_thresh\n", + " \n", + "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", + " \n", + "# # When all paramters ready, call the main function\n", + "# main()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1d72dbef-f954-499f-be76-c1de3233b325", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sitesurltime_coverage_starttime_coverage_endgeospatial_lat_mingeospatial_lat_maxgeospatial_lon_mingeospatial_lon_maxgeospatial_lat_unitsgeospatial_lon_unitscheck_sumbuoyglidershipturbsscphotchlturbidphotoradiationphoton_data
0WS18285_WS18285_Decktsthttps://gcoos5.geos.tamu.edu/erddap/2018-10-11T18:24:49Z2018-10-11T18:24:49Z25.73133325.731333-80.162000-80.162000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
1WS18285_WS18285_Decktst2https://gcoos5.geos.tamu.edu/erddap/2018-10-12T11:03:42Z2018-10-12T11:03:42Z25.73133325.731333-80.162000-80.162000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
2WS18285_WS18285_WS18285_Stn_16https://gcoos5.geos.tamu.edu/erddap/2018-10-19T08:04:39Z2018-10-19T08:04:39Z24.67100024.671000-81.204000-81.204000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
3WS18285_WS18285_WS18285_Stn_18https://gcoos5.geos.tamu.edu/erddap/2018-10-19T08:55:14Z2018-10-19T08:55:14Z24.59750024.597500-81.186333-81.186333degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
4WS18285_WS18285_WS18285_Stn_2https://gcoos5.geos.tamu.edu/erddap/2018-10-12T14:36:07Z2018-10-12T14:36:07Z25.64216725.642167-80.104000-80.104000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
.....................................................................
1571WS23061_WS23061_WS23061_Kelble_Stn_V7https://gcoos5.geos.tamu.edu/erddap/2023-03-05T10:20:54Z2023-03-05T10:20:54Z26.87466726.874667-82.891167-82.891167degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
1572WS23061_WS23061_WS23061_Kelble_Stn_V8https://gcoos5.geos.tamu.edu/erddap/2023-03-05T09:35:24Z2023-03-05T09:35:24Z26.83583326.835833-82.953833-82.953833degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
1573WS23061_WS23061_WS23061_Kelble_Stn_V9https://gcoos5.geos.tamu.edu/erddap/2023-03-05T08:14:57Z2023-03-05T08:14:57Z26.72933326.729333-83.099833-83.099833degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
1574WS23061_WS23061_WS23061_Kelble_Stn_WShttps://gcoos5.geos.tamu.edu/erddap/2023-03-08T17:51:03Z2023-03-08T17:51:03Z24.47483324.474833-81.715000-81.715000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
1575WS23061_WS23061_WS23061_Kelble_Stn002https://gcoos5.geos.tamu.edu/erddap/2023-03-02T11:25:49Z2023-03-02T11:25:49Z25.64233325.642333-80.104000-80.104000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
\n", + "

1576 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " sites \\\n", + "0 WS18285_WS18285_Decktst \n", + "1 WS18285_WS18285_Decktst2 \n", + "2 WS18285_WS18285_WS18285_Stn_16 \n", + "3 WS18285_WS18285_WS18285_Stn_18 \n", + "4 WS18285_WS18285_WS18285_Stn_2 \n", + "... ... \n", + "1571 WS23061_WS23061_WS23061_Kelble_Stn_V7 \n", + "1572 WS23061_WS23061_WS23061_Kelble_Stn_V8 \n", + "1573 WS23061_WS23061_WS23061_Kelble_Stn_V9 \n", + "1574 WS23061_WS23061_WS23061_Kelble_Stn_WS \n", + "1575 WS23061_WS23061_WS23061_Kelble_Stn002 \n", + "\n", + " url time_coverage_start \\\n", + "0 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-11T18:24:49Z \n", + "1 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-12T11:03:42Z \n", + "2 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-19T08:04:39Z \n", + "3 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-19T08:55:14Z \n", + "4 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-12T14:36:07Z \n", + "... ... ... \n", + "1571 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-05T10:20:54Z \n", + "1572 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-05T09:35:24Z \n", + "1573 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-05T08:14:57Z \n", + "1574 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-08T17:51:03Z \n", + "1575 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-02T11:25:49Z \n", + "\n", + " time_coverage_end geospatial_lat_min geospatial_lat_max \\\n", + "0 2018-10-11T18:24:49Z 25.731333 25.731333 \n", + "1 2018-10-12T11:03:42Z 25.731333 25.731333 \n", + "2 2018-10-19T08:04:39Z 24.671000 24.671000 \n", + "3 2018-10-19T08:55:14Z 24.597500 24.597500 \n", + "4 2018-10-12T14:36:07Z 25.642167 25.642167 \n", + "... ... ... ... \n", + "1571 2023-03-05T10:20:54Z 26.874667 26.874667 \n", + "1572 2023-03-05T09:35:24Z 26.835833 26.835833 \n", + "1573 2023-03-05T08:14:57Z 26.729333 26.729333 \n", + "1574 2023-03-08T17:51:03Z 24.474833 24.474833 \n", + "1575 2023-03-02T11:25:49Z 25.642333 25.642333 \n", + "\n", + " geospatial_lon_min geospatial_lon_max geospatial_lat_units \\\n", + "0 -80.162000 -80.162000 degrees_north \n", + "1 -80.162000 -80.162000 degrees_north \n", + "2 -81.204000 -81.204000 degrees_north \n", + "3 -81.186333 -81.186333 degrees_north \n", + "4 -80.104000 -80.104000 degrees_north \n", + "... ... ... ... \n", + "1571 -82.891167 -82.891167 degrees_north \n", + "1572 -82.953833 -82.953833 degrees_north \n", + "1573 -83.099833 -83.099833 degrees_north \n", + "1574 -81.715000 -81.715000 degrees_north \n", + "1575 -80.104000 -80.104000 degrees_north \n", + "\n", + " geospatial_lon_units check_sum buoy glider ship turb ssc \\\n", + "0 degrees_east 1.0 False False False False False \n", + "1 degrees_east 1.0 False False False False False \n", + "2 degrees_east 1.0 False False False False False \n", + "3 degrees_east 1.0 False False False False False \n", + "4 degrees_east 1.0 False False False False False \n", + "... ... ... ... ... ... ... ... \n", + "1571 degrees_east 1.0 False False False False False \n", + "1572 degrees_east 1.0 False False False False False \n", + "1573 degrees_east 1.0 False False False False False \n", + "1574 degrees_east 1.0 False False False False False \n", + "1575 degrees_east 1.0 False False False False False \n", + "\n", + " phot chl turbid photo radiation photon_data \n", + "0 True True False True True False \n", + "1 True True False True True False \n", + "2 True True False True True False \n", + "3 True True False True True False \n", + "4 True True False True True False \n", + "... ... ... ... ... ... ... \n", + "1571 True True False True True False \n", + "1572 True True False True True False \n", + "1573 True True False True True False \n", + "1574 True True False True True False \n", + "1575 True True False True True False \n", + "\n", + "[1576 rows x 22 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load a list of all the relevant ERDDAPs and their urls\n", + "FF = pd.read_pickle(\"results/labeled_relevant_stations.pkl\")\n", + "# there are ltos of different searches to do...\n", + "FF = FF[(FF.url=='https://gcoos5.geos.tamu.edu/erddap/') & (FF.radiation == True) & (\n", + " FF.buoy == False)]\n", + "FF.reset_index(drop=True, inplace=True)\n", + "\n", + "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", + "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", + "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", + "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", + "FF[\"photon_data\"] = False\n", + "FF\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "processing 0/1576\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n" + ] + }, + { + "name": "stdin", + "output_type": "stream", + "text": [ + "Enter your Earthdata Login username: gloverha\n", + "Enter your Earthdata password: ········\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "order ID: 5000005876055\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876055 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876056\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876056 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 100/1576\n", + "processing 200/1576\n", + "processing 300/1576\n", + "processing 400/1576\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876061 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876062\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876062 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 600/1576\n", + "processing 700/1576\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876063\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876063 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 800/1576\n", + "processing 900/1576\n", + "processing 1000/1576\n", + "processing 1100/1576\n", + "processing 1200/1576\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876069\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876069 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876070\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876070 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 1300/1576\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876071\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876071 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876072\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876072 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876073\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876073 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876074\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876074 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876075\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876075 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 1400/1576\n", + "processing 1500/1576\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005876076\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005876076 of 1 order(s) is downloaded.\n", + "Download complete\n" + ] + } + ], + "source": [ + "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", + "search_hrs = 6\n", + "search_km = 4\n", + "for jj in range(len(FF)):\n", + " if jj % 100 == 0:\n", + " print('processing '+str(jj) +'/'+str(len(FF)))# give a printout every 100 for my sanity\n", + "\n", + " # set up erddap request:\n", + " e = ERDDAP(server=FF['url'][jj],\n", + " protocol=\"tabledap\",\n", + " response=\"csv\")\n", + " e.dataset_id = FF['sites'][jj]\n", + " # try to download the associated buoy data - skip this entry if it fails\n", + " try:\n", + " buoy = e.to_pandas() \n", + " except:\n", + " continue\n", + " \n", + " # define a search region around the buoy \n", + " lat = FF['geospatial_lat_min'][jj]\n", + " lon = FF['geospatial_lon_min'][jj]\n", + " poly_cmr,poly_ipx = buoy_bound_box(lat,lon,search_km)\n", + "\n", + " # if buoy data exists, download the ATL03 photons in the bounding box at this time\n", + " # add a time buffer to search for relevant sat data for each cast\n", + " t = datetime.fromisoformat(FF['time_coverage_start'][jj])\n", + " short_name = 'ATL03'\n", + " t_start = (t-timedelta(hours=search_hrs))\n", + " t_end = (t+timedelta(hours=search_hrs))\n", + " date_range = [t_start,t_end]\n", + " region = ipx.Query(short_name, poly_ipx, date_range)\n", + " try:\n", + " region.download_granules('data/')\n", + " except:\n", + " continue\n", + " #buoy.to_csv('data/data_'+str(e.dataset_id)+'_'+str(t_start)+'.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 23:36:36,060 - INFO - ./data/processed_ATL03_20221206204321_11781702_006_02.h5\n", + "2024-12-03 23:36:36,066 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 23:37:02,902 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 23:37:02,903 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:37:03,013 - INFO - SUCCESS!\n", + "2024-12-03 23:37:03,025 - INFO - ./data/processed_ATL03_20181218055622_12310107_006_02.h5\n", + "2024-12-03 23:37:03,031 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 23:37:48,494 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 23:37:48,495 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:37:48,550 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 23:37:48,551 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:37:48,645 - INFO - SUCCESS!\n", + "2024-12-03 23:37:48,658 - INFO - ./data/processed_ATL03_20201009101333_02330901_006_01.h5\n", + "2024-12-03 23:37:48,668 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 23:38:33,541 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 23:38:33,541 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:38:33,569 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 23:38:33,570 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:38:33,654 - INFO - SUCCESS!\n", + "2024-12-03 23:38:33,667 - INFO - ./data/processed_ATL03_20221013112140_03471707_006_01.h5\n", + "2024-12-03 23:38:33,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 23:40:04,472 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 23:40:04,473 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:40:04,491 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 23:40:04,491 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:40:04,550 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 23:40:04,550 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:40:04,634 - INFO - SUCCESS!\n", + "2024-12-03 23:40:04,647 - INFO - ./data/processed_ATL03_20200820005033_08500807_006_01.h5\n", + "2024-12-03 23:40:04,653 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 23:40:27,228 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-03 23:40:27,228 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:40:27,319 - INFO - SUCCESS!\n", + "2024-12-03 23:40:27,331 - INFO - ./data/processed_ATL03_20220525180429_09721506_006_01.h5\n", + "2024-12-03 23:40:27,337 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-03 23:41:12,472 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-03 23:41:12,472 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:41:12,501 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-03 23:41:12,501 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-03 23:41:12,543 - INFO - SUCCESS!\n", + "2024-12-03 23:41:12,556 - INFO - ./data/processed_ATL03_20210405014140_01721101_006_02.h5\n", + "2024-12-03 23:41:12,563 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + } + ], + "source": [ + "h5names = glob.glob('data/processed_*.h5')\n", + "\n", + "\n", + "for jj in range(len(h5names)):\n", + " # code from chao (in Main.ipynb)\n", + " atl03_file_inloop = h5names[jj]\n", + " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", + " # print(ATL03_h5_file_path)\n", + " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", + " # print(shoreline_data_path)\n", + " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", + " # print(GEBCO_full_path)\n", + " OutputPath = os.path.join(workspace_path, output_path)\n", + " # print(OutputPath)\n", + " \n", + " \n", + " #Get the gebco list\n", + " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + " \n", + " #Initialize with an empty list\n", + " GEBCO_file_path_lists = []\n", + " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + " #put the find one into the list\n", + " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + " \n", + " # print(GEBCO_file_path_lists)\n", + " \n", + " # Get all other necessary parameters\n", + " horizontal_res = horizontal_res\n", + " vertical_res = vertical_res\n", + " subsurface_thresh = subsurface_thresh\n", + " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", + " \n", + " # Configure logging\n", + " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", + " \n", + " \n", + " # When all paramters ready, call the main function\n", + " main()\n", + " # delete the hefty h5 file once done with processing - only store calculated kd values\n", + " # os.remove(ATL03_h5_file_path)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb b/icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb new file mode 100644 index 0000000..2309737 --- /dev/null +++ b/icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb @@ -0,0 +1,22955 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "fe17c663-98a1-4c47-b0b8-dbd94cf8a89e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet \"sliderule @ git+https://github.com/SlideRuleEarth/sliderule#subdirectory=clients/python\"" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2256384a-86a8-43c0-801b-5953747525ba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet rtree\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet hdbscan" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8072f95f-1db6-4c31-8af8-293fd665bad4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet erddapy" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "8f821b93-0ec9-41db-af0e-61e26934504d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from erddapy import ERDDAP\n", + "from sliderule import sliderule, icesat2, earthdata\n", + "import icepyx as ipx\n", + "from datetime import datetime, timedelta,timezone\n", + "\n", + "import time\n", + "import os\n", + "import re\n", + "import glob\n", + "import pandas as pd\n", + "import numpy as np\n", + "import logging\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# from config import get_args\n", + "from config import workspace_path, atl03_path,\\\n", + " other_data_path ,shoreline_data ,gebco_path ,\\\n", + " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", + " ignore_subsurface_height_thres ,output_path \n", + "\n", + "\n", + " \n", + "from kd_utils.data_processing import load_data, \\\n", + " extract_file_params, \\\n", + " Extract_sea_photons, \\\n", + " filter_photon_dataset_by_hull_area\n", + " \n", + " \n", + "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", + " get_sea_surface_height\n", + " \n", + " \n", + "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", + "\n", + "from kd_utils.visualization import plot_photon_height, \\\n", + " plot_kd_photons, \\\n", + " plot_filtered_seafloor_photons\n", + " \n", + "from kd_utils.Kd_analysis import process_kd_calculation\n", + "\n", + "from kd_utils.interpolation import geoid_correction, \\\n", + " refraction_correction, \\\n", + " interpolate_labels, \\\n", + " apply_interpolation\n", + "\n", + "\n", + "# Configure logging\n", + "# logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", + "sliderule.init(verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", + "metadata": {}, + "outputs": [], + "source": [ + "def fname2datetime(fname):\n", + " y = int(fname[6:10])\n", + " m = int(fname[10:12])\n", + " d = int(fname[12:14])\n", + " H = int(fname[14:16])\n", + " M = int(fname[16:18])\n", + " S = int(fname[18:20])\n", + "\n", + " t = datetime(y,m,d,H,M,S, tzinfo=timezone.utc)\n", + " return t\n", + "\n", + "def buoy_bound_box(lat,lon,buffer_km):\n", + " # define a buffer distance around the buoy to search for icesat-2 data\n", + " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", + " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", + " # define bounding box around the buoy (WSEN)\n", + " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", + " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", + " # region = sliderule.toregion(bbox)\n", + " minx = lon - lon_buff\n", + " miny = lat - lat_buff\n", + " maxx = lon + lon_buff\n", + " maxy = lat + lat_buff\n", + "\n", + " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", + " poly_ipx = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", + " poly_cmr = [{'lon': minx, 'lat': miny},\n", + " {'lon': maxx, 'lat': miny},\n", + " {'lon': maxx, 'lat': maxy},\n", + " {'lon': minx, 'lat': maxy},\n", + " {'lon': minx, 'lat': miny}] # Closing the loop by repeating the first point\n", + "\n", + " return poly_cmr, poly_ipx\n", + "\n", + "def main():\n", + " try:\n", + " \n", + " # Load IS2 and extract sea photons\n", + " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", + " \n", + " ## For debugging\n", + " #IS2_atl03_beams=['gt1r']\n", + " \n", + " # Check beam types and ensure we have what we want (e.g., strong beams)\n", + " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", + " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", + " if not IS2_atl03_beams:\n", + " print('No Strong Beam')\n", + " # sys.exit() # Terminate the program\n", + " else:\n", + " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", + " \n", + " # Extract sea photon by applying the land mask\n", + " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", + " \n", + " \n", + " # Main processing function to apply binning beam-by-beam \n", + " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", + " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", + " \n", + " \n", + " # filter to get subsurface photons\n", + " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", + " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", + " \n", + " \n", + " # Visualization of the filtered seafloor photons\n", + " # Uncomment the following lines to visualize if needed\n", + " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", + " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", + " # sea_photon_dataset=sea_photon_dataset, \n", + " # sea_surface_height=sea_surface_height, \n", + " # output_path=output_path)\n", + " \n", + " ########################\n", + " # Todo: move the filter to the begining\n", + " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", + " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", + " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", + " # Filter out points below the seafloor\n", + " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", + " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", + " ]\n", + " \n", + " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", + " \n", + " #Filter dataframe based on beam list\n", + " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", + " \n", + " ###################################\n", + " ### Todo: move the filter to the begining\n", + " # Steps to standardize KD calculation by filtering out \n", + " # segments lacking sufficient subsurface photons.\n", + " # Approach: Use the ConvexHull of photons within \n", + " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", + " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", + " \n", + " # Apply filtering based on hull area if desired\n", + " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", + " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", + " )\n", + " \n", + " # Visualization\n", + " # Uncomment the following line to visualize if needed\n", + " \n", + " # plot_target_beam=['gt1l']\n", + " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", + " \n", + " ########################################### \n", + " # calculate kd and save it to table\n", + " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", + " \n", + " \n", + " ## Todo move this part into a function so that it will not looks too busy here\n", + " # Extract the timestamp using regex and use it to set the output file name\n", + " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", + " timestamp = match.group(1) if match else \"unknown\"\n", + " \n", + " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", + " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", + " \n", + " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", + " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", + " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", + " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", + " def find_closest(group):\n", + " if not group.empty:\n", + " center = group['relative_AT_dist_center'].iloc[0]\n", + " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", + " closest_index = group['dist_to_center'].idxmin()\n", + " return group.loc[[closest_index]]\n", + " else:\n", + " return pd.DataFrame(columns=group.columns)\n", + " \n", + " # Filter out empty or all-NA entries\n", + " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", + " \n", + " # Group by 'lat_bins' and apply the find_closest function\n", + " closest_to_center = unique_photon_dataset_filtered\\\n", + " .groupby('lat_bins', observed=False)\\\n", + " .apply(find_closest, include_groups=True)\n", + " # .reset_index()\n", + " \n", + " # Remove the index without resetting it if 'lat_bins' already exists\n", + " closest_to_center.index = closest_to_center.index.droplevel(0)\n", + " \n", + " # Ensure relevant entries are excluded before concatenation\n", + " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", + " \n", + " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", + " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", + " \n", + " \n", + " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", + " \n", + " logging.info(\"SUCCESS!\")\n", + " \n", + " except Exception as e:\n", + " logging.error(f\"An error occurred: {e}\")\n", + "\n", + "# if __name__ == '__main__':\n", + " \n", + "# # Get arguments function\n", + "# args = get_args() \n", + " \n", + "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", + " \n", + "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", + " \n", + "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", + " \n", + "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", + " \n", + "# #Get the gebco list\n", + "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", + "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + "\n", + "# #Initialize with an empty list\n", + "# GEBCO_file_path_lists = []\n", + "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + "# #put the find one into the list\n", + "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + "\n", + " \n", + "# # Get all other necessary parameters\n", + "# horizontal_res = args.horizontal_res\n", + " \n", + "# vertical_res = args.vertical_res\n", + " \n", + "# subsurface_thresh = args.subsurface_thresh\n", + " \n", + "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", + " \n", + "# # When all paramters ready, call the main function\n", + "# main()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1d72dbef-f954-499f-be76-c1de3233b325", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sitesurltime_coverage_starttime_coverage_endgeospatial_lat_mingeospatial_lat_maxgeospatial_lon_mingeospatial_lon_maxgeospatial_lat_unitsgeospatial_lon_units...glidershipturbsscphotchlturbidphotoradiationphoton_data
0mpoMaritimeStJohnCTDhttps://erddap.ogsl.ca/erddap/2019-07-24T14:36Z2021-06-09T15:30Z45.1456845.61012-66.31979-66.00832degrees_northdegrees_east...FalseFalseTrueFalseFalseFalseTrueFalseFalseFalse
1bcodmo_dataset_737163https://erddap.bco-dmo.org/erddap/1989-07-29T19:00:00ZNaN22.7500022.75000-158.00000-158.00000degrees_northdegrees_east...FalseTrueTrueFalseTrueTrueFalseTrueTrueFalse
2bcodmo_dataset_3093https://erddap.bco-dmo.org/erddap/1995-11-08T10:12:00ZNaN10.4920010.68300-64.73500-64.36700degrees_northdegrees_east...FalseTrueTrueFalseTrueTrueTrueTrueTrueFalse
3gov-ndbc-44043https://erddap.sensors.ioos.us/erddap/2015-01-01T00:10:00Z2024-07-01T14:54:00Z39.1520039.15200-76.39100-76.39100degrees_northdegrees_east...FalseFalseTrueFalseFalseTrueTrueFalseFalseFalse
4gov-ndbc-44063https://erddap.sensors.ioos.us/erddap/2015-01-01T00:00:00Z2024-07-01T14:54:00Z38.9630038.96300-76.44800-76.44800degrees_northdegrees_east...FalseFalseTrueFalseFalseTrueTrueFalseFalseFalse
..................................................................
132v6sa-tiithttps://cioosatlantic.ca/erddap/2015-11-26T21:00:00Z2023-07-06T12:28:38Z45.4902845.61129-61.09130-60.76110degrees_northdegrees_east...FalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
133mq2k-54s4https://cioosatlantic.ca/erddap/2018-02-13T16:32:00Z2023-07-13T20:15:00Z43.4655243.71690-65.73784-65.00831degrees_northdegrees_east...FalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
1349qw2-yb2fhttps://cioosatlantic.ca/erddap/2016-02-19T17:00:00Z2023-08-03T11:21:40Z43.6790043.81440-66.13522-65.83446degrees_northdegrees_east...FalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
135EMSO_OBSEA_Besos_Buoy_SA8065_30minhttp://erddap.emso.eu:8080/erddap/2023-12-11T00:00:00Z2024-04-23T10:30:00Z41.1821241.182121.752571.75257degrees_northdegrees_east...FalseFalseTrueFalseFalseFalseTrueFalseFalseFalse
136EMSO_OBSEA_Besos_Buoy_SA8065_fullhttp://erddap.emso.eu:8080/erddap/2023-12-11T00:08:26Z2024-04-23T10:42:53Z41.1821241.182121.752571.75257degrees_northdegrees_east...FalseFalseTrueFalseFalseFalseTrueFalseFalseFalse
\n", + "

137 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " sites \\\n", + "0 mpoMaritimeStJohnCTD \n", + "1 bcodmo_dataset_737163 \n", + "2 bcodmo_dataset_3093 \n", + "3 gov-ndbc-44043 \n", + "4 gov-ndbc-44063 \n", + ".. ... \n", + "132 v6sa-tiit \n", + "133 mq2k-54s4 \n", + "134 9qw2-yb2f \n", + "135 EMSO_OBSEA_Besos_Buoy_SA8065_30min \n", + "136 EMSO_OBSEA_Besos_Buoy_SA8065_full \n", + "\n", + " url time_coverage_start \\\n", + "0 https://erddap.ogsl.ca/erddap/ 2019-07-24T14:36Z \n", + "1 https://erddap.bco-dmo.org/erddap/ 1989-07-29T19:00:00Z \n", + "2 https://erddap.bco-dmo.org/erddap/ 1995-11-08T10:12:00Z \n", + "3 https://erddap.sensors.ioos.us/erddap/ 2015-01-01T00:10:00Z \n", + "4 https://erddap.sensors.ioos.us/erddap/ 2015-01-01T00:00:00Z \n", + ".. ... ... \n", + "132 https://cioosatlantic.ca/erddap/ 2015-11-26T21:00:00Z \n", + "133 https://cioosatlantic.ca/erddap/ 2018-02-13T16:32:00Z \n", + "134 https://cioosatlantic.ca/erddap/ 2016-02-19T17:00:00Z \n", + "135 http://erddap.emso.eu:8080/erddap/ 2023-12-11T00:00:00Z \n", + "136 http://erddap.emso.eu:8080/erddap/ 2023-12-11T00:08:26Z \n", + "\n", + " time_coverage_end geospatial_lat_min geospatial_lat_max \\\n", + "0 2021-06-09T15:30Z 45.14568 45.61012 \n", + "1 NaN 22.75000 22.75000 \n", + "2 NaN 10.49200 10.68300 \n", + "3 2024-07-01T14:54:00Z 39.15200 39.15200 \n", + "4 2024-07-01T14:54:00Z 38.96300 38.96300 \n", + ".. ... ... ... \n", + "132 2023-07-06T12:28:38Z 45.49028 45.61129 \n", + "133 2023-07-13T20:15:00Z 43.46552 43.71690 \n", + "134 2023-08-03T11:21:40Z 43.67900 43.81440 \n", + "135 2024-04-23T10:30:00Z 41.18212 41.18212 \n", + "136 2024-04-23T10:42:53Z 41.18212 41.18212 \n", + "\n", + " geospatial_lon_min geospatial_lon_max geospatial_lat_units \\\n", + "0 -66.31979 -66.00832 degrees_north \n", + "1 -158.00000 -158.00000 degrees_north \n", + "2 -64.73500 -64.36700 degrees_north \n", + "3 -76.39100 -76.39100 degrees_north \n", + "4 -76.44800 -76.44800 degrees_north \n", + ".. ... ... ... \n", + "132 -61.09130 -60.76110 degrees_north \n", + "133 -65.73784 -65.00831 degrees_north \n", + "134 -66.13522 -65.83446 degrees_north \n", + "135 1.75257 1.75257 degrees_north \n", + "136 1.75257 1.75257 degrees_north \n", + "\n", + " geospatial_lon_units ... glider ship turb ssc phot chl \\\n", + "0 degrees_east ... False False True False False False \n", + "1 degrees_east ... False True True False True True \n", + "2 degrees_east ... False True True False True True \n", + "3 degrees_east ... False False True False False True \n", + "4 degrees_east ... False False True False False True \n", + ".. ... ... ... ... ... ... ... ... \n", + "132 degrees_east ... False False False True False False \n", + "133 degrees_east ... False False False True False False \n", + "134 degrees_east ... False False False True False False \n", + "135 degrees_east ... False False True False False False \n", + "136 degrees_east ... False False True False False False \n", + "\n", + " turbid photo radiation photon_data \n", + "0 True False False False \n", + "1 False True True False \n", + "2 True True True False \n", + "3 True False False False \n", + "4 True False False False \n", + ".. ... ... ... ... \n", + "132 False False False False \n", + "133 False False False False \n", + "134 False False False False \n", + "135 True False False False \n", + "136 True False False False \n", + "\n", + "[137 rows x 22 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# load a list of all the relevant ERDDAPs and their urls\n", + "FF = pd.read_pickle(\"results/labeled_relevant_stations.pkl\")\n", + "FF = FF[(FF.buoy == True) & ((FF.turbid==True) | (FF.ssc==True) | (FF.turb==True))]\n", + "\n", + "# FF = FF.drop(index=[34,35,36,37,39,40])\n", + "FF.reset_index(drop=True, inplace=True)\n", + "\n", + "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", + "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", + "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", + "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", + "FF[\"photon_data\"] = False\n", + "\n", + "FF\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "processing 42/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887375\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887375 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887376\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887376 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887377\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887377 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887378\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887378 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887379\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887379 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887381\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887381 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887382\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887382 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887383\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887383 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887389\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887389 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887390\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887390 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887391\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887391 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887393\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887393 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887394\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887394 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887395\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887395 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887396\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887396 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887397\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887397 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887398\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887398 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887415\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887415 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887416\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887416 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887417\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887417 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887418\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887418 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887419\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887419 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887420\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887420 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887421\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887421 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887422\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887422 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887423\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887423 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887424\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887424 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887425\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887425 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 43/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887431\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887431 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887433\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887433 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887434\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887434 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887435\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887435 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887436\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887436 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887437\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887437 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887438\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887438 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887441\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887441 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887442\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887442 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887443\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887443 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887444\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887444 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887445\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887445 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887446\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887446 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887447\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887447 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887449\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887449 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887450\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887450 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887451\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887451 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887452\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887452 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887453\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887453 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887454\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887454 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887455\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887455 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 44/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887456\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887456 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887457\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887457 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887459\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887459 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887460\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887460 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887461\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887461 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 45/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887462\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887462 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887463\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887463 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887464\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887464 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887465\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887465 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887470\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887470 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887471\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887471 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887472\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887472 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887473\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887473 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887475\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887475 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887476\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887476 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887477\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887477 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887478\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887478 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887479\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887479 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887480\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887480 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887486\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887486 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887491\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887491 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887492\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887492 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887494\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887494 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887495\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887495 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887496\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887496 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887498\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887498 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887499\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887499 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887500\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887500 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887501\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887501 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887502\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887502 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887503\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887503 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887504\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887504 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887505\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887505 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887507\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887507 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887508\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887508 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887509\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887509 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 46/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887510\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887510 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887813\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887813 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 70/137\n", + "processing 71/137\n", + "processing 72/137\n", + "processing 73/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 74/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 75/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "HTTP Request Error: HTTP Error 400: Bad Request\n", + "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.0001\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "processing 76/137\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "HTTP Request Error: HTTP Error 400: Bad Request\n", + "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.001\n", + "HTTP Request Error: HTTP Error 400: Bad Request\n", + "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.01\n", + "HTTP Request Error: HTTP Error 400: Bad Request\n", + "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.1\n", + "HTTP Request Error: HTTP Error 400: Bad Request\n", + "Using simplified polygon (for CMR request only!), 5 points using tolerance of 1.0\n", + "HTTP Request Error: HTTP Error 400: Bad Request\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "processing 77/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 78/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 79/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 80/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 81/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 82/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 83/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 84/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 85/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 86/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 87/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 88/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 89/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "processing 90/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887825\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887825 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887826\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887826 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887827\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887827 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887829\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887829 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887831\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887831 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887832\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887832 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 91/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887833\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887833 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887834\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887834 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887835\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887835 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887836\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887836 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887838\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887838 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887840\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887840 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887841\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887841 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887842\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887842 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887843\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887843 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887844\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887844 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887845\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887845 of 1 order(s) is downloaded.\n", + "Download complete\n", + "processing 92/137\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887846\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887846 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887847\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887847 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887849\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887849 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887850\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887850 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887851\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887851 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887853\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887853 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887854\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887854 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887855\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887855 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887856\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887856 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887857\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887857 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887859\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887859 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887860\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887860 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887861\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887861 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887862\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887862 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887863\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887863 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887864\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005887864 of 1 order(s) is downloaded.\n", + "Download complete\n", + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005887865\n", + "Initial status of your order request at NSIDC is: pending\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n" + ] + } + ], + "source": [ + "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", + "search_hrs = 6\n", + "search_km = 4\n", + "# try first half of entries first for memory usage before reprocessing/deleting\n", + "for jj in range(42,len(FF)):\n", + " print('processing '+str(jj) +'/'+str(len(FF)))# give a printout every 100 for my sanity\n", + "\n", + " # define a search region around the buoy \n", + " lat = FF['geospatial_lat_min'][jj]\n", + " lon = FF['geospatial_lon_min'][jj]\n", + " poly_cmr,poly_ipx = buoy_bound_box(lat,lon,search_km)\n", + "\n", + " # search CMR for ATL03 granules in the bounding box\n", + " grns = earthdata.cmr(short_name=\"ATL03\",\n", + " polygon=poly_cmr,\n", + " version='006')\n", + " # save the times for each granule as a datetime object\n", + " icesat_times = [fname2datetime(fname) for fname in grns]\n", + "\n", + " # now check if buoy data exists for these granules,\n", + " e = ERDDAP(server=FF['url'][jj],\n", + " protocol=\"tabledap\",\n", + " response=\"csv\")\n", + " e.dataset_id = FF['sites'][jj]\n", + "\n", + " for t in icesat_times:\n", + " # add a time buffer to search for relevant buoy data for each granule,\n", + " t_start = (t-timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", + " t_end = (t+timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", + " e.constraints = {\"time>=\": t_start,\n", + " \"time<=\": t_end}\n", + " # try to download the associated buoy data\n", + " try:\n", + " buoy = e.to_pandas() \n", + " except:\n", + " continue\n", + " \n", + " # if buoy data exists, download the ATL03 photons in the bounding box at this time\n", + " short_name = 'ATL03'\n", + " t_start = (t-timedelta(hours=search_hrs))\n", + " t_end = (t+timedelta(hours=search_hrs))\n", + " date_range = [t_start,t_end]\n", + " region = ipx.Query(short_name, poly_ipx, date_range)\n", + " try:\n", + " region.download_granules('data/')\n", + " except:\n", + " continue\n", + " buoy.to_csv('data/data_'+str(e.dataset_id)+'_'+str(t_start)+'.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:36:21,370 - INFO - ./data/processed_ATL03_20230522000040_09411906_006_02.h5\n", + "2024-12-20 18:36:21,372 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:37:18,341 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:37:18,342 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:37:18,434 - INFO - SUCCESS!\n", + "2024-12-20 18:37:18,444 - INFO - ./data/processed_ATL03_20230617102857_13451902_006_02.h5\n", + "2024-12-20 18:37:18,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:37:38,125 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:37:38,126 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:37:38,161 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:37:38,161 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:37:38,219 - INFO - SUCCESS!\n", + "2024-12-20 18:37:38,228 - INFO - ./data/processed_ATL03_20230818073219_09032002_006_02.h5\n", + "2024-12-20 18:37:38,230 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:37:38,537 - INFO - ./data/processed_ATL03_20230820193948_09412006_006_02.h5\n", + "2024-12-20 18:37:38,540 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:37:55,607 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:37:55,608 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:37:55,663 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:37:55,663 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:37:55,720 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:37:55,721 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:37:55,802 - INFO - SUCCESS!\n", + "2024-12-20 18:37:55,812 - INFO - ./data/processed_ATL03_20231119151937_09412106_006_02.h5\n", + "2024-12-20 18:37:55,816 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:38:08,627 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:38:08,628 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:08,694 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:38:08,694 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:08,784 - INFO - SUCCESS!\n", + "2024-12-20 18:38:08,795 - INFO - ./data/processed_ATL03_20240818021806_09412406_006_01.h5\n", + "2024-12-20 18:38:08,798 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:38:17,313 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:38:17,314 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:17,359 - INFO - SUCCESS!\n", + "2024-12-20 18:38:17,369 - INFO - ./data/processed_ATL03_20190730182707_04990406_006_02.h5\n", + "2024-12-20 18:38:17,372 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:38:35,078 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:38:35,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:35,111 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:38:35,111 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:35,148 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:38:35,149 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:35,203 - INFO - SUCCESS!\n", + "2024-12-20 18:38:35,213 - INFO - ./data/processed_ATL03_20181228043955_13830106_006_02.h5\n", + "2024-12-20 18:38:35,216 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:38:41,337 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:38:41,378 - INFO - ./data/processed_ATL03_20190123150831_04000202_006_02.h5\n", + "2024-12-20 18:38:41,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:38:56,583 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:38:56,584 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:56,594 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:38:56,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:38:56,679 - INFO - SUCCESS!\n", + "2024-12-20 18:38:56,690 - INFO - ./data/processed_ATL03_20190329001949_13830206_006_02.h5\n", + "2024-12-20 18:38:56,692 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:39:08,469 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:39:08,469 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:39:08,521 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:39:08,522 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:39:08,602 - INFO - SUCCESS!\n", + "2024-12-20 18:39:08,614 - INFO - ./data/processed_ATL03_20230220042100_09411806_006_02.h5\n", + "2024-12-20 18:39:08,616 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:39:15,350 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:39:15,390 - INFO - ./data/processed_ATL03_20230318144941_13451802_006_02.h5\n", + "2024-12-20 18:39:15,392 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:39:15,710 - INFO - ./data/processed_ATL03_20190529212325_09410306_006_02.h5\n", + "2024-12-20 18:39:15,714 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:39:28,653 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:39:28,653 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:39:28,691 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:39:28,692 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:39:28,752 - INFO - SUCCESS!\n", + "2024-12-20 18:39:28,762 - INFO - ./data/processed_ATL03_20190625075156_13450302_006_02.h5\n", + "2024-12-20 18:39:28,764 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:39:29,078 - INFO - ./data/processed_ATL03_20190828170314_09410406_006_02.h5\n", + "2024-12-20 18:39:29,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:39:36,424 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:39:36,424 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:39:36,447 - INFO - SUCCESS!\n", + "2024-12-20 18:39:36,456 - INFO - ./data/processed_ATL03_20190924033150_13450402_006_02.h5\n", + "2024-12-20 18:39:36,458 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:39:48,162 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:39:48,203 - INFO - ./data/processed_ATL03_20191029140704_04990506_006_01.h5\n", + "2024-12-20 18:39:48,205 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:39:54,966 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:39:54,966 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:39:54,986 - INFO - SUCCESS!\n", + "2024-12-20 18:39:54,995 - INFO - ./data/processed_ATL03_20191223231137_13450502_006_01.h5\n", + "2024-12-20 18:39:54,997 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:01,777 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:40:01,821 - INFO - ./data/processed_ATL03_20200223201519_09030602_006_01.h5\n", + "2024-12-20 18:40:01,836 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:40:02,276 - INFO - ./data/processed_ATL03_20200527040238_09410706_006_01.h5\n", + "2024-12-20 18:40:02,278 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:02,653 - INFO - ./data/processed_ATL03_20200622143109_13450702_006_01.h5\n", + "2024-12-20 18:40:02,656 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:16,099 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:40:16,100 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:40:16,122 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:40:16,123 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:40:16,173 - INFO - SUCCESS!\n", + "2024-12-20 18:40:16,187 - INFO - ./data/processed_ATL03_20200823113454_09030802_006_01.h5\n", + "2024-12-20 18:40:16,192 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:40:16,530 - INFO - ./data/processed_ATL03_20200825234225_09410806_006_01.h5\n", + "2024-12-20 18:40:16,534 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:23,852 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:40:23,897 - INFO - ./data/processed_ATL03_20201124192214_09410906_006_01.h5\n", + "2024-12-20 18:40:23,899 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:31,006 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:40:31,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:40:31,099 - INFO - SUCCESS!\n", + "2024-12-20 18:40:31,110 - INFO - ./data/processed_ATL03_20201221055049_13450902_006_01.h5\n", + "2024-12-20 18:40:31,112 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:37,827 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:40:37,828 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:40:37,856 - INFO - SUCCESS!\n", + "2024-12-20 18:40:37,869 - INFO - ./data/processed_ATL03_20210221025439_09031002_006_01.h5\n", + "2024-12-20 18:40:37,872 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:44,747 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:40:44,748 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:40:44,836 - INFO - SUCCESS!\n", + "2024-12-20 18:40:44,854 - INFO - ./data/processed_ATL03_20210223150209_09411006_006_01.h5\n", + "2024-12-20 18:40:44,858 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:40:52,049 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:40:52,049 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:40:52,141 - INFO - SUCCESS!\n", + "2024-12-20 18:40:52,151 - INFO - ./data/processed_ATL03_20210525104159_09411106_006_01.h5\n", + "2024-12-20 18:40:52,194 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:40:52,533 - INFO - ./data/processed_ATL03_20210620211031_13451102_006_01.h5\n", + "2024-12-20 18:40:52,536 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:13,781 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:41:13,782 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:13,846 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:41:13,847 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:13,903 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:41:13,904 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:13,996 - INFO - SUCCESS!\n", + "2024-12-20 18:41:14,009 - INFO - ./data/processed_ATL03_20210824062153_09411206_006_01.h5\n", + "2024-12-20 18:41:14,013 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:41:14,928 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 18:41:14,941 - INFO - ./data/processed_ATL03_20210919165028_13451202_006_02.h5\n", + "2024-12-20 18:41:14,966 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:15,344 - INFO - ./data/processed_ATL03_20211120135422_09031302_006_01.h5\n", + "2024-12-20 18:41:15,347 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:29,304 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:41:29,304 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:29,350 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:41:29,350 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:29,434 - INFO - SUCCESS!\n", + "2024-12-20 18:41:29,445 - INFO - ./data/processed_ATL03_20220320081016_13451402_006_01.h5\n", + "2024-12-20 18:41:29,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:41:29,855 - INFO - ./data/processed_ATL03_20220424184529_04991506_006_02.h5\n", + "2024-12-20 18:41:29,860 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:30,212 - INFO - ./data/processed_ATL03_20220917233003_13451602_006_01.h5\n", + "2024-12-20 18:41:30,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:30,587 - INFO - ./data/processed_ATL03_20221118203343_09031702_006_02.h5\n", + "2024-12-20 18:41:30,590 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:30,928 - INFO - ./data/processed_ATL03_20211123020151_09411306_006_01.h5\n", + "2024-12-20 18:41:30,932 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:37,516 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:41:37,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:37,557 - INFO - SUCCESS!\n", + "2024-12-20 18:41:37,567 - INFO - ./data/processed_ATL03_20220221214141_09411406_006_01.h5\n", + "2024-12-20 18:41:37,572 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:41:51,784 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:41:51,785 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:51,846 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:41:51,846 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:41:51,924 - INFO - SUCCESS!\n", + "2024-12-20 18:41:51,935 - INFO - ./data/processed_ATL03_20220619035009_13451502_006_01.h5\n", + "2024-12-20 18:41:51,938 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:42:05,818 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:42:05,819 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:42:05,837 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:42:05,838 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:42:05,877 - INFO - SUCCESS!\n", + "2024-12-20 18:42:05,887 - INFO - ./data/processed_ATL03_20220822130132_09411606_006_01.h5\n", + "2024-12-20 18:42:05,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:42:06,248 - INFO - ./data/processed_ATL03_20221121084113_09411706_006_02.h5\n", + "2024-12-20 18:42:06,250 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:42:25,940 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:42:25,940 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:42:26,004 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:42:26,004 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:42:26,059 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:42:26,060 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:42:26,098 - INFO - SUCCESS!\n", + "2024-12-20 18:42:26,109 - INFO - ./data/processed_ATL03_20201028083020_05220902_006_01.h5\n", + "2024-12-20 18:42:26,114 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:42:33,500 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:42:33,547 - INFO - ./data/processed_ATL03_20210430115735_05601106_006_02.h5\n", + "2024-12-20 18:42:33,550 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:42:33,944 - INFO - ./data/processed_ATL03_20210526222609_09641102_006_01.h5\n", + "2024-12-20 18:42:33,949 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:42:34,290 - INFO - ./data/processed_ATL03_20210727192957_05221202_006_01.h5\n", + "2024-12-20 18:42:34,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:42:41,640 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:42:41,641 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:42:41,747 - INFO - SUCCESS!\n", + "2024-12-20 18:42:41,757 - INFO - ./data/processed_ATL03_20220125104947_05221402_006_01.h5\n", + "2024-12-20 18:42:41,762 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:42:48,264 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:42:48,308 - INFO - ./data/processed_ATL03_20221024214924_05221702_006_01.h5\n", + "2024-12-20 18:42:48,312 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:43:02,132 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:43:02,176 - INFO - ./data/processed_ATL03_20230724084806_05222002_006_02.h5\n", + "2024-12-20 18:43:02,180 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:43:16,359 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:43:16,359 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:43:16,416 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:43:16,417 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:43:16,492 - INFO - SUCCESS!\n", + "2024-12-20 18:43:16,503 - INFO - ./data/processed_ATL03_20240122000711_05222202_006_01.h5\n", + "2024-12-20 18:43:16,505 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:43:23,088 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:43:23,088 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:43:23,186 - INFO - SUCCESS!\n", + "2024-12-20 18:43:23,196 - INFO - ./data/processed_ATL03_20240721152625_05222402_006_01.h5\n", + "2024-12-20 18:43:23,198 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:43:30,240 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:43:30,240 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:43:30,280 - INFO - SUCCESS!\n", + "2024-12-20 18:43:30,290 - INFO - ./data/processed_ATL03_20181126175618_09030102_006_02.h5\n", + "2024-12-20 18:43:30,292 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:43:30,679 - INFO - ./data/processed_ATL03_20181129060347_09410106_006_02.h5\n", + "2024-12-20 18:43:30,682 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:43:37,628 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:43:37,675 - INFO - ./data/processed_ATL03_20181225163224_13450102_006_02.h5\n", + "2024-12-20 18:43:37,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:43:38,022 - INFO - ./data/processed_ATL03_20191011023251_02170502_006_02.h5\n", + "2024-12-20 18:43:38,027 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:43:51,767 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:43:51,768 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:43:51,785 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:43:51,785 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:43:51,814 - INFO - SUCCESS!\n", + "2024-12-20 18:43:51,824 - INFO - ./data/processed_ATL03_20210127041015_05221002_006_01.h5\n", + "2024-12-20 18:43:51,826 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:43:58,513 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:43:58,556 - INFO - ./data/processed_ATL03_20211026150956_05221302_006_01.h5\n", + "2024-12-20 18:43:58,561 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:43:59,277 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 18:43:59,290 - INFO - ./data/processed_ATL03_20220525050540_09641502_006_01.h5\n", + "2024-12-20 18:43:59,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:06,645 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:44:06,646 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:44:06,713 - INFO - SUCCESS!\n", + "2024-12-20 18:44:06,723 - INFO - ./data/processed_ATL03_20220726020939_05221602_006_02.h5\n", + "2024-12-20 18:44:06,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:13,334 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:44:13,335 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:44:13,402 - INFO - SUCCESS!\n", + "2024-12-20 18:44:13,413 - INFO - ./data/processed_ATL03_20230123172907_05221802_006_02.h5\n", + "2024-12-20 18:44:13,415 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:20,790 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:44:20,790 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:44:20,842 - INFO - SUCCESS!\n", + "2024-12-20 18:44:20,853 - INFO - ./data/processed_ATL03_20231023042740_05222102_006_02.h5\n", + "2024-12-20 18:44:20,858 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:28,108 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:44:28,153 - INFO - ./data/processed_ATL03_20240421194634_05222302_006_01.h5\n", + "2024-12-20 18:44:28,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:35,037 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:44:35,037 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:44:35,077 - INFO - SUCCESS!\n", + "2024-12-20 18:44:35,088 - INFO - ./data/processed_ATL03_20181024192838_04000102_006_02.h5\n", + "2024-12-20 18:44:35,091 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:44:35,435 - INFO - ./data/processed_ATL03_20190326121219_13450202_006_02.h5\n", + "2024-12-20 18:44:35,438 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:35,767 - INFO - ./data/processed_ATL03_20220925231323_00801702_006_01.h5\n", + "2024-12-20 18:44:35,771 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:42,980 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:44:43,023 - INFO - ./data/processed_ATL03_20221027095652_05601706_006_01.h5\n", + "2024-12-20 18:44:43,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:44:43,394 - INFO - ./data/processed_ATL03_20221225185248_00801802_006_02.h5\n", + "2024-12-20 18:44:43,396 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:50,026 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:44:50,027 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:44:50,045 - INFO - SUCCESS!\n", + "2024-12-20 18:44:50,054 - INFO - ./data/processed_ATL03_20230126053650_05601806_006_02.h5\n", + "2024-12-20 18:44:50,057 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:44:57,599 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:44:57,641 - INFO - ./data/processed_ATL03_20230424130854_05221902_006_02.h5\n", + "2024-12-20 18:44:57,646 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:44:57,979 - INFO - ./data/processed_ATL03_20230427011622_05601906_006_02.h5\n", + "2024-12-20 18:44:57,982 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:45:18,007 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:45:18,009 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:45:18,069 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:45:18,070 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:45:18,128 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:45:18,129 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:45:18,210 - INFO - SUCCESS!\n", + "2024-12-20 18:45:18,223 - INFO - ./data/processed_ATL03_20230625101216_00802002_006_02.h5\n", + "2024-12-20 18:45:18,226 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:45:25,022 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:45:25,023 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:45:25,115 - INFO - SUCCESS!\n", + "2024-12-20 18:45:25,126 - INFO - ./data/processed_ATL03_20230726205535_05602006_006_02.h5\n", + "2024-12-20 18:45:25,130 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:45:39,269 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:45:39,270 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:45:39,333 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:45:39,334 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:45:39,424 - INFO - SUCCESS!\n", + "2024-12-20 18:45:39,435 - INFO - ./data/processed_ATL03_20230924055129_00802102_006_02.h5\n", + "2024-12-20 18:45:39,442 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:45:45,971 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:45:46,016 - INFO - ./data/processed_ATL03_20231025163513_05602106_006_02.h5\n", + "2024-12-20 18:45:46,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:46:06,436 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:46:06,436 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:06,450 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:46:06,451 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:06,474 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:46:06,475 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:06,506 - INFO - SUCCESS!\n", + "2024-12-20 18:46:06,517 - INFO - ./data/processed_ATL03_20231224013120_00802202_006_02.h5\n", + "2024-12-20 18:46:06,520 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:46:07,043 - INFO - ./data/processed_ATL03_20240424075408_05602306_006_01.h5\n", + "2024-12-20 18:46:07,046 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:46:14,789 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:46:14,836 - INFO - ./data/processed_ATL03_20240622165003_00802402_006_01.h5\n", + "2024-12-20 18:46:14,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:46:15,184 - INFO - ./data/processed_ATL03_20190718185159_03160406_006_02.h5\n", + "2024-12-20 18:46:15,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:46:35,759 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:46:35,760 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:35,805 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:46:35,806 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:35,841 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:46:35,842 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:35,924 - INFO - SUCCESS!\n", + "2024-12-20 18:46:35,938 - INFO - ./data/processed_ATL03_20190816172811_07580406_006_02.h5\n", + "2024-12-20 18:46:35,942 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:46:51,060 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:46:51,061 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:51,101 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:46:51,101 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:46:51,161 - INFO - SUCCESS!\n", + "2024-12-20 18:46:51,218 - INFO - ./data/processed_ATL03_20190912035646_11620402_006_02.h5\n", + "2024-12-20 18:46:51,249 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:46:51,981 - INFO - ./data/processed_ATL03_20240124121440_05602206_006_01.h5\n", + "2024-12-20 18:46:51,983 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:46:53,481 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 18:46:53,493 - INFO - ./data/processed_ATL03_20240323211037_00802302_006_01.h5\n", + "2024-12-20 18:46:53,495 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:46:53,959 - INFO - ./data/processed_ATL03_20240724033350_05602406_006_01.h5\n", + "2024-12-20 18:46:53,963 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:47:07,528 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:47:07,529 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:07,570 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:47:07,571 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:07,644 - INFO - SUCCESS!\n", + "2024-12-20 18:47:07,654 - INFO - ./data/processed_ATL03_20190613081656_11620302_006_02.h5\n", + "2024-12-20 18:47:07,657 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:47:07,992 - INFO - ./data/processed_ATL03_20210628205352_00801202_006_01.h5\n", + "2024-12-20 18:47:07,995 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:47:14,777 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:47:14,778 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:14,799 - INFO - SUCCESS!\n", + "2024-12-20 18:47:14,809 - INFO - ./data/processed_ATL03_20210730073729_05601206_006_01.h5\n", + "2024-12-20 18:47:14,814 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:47:35,246 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:47:35,246 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:35,256 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:47:35,256 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:35,267 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:47:35,267 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:35,305 - INFO - SUCCESS!\n", + "2024-12-20 18:47:35,317 - INFO - ./data/processed_ATL03_20210927163349_00801302_006_02.h5\n", + "2024-12-20 18:47:35,321 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:47:49,664 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:47:49,665 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:49,700 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:47:49,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:47:49,754 - INFO - SUCCESS!\n", + "2024-12-20 18:47:49,767 - INFO - ./data/processed_ATL03_20211029031727_05601306_006_01.h5\n", + "2024-12-20 18:47:49,773 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:47:50,118 - INFO - ./data/processed_ATL03_20220127225716_05601406_006_01.h5\n", + "2024-12-20 18:47:50,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:48:10,466 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:48:10,467 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:10,517 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:48:10,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:10,574 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:48:10,575 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:10,657 - INFO - SUCCESS!\n", + "2024-12-20 18:48:10,668 - INFO - ./data/processed_ATL03_20220330200106_01181506_006_01.h5\n", + "2024-12-20 18:48:10,670 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:48:11,022 - INFO - ./data/processed_ATL03_20220426062938_05221502_006_02.h5\n", + "2024-12-20 18:48:11,025 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:48:24,198 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:48:24,198 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:24,255 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:48:24,256 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:24,286 - INFO - SUCCESS!\n", + "2024-12-20 18:48:24,295 - INFO - ./data/processed_ATL03_20220728141707_05601606_006_02.h5\n", + "2024-12-20 18:48:24,299 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:48:31,677 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:48:31,677 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:31,764 - INFO - SUCCESS!\n", + "2024-12-20 18:48:31,774 - INFO - ./data/processed_ATL03_20201229053409_00801002_006_01.h5\n", + "2024-12-20 18:48:31,776 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:48:38,829 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 18:48:38,839 - INFO - ./data/processed_ATL03_20210129161746_05601006_006_01.h5\n", + "2024-12-20 18:48:38,841 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:48:59,460 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:48:59,461 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:59,499 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:48:59,500 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:59,523 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:48:59,524 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:48:59,554 - INFO - SUCCESS!\n", + "2024-12-20 18:48:59,567 - INFO - ./data/processed_ATL03_20210401132132_01181106_006_02.h5\n", + "2024-12-20 18:48:59,569 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:49:07,741 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:49:07,742 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:49:07,788 - INFO - SUCCESS!\n", + "2024-12-20 18:49:07,799 - INFO - ./data/processed_ATL03_20210427235004_05221102_006_02.h5\n", + "2024-12-20 18:49:07,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:49:21,940 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:49:21,941 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:49:21,998 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:49:21,998 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:49:22,079 - INFO - SUCCESS!\n", + "2024-12-20 18:49:22,089 - INFO - ./data/processed_ATL03_20201030203751_05600906_006_01.h5\n", + "2024-12-20 18:49:22,092 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:49:22,415 - INFO - ./data/processed_ATL03_20190424104819_04000302_006_02.h5\n", + "2024-12-20 18:49:22,417 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:49:37,197 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:49:37,198 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:49:37,208 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:49:37,208 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:49:37,249 - INFO - SUCCESS!\n", + "2024-12-20 18:49:37,260 - INFO - ./data/processed_ATL03_20190724062753_04000402_006_02.h5\n", + "2024-12-20 18:49:37,264 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:49:37,634 - INFO - ./data/processed_ATL03_20191226111907_13830506_006_01.h5\n", + "2024-12-20 18:49:37,636 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:49:37,955 - INFO - ./data/processed_ATL03_20200121214737_04000602_006_01.h5\n", + "2024-12-20 18:49:37,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:49:52,360 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:49:52,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:49:52,411 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:49:52,412 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:49:52,491 - INFO - SUCCESS!\n", + "2024-12-20 18:49:52,501 - INFO - ./data/processed_ATL03_20200326065849_13830606_006_01.h5\n", + "2024-12-20 18:49:52,503 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:49:52,882 - INFO - ./data/processed_ATL03_20200421172726_04000702_006_02.h5\n", + "2024-12-20 18:49:52,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:49:53,382 - INFO - ./data/processed_ATL03_20200625023839_13830706_006_01.h5\n", + "2024-12-20 18:49:53,385 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:49:54,380 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 18:49:54,391 - INFO - ./data/processed_ATL03_20200721130713_04000802_006_01.h5\n", + "2024-12-20 18:49:54,419 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:50:15,521 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:50:15,521 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:15,528 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:50:15,528 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:15,584 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:50:15,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:15,669 - INFO - SUCCESS!\n", + "2024-12-20 18:50:15,682 - INFO - ./data/processed_ATL03_20200923221828_13830806_006_02.h5\n", + "2024-12-20 18:50:15,685 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:50:31,732 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:50:31,733 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:31,787 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:50:31,788 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:31,834 - INFO - SUCCESS!\n", + "2024-12-20 18:50:31,844 - INFO - ./data/processed_ATL03_20201020084700_04000902_006_01.h5\n", + "2024-12-20 18:50:31,847 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:50:39,216 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:50:39,258 - INFO - ./data/processed_ATL03_20201223175818_13830906_006_01.h5\n", + "2024-12-20 18:50:39,262 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:50:59,704 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:50:59,705 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:59,712 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:50:59,713 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:59,778 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:50:59,779 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:50:59,870 - INFO - SUCCESS!\n", + "2024-12-20 18:50:59,882 - INFO - ./data/processed_ATL03_20210119042651_04001002_006_01.h5\n", + "2024-12-20 18:50:59,886 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:51:15,710 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:51:15,711 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:51:15,765 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:51:15,766 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:51:15,813 - INFO - SUCCESS!\n", + "2024-12-20 18:51:15,823 - INFO - ./data/processed_ATL03_20210324133810_13831006_006_01.h5\n", + "2024-12-20 18:51:15,826 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:51:16,175 - INFO - ./data/processed_ATL03_20210420000645_04001102_006_02.h5\n", + "2024-12-20 18:51:16,178 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:51:16,585 - INFO - ./data/processed_ATL03_20210518224248_08421102_006_01.h5\n", + "2024-12-20 18:51:16,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:51:16,926 - INFO - ./data/processed_ATL03_20210623091801_13831106_006_01.h5\n", + "2024-12-20 18:51:16,932 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:51:23,632 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:51:23,633 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:51:23,736 - INFO - SUCCESS!\n", + "2024-12-20 18:51:23,746 - INFO - ./data/processed_ATL03_20210719194636_04001202_006_01.h5\n", + "2024-12-20 18:51:23,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:51:39,942 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:51:39,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:51:39,949 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:51:39,950 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:51:40,036 - INFO - SUCCESS!\n", + "2024-12-20 18:51:40,050 - INFO - ./data/processed_ATL03_20210922045758_13831206_006_02.h5\n", + "2024-12-20 18:51:40,052 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:51:55,288 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:51:55,288 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:51:55,324 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:51:55,325 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:51:55,394 - INFO - SUCCESS!\n", + "2024-12-20 18:51:55,405 - INFO - ./data/processed_ATL03_20211018152633_04001302_006_01.h5\n", + "2024-12-20 18:51:55,407 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:03,548 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:52:03,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:52:03,651 - INFO - SUCCESS!\n", + "2024-12-20 18:52:03,662 - INFO - ./data/processed_ATL03_20211222003753_13831306_006_01.h5\n", + "2024-12-20 18:52:03,665 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:52:04,016 - INFO - ./data/processed_ATL03_20220117110628_04001402_006_01.h5\n", + "2024-12-20 18:52:04,020 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:11,675 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:52:11,721 - INFO - ./data/processed_ATL03_20220322201746_13831406_006_01.h5\n", + "2024-12-20 18:52:11,723 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:26,421 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:52:26,421 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:52:26,475 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:52:26,475 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:52:26,554 - INFO - SUCCESS!\n", + "2024-12-20 18:52:26,573 - INFO - ./data/processed_ATL03_20220418064609_04001502_006_02.h5\n", + "2024-12-20 18:52:26,576 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:42,215 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:52:42,216 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:52:42,266 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:52:42,266 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:52:42,344 - INFO - SUCCESS!\n", + "2024-12-20 18:52:42,356 - INFO - ./data/processed_ATL03_20220517052223_08421502_006_01.h5\n", + "2024-12-20 18:52:42,359 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:52:42,686 - INFO - ./data/processed_ATL03_20220621155743_13831506_006_01.h5\n", + "2024-12-20 18:52:42,689 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:48,801 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:52:48,801 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:52:48,819 - INFO - SUCCESS!\n", + "2024-12-20 18:52:48,830 - INFO - ./data/processed_ATL03_20191027015934_04610502_006_01.h5\n", + "2024-12-20 18:52:48,832 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:55,499 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 18:52:55,508 - INFO - ./data/processed_ATL03_20191201123444_10020506_006_01.h5\n", + "2024-12-20 18:52:55,517 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:56,467 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 18:52:56,480 - INFO - ./data/processed_ATL03_20181118181306_07810102_006_02.h5\n", + "2024-12-20 18:52:56,483 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:52:57,086 - INFO - ./data/processed_ATL03_20181121062036_08190106_006_02.h5\n", + "2024-12-20 18:52:57,089 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:57,401 - INFO - ./data/processed_ATL03_20190122032419_03770206_006_02.h5\n", + "2024-12-20 18:52:57,404 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:57,754 - INFO - ./data/processed_ATL03_20190220020027_08190206_006_02.h5\n", + "2024-12-20 18:52:57,757 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:52:58,086 - INFO - ./data/processed_ATL03_20190519093236_07810302_006_02.h5\n", + "2024-12-20 18:52:58,088 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:15,016 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:53:15,016 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:53:15,035 - INFO - SUCCESS!\n", + "2024-12-20 18:53:15,046 - INFO - ./data/processed_ATL03_20190521214005_08190306_006_02.h5\n", + "2024-12-20 18:53:15,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:21,138 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:53:21,139 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:53:21,198 - INFO - SUCCESS!\n", + "2024-12-20 18:53:21,210 - INFO - ./data/processed_ATL03_20190722184342_03770406_006_02.h5\n", + "2024-12-20 18:53:21,214 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:27,584 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:53:27,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:53:27,610 - INFO - SUCCESS!\n", + "2024-12-20 18:53:27,620 - INFO - ./data/processed_ATL03_20190820171953_08190406_006_02.h5\n", + "2024-12-20 18:53:27,623 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:44,534 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:53:44,535 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:53:44,584 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:53:44,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:53:44,665 - INFO - SUCCESS!\n", + "2024-12-20 18:53:44,675 - INFO - ./data/processed_ATL03_20190916034827_12230402_006_02.h5\n", + "2024-12-20 18:53:44,677 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:53:45,138 - INFO - ./data/processed_ATL03_20191117005216_07810502_006_01.h5\n", + "2024-12-20 18:53:45,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:45,726 - INFO - ./data/processed_ATL03_20191215232815_12230502_006_01.h5\n", + "2024-12-20 18:53:45,730 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:46,203 - INFO - ./data/processed_ATL03_20200215203158_07810602_006_01.h5\n", + "2024-12-20 18:53:46,206 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:46,770 - INFO - ./data/processed_ATL03_20200218083929_08190606_006_01.h5\n", + "2024-12-20 18:53:46,774 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:47,371 - INFO - ./data/processed_ATL03_20200420054315_03770706_006_02.h5\n", + "2024-12-20 18:53:47,376 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:47,780 - INFO - ./data/processed_ATL03_20200516161149_07810702_006_01.h5\n", + "2024-12-20 18:53:47,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:48,176 - INFO - ./data/processed_ATL03_20200519041919_08190706_006_01.h5\n", + "2024-12-20 18:53:48,189 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:53:48,508 - INFO - ./data/processed_ATL03_20200815115134_07810802_006_01.h5\n", + "2024-12-20 18:53:48,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:00,997 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:54:00,998 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:01,021 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:54:01,022 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:01,066 - INFO - SUCCESS!\n", + "2024-12-20 18:54:01,076 - INFO - ./data/processed_ATL03_20200817235904_08190806_006_01.h5\n", + "2024-12-20 18:54:01,079 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:10,212 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:54:10,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:10,302 - INFO - SUCCESS!\n", + "2024-12-20 18:54:10,311 - INFO - ./data/processed_ATL03_20201114073123_07810902_006_01.h5\n", + "2024-12-20 18:54:10,313 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:16,700 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:54:16,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:16,739 - INFO - SUCCESS!\n", + "2024-12-20 18:54:16,748 - INFO - ./data/processed_ATL03_20201116193853_08190906_006_01.h5\n", + "2024-12-20 18:54:16,751 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:24,451 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:54:24,452 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:24,510 - INFO - SUCCESS!\n", + "2024-12-20 18:54:24,519 - INFO - ./data/processed_ATL03_20210213031117_07811002_006_01.h5\n", + "2024-12-20 18:54:24,521 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:54:25,110 - INFO - ./data/processed_ATL03_20210215151846_08191006_006_01.h5\n", + "2024-12-20 18:54:25,113 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:25,772 - INFO - ./data/processed_ATL03_20210612212711_12231102_006_01.h5\n", + "2024-12-20 18:54:25,774 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:26,088 - INFO - ./data/processed_ATL03_20210813183101_07811202_006_01.h5\n", + "2024-12-20 18:54:26,090 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:41,594 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:54:41,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:41,622 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:54:41,622 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:41,698 - INFO - SUCCESS!\n", + "2024-12-20 18:54:41,708 - INFO - ./data/processed_ATL03_20210816063831_08191206_006_01.h5\n", + "2024-12-20 18:54:41,714 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:48,429 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:54:48,430 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:48,483 - INFO - SUCCESS!\n", + "2024-12-20 18:54:48,498 - INFO - ./data/processed_ATL03_20211112141101_07811302_006_01.h5\n", + "2024-12-20 18:54:48,501 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:54:54,800 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:54:54,800 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:54:54,892 - INFO - SUCCESS!\n", + "2024-12-20 18:54:54,902 - INFO - ./data/processed_ATL03_20211115021831_08191306_006_01.h5\n", + "2024-12-20 18:54:54,905 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:55:12,318 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:55:12,319 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:12,363 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:55:12,363 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:12,434 - INFO - SUCCESS!\n", + "2024-12-20 18:55:12,444 - INFO - ./data/processed_ATL03_20220211095049_07811402_006_01.h5\n", + "2024-12-20 18:55:12,446 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:55:24,884 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:55:24,885 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:24,915 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:55:24,916 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:24,997 - INFO - SUCCESS!\n", + "2024-12-20 18:55:25,008 - INFO - ./data/processed_ATL03_20220213215819_08191406_006_01.h5\n", + "2024-12-20 18:55:25,012 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:55:31,343 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:55:31,344 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:31,384 - INFO - SUCCESS!\n", + "2024-12-20 18:55:31,394 - INFO - ./data/processed_ATL03_20220716144204_03771606_006_02.h5\n", + "2024-12-20 18:55:31,397 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:55:31,735 - INFO - ./data/processed_ATL03_20220812011038_07811602_006_01.h5\n", + "2024-12-20 18:55:31,737 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:55:32,101 - INFO - ./data/processed_ATL03_20221110205019_07811702_006_01.h5\n", + "2024-12-20 18:55:32,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:55:56,248 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:55:56,248 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:56,314 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:55:56,315 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:56,383 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:55:56,384 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:55:56,481 - INFO - SUCCESS!\n", + "2024-12-20 18:55:56,493 - INFO - ./data/processed_ATL03_20221113085750_08191706_006_02.h5\n", + "2024-12-20 18:55:56,496 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:55:56,957 - INFO - ./data/processed_ATL03_20230209163012_07811802_006_02.h5\n", + "2024-12-20 18:55:56,960 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:56:12,713 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:56:12,713 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:56:12,742 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:56:12,743 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:56:12,825 - INFO - SUCCESS!\n", + "2024-12-20 18:56:12,836 - INFO - ./data/processed_ATL03_20230212043742_08191806_006_02.h5\n", + "2024-12-20 18:56:12,839 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:56:21,604 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:56:21,605 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:56:21,660 - INFO - SUCCESS!\n", + "2024-12-20 18:56:21,671 - INFO - ./data/processed_ATL03_20230415014121_03771906_006_03.h5\n", + "2024-12-20 18:56:21,674 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:56:21,998 - INFO - ./data/processed_ATL03_20230511120952_07811902_006_02.h5\n", + "2024-12-20 18:56:22,001 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:56:22,398 - INFO - ./data/processed_ATL03_20230514001721_08191906_006_02.h5\n", + "2024-12-20 18:56:22,401 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:56:22,763 - INFO - ./data/processed_ATL03_20230810074903_07812002_006_02.h5\n", + "2024-12-20 18:56:22,766 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:56:35,640 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:56:35,641 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:56:35,703 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:56:35,704 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:56:35,787 - INFO - SUCCESS!\n", + "2024-12-20 18:56:35,797 - INFO - ./data/processed_ATL03_20230812195633_08192006_006_02.h5\n", + "2024-12-20 18:56:35,804 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:56:45,182 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:56:45,183 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:56:45,281 - INFO - SUCCESS!\n", + "2024-12-20 18:56:45,292 - INFO - ./data/processed_ATL03_20231109032835_07812102_006_01.h5\n", + "2024-12-20 18:56:45,295 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:56:45,713 - INFO - ./data/processed_ATL03_20231111153609_08192106_006_01.h5\n", + "2024-12-20 18:56:45,717 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:56:52,490 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:56:52,491 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:56:52,547 - INFO - SUCCESS!\n", + "2024-12-20 18:56:52,560 - INFO - ./data/processed_ATL03_20240207230812_07812202_006_01.h5\n", + "2024-12-20 18:56:52,564 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:57:07,215 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:57:07,216 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:57:07,222 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:57:07,223 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:57:07,249 - INFO - SUCCESS!\n", + "2024-12-20 18:57:07,259 - INFO - ./data/processed_ATL03_20240210111538_08192206_006_01.h5\n", + "2024-12-20 18:57:07,261 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:57:16,287 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:57:16,288 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:57:16,345 - INFO - SUCCESS!\n", + "2024-12-20 18:57:16,363 - INFO - ./data/processed_ATL03_20240508184728_07812302_006_01.h5\n", + "2024-12-20 18:57:16,365 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:57:23,592 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:57:23,648 - INFO - ./data/processed_ATL03_20240807142742_07812402_006_01.h5\n", + "2024-12-20 18:57:23,651 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:57:30,063 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:57:30,064 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:57:30,121 - INFO - SUCCESS!\n", + "2024-12-20 18:57:30,131 - INFO - ./data/processed_ATL03_20240810023508_08192406_006_01.h5\n", + "2024-12-20 18:57:30,134 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:57:30,467 - INFO - ./data/processed_ATL03_20181209170541_11010102_006_02.h5\n", + "2024-12-20 18:57:30,469 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:57:47,779 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:57:47,780 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:57:47,790 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:57:47,790 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:57:47,809 - INFO - SUCCESS!\n", + "2024-12-20 18:57:47,821 - INFO - ./data/processed_ATL03_20190110034917_01940206_006_02.h5\n", + "2024-12-20 18:57:47,823 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:57:54,375 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:57:54,375 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:57:54,420 - INFO - SUCCESS!\n", + "2024-12-20 18:57:54,430 - INFO - ./data/processed_ATL03_20190310124541_11010202_006_02.h5\n", + "2024-12-20 18:57:54,431 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:58:06,768 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:58:06,769 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:58:06,824 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:58:06,825 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:58:06,907 - INFO - SUCCESS!\n", + "2024-12-20 18:58:06,918 - INFO - ./data/processed_ATL03_20190410232910_01940306_006_02.h5\n", + "2024-12-20 18:58:06,922 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:58:07,821 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 18:58:07,833 - INFO - ./data/processed_ATL03_20190609082516_11010302_006_02.h5\n", + "2024-12-20 18:58:07,834 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:58:31,095 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:58:31,096 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:58:31,155 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:58:31,155 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:58:31,209 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:58:31,209 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:58:31,291 - INFO - SUCCESS!\n", + "2024-12-20 18:58:31,305 - INFO - ./data/processed_ATL03_20201205062406_11010902_006_01.h5\n", + "2024-12-20 18:58:31,307 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:58:37,868 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 18:58:37,911 - INFO - ./data/processed_ATL03_20210903172344_11011202_006_02.h5\n", + "2024-12-20 18:58:37,913 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:01,857 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 18:59:01,857 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:01,891 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:59:01,892 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:01,942 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:59:01,943 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:02,021 - INFO - SUCCESS!\n", + "2024-12-20 18:59:02,033 - INFO - ./data/processed_ATL03_20211005040722_01941306_006_01.h5\n", + "2024-12-20 18:59:02,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:59:02,336 - INFO - ./data/processed_ATL03_20220531073914_10571506_006_01.h5\n", + "2024-12-20 18:59:02,338 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:03,725 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 18:59:03,739 - INFO - ./data/processed_ATL03_20220626180747_00741602_006_01.h5\n", + "2024-12-20 18:59:03,743 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:04,066 - INFO - ./data/processed_ATL03_20220830031910_10571606_006_01.h5\n", + "2024-12-20 18:59:04,069 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:05,079 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 18:59:05,092 - INFO - ./data/processed_ATL03_20221126105121_10191702_006_02.h5\n", + "2024-12-20 18:59:05,097 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 18:59:05,516 - INFO - ./data/processed_ATL03_20190905164633_10630406_006_02.h5\n", + "2024-12-20 18:59:05,519 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:21,363 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:59:21,364 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:21,385 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:59:21,385 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:21,407 - INFO - SUCCESS!\n", + "2024-12-20 18:59:21,419 - INFO - ./data/processed_ATL03_20191006030651_01410502_006_02.h5\n", + "2024-12-20 18:59:21,422 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:27,940 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:59:27,941 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:27,983 - INFO - SUCCESS!\n", + "2024-12-20 18:59:27,992 - INFO - ./data/processed_ATL03_20191106135023_06210506_006_01.h5\n", + "2024-12-20 18:59:27,994 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:42,493 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:59:42,494 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:42,527 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:59:42,528 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:42,576 - INFO - SUCCESS!\n", + "2024-12-20 18:59:42,586 - INFO - ./data/processed_ATL03_20201003094552_01410902_006_01.h5\n", + "2024-12-20 18:59:42,589 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 18:59:57,933 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 18:59:57,934 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:57,971 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 18:59:57,972 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 18:59:58,021 - INFO - SUCCESS!\n", + "2024-12-20 18:59:58,031 - INFO - ./data/processed_ATL03_20201103202930_06210906_006_01.h5\n", + "2024-12-20 18:59:58,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:21,118 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:00:21,119 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:00:21,173 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:00:21,174 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:00:21,219 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:00:21,220 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:00:21,272 - INFO - SUCCESS!\n", + "2024-12-20 19:00:21,283 - INFO - ./data/processed_ATL03_20200805004942_06210806_006_01.h5\n", + "2024-12-20 19:00:21,285 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:27,930 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:00:27,931 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:00:27,960 - INFO - SUCCESS!\n", + "2024-12-20 19:00:27,972 - INFO - ./data/processed_ATL03_20200704140608_01410802_006_01.h5\n", + "2024-12-20 19:00:27,975 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:29,403 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:00:29,419 - INFO - ./data/processed_ATL03_20181108071124_06210106_006_02.h5\n", + "2024-12-20 19:00:29,424 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:30,399 - ERROR - An error occurred: cannot convert float NaN to integer\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:30,411 - INFO - ./data/processed_ATL03_20190807181029_06210406_006_02.h5\n", + "2024-12-20 19:00:30,414 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:00:31,135 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:00:31,154 - INFO - ./data/processed_ATL03_20200205093007_06210606_006_01.h5\n", + "2024-12-20 19:00:31,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:31,523 - INFO - ./data/processed_ATL03_20200306195018_10860602_006_01.h5\n", + "2024-12-20 19:00:31,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:31,894 - INFO - ./data/processed_ATL03_20200404182622_01410702_006_03.h5\n", + "2024-12-20 19:00:31,897 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:00:55,594 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:00:55,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:00:55,643 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:00:55,644 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:00:55,667 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:00:55,667 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:00:55,744 - INFO - SUCCESS!\n", + "2024-12-20 19:00:55,757 - INFO - ./data/processed_ATL03_20200506050956_06210706_006_01.h5\n", + "2024-12-20 19:00:55,760 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:01:15,592 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:01:15,592 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:01:15,603 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:01:15,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:01:15,659 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:01:15,659 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:01:15,738 - INFO - SUCCESS!\n", + "2024-12-20 19:01:15,750 - INFO - ./data/processed_ATL03_20190508223048_06210306_006_02.h5\n", + "2024-12-20 19:01:15,753 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:01:25,309 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:01:25,310 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:01:25,337 - INFO - SUCCESS!\n", + "2024-12-20 19:01:25,347 - INFO - ./data/processed_ATL03_20191104014253_05830502_006_01.h5\n", + "2024-12-20 19:01:25,350 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:01:25,683 - INFO - ./data/processed_ATL03_20230202172748_06741812_006_02.h5\n", + "2024-12-20 19:01:25,687 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:01:41,570 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:01:41,570 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:01:41,615 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:01:41,616 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:01:41,690 - INFO - SUCCESS!\n", + "2024-12-20 19:01:41,703 - INFO - ./data/processed_ATL03_20181016140107_02740107_006_02.h5\n", + "2024-12-20 19:01:41,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:01:42,354 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:01:42,365 - INFO - ./data/processed_ATL03_20181114123724_07160107_006_02.h5\n", + "2024-12-20 19:01:42,368 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:01:48,971 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:01:48,971 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:01:49,013 - INFO - SUCCESS!\n", + "2024-12-20 19:01:49,023 - INFO - ./data/processed_ATL03_20190107215156_01600201_006_02.h5\n", + "2024-12-20 19:01:49,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:02:13,952 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:02:13,953 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:13,997 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:02:13,998 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:14,037 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:02:14,038 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:14,087 - INFO - SUCCESS!\n", + "2024-12-20 19:02:14,102 - INFO - ./data/processed_ATL03_20190115094052_02740207_006_02.h5\n", + "2024-12-20 19:02:14,105 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:02:30,077 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:02:30,077 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:30,104 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:02:30,104 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:30,159 - INFO - SUCCESS!\n", + "2024-12-20 19:02:30,169 - INFO - ./data/processed_ATL03_20190716010019_02740407_006_02.h5\n", + "2024-12-20 19:02:30,172 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:02:30,832 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:02:30,843 - INFO - ./data/processed_ATL03_20191007085119_01600501_006_02.h5\n", + "2024-12-20 19:02:30,846 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:02:31,244 - INFO - ./data/processed_ATL03_20181030075330_04840106_006_02.h5\n", + "2024-12-20 19:02:31,246 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:02:43,637 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:02:43,637 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:43,697 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:02:43,698 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:43,781 - INFO - SUCCESS!\n", + "2024-12-20 19:02:43,791 - INFO - ./data/processed_ATL03_20181104192927_05680102_006_02.h5\n", + "2024-12-20 19:02:43,795 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:02:51,642 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:02:51,642 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:02:51,671 - INFO - SUCCESS!\n", + "2024-12-20 19:02:51,681 - INFO - ./data/processed_ATL03_20190129033327_04840206_006_02.h5\n", + "2024-12-20 19:02:51,683 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:03:13,259 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:03:13,260 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:13,314 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:03:13,315 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:13,372 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:03:13,372 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:13,445 - INFO - SUCCESS!\n", + "2024-12-20 19:03:13,456 - INFO - ./data/processed_ATL03_20190203150920_05680202_006_02.h5\n", + "2024-12-20 19:03:13,458 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:03:13,773 - INFO - ./data/processed_ATL03_20190429231307_04840306_006_02.h5\n", + "2024-12-20 19:03:13,780 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:03:14,584 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:03:14,596 - INFO - ./data/processed_ATL03_20190505104857_05680302_006_02.h5\n", + "2024-12-20 19:03:14,599 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:03:14,942 - INFO - ./data/processed_ATL03_20190729185246_04840406_006_02.h5\n", + "2024-12-20 19:03:14,944 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:03:32,628 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:03:32,629 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:32,682 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:03:32,682 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:32,728 - INFO - SUCCESS!\n", + "2024-12-20 19:03:32,742 - INFO - ./data/processed_ATL03_20200427055215_04840706_006_02.h5\n", + "2024-12-20 19:03:32,745 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:03:45,563 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:03:45,563 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:45,620 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:03:45,621 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:45,667 - INFO - SUCCESS!\n", + "2024-12-20 19:03:45,678 - INFO - ./data/processed_ATL03_20200531160408_10100702_006_01.h5\n", + "2024-12-20 19:03:45,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:03:52,270 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:03:52,270 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:03:52,293 - INFO - SUCCESS!\n", + "2024-12-20 19:03:52,303 - INFO - ./data/processed_ATL03_20200727013202_04840806_006_01.h5\n", + "2024-12-20 19:03:52,305 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:04:09,674 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:04:09,675 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:04:09,728 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:04:09,729 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:04:09,777 - INFO - SUCCESS!\n", + "2024-12-20 19:04:09,786 - INFO - ./data/processed_ATL03_20200801130752_05680802_006_01.h5\n", + "2024-12-20 19:04:09,788 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:04:16,260 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:04:16,269 - INFO - ./data/processed_ATL03_20181129230459_09520103_006_02.h5\n", + "2024-12-20 19:04:16,272 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:04:22,941 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:04:22,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:04:23,028 - INFO - SUCCESS!\n", + "2024-12-20 19:04:23,038 - INFO - ./data/processed_ATL03_20190329172101_00070303_006_02.h5\n", + "2024-12-20 19:04:23,041 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:04:23,368 - INFO - ./data/processed_ATL03_20190331054015_00300305_006_02.h5\n", + "2024-12-20 19:04:23,371 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:04:23,701 - INFO - ./data/processed_ATL03_20190429041614_04720305_006_02.h5\n", + "2024-12-20 19:04:23,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:04:32,921 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:04:32,922 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:04:32,961 - INFO - SUCCESS!\n", + "2024-12-20 19:04:32,975 - INFO - ./data/processed_ATL03_20190530142437_09520303_006_02.h5\n", + "2024-12-20 19:04:32,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:04:39,679 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:04:39,679 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:04:39,727 - INFO - SUCCESS!\n", + "2024-12-20 19:04:39,737 - INFO - ./data/processed_ATL03_20190728235552_04720405_006_02.h5\n", + "2024-12-20 19:04:39,739 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:04:48,193 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:04:48,193 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:04:48,278 - INFO - SUCCESS!\n", + "2024-12-20 19:04:48,289 - INFO - ./data/processed_ATL03_20190927084032_00070503_006_02.h5\n", + "2024-12-20 19:04:48,292 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:04,735 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:05:04,736 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:04,790 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:05:04,791 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:04,850 - INFO - SUCCESS!\n", + "2024-12-20 19:05:04,862 - INFO - ./data/processed_ATL03_20190928205946_00300505_006_02.h5\n", + "2024-12-20 19:05:04,869 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:05:05,177 - INFO - ./data/processed_ATL03_20191027193549_04720505_006_01.h5\n", + "2024-12-20 19:05:05,179 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:12,127 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:05:12,128 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:12,173 - INFO - SUCCESS!\n", + "2024-12-20 19:05:12,184 - INFO - ./data/processed_ATL03_20191228163932_00300605_006_01.h5\n", + "2024-12-20 19:05:12,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:05:12,498 - INFO - ./data/processed_ATL03_20200327000000_00070703_006_01.h5\n", + "2024-12-20 19:05:12,500 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:18,946 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:05:18,947 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:19,014 - INFO - SUCCESS!\n", + "2024-12-20 19:05:19,024 - INFO - ./data/processed_ATL03_20200328121916_00300705_006_01.h5\n", + "2024-12-20 19:05:19,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:05:19,354 - INFO - ./data/processed_ATL03_20200426105522_04720705_006_02.h5\n", + "2024-12-20 19:05:19,359 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:27,849 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:05:27,850 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:27,944 - INFO - SUCCESS!\n", + "2024-12-20 19:05:27,955 - INFO - ./data/processed_ATL03_20200527210350_09520703_006_01.h5\n", + "2024-12-20 19:05:27,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:05:28,284 - INFO - ./data/processed_ATL03_20200625193951_00070803_006_01.h5\n", + "2024-12-20 19:05:28,286 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:28,625 - INFO - ./data/processed_ATL03_20200627075905_00300805_006_01.h5\n", + "2024-12-20 19:05:28,628 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:28,948 - INFO - ./data/processed_ATL03_20200726063509_04720805_006_01.h5\n", + "2024-12-20 19:05:28,952 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:38,385 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:05:38,386 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:38,433 - INFO - SUCCESS!\n", + "2024-12-20 19:05:38,444 - INFO - ./data/processed_ATL03_20200826164337_09520803_006_01.h5\n", + "2024-12-20 19:05:38,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:45,537 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:05:45,538 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:45,600 - INFO - SUCCESS!\n", + "2024-12-20 19:05:45,610 - INFO - ./data/processed_ATL03_20200924151940_00070903_006_02.h5\n", + "2024-12-20 19:05:45,613 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:05:46,283 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:05:46,294 - INFO - ./data/processed_ATL03_20200926033854_00300905_006_02.h5\n", + "2024-12-20 19:05:46,297 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:46,617 - INFO - ./data/processed_ATL03_20201025021454_04720905_006_01.h5\n", + "2024-12-20 19:05:46,619 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:52,952 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:05:52,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:05:52,985 - INFO - SUCCESS!\n", + "2024-12-20 19:05:52,995 - INFO - ./data/processed_ATL03_20201125122327_09520903_006_01.h5\n", + "2024-12-20 19:05:52,998 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:05:53,332 - INFO - ./data/processed_ATL03_20201225231845_00301005_006_01.h5\n", + "2024-12-20 19:05:53,335 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:05:53,662 - INFO - ./data/processed_ATL03_20210123215451_04721005_006_01.h5\n", + "2024-12-20 19:05:53,664 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:00,837 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:06:00,838 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:06:00,925 - INFO - SUCCESS!\n", + "2024-12-20 19:06:00,936 - INFO - ./data/processed_ATL03_20210325063922_00071103_006_01.h5\n", + "2024-12-20 19:06:00,941 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:06:01,857 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:06:01,869 - INFO - ./data/processed_ATL03_20210326185836_00301105_006_01.h5\n", + "2024-12-20 19:06:01,872 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:02,207 - INFO - ./data/processed_ATL03_20210424173440_04721105_006_02.h5\n", + "2024-12-20 19:06:02,210 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:02,524 - INFO - ./data/processed_ATL03_20210624021913_00071203_006_01.h5\n", + "2024-12-20 19:06:02,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:02,850 - INFO - ./data/processed_ATL03_20210625143827_00301205_006_01.h5\n", + "2024-12-20 19:06:02,853 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:03,184 - INFO - ./data/processed_ATL03_20210824232305_09521203_006_01.h5\n", + "2024-12-20 19:06:03,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:14,602 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:06:14,603 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:06:14,652 - INFO - SUCCESS!\n", + "2024-12-20 19:06:14,668 - INFO - ./data/processed_ATL03_20210922215910_00071303_006_02.h5\n", + "2024-12-20 19:06:14,677 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:06:15,085 - INFO - ./data/processed_ATL03_20211023085432_04721305_006_01.h5\n", + "2024-12-20 19:06:15,088 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:15,976 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:06:15,991 - INFO - ./data/processed_ATL03_20211123190303_09521303_006_01.h5\n", + "2024-12-20 19:06:15,994 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:17,360 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:06:17,376 - INFO - ./data/processed_ATL03_20211222173905_00071403_006_01.h5\n", + "2024-12-20 19:06:17,378 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:30,469 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:06:30,469 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:06:30,529 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:06:30,530 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:06:30,612 - INFO - SUCCESS!\n", + "2024-12-20 19:06:30,623 - INFO - ./data/processed_ATL03_20211224055819_00301405_006_01.h5\n", + "2024-12-20 19:06:30,627 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:46,659 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:06:46,660 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:06:46,714 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:06:46,715 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:06:46,797 - INFO - SUCCESS!\n", + "2024-12-20 19:06:46,808 - INFO - ./data/processed_ATL03_20220122043423_04721405_006_01.h5\n", + "2024-12-20 19:06:46,810 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:06:55,360 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:06:55,405 - INFO - ./data/processed_ATL03_20220222144253_09521403_006_01.h5\n", + "2024-12-20 19:06:55,408 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:06:56,020 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:06:56,032 - INFO - ./data/processed_ATL03_20181021083545_03470106_006_02.h5\n", + "2024-12-20 19:06:56,037 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:07:02,605 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:07:02,606 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:07:02,627 - INFO - SUCCESS!\n", + "2024-12-20 19:07:02,638 - INFO - ./data/processed_ATL03_20181202183059_09950102_006_02.h5\n", + "2024-12-20 19:07:02,640 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:07:02,984 - INFO - ./data/processed_ATL03_20190120041533_03470206_006_02.h5\n", + "2024-12-20 19:07:02,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:07:03,313 - INFO - ./data/processed_ATL03_20190420235527_03470306_006_02.h5\n", + "2024-12-20 19:07:03,317 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:07:09,929 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:07:09,974 - INFO - ./data/processed_ATL03_20190720193459_03470406_006_02.h5\n", + "2024-12-20 19:07:09,977 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:07:26,399 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:07:26,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:07:26,456 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:07:26,456 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:07:26,533 - INFO - SUCCESS!\n", + "2024-12-20 19:07:26,545 - INFO - ./data/processed_ATL03_20190818181111_07890406_006_02.h5\n", + "2024-12-20 19:07:26,548 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:07:34,559 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:07:34,560 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:07:34,592 - INFO - SUCCESS!\n", + "2024-12-20 19:07:34,603 - INFO - ./data/processed_ATL03_20190930040628_00500502_006_02.h5\n", + "2024-12-20 19:07:34,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:07:57,122 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:07:57,123 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:07:57,180 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:07:57,181 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:07:57,237 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:07:57,237 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:07:57,321 - INFO - SUCCESS!\n", + "2024-12-20 19:07:57,332 - INFO - ./data/processed_ATL03_20200229204958_09950602_006_01.h5\n", + "2024-12-20 19:07:57,335 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:08:03,587 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:08:03,588 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:08:03,675 - INFO - SUCCESS!\n", + "2024-12-20 19:08:03,685 - INFO - ./data/processed_ATL03_20200329192559_00500702_006_01.h5\n", + "2024-12-20 19:08:03,688 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:08:12,128 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:08:12,128 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:08:12,217 - INFO - SUCCESS!\n", + "2024-12-20 19:08:12,226 - INFO - ./data/processed_ATL03_20200418063433_03470706_006_02.h5\n", + "2024-12-20 19:08:12,229 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:09:06,436 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:09:06,437 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:06,498 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:09:06,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:06,530 - INFO - SUCCESS!\n", + "2024-12-20 19:09:06,540 - INFO - ./data/processed_ATL03_20191231225456_00800602_006_01.h5\n", + "2024-12-20 19:09:06,545 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:09:06,891 - INFO - ./data/processed_ATL03_20200201093829_05600606_006_01.h5\n", + "2024-12-20 19:09:06,894 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:09:22,428 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:09:22,428 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:22,485 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:09:22,485 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:22,567 - INFO - SUCCESS!\n", + "2024-12-20 19:09:22,577 - INFO - ./data/processed_ATL03_20200403064211_01180706_006_03.h5\n", + "2024-12-20 19:09:22,579 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:09:22,895 - INFO - ./data/processed_ATL03_20200429171045_05220702_006_02.h5\n", + "2024-12-20 19:09:22,898 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:09:44,379 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:09:44,380 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:44,436 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:09:44,436 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:44,489 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:09:44,490 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:44,527 - INFO - SUCCESS!\n", + "2024-12-20 19:09:44,538 - INFO - ./data/processed_ATL03_20200729125033_05220802_006_01.h5\n", + "2024-12-20 19:09:44,540 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:09:44,881 - INFO - ./data/processed_ATL03_20200801005803_05600806_006_01.h5\n", + "2024-12-20 19:09:44,884 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:09:54,250 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:09:54,251 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:09:54,340 - INFO - SUCCESS!\n", + "2024-12-20 19:09:54,351 - INFO - ./data/processed_ATL03_20190902131515_10150405_006_02.h5\n", + "2024-12-20 19:09:54,353 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:10:00,752 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:10:00,761 - INFO - ./data/processed_ATL03_20190914000523_11900403_006_02.h5\n", + "2024-12-20 19:10:00,764 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:10:01,087 - INFO - ./data/processed_ATL03_20191012224129_02450503_006_02.h5\n", + "2024-12-20 19:10:01,089 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:10:01,931 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:10:01,944 - INFO - ./data/processed_ATL03_20191103101903_05730505_006_01.h5\n", + "2024-12-20 19:10:01,947 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:10:16,354 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:10:16,355 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:10:16,371 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:10:16,372 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:10:16,392 - INFO - SUCCESS!\n", + "2024-12-20 19:10:16,402 - INFO - ./data/processed_ATL03_20191202085504_10150505_006_01.h5\n", + "2024-12-20 19:10:16,405 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:10:25,709 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:10:25,709 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:10:25,774 - INFO - SUCCESS!\n", + "2024-12-20 19:10:25,784 - INFO - ./data/processed_ATL03_20191213194511_11900503_006_01.h5\n", + "2024-12-20 19:10:25,786 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:10:26,103 - INFO - ./data/processed_ATL03_20200111182113_02450603_006_01.h5\n", + "2024-12-20 19:10:26,105 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:10:33,205 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:10:33,250 - INFO - ./data/processed_ATL03_20200202055849_05730605_006_01.h5\n", + "2024-12-20 19:10:33,255 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:10:34,119 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:10:34,133 - INFO - ./data/processed_ATL03_20200302043448_10150605_006_01.h5\n", + "2024-12-20 19:10:34,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:10:40,404 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:10:40,405 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:10:40,445 - INFO - SUCCESS!\n", + "2024-12-20 19:10:40,454 - INFO - ./data/processed_ATL03_20200313152500_11900603_006_01.h5\n", + "2024-12-20 19:10:40,457 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:10:40,798 - INFO - ./data/processed_ATL03_20200411140101_02450703_006_02.h5\n", + "2024-12-20 19:10:40,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:10:58,916 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:10:58,917 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:10:58,964 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:10:58,965 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:10:59,028 - INFO - SUCCESS!\n", + "2024-12-20 19:10:59,065 - INFO - ./data/processed_ATL03_20200503013836_05730705_006_01.h5\n", + "2024-12-20 19:10:59,069 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:06,075 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:11:06,120 - INFO - ./data/processed_ATL03_20200601001440_10150705_006_01.h5\n", + "2024-12-20 19:11:06,123 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:12,554 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:11:12,555 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:11:12,633 - INFO - SUCCESS!\n", + "2024-12-20 19:11:12,642 - INFO - ./data/processed_ATL03_20200612110444_11900703_006_01.h5\n", + "2024-12-20 19:11:12,645 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:11:13,000 - INFO - ./data/processed_ATL03_20200711094047_02450803_006_01.h5\n", + "2024-12-20 19:11:13,003 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:31,199 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:11:31,199 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:11:31,254 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:11:31,254 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:11:31,353 - INFO - SUCCESS!\n", + "2024-12-20 19:11:31,366 - INFO - ./data/processed_ATL03_20200801211823_05730805_006_01.h5\n", + "2024-12-20 19:11:31,373 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:11:32,538 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:11:32,551 - INFO - ./data/processed_ATL03_20200830195426_10150805_006_01.h5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:32,576 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:39,829 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:11:39,830 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:11:39,877 - INFO - SUCCESS!\n", + "2024-12-20 19:11:39,886 - INFO - ./data/processed_ATL03_20200911064433_11900803_006_02.h5\n", + "2024-12-20 19:11:39,889 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:11:40,212 - INFO - ./data/processed_ATL03_20201010052034_02450903_006_01.h5\n", + "2024-12-20 19:11:40,215 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:41,170 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:11:41,181 - INFO - ./data/processed_ATL03_20201031165812_05730905_006_01.h5\n", + "2024-12-20 19:11:41,184 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:54,057 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:11:54,058 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:11:54,092 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:11:54,092 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:11:54,123 - INFO - SUCCESS!\n", + "2024-12-20 19:11:54,133 - INFO - ./data/processed_ATL03_20201211022425_11900903_006_01.h5\n", + "2024-12-20 19:11:54,142 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:11:55,028 - INFO - ./data/processed_ATL03_20210109010029_02451003_006_01.h5\n", + "2024-12-20 19:11:55,031 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:11:56,325 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:11:56,337 - INFO - ./data/processed_ATL03_20210130123807_05731005_006_01.h5\n", + "2024-12-20 19:11:56,357 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:12:14,032 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:12:14,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:12:14,041 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:12:14,042 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:12:14,065 - INFO - SUCCESS!\n", + "2024-12-20 19:12:14,075 - INFO - ./data/processed_ATL03_20210228111407_10151005_006_01.h5\n", + "2024-12-20 19:12:14,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:12:20,794 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:12:20,795 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:12:20,896 - INFO - SUCCESS!\n", + "2024-12-20 19:12:20,906 - INFO - ./data/processed_ATL03_20210311220417_11901003_006_01.h5\n", + "2024-12-20 19:12:20,910 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:12:21,242 - INFO - ./data/processed_ATL03_20210409204021_02451103_006_02.h5\n", + "2024-12-20 19:12:21,244 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:12:37,495 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:12:37,496 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:12:37,542 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:12:37,543 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:12:37,616 - INFO - SUCCESS!\n", + "2024-12-20 19:12:37,626 - INFO - ./data/processed_ATL03_20210501081756_05731105_006_01.h5\n", + "2024-12-20 19:12:37,629 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:12:38,577 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:12:38,590 - INFO - ./data/processed_ATL03_20210530065400_10151105_006_01.h5\n", + "2024-12-20 19:12:38,592 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:12:45,523 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:12:45,524 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:12:45,599 - INFO - SUCCESS!\n", + "2024-12-20 19:12:45,612 - INFO - ./data/processed_ATL03_20210610174408_11901103_006_01.h5\n", + "2024-12-20 19:12:45,658 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:12:46,007 - INFO - ./data/processed_ATL03_20210709162010_02451203_006_01.h5\n", + "2024-12-20 19:12:46,011 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:01,000 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:13:01,000 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:13:01,062 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:13:01,063 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:13:01,148 - INFO - SUCCESS!\n", + "2024-12-20 19:13:01,159 - INFO - ./data/processed_ATL03_20210731035749_05731205_006_01.h5\n", + "2024-12-20 19:13:01,161 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:17,174 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:13:17,221 - INFO - ./data/processed_ATL03_20191215174405_12190507_006_01.h5\n", + "2024-12-20 19:13:17,224 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:13:17,542 - INFO - ./data/processed_ATL03_20200909045147_11580807_006_02.h5\n", + "2024-12-20 19:13:17,545 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:17,871 - INFO - ./data/processed_ATL03_20181126034741_08940102_006_02.h5\n", + "2024-12-20 19:13:17,873 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:18,210 - INFO - ./data/processed_ATL03_20190316103614_11910206_006_02.h5\n", + "2024-12-20 19:13:18,213 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:18,613 - INFO - ./data/processed_ATL03_20190511155926_06630301_006_02.h5\n", + "2024-12-20 19:13:18,616 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:18,946 - INFO - ./data/processed_ATL03_20190515035648_07160307_006_02.h5\n", + "2024-12-20 19:13:18,948 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:19,268 - INFO - ./data/processed_ATL03_20181229161704_00190201_006_02.h5\n", + "2024-12-20 19:13:19,272 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:34,635 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:13:34,635 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:13:34,666 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:13:34,667 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:13:34,741 - INFO - SUCCESS!\n", + "2024-12-20 19:13:34,753 - INFO - ./data/processed_ATL03_20190102041429_00720207_006_02.h5\n", + "2024-12-20 19:13:34,770 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:13:51,414 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:13:51,414 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:13:51,456 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:13:51,456 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:13:51,518 - INFO - SUCCESS!\n", + "2024-12-20 19:13:51,529 - INFO - ./data/processed_ATL03_20190330115657_00190301_006_02.h5\n", + "2024-12-20 19:13:51,531 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:14:04,907 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:14:04,908 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:14:04,915 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:14:04,916 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:14:04,977 - INFO - SUCCESS!\n", + "2024-12-20 19:14:04,987 - INFO - ./data/processed_ATL03_20190402235420_00720307_006_02.h5\n", + "2024-12-20 19:14:04,990 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:14:22,975 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:14:22,976 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:14:23,012 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:14:23,013 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:14:23,068 - INFO - SUCCESS!\n", + "2024-12-20 19:14:23,078 - INFO - ./data/processed_ATL03_20190928031628_00190501_006_02.h5\n", + "2024-12-20 19:14:23,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:14:23,477 - INFO - ./data/processed_ATL03_20191027015232_04610501_006_01.h5\n", + "2024-12-20 19:14:23,480 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:14:23,832 - INFO - ./data/processed_ATL03_20191227225615_00190601_006_01.h5\n", + "2024-12-20 19:14:23,841 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:14:30,128 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:14:30,129 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:14:30,174 - INFO - SUCCESS!\n", + "2024-12-20 19:14:30,183 - INFO - ./data/processed_ATL03_20191231105337_00720607_006_01.h5\n", + "2024-12-20 19:14:30,185 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:14:30,505 - INFO - ./data/processed_ATL03_20200327183557_00190701_006_01.h5\n", + "2024-12-20 19:14:30,508 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:14:30,853 - INFO - ./data/processed_ATL03_20200331063319_00720707_006_01.h5\n", + "2024-12-20 19:14:30,856 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:14:37,661 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:14:37,662 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:14:37,724 - INFO - SUCCESS!\n", + "2024-12-20 19:14:37,733 - INFO - ./data/processed_ATL03_20200626141547_00190801_006_01.h5\n", + "2024-12-20 19:14:37,736 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:15:02,235 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:15:02,237 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:02,263 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:15:02,264 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:02,310 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:15:02,310 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:02,375 - INFO - SUCCESS!\n", + "2024-12-20 19:15:02,388 - INFO - ./data/processed_ATL03_20200630021310_00720807_006_01.h5\n", + "2024-12-20 19:15:02,391 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:15:09,461 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:15:09,461 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:09,524 - INFO - SUCCESS!\n", + "2024-12-20 19:15:09,533 - INFO - ./data/processed_ATL03_20200925095536_00190901_006_02.h5\n", + "2024-12-20 19:15:09,536 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:15:19,023 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:15:19,023 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:19,089 - INFO - SUCCESS!\n", + "2024-12-20 19:15:19,100 - INFO - ./data/processed_ATL03_20200928215259_00720907_006_02.h5\n", + "2024-12-20 19:15:19,102 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:15:33,346 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:15:33,347 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:33,376 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:15:33,377 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:33,426 - INFO - SUCCESS!\n", + "2024-12-20 19:15:33,437 - INFO - ./data/processed_ATL03_20201225053527_00191001_006_01.h5\n", + "2024-12-20 19:15:33,440 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:15:40,673 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:15:40,673 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:40,739 - INFO - SUCCESS!\n", + "2024-12-20 19:15:40,748 - INFO - ./data/processed_ATL03_20210329131242_00721107_006_01.h5\n", + "2024-12-20 19:15:40,752 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:15:41,120 - INFO - ./data/processed_ATL03_20210624205509_00191201_006_01.h5\n", + "2024-12-20 19:15:41,123 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:15:50,744 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:15:50,744 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:15:50,770 - INFO - SUCCESS!\n", + "2024-12-20 19:15:50,780 - INFO - ./data/processed_ATL03_20210628085233_00721207_006_01.h5\n", + "2024-12-20 19:15:50,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:03,464 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:16:03,465 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:03,495 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:16:03,496 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:03,561 - INFO - SUCCESS!\n", + "2024-12-20 19:16:03,571 - INFO - ./data/processed_ATL03_20210923163506_00191301_006_02.h5\n", + "2024-12-20 19:16:03,577 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:16:04,178 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:16:04,190 - INFO - ./data/processed_ATL03_20210927043230_00721307_006_02.h5\n", + "2024-12-20 19:16:04,193 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:05,055 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:16:05,067 - INFO - ./data/processed_ATL03_20210606163409_11281106_006_01.h5\n", + "2024-12-20 19:16:05,069 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l']\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:05,413 - INFO - ./data/processed_ATL03_20210613034420_12271102_006_01.h5\n", + "2024-12-20 19:16:05,416 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:14,405 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:16:14,406 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:14,487 - INFO - SUCCESS!\n", + "2024-12-20 19:16:14,497 - INFO - ./data/processed_ATL03_20210705151011_01831206_006_01.h5\n", + "2024-12-20 19:16:14,500 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:24,320 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:16:24,320 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:24,364 - INFO - SUCCESS!\n", + "2024-12-20 19:16:24,374 - INFO - ./data/processed_ATL03_20210712022024_02821202_006_01.h5\n", + "2024-12-20 19:16:24,379 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:16:24,845 - INFO - ./data/processed_ATL03_20210905121404_11281206_006_02.h5\n", + "2024-12-20 19:16:24,848 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:25,207 - INFO - ./data/processed_ATL03_20211004105012_01831306_006_01.h5\n", + "2024-12-20 19:16:25,211 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:32,163 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:16:32,164 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:32,262 - INFO - SUCCESS!\n", + "2024-12-20 19:16:32,272 - INFO - ./data/processed_ATL03_20211010220023_02821302_006_01.h5\n", + "2024-12-20 19:16:32,275 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:16:32,748 - INFO - ./data/processed_ATL03_20211205075401_11281306_006_01.h5\n", + "2024-12-20 19:16:32,753 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:33,166 - INFO - ./data/processed_ATL03_20211211190413_12271302_006_01.h5\n", + "2024-12-20 19:16:33,169 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:39,879 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:16:39,880 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:39,928 - INFO - SUCCESS!\n", + "2024-12-20 19:16:39,938 - INFO - ./data/processed_ATL03_20220103063004_01831406_006_01.h5\n", + "2024-12-20 19:16:39,940 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:47,006 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:16:47,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:47,092 - INFO - SUCCESS!\n", + "2024-12-20 19:16:47,101 - INFO - ./data/processed_ATL03_20220109174016_02821402_006_01.h5\n", + "2024-12-20 19:16:47,103 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:16:47,456 - INFO - ./data/processed_ATL03_20220604231346_11281506_006_01.h5\n", + "2024-12-20 19:16:47,475 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:47,855 - INFO - ./data/processed_ATL03_20220611102355_12271502_006_01.h5\n", + "2024-12-20 19:16:47,868 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:16:59,186 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:16:59,187 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:16:59,280 - INFO - SUCCESS!\n", + "2024-12-20 19:16:59,291 - INFO - ./data/processed_ATL03_20220703214953_01831606_006_02.h5\n", + "2024-12-20 19:16:59,294 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:06,397 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:17:06,397 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:17:06,436 - INFO - SUCCESS!\n", + "2024-12-20 19:17:06,447 - INFO - ./data/processed_ATL03_20220710090005_02821602_006_02.h5\n", + "2024-12-20 19:17:06,450 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:17:06,800 - INFO - ./data/processed_ATL03_20220903185343_11281606_006_01.h5\n", + "2024-12-20 19:17:06,803 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:07,181 - INFO - ./data/processed_ATL03_20190416052049_02740307_006_02.h5\n", + "2024-12-20 19:17:07,183 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:07,513 - INFO - ./data/processed_ATL03_20191014204022_02740507_006_02.h5\n", + "2024-12-20 19:17:07,516 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:07,910 - INFO - ./data/processed_ATL03_20200204030706_06020601_006_01.h5\n", + "2024-12-20 19:17:07,912 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:21,079 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:17:21,080 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:17:21,146 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:17:21,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:17:21,237 - INFO - SUCCESS!\n", + "2024-12-20 19:17:21,248 - INFO - ./data/processed_ATL03_20200413115954_02740707_006_02.h5\n", + "2024-12-20 19:17:21,251 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:17:21,664 - INFO - ./data/processed_ATL03_20200713073941_02740807_006_01.h5\n", + "2024-12-20 19:17:21,671 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:22,053 - INFO - ./data/processed_ATL03_20200807181820_06630801_006_01.h5\n", + "2024-12-20 19:17:22,087 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:22,848 - INFO - ./data/processed_ATL03_20201012031928_02740907_006_01.h5\n", + "2024-12-20 19:17:22,851 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:32,669 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:17:32,670 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:17:32,691 - INFO - SUCCESS!\n", + "2024-12-20 19:17:32,703 - INFO - ./data/processed_ATL03_20211203191349_11051301_006_01.h5\n", + "2024-12-20 19:17:32,706 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:17:33,077 - INFO - ./data/processed_ATL03_20211211070254_12191307_006_01.h5\n", + "2024-12-20 19:17:33,080 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:47,919 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:17:47,920 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:17:47,952 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:17:47,953 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:17:48,033 - INFO - SUCCESS!\n", + "2024-12-20 19:17:48,044 - INFO - ./data/processed_ATL03_20220101174952_01601401_006_01.h5\n", + "2024-12-20 19:17:48,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:17:55,041 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:17:55,042 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:17:55,117 - INFO - SUCCESS!\n", + "2024-12-20 19:17:55,126 - INFO - ./data/processed_ATL03_20220312024243_12191407_006_01.h5\n", + "2024-12-20 19:17:55,131 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:18:11,571 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:18:11,572 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:18:11,606 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:18:11,606 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:18:11,691 - INFO - SUCCESS!\n", + "2024-12-20 19:18:11,701 - INFO - ./data/processed_ATL03_20220402132944_01601501_006_02.h5\n", + "2024-12-20 19:18:11,704 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:18:19,851 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:18:19,852 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:18:19,890 - INFO - SUCCESS!\n", + "2024-12-20 19:18:19,900 - INFO - ./data/processed_ATL03_20220909180234_12191607_006_01.h5\n", + "2024-12-20 19:18:19,903 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:18:20,268 - INFO - ./data/processed_ATL03_20221209134210_12191707_006_02.h5\n", + "2024-12-20 19:18:20,270 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:18:36,796 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:18:36,797 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:18:36,821 - INFO - SUCCESS!\n", + "2024-12-20 19:18:36,832 - INFO - ./data/processed_ATL03_20221231002912_01601801_006_02.h5\n", + "2024-12-20 19:18:36,837 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:18:44,159 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:18:44,160 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:18:44,256 - INFO - SUCCESS!\n", + "2024-12-20 19:18:44,268 - INFO - ./data/processed_ATL03_20230310092201_12191807_006_02.h5\n", + "2024-12-20 19:18:44,270 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:18:58,666 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:18:58,667 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:18:58,700 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:18:58,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:18:58,780 - INFO - SUCCESS!\n", + "2024-12-20 19:18:58,791 - INFO - ./data/processed_ATL03_20230331200918_01601901_006_02.h5\n", + "2024-12-20 19:18:58,793 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:15,106 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:19:15,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:19:15,136 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:19:15,137 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:19:15,171 - INFO - SUCCESS!\n", + "2024-12-20 19:19:15,184 - INFO - ./data/processed_ATL03_20230609050126_12191907_006_02.h5\n", + "2024-12-20 19:19:15,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:27,934 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:19:27,935 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:19:27,966 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:19:27,966 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:19:28,048 - INFO - SUCCESS!\n", + "2024-12-20 19:19:28,057 - INFO - ./data/processed_ATL03_20181016005348_02660102_006_02.h5\n", + "2024-12-20 19:19:28,060 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:19:28,639 - INFO - ./data/processed_ATL03_20181128111219_09290106_006_02.h5\n", + "2024-12-20 19:19:28,642 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:28,972 - INFO - ./data/processed_ATL03_20181227094825_13710106_006_02.h5\n", + "2024-12-20 19:19:28,976 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:29,326 - INFO - ./data/processed_ATL03_20190114203334_02660202_006_02.h5\n", + "2024-12-20 19:19:29,329 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:40,307 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:19:40,307 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:19:40,355 - INFO - SUCCESS!\n", + "2024-12-20 19:19:40,364 - INFO - ./data/processed_ATL03_20190227065221_09290206_006_02.h5\n", + "2024-12-20 19:19:40,366 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:19:40,705 - INFO - ./data/processed_ATL03_20190328052820_13710206_006_02.h5\n", + "2024-12-20 19:19:40,707 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:41,041 - INFO - ./data/processed_ATL03_20190415161330_02660302_006_02.h5\n", + "2024-12-20 19:19:41,044 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:47,943 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:19:47,944 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:19:48,031 - INFO - SUCCESS!\n", + "2024-12-20 19:19:48,040 - INFO - ./data/processed_ATL03_20190715115300_02660402_006_02.h5\n", + "2024-12-20 19:19:48,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:19:48,348 - INFO - ./data/processed_ATL03_20190925204751_13710406_006_02.h5\n", + "2024-12-20 19:19:48,351 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:48,674 - INFO - ./data/processed_ATL03_20191014073304_02660502_006_02.h5\n", + "2024-12-20 19:19:48,676 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:49,121 - INFO - ./data/processed_ATL03_20191126175137_09290506_006_01.h5\n", + "2024-12-20 19:19:49,125 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:49,462 - INFO - ./data/processed_ATL03_20191225162738_13710506_006_01.h5\n", + "2024-12-20 19:19:49,481 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:49,899 - INFO - ./data/processed_ATL03_20200113031248_02660602_006_01.h5\n", + "2024-12-20 19:19:49,902 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:50,365 - INFO - ./data/processed_ATL03_20200225133121_09290606_006_01.h5\n", + "2024-12-20 19:19:50,371 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:50,692 - INFO - ./data/processed_ATL03_20200325120720_13710606_006_01.h5\n", + "2024-12-20 19:19:50,695 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:51,136 - INFO - ./data/processed_ATL03_20200412225236_02660702_006_02.h5\n", + "2024-12-20 19:19:51,139 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:51,581 - INFO - ./data/processed_ATL03_20200825045056_09290806_006_01.h5\n", + "2024-12-20 19:19:51,584 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:51,920 - INFO - ./data/processed_ATL03_20200923032659_13710806_006_02.h5\n", + "2024-12-20 19:19:51,925 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:52,248 - INFO - ./data/processed_ATL03_20201011141209_02660902_006_01.h5\n", + "2024-12-20 19:19:52,251 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:52,574 - INFO - ./data/processed_ATL03_20201124003046_09290906_006_01.h5\n", + "2024-12-20 19:19:52,576 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:52,893 - INFO - ./data/processed_ATL03_20201222230650_13710906_006_01.h5\n", + "2024-12-20 19:19:52,896 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:53,222 - INFO - ./data/processed_ATL03_20210110095205_02661002_006_01.h5\n", + "2024-12-20 19:19:53,226 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:19:59,308 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:19:59,309 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:19:59,387 - INFO - SUCCESS!\n", + "2024-12-20 19:19:59,395 - INFO - ./data/processed_ATL03_20210323184642_13711006_006_01.h5\n", + "2024-12-20 19:19:59,397 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:19:59,697 - INFO - ./data/processed_ATL03_20210622142633_13711106_006_01.h5\n", + "2024-12-20 19:19:59,700 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:00,012 - INFO - ./data/processed_ATL03_20210711011146_02661202_006_01.h5\n", + "2024-12-20 19:20:00,014 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:00,653 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:20:00,665 - INFO - ./data/processed_ATL03_20210823113024_09291206_006_01.h5\n", + "2024-12-20 19:20:00,668 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:00,981 - INFO - ./data/processed_ATL03_20210921100629_13711206_006_02.h5\n", + "2024-12-20 19:20:00,984 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:01,320 - INFO - ./data/processed_ATL03_20211009205146_02661302_006_01.h5\n", + "2024-12-20 19:20:01,322 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:08,331 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:20:08,332 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:20:08,422 - INFO - SUCCESS!\n", + "2024-12-20 19:20:08,433 - INFO - ./data/processed_ATL03_20220620210615_13711506_006_01.h5\n", + "2024-12-20 19:20:08,436 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:20:08,765 - INFO - ./data/processed_ATL03_20220709075126_02661602_006_02.h5\n", + "2024-12-20 19:20:08,767 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:09,235 - INFO - ./data/processed_ATL03_20220919164606_13711606_006_01.h5\n", + "2024-12-20 19:20:09,238 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:09,562 - INFO - ./data/processed_ATL03_20221008033113_02661702_006_01.h5\n", + "2024-12-20 19:20:09,565 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:18,713 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:20:18,756 - INFO - ./data/processed_ATL03_20221219122541_13711706_006_02.h5\n", + "2024-12-20 19:20:18,758 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:20:19,079 - INFO - ./data/processed_ATL03_20230106231054_02661802_006_02.h5\n", + "2024-12-20 19:20:19,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:27,538 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:20:27,538 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:20:27,570 - INFO - SUCCESS!\n", + "2024-12-20 19:20:27,579 - INFO - ./data/processed_ATL03_20230320080540_13711806_006_02.h5\n", + "2024-12-20 19:20:27,582 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:20:27,982 - INFO - ./data/processed_ATL03_20181015174925_02610109_006_02.h5\n", + "2024-12-20 19:20:27,984 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:28,329 - INFO - ./data/processed_ATL03_20181223025500_13050113_006_02.h5\n", + "2024-12-20 19:20:28,332 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:28,688 - INFO - ./data/processed_ATL03_20190114132912_02610209_006_02.h5\n", + "2024-12-20 19:20:28,691 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:34,974 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:20:34,983 - INFO - ./data/processed_ATL03_20190121013103_03600213_006_02.h5\n", + "2024-12-20 19:20:35,000 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:20:35,363 - INFO - ./data/processed_ATL03_20190415090908_02610309_006_02.h5\n", + "2024-12-20 19:20:35,368 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:35,731 - INFO - ./data/processed_ATL03_20190421211055_03600313_006_02.h5\n", + "2024-12-20 19:20:35,733 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:36,093 - INFO - ./data/processed_ATL03_20190514074507_07030309_006_02.h5\n", + "2024-12-20 19:20:36,096 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:36,460 - INFO - ./data/processed_ATL03_20190715044837_02610409_006_02.h5\n", + "2024-12-20 19:20:36,462 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:37,185 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:20:37,196 - INFO - ./data/processed_ATL03_20190813032449_07030409_006_02.h5\n", + "2024-12-20 19:20:37,198 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:37,541 - INFO - ./data/processed_ATL03_20191014002841_02610509_006_02.h5\n", + "2024-12-20 19:20:37,544 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:37,882 - INFO - ./data/processed_ATL03_20191020123029_03600513_006_02.h5\n", + "2024-12-20 19:20:37,885 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:38,230 - INFO - ./data/processed_ATL03_20191111230443_07030509_006_01.h5\n", + "2024-12-20 19:20:38,235 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:38,548 - INFO - ./data/processed_ATL03_20200112200825_02610609_006_01.h5\n", + "2024-12-20 19:20:38,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:38,888 - INFO - ./data/processed_ATL03_20200119081012_03600613_006_01.h5\n", + "2024-12-20 19:20:38,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:39,216 - INFO - ./data/processed_ATL03_20200210184426_07030609_006_01.h5\n", + "2024-12-20 19:20:39,227 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:39,564 - INFO - ./data/processed_ATL03_20201011070746_02610909_006_01.h5\n", + "2024-12-20 19:20:39,567 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:39,889 - INFO - ./data/processed_ATL03_20201017190934_03600913_006_01.h5\n", + "2024-12-20 19:20:39,892 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:40,211 - INFO - ./data/processed_ATL03_20201109054350_07030909_006_01.h5\n", + "2024-12-20 19:20:40,214 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:40,527 - INFO - ./data/processed_ATL03_20210110024742_02611009_006_01.h5\n", + "2024-12-20 19:20:40,530 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:40,847 - INFO - ./data/processed_ATL03_20210116144929_03601013_006_01.h5\n", + "2024-12-20 19:20:40,849 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:41,177 - INFO - ./data/processed_ATL03_20210208012346_07031009_006_01.h5\n", + "2024-12-20 19:20:41,186 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:41,521 - INFO - ./data/processed_ATL03_20210410222733_02611109_006_02.h5\n", + "2024-12-20 19:20:41,524 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:41,847 - INFO - ./data/processed_ATL03_20210417102920_03601113_006_02.h5\n", + "2024-12-20 19:20:41,850 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:42,180 - INFO - ./data/processed_ATL03_20210509210337_07031109_006_01.h5\n", + "2024-12-20 19:20:42,182 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:42,506 - INFO - ./data/processed_ATL03_20210710180723_02611209_006_01.h5\n", + "2024-12-20 19:20:42,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:42,843 - INFO - ./data/processed_ATL03_20210717060912_03601213_006_01.h5\n", + "2024-12-20 19:20:42,847 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:43,186 - INFO - ./data/processed_ATL03_20210808164327_07031209_006_01.h5\n", + "2024-12-20 19:20:43,188 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:43,521 - INFO - ./data/processed_ATL03_20211009134723_02611309_006_01.h5\n", + "2024-12-20 19:20:43,525 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:43,853 - INFO - ./data/processed_ATL03_20211016014909_03601313_006_01.h5\n", + "2024-12-20 19:20:43,856 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:44,178 - INFO - ./data/processed_ATL03_20211107122326_07031309_006_01.h5\n", + "2024-12-20 19:20:44,181 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:44,507 - INFO - ./data/processed_ATL03_20220108092714_02611409_006_01.h5\n", + "2024-12-20 19:20:44,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:44,855 - INFO - ./data/processed_ATL03_20220114212903_03601413_006_01.h5\n", + "2024-12-20 19:20:44,872 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:45,281 - INFO - ./data/processed_ATL03_20220206080316_07031409_006_01.h5\n", + "2024-12-20 19:20:45,286 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:45,642 - INFO - ./data/processed_ATL03_20220415170830_03601513_006_02.h5\n", + "2024-12-20 19:20:45,646 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:46,024 - INFO - ./data/processed_ATL03_20220508034309_07031509_006_01.h5\n", + "2024-12-20 19:20:46,027 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:46,370 - INFO - ./data/processed_ATL03_20190523104428_08420314_006_02.h5\n", + "2024-12-20 19:20:46,373 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:46,707 - INFO - ./data/processed_ATL03_20190617212257_12310308_006_02.h5\n", + "2024-12-20 19:20:46,710 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:47,075 - INFO - ./data/processed_ATL03_20190822062416_08420414_006_02.h5\n", + "2024-12-20 19:20:47,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:47,434 - INFO - ./data/processed_ATL03_20190916170248_12310408_006_02.h5\n", + "2024-12-20 19:20:47,436 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:47,770 - INFO - ./data/processed_ATL03_20191121020409_08420514_006_01.h5\n", + "2024-12-20 19:20:47,773 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:48,483 - INFO - ./data/processed_ATL03_20191216124236_12310508_006_01.h5\n", + "2024-12-20 19:20:48,487 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:48,807 - INFO - ./data/processed_ATL03_20200219214352_08420614_006_01.h5\n", + "2024-12-20 19:20:48,810 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:49,554 - INFO - ./data/processed_ATL03_20210217042310_08421014_006_01.h5\n", + "2024-12-20 19:20:49,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:50,222 - INFO - ./data/processed_ATL03_20210314150144_12311008_006_01.h5\n", + "2024-12-20 19:20:50,225 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:50,568 - INFO - ./data/processed_ATL03_20210519000301_08421114_006_01.h5\n", + "2024-12-20 19:20:50,572 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:51,342 - INFO - ./data/processed_ATL03_20210613104132_12311108_006_01.h5\n", + "2024-12-20 19:20:51,345 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:51,701 - INFO - ./data/processed_ATL03_20210817194255_08421214_006_01.h5\n", + "2024-12-20 19:20:51,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:52,947 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:20:52,962 - INFO - ./data/processed_ATL03_20210912062128_12311208_006_02.h5\n", + "2024-12-20 19:20:52,964 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:53,331 - INFO - ./data/processed_ATL03_20190115182634_02800201_006_02.h5\n", + "2024-12-20 19:20:53,334 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:53,670 - INFO - ./data/processed_ATL03_20190115181932_02790214_006_02.h5\n", + "2024-12-20 19:20:53,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:54,012 - INFO - ./data/processed_ATL03_20190416140631_02800301_006_02.h5\n", + "2024-12-20 19:20:54,015 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:54,369 - INFO - ./data/processed_ATL03_20190416135929_02790314_006_02.h5\n", + "2024-12-20 19:20:54,372 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:54,707 - INFO - ./data/processed_ATL03_20181018113530_03030107_006_02.h5\n", + "2024-12-20 19:20:54,709 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:55,117 - INFO - ./data/processed_ATL03_20181018114232_03030108_006_02.h5\n", + "2024-12-20 19:20:55,120 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:55,634 - INFO - ./data/processed_ATL03_20181202213232_09970101_006_02.h5\n", + "2024-12-20 19:20:55,637 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:56,087 - INFO - ./data/processed_ATL03_20181202212529_09960114_006_02.h5\n", + "2024-12-20 19:20:56,090 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:56,542 - INFO - ./data/processed_ATL03_20190117071514_03030207_006_02.h5\n", + "2024-12-20 19:20:56,547 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:56,888 - INFO - ./data/processed_ATL03_20190117072216_03030208_006_02.h5\n", + "2024-12-20 19:20:56,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:57,220 - INFO - ./data/processed_ATL03_20190303171232_09970201_006_02.h5\n", + "2024-12-20 19:20:57,222 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:20:57,907 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:20:57,918 - INFO - ./data/processed_ATL03_20190303170530_09960214_006_02.h5\n", + "2024-12-20 19:20:57,920 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:21:13,943 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:21:13,944 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:13,952 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:21:13,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:13,980 - INFO - SUCCESS!\n", + "2024-12-20 19:21:13,991 - INFO - ./data/processed_ATL03_20190418030215_03030308_006_02.h5\n", + "2024-12-20 19:21:13,993 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:21:20,955 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:21:20,956 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:21,021 - INFO - SUCCESS!\n", + "2024-12-20 19:21:21,032 - INFO - ./data/processed_ATL03_20190418025513_03030307_006_02.h5\n", + "2024-12-20 19:21:21,035 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:21:29,098 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:21:29,099 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:29,156 - INFO - SUCCESS!\n", + "2024-12-20 19:21:29,166 - INFO - ./data/processed_ATL03_20190602125206_09970301_006_02.h5\n", + "2024-12-20 19:21:29,168 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:21:45,384 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:21:45,384 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:45,416 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:21:45,417 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:45,472 - INFO - SUCCESS!\n", + "2024-12-20 19:21:45,482 - INFO - ./data/processed_ATL03_20190602124504_09960314_006_02.h5\n", + "2024-12-20 19:21:45,485 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:21:58,144 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:21:58,145 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:58,176 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:21:58,176 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:21:58,226 - INFO - SUCCESS!\n", + "2024-12-20 19:21:58,235 - INFO - ./data/processed_ATL03_20191201041146_09970501_006_01.h5\n", + "2024-12-20 19:21:58,240 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:21:58,797 - INFO - ./data/processed_ATL03_20191201040443_09960514_006_01.h5\n", + "2024-12-20 19:21:58,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:21:59,386 - INFO - ./data/processed_ATL03_20200115135430_03030607_006_01.h5\n", + "2024-12-20 19:21:59,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:21:59,809 - INFO - ./data/processed_ATL03_20200115140132_03030608_006_01.h5\n", + "2024-12-20 19:21:59,812 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:00,242 - INFO - ./data/processed_ATL03_20200229235131_09970601_006_01.h5\n", + "2024-12-20 19:22:00,245 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:00,788 - INFO - ./data/processed_ATL03_20200229234429_09960614_006_01.h5\n", + "2024-12-20 19:22:00,790 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:01,337 - INFO - ./data/processed_ATL03_20200415094121_03030708_006_02.h5\n", + "2024-12-20 19:22:01,339 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:01,778 - INFO - ./data/processed_ATL03_20200415093419_03030707_006_02.h5\n", + "2024-12-20 19:22:01,780 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:02,211 - INFO - ./data/processed_ATL03_20200530193120_09970701_006_01.h5\n", + "2024-12-20 19:22:02,214 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:20,222 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:22:20,223 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:22:20,259 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:22:20,260 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:22:20,313 - INFO - SUCCESS!\n", + "2024-12-20 19:22:20,323 - INFO - ./data/processed_ATL03_20200530192418_09960714_006_01.h5\n", + "2024-12-20 19:22:20,325 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:32,899 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:22:32,900 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:22:32,924 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:22:32,925 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:22:32,975 - INFO - SUCCESS!\n", + "2024-12-20 19:22:32,985 - INFO - ./data/processed_ATL03_20200715051406_03030807_006_01.h5\n", + "2024-12-20 19:22:32,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:39,875 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:22:39,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:22:39,931 - INFO - SUCCESS!\n", + "2024-12-20 19:22:39,941 - INFO - ./data/processed_ATL03_20200715052108_03030808_006_01.h5\n", + "2024-12-20 19:22:39,943 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:22:51,301 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:22:51,302 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:22:51,365 - INFO - SUCCESS!\n", + "2024-12-20 19:22:51,376 - INFO - ./data/processed_ATL03_20200829151107_09970801_006_01.h5\n", + "2024-12-20 19:22:51,379 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:04,141 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:23:04,142 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:23:04,178 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:23:04,178 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:23:04,225 - INFO - SUCCESS!\n", + "2024-12-20 19:23:04,233 - INFO - ./data/processed_ATL03_20200829150404_09960814_006_01.h5\n", + "2024-12-20 19:23:04,236 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:20,054 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:23:20,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:23:20,085 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:23:20,086 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:23:20,130 - INFO - SUCCESS!\n", + "2024-12-20 19:23:20,139 - INFO - ./data/processed_ATL03_20201014005352_03030907_006_01.h5\n", + "2024-12-20 19:23:20,142 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:28,580 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:23:28,580 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:23:28,628 - INFO - SUCCESS!\n", + "2024-12-20 19:23:28,638 - INFO - ./data/processed_ATL03_20201014010054_03030908_006_01.h5\n", + "2024-12-20 19:23:28,641 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:34,992 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:23:34,993 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:23:35,054 - INFO - SUCCESS!\n", + "2024-12-20 19:23:35,064 - INFO - ./data/processed_ATL03_20201128105056_09970901_006_01.h5\n", + "2024-12-20 19:23:35,068 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:23:35,742 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:23:35,753 - INFO - ./data/processed_ATL03_20201128104354_09960914_006_01.h5\n", + "2024-12-20 19:23:35,755 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:42,525 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:23:42,568 - INFO - ./data/processed_ATL03_20210227063048_09971001_006_01.h5\n", + "2024-12-20 19:23:42,571 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:23:43,170 - INFO - ./data/processed_ATL03_20210227062346_09961014_006_01.h5\n", + "2024-12-20 19:23:43,172 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:43,699 - INFO - ./data/processed_ATL03_20210413162040_03031108_006_02.h5\n", + "2024-12-20 19:23:43,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:44,190 - INFO - ./data/processed_ATL03_20210413161338_03031107_006_02.h5\n", + "2024-12-20 19:23:44,192 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:44,613 - INFO - ./data/processed_ATL03_20210529021040_09971101_006_01.h5\n", + "2024-12-20 19:23:44,616 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:45,163 - INFO - ./data/processed_ATL03_20210529020338_09961114_006_01.h5\n", + "2024-12-20 19:23:45,174 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:45,712 - INFO - ./data/processed_ATL03_20210713115329_03031207_006_01.h5\n", + "2024-12-20 19:23:45,715 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:23:55,081 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:23:55,081 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:23:55,099 - INFO - SUCCESS!\n", + "2024-12-20 19:23:55,108 - INFO - ./data/processed_ATL03_20210713120031_03031208_006_01.h5\n", + "2024-12-20 19:23:55,111 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:23:55,549 - INFO - ./data/processed_ATL03_20210827215036_09971201_006_01.h5\n", + "2024-12-20 19:23:55,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:24:09,736 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:24:09,736 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:09,767 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:24:09,767 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:09,815 - INFO - SUCCESS!\n", + "2024-12-20 19:24:09,826 - INFO - ./data/processed_ATL03_20210827214334_09961214_006_01.h5\n", + "2024-12-20 19:24:09,828 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:24:25,742 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:24:25,743 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:25,770 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:24:25,770 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:25,807 - INFO - SUCCESS!\n", + "2024-12-20 19:24:25,818 - INFO - ./data/processed_ATL03_20211012073328_03031307_006_01.h5\n", + "2024-12-20 19:24:25,820 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:24:32,586 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:24:32,587 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:32,630 - INFO - SUCCESS!\n", + "2024-12-20 19:24:32,652 - INFO - ./data/processed_ATL03_20211012074030_03031308_006_01.h5\n", + "2024-12-20 19:24:32,655 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:24:38,910 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:24:38,911 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:38,967 - INFO - SUCCESS!\n", + "2024-12-20 19:24:38,978 - INFO - ./data/processed_ATL03_20211126173032_09971301_006_01.h5\n", + "2024-12-20 19:24:38,980 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:24:39,852 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:24:39,863 - INFO - ./data/processed_ATL03_20211126172329_09961314_006_01.h5\n", + "2024-12-20 19:24:39,865 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:24:57,497 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:24:57,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:57,523 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:24:57,523 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:24:57,566 - INFO - SUCCESS!\n", + "2024-12-20 19:24:57,578 - INFO - ./data/processed_ATL03_20220111031321_03031407_006_01.h5\n", + "2024-12-20 19:24:57,580 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:25:04,299 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:25:04,299 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:25:04,346 - INFO - SUCCESS!\n", + "2024-12-20 19:25:04,357 - INFO - ./data/processed_ATL03_20220111032023_03031408_006_01.h5\n", + "2024-12-20 19:25:04,359 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:25:10,679 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:25:10,679 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:25:10,735 - INFO - SUCCESS!\n", + "2024-12-20 19:25:10,747 - INFO - ./data/processed_ATL03_20220225131023_09971401_006_01.h5\n", + "2024-12-20 19:25:10,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:25:27,630 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:25:27,674 - INFO - ./data/processed_ATL03_20220225130321_09961414_006_01.h5\n", + "2024-12-20 19:25:27,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:25:40,229 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:25:40,276 - INFO - ./data/processed_ATL03_20181204102815_10200108_006_02.h5\n", + "2024-12-20 19:25:40,280 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:25:47,040 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:25:47,041 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:25:47,067 - INFO - SUCCESS!\n", + "2024-12-20 19:25:47,076 - INFO - ./data/processed_ATL03_20181204102113_10200107_006_02.h5\n", + "2024-12-20 19:25:47,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:25:56,468 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:25:56,469 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:25:56,504 - INFO - SUCCESS!\n", + "2024-12-20 19:25:56,513 - INFO - ./data/processed_ATL03_20190118201812_03270201_006_02.h5\n", + "2024-12-20 19:25:56,518 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:26:11,262 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:26:11,262 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:26:11,294 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:26:11,294 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:26:11,339 - INFO - SUCCESS!\n", + "2024-12-20 19:26:11,348 - INFO - ./data/processed_ATL03_20190118201109_03260214_006_02.h5\n", + "2024-12-20 19:26:11,351 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:26:27,924 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:26:27,925 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:26:27,956 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:26:27,957 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:26:28,009 - INFO - SUCCESS!\n", + "2024-12-20 19:26:28,020 - INFO - ./data/processed_ATL03_20190305060816_10200208_006_02.h5\n", + "2024-12-20 19:26:28,022 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:26:49,082 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:26:49,083 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:26:49,097 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:26:49,097 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:26:49,112 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:26:49,113 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:26:49,141 - INFO - SUCCESS!\n", + "2024-12-20 19:26:49,151 - INFO - ./data/processed_ATL03_20190305060114_10200207_006_02.h5\n", + "2024-12-20 19:26:49,175 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:27:11,228 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:27:11,229 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:27:11,257 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:27:11,258 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:27:11,287 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:27:11,288 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:27:11,331 - INFO - SUCCESS!\n", + "2024-12-20 19:27:11,341 - INFO - ./data/processed_ATL03_20190419155808_03270301_006_02.h5\n", + "2024-12-20 19:27:11,343 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:27:29,180 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:27:29,181 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:27:29,212 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:27:29,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:27:29,256 - INFO - SUCCESS!\n", + "2024-12-20 19:27:29,266 - INFO - ./data/processed_ATL03_20190419155106_03260314_006_02.h5\n", + "2024-12-20 19:27:29,271 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:27:42,024 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:27:42,025 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:27:42,056 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:27:42,056 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:27:42,108 - INFO - SUCCESS!\n", + "2024-12-20 19:27:42,117 - INFO - ./data/processed_ATL03_20190604014048_10200307_006_02.h5\n", + "2024-12-20 19:27:42,120 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:28:05,644 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:28:05,645 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:05,680 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:28:05,681 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:05,706 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:28:05,707 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:05,749 - INFO - SUCCESS!\n", + "2024-12-20 19:28:05,780 - INFO - ./data/processed_ATL03_20190604014749_10200308_006_02.h5\n", + "2024-12-20 19:28:05,785 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:28:18,194 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:28:18,195 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:18,218 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:28:18,219 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:18,265 - INFO - SUCCESS!\n", + "2024-12-20 19:28:18,274 - INFO - ./data/processed_ATL03_20190719113739_03270401_006_02.h5\n", + "2024-12-20 19:28:18,277 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:28:19,114 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:28:19,125 - INFO - ./data/processed_ATL03_20190719113036_03260414_006_02.h5\n", + "2024-12-20 19:28:19,127 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:28:19,962 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:28:19,973 - INFO - ./data/processed_ATL03_20190902212739_10200408_006_02.h5\n", + "2024-12-20 19:28:19,976 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:28:37,313 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:28:37,314 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:37,341 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:28:37,341 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:37,388 - INFO - SUCCESS!\n", + "2024-12-20 19:28:37,397 - INFO - ./data/processed_ATL03_20190902212037_10200407_006_02.h5\n", + "2024-12-20 19:28:37,400 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:28:59,485 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:28:59,485 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:59,520 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:28:59,521 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:59,549 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:28:59,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:28:59,592 - INFO - SUCCESS!\n", + "2024-12-20 19:28:59,602 - INFO - ./data/processed_ATL03_20191202170027_10200507_006_01.h5\n", + "2024-12-20 19:28:59,604 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:29:00,254 - INFO - ./data/processed_ATL03_20191202170729_10200508_006_01.h5\n", + "2024-12-20 19:29:00,265 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:00,850 - INFO - ./data/processed_ATL03_20200117025726_03270601_006_01.h5\n", + "2024-12-20 19:29:00,860 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:01,515 - INFO - ./data/processed_ATL03_20200117025023_03260614_006_01.h5\n", + "2024-12-20 19:29:01,518 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:02,076 - INFO - ./data/processed_ATL03_20200302124011_10200607_006_01.h5\n", + "2024-12-20 19:29:02,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:02,697 - INFO - ./data/processed_ATL03_20200302124713_10200608_006_01.h5\n", + "2024-12-20 19:29:02,699 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:03,284 - INFO - ./data/processed_ATL03_20200602212257_10440701_006_01.h5\n", + "2024-12-20 19:29:03,287 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:03,593 - INFO - ./data/processed_ATL03_20200602211554_10430714_006_01.h5\n", + "2024-12-20 19:29:03,596 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:03,931 - INFO - ./data/processed_ATL03_20200730183501_05410801_006_01.h5\n", + "2024-12-20 19:29:03,940 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:10,748 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:29:10,749 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:29:10,840 - INFO - SUCCESS!\n", + "2024-12-20 19:29:10,853 - INFO - ./data/processed_ATL03_20200730182759_05400814_006_01.h5\n", + "2024-12-20 19:29:10,855 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:29:11,178 - INFO - ./data/processed_ATL03_20200918040927_12950807_006_02.h5\n", + "2024-12-20 19:29:11,180 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:18,985 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:29:18,986 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:29:19,076 - INFO - SUCCESS!\n", + "2024-12-20 19:29:19,087 - INFO - ./data/processed_ATL03_20200918041629_12950808_006_02.h5\n", + "2024-12-20 19:29:19,089 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:25,966 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:29:25,974 - INFO - ./data/processed_ATL03_20201029141450_05410901_006_01.h5\n", + "2024-12-20 19:29:25,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:35,596 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:29:35,597 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:29:35,684 - INFO - SUCCESS!\n", + "2024-12-20 19:29:35,699 - INFO - ./data/processed_ATL03_20201029140747_05400914_006_01.h5\n", + "2024-12-20 19:29:35,701 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:29:36,021 - INFO - ./data/processed_ATL03_20201201124233_10440901_006_01.h5\n", + "2024-12-20 19:29:36,023 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:36,347 - INFO - ./data/processed_ATL03_20201201123531_10430914_006_01.h5\n", + "2024-12-20 19:29:36,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:36,783 - INFO - ./data/processed_ATL03_20210115222524_03501007_006_01.h5\n", + "2024-12-20 19:29:36,790 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:37,239 - INFO - ./data/processed_ATL03_20210115223226_03501008_006_01.h5\n", + "2024-12-20 19:29:37,243 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:37,677 - INFO - ./data/processed_ATL03_20210302082226_10441001_006_01.h5\n", + "2024-12-20 19:29:37,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:38,109 - INFO - ./data/processed_ATL03_20210302081524_10431014_006_01.h5\n", + "2024-12-20 19:29:38,111 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:44,726 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:29:44,727 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:29:44,770 - INFO - SUCCESS!\n", + "2024-12-20 19:29:44,779 - INFO - ./data/processed_ATL03_20210416181217_03501108_006_02.h5\n", + "2024-12-20 19:29:44,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:29:45,312 - INFO - ./data/processed_ATL03_20210416180515_03501107_006_02.h5\n", + "2024-12-20 19:29:45,314 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:45,857 - INFO - ./data/processed_ATL03_20210716134506_03501207_006_01.h5\n", + "2024-12-20 19:29:45,860 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:46,264 - INFO - ./data/processed_ATL03_20210716135208_03501208_006_01.h5\n", + "2024-12-20 19:29:46,267 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:46,702 - INFO - ./data/processed_ATL03_20210830234212_10441201_006_01.h5\n", + "2024-12-20 19:29:46,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:47,016 - INFO - ./data/processed_ATL03_20210830233509_10431214_006_01.h5\n", + "2024-12-20 19:29:47,029 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:47,366 - INFO - ./data/processed_ATL03_20181014163344_02450108_006_02.h5\n", + "2024-12-20 19:29:47,369 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:47,891 - INFO - ./data/processed_ATL03_20181014162642_02450107_006_02.h5\n", + "2024-12-20 19:29:47,893 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:48,458 - INFO - ./data/processed_ATL03_20200313154930_11900607_006_01.h5\n", + "2024-12-20 19:29:48,461 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:29:54,512 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:29:54,513 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:29:54,566 - INFO - SUCCESS!\n", + "2024-12-20 19:29:54,575 - INFO - ./data/processed_ATL03_20200313155632_11900608_006_01.h5\n", + "2024-12-20 19:29:54,577 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:30:02,832 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:30:02,882 - INFO - ./data/processed_ATL03_20200612113616_11900708_006_01.h5\n", + "2024-12-20 19:30:02,885 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:30:03,336 - INFO - ./data/processed_ATL03_20200612112914_11900707_006_01.h5\n", + "2024-12-20 19:30:03,338 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:30:03,666 - INFO - ./data/processed_ATL03_20200711100516_02450807_006_01.h5\n", + "2024-12-20 19:30:03,689 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:30:13,006 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:30:13,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:30:13,060 - INFO - SUCCESS!\n", + "2024-12-20 19:30:13,073 - INFO - ./data/processed_ATL03_20200711101218_02450808_006_01.h5\n", + "2024-12-20 19:30:13,075 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:30:19,699 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:30:19,700 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:30:19,718 - INFO - SUCCESS!\n", + "2024-12-20 19:30:19,726 - INFO - ./data/processed_ATL03_20230211232316_08161801_006_02.h5\n", + "2024-12-20 19:30:19,729 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:30:44,030 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:30:44,031 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:30:44,062 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:30:44,063 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:30:44,105 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:30:44,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:30:44,172 - INFO - SUCCESS!\n", + "2024-12-20 19:30:44,183 - INFO - ./data/processed_ATL03_20230211231613_08151814_006_02.h5\n", + "2024-12-20 19:30:44,186 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:04,128 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:31:04,129 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:31:04,147 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:31:04,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:31:04,170 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:31:04,171 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:31:04,210 - INFO - SUCCESS!\n", + "2024-12-20 19:31:04,225 - INFO - ./data/processed_ATL03_20230513190258_08161901_006_02.h5\n", + "2024-12-20 19:31:04,228 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:31:04,565 - INFO - ./data/processed_ATL03_20230513185555_08151914_006_02.h5\n", + "2024-12-20 19:31:04,568 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:04,911 - INFO - ./data/processed_ATL03_20230530060937_10671907_006_02.h5\n", + "2024-12-20 19:31:04,914 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:14,704 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:31:14,705 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:31:14,736 - INFO - SUCCESS!\n", + "2024-12-20 19:31:14,746 - INFO - ./data/processed_ATL03_20230530061639_10671908_006_02.h5\n", + "2024-12-20 19:31:14,750 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:31:15,132 - INFO - ./data/processed_ATL03_20230214041501_08491810_006_02.h5\n", + "2024-12-20 19:31:15,134 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:23,595 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:31:23,596 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:31:23,696 - INFO - SUCCESS!\n", + "2024-12-20 19:31:23,710 - INFO - ./data/processed_ATL03_20181023212132_03860101_006_02.h5\n", + "2024-12-20 19:31:23,713 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:31:24,052 - INFO - ./data/processed_ATL03_20181023212834_03860102_006_02.h5\n", + "2024-12-20 19:31:24,056 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:24,719 - INFO - ./data/processed_ATL03_20181218175741_12390102_006_02.h5\n", + "2024-12-20 19:31:24,722 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:25,214 - INFO - ./data/processed_ATL03_20190201035048_05300206_006_02.h5\n", + "2024-12-20 19:31:25,217 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:31,690 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:31:31,691 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:31:31,781 - INFO - SUCCESS!\n", + "2024-12-20 19:31:31,793 - INFO - ./data/processed_ATL03_20190319133739_12390202_006_02.h5\n", + "2024-12-20 19:31:31,799 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:31:47,674 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:31:47,675 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:31:47,692 - INFO - SUCCESS!\n", + "2024-12-20 19:31:47,703 - INFO - ./data/processed_ATL03_20190618091714_12390302_006_02.h5\n", + "2024-12-20 19:31:47,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:02,288 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:32:02,289 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:32:02,339 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:32:02,340 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:32:02,368 - INFO - SUCCESS!\n", + "2024-12-20 19:32:02,379 - INFO - ./data/processed_ATL03_20190917045705_12390402_006_02.h5\n", + "2024-12-20 19:32:02,381 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:32:02,777 - INFO - ./data/processed_ATL03_20191217003654_12390502_006_01.h5\n", + "2024-12-20 19:32:02,779 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:03,194 - INFO - ./data/processed_ATL03_20200130102948_05300606_006_01.h5\n", + "2024-12-20 19:32:03,197 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:03,778 - INFO - ./data/processed_ATL03_20200430060933_05300706_006_02.h5\n", + "2024-12-20 19:32:03,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:04,361 - INFO - ./data/processed_ATL03_20220612051524_12391502_006_01.h5\n", + "2024-12-20 19:32:04,364 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:11,259 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:32:11,260 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:32:11,331 - INFO - SUCCESS!\n", + "2024-12-20 19:32:11,341 - INFO - ./data/processed_ATL03_20220726150827_05301606_006_02.h5\n", + "2024-12-20 19:32:11,344 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:32:11,729 - INFO - ./data/processed_ATL03_20220911005522_12391602_006_01.h5\n", + "2024-12-20 19:32:11,734 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:12,308 - INFO - ./data/processed_ATL03_20221025104813_05301706_006_01.h5\n", + "2024-12-20 19:32:12,310 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:28,211 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:32:28,212 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:32:28,271 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:32:28,271 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:32:28,355 - INFO - SUCCESS!\n", + "2024-12-20 19:32:28,366 - INFO - ./data/processed_ATL03_20221210203500_12391702_006_02.h5\n", + "2024-12-20 19:32:28,368 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:32:28,698 - INFO - ./data/processed_ATL03_20230311161449_12391802_006_02.h5\n", + "2024-12-20 19:32:28,701 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:29,035 - INFO - ./data/processed_ATL03_20230425020742_05301906_006_02.h5\n", + "2024-12-20 19:32:29,037 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:32:35,337 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:32:35,386 - INFO - ./data/processed_ATL03_20230610115415_12391902_006_02.h5\n", + "2024-12-20 19:32:35,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:33:00,574 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:33:00,575 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:00,627 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:33:00,628 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:00,683 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:33:00,683 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:00,767 - INFO - SUCCESS!\n", + "2024-12-20 19:33:00,780 - INFO - ./data/processed_ATL03_20230724214655_05302006_006_02.h5\n", + "2024-12-20 19:33:00,783 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:33:13,822 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:33:13,823 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:13,829 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:33:13,830 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:13,852 - INFO - SUCCESS!\n", + "2024-12-20 19:33:13,864 - INFO - ./data/processed_ATL03_20231023172628_05302106_006_02.h5\n", + "2024-12-20 19:33:13,867 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:33:37,359 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:33:37,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:37,415 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:33:37,415 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:37,471 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:33:37,472 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:33:37,553 - INFO - SUCCESS!\n", + "2024-12-20 19:33:37,565 - INFO - ./data/processed_ATL03_20231209031322_12392102_006_02.h5\n", + "2024-12-20 19:33:37,568 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:33:44,525 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:33:44,568 - INFO - ./data/processed_ATL03_20240122130600_05302206_006_01.h5\n", + "2024-12-20 19:33:44,573 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:33:54,130 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:33:54,140 - INFO - ./data/processed_ATL03_20240308225245_12392202_006_01.h5\n", + "2024-12-20 19:33:54,144 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:33:55,031 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:33:55,044 - INFO - ./data/processed_ATL03_20240422084522_05302306_006_01.h5\n", + "2024-12-20 19:33:55,046 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:33:55,674 - INFO - ./data/processed_ATL03_20240722042513_05302406_006_01.h5\n", + "2024-12-20 19:33:55,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:03,486 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:34:03,487 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:34:03,574 - INFO - SUCCESS!\n", + "2024-12-20 19:34:03,584 - INFO - ./data/processed_ATL03_20181029082738_04690107_006_02.h5\n", + "2024-12-20 19:34:03,586 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:34:04,305 - INFO - ./data/processed_ATL03_20181115192308_07360101_006_02.h5\n", + "2024-12-20 19:34:04,307 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:04,628 - INFO - ./data/processed_ATL03_20190128040736_04690207_006_02.h5\n", + "2024-12-20 19:34:04,631 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:05,033 - INFO - ./data/processed_ATL03_20190214150254_07360201_006_02.h5\n", + "2024-12-20 19:34:05,036 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:11,213 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:34:11,214 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:34:11,273 - INFO - SUCCESS!\n", + "2024-12-20 19:34:11,282 - INFO - ./data/processed_ATL03_20190516104234_07360301_006_02.h5\n", + "2024-12-20 19:34:11,284 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:18,065 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:34:18,065 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:34:18,138 - INFO - SUCCESS!\n", + "2024-12-20 19:34:18,149 - INFO - ./data/processed_ATL03_20190717074605_02940401_006_02.h5\n", + "2024-12-20 19:34:18,151 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:34:18,479 - INFO - ./data/processed_ATL03_20190728192655_04690407_006_02.h5\n", + "2024-12-20 19:34:18,482 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:34,777 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:34:34,778 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:34:34,833 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:34:34,834 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:34:34,915 - INFO - SUCCESS!\n", + "2024-12-20 19:34:34,953 - INFO - ./data/processed_ATL03_20191114020212_07360501_006_01.h5\n", + "2024-12-20 19:34:34,957 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:34:35,444 - INFO - ./data/processed_ATL03_20200126104638_04690607_006_01.h5\n", + "2024-12-20 19:34:35,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:35,827 - INFO - ./data/processed_ATL03_20200426062625_04690707_006_02.h5\n", + "2024-12-20 19:34:35,829 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:36,426 - INFO - ./data/processed_ATL03_20200726020612_04690807_006_01.h5\n", + "2024-12-20 19:34:36,428 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:34:50,369 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:34:50,369 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:34:50,426 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:34:50,427 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:34:50,505 - INFO - SUCCESS!\n", + "2024-12-20 19:34:50,514 - INFO - ./data/processed_ATL03_20200812130130_07360801_006_01.h5\n", + "2024-12-20 19:34:50,517 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:34:50,842 - INFO - ./data/processed_ATL03_20201024214557_04690907_006_01.h5\n", + "2024-12-20 19:34:50,844 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:35:06,679 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:35:06,680 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:06,723 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:35:06,724 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:06,787 - INFO - SUCCESS!\n", + "2024-12-20 19:35:06,799 - INFO - ./data/processed_ATL03_20201111084118_07360901_006_01.h5\n", + "2024-12-20 19:35:06,802 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:35:20,577 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:35:20,578 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:20,588 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:35:20,588 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:20,613 - INFO - SUCCESS!\n", + "2024-12-20 19:35:20,622 - INFO - ./data/processed_ATL03_20210424130543_04691107_006_02.h5\n", + "2024-12-20 19:35:20,625 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:35:20,955 - INFO - ./data/processed_ATL03_20210512000105_07361101_006_01.h5\n", + "2024-12-20 19:35:20,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:35:21,510 - INFO - ./data/processed_ATL03_20210724084535_04691207_006_01.h5\n", + "2024-12-20 19:35:21,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:35:37,298 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:35:37,298 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:37,337 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:35:37,337 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:37,406 - INFO - SUCCESS!\n", + "2024-12-20 19:35:37,416 - INFO - ./data/processed_ATL03_20210810194056_07361201_006_01.h5\n", + "2024-12-20 19:35:37,418 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:35:43,603 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:35:43,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:43,681 - INFO - SUCCESS!\n", + "2024-12-20 19:35:43,690 - INFO - ./data/processed_ATL03_20211011164449_02941301_006_01.h5\n", + "2024-12-20 19:35:43,692 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:35:50,776 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:35:50,777 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:35:50,794 - INFO - SUCCESS!\n", + "2024-12-20 19:35:50,804 - INFO - ./data/processed_ATL03_20211023042535_04691307_006_01.h5\n", + "2024-12-20 19:35:50,806 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:36:01,253 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:36:01,300 - INFO - ./data/processed_ATL03_20220122000526_04691407_006_01.h5\n", + "2024-12-20 19:36:01,303 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:36:08,562 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:36:08,608 - INFO - ./data/processed_ATL03_20220208110043_07361401_006_01.h5\n", + "2024-12-20 19:36:08,611 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:36:15,074 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:36:15,117 - INFO - ./data/processed_ATL03_20220722152516_04691607_006_02.h5\n", + "2024-12-20 19:36:15,119 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:36:22,262 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:36:22,263 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:36:22,345 - INFO - SUCCESS!\n", + "2024-12-20 19:36:22,354 - INFO - ./data/processed_ATL03_20220809022037_07361601_006_01.h5\n", + "2024-12-20 19:36:22,357 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:36:23,040 - INFO - ./data/processed_ATL03_20230421022418_04691907_006_02.h5\n", + "2024-12-20 19:36:23,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:36:40,885 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:36:40,886 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:36:40,955 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:36:40,956 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:36:41,051 - INFO - SUCCESS!\n", + "2024-12-20 19:36:41,063 - INFO - ./data/processed_ATL03_20230508131951_07361901_006_02.h5\n", + "2024-12-20 19:36:41,066 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:36:55,609 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:36:55,610 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:36:55,675 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:36:55,675 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:36:55,764 - INFO - SUCCESS!\n", + "2024-12-20 19:36:55,775 - INFO - ./data/processed_ATL03_20230720220343_04692007_006_02.h5\n", + "2024-12-20 19:36:55,778 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:37:05,587 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:37:05,588 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:37:05,684 - INFO - SUCCESS!\n", + "2024-12-20 19:37:05,694 - INFO - ./data/processed_ATL03_20230807085901_07362001_006_02.h5\n", + "2024-12-20 19:37:05,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:37:06,053 - INFO - ./data/processed_ATL03_20231019174319_04692107_006_02.h5\n", + "2024-12-20 19:37:06,056 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:37:21,421 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:37:21,421 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:37:21,485 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:37:21,486 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:37:21,584 - INFO - SUCCESS!\n", + "2024-12-20 19:37:21,596 - INFO - ./data/processed_ATL03_20231106043837_07362101_006_01.h5\n", + "2024-12-20 19:37:21,599 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:37:21,941 - INFO - ./data/processed_ATL03_20240118132244_04692207_006_01.h5\n", + "2024-12-20 19:37:21,945 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:37:22,308 - INFO - ./data/processed_ATL03_20240505195753_07362301_006_01.h5\n", + "2024-12-20 19:37:22,311 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:37:22,973 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:37:22,984 - INFO - ./data/processed_ATL03_20240804153727_07362401_006_01.h5\n", + "2024-12-20 19:37:22,989 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:37:40,694 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:37:40,695 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:37:40,711 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:37:40,711 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:37:40,743 - INFO - SUCCESS!\n", + "2024-12-20 19:37:40,755 - INFO - ./data/processed_ATL03_20181015214513_02640102_006_02.h5\n", + "2024-12-20 19:37:40,757 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:37:48,141 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:37:48,152 - INFO - ./data/processed_ATL03_20181031090209_05000106_006_02.h5\n", + "2024-12-20 19:37:48,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l']\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:37:55,162 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:37:55,162 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:37:55,191 - INFO - SUCCESS!\n", + "2024-12-20 19:37:55,201 - INFO - ./data/processed_ATL03_20190114172500_02640202_006_02.h5\n", + "2024-12-20 19:37:55,204 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:37:55,524 - INFO - ./data/processed_ATL03_20190130044206_05000206_006_02.h5\n", + "2024-12-20 19:37:55,527 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:38:19,751 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:38:19,751 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:38:19,815 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:38:19,816 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:38:19,875 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:38:19,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:38:19,915 - INFO - SUCCESS!\n", + "2024-12-20 19:38:19,929 - INFO - ./data/processed_ATL03_20190501002145_05000306_006_02.h5\n", + "2024-12-20 19:38:19,932 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:38:27,168 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:38:27,169 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:38:27,228 - INFO - SUCCESS!\n", + "2024-12-20 19:38:27,238 - INFO - ./data/processed_ATL03_20190715084425_02640402_006_02.h5\n", + "2024-12-20 19:38:27,241 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:38:28,125 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:38:28,137 - INFO - ./data/processed_ATL03_20190730200125_05000406_006_02.h5\n", + "2024-12-20 19:38:28,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:38:35,555 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:38:35,570 - INFO - ./data/processed_ATL03_20190828183731_09420406_006_02.h5\n", + "2024-12-20 19:38:35,578 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:38:35,918 - INFO - ./data/processed_ATL03_20191029154121_05000506_006_01.h5\n", + "2024-12-20 19:38:35,920 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:38:36,317 - INFO - ./data/processed_ATL03_20191112030032_07060502_006_01.h5\n", + "2024-12-20 19:38:36,321 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:38:36,690 - INFO - ./data/processed_ATL03_20200113000413_02640602_006_01.h5\n", + "2024-12-20 19:38:36,693 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:38:53,712 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:38:53,713 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:38:53,761 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:38:53,762 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:38:53,834 - INFO - SUCCESS!\n", + "2024-12-20 19:38:53,845 - INFO - ./data/processed_ATL03_20200712152347_02640802_006_01.h5\n", + "2024-12-20 19:38:53,847 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:39:01,004 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:39:01,004 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:39:01,095 - INFO - SUCCESS!\n", + "2024-12-20 19:39:01,107 - INFO - ./data/processed_ATL03_20200728024040_05000806_006_01.h5\n", + "2024-12-20 19:39:01,110 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:39:01,455 - INFO - ./data/processed_ATL03_20201026222027_05000906_006_01.h5\n", + "2024-12-20 19:39:01,458 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:39:18,569 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:39:18,569 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:39:18,628 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:39:18,629 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:39:18,712 - INFO - SUCCESS!\n", + "2024-12-20 19:39:18,723 - INFO - ./data/processed_ATL03_20210110064330_02641002_006_01.h5\n", + "2024-12-20 19:39:18,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:39:19,044 - INFO - ./data/processed_ATL03_20210223163627_09421006_006_01.h5\n", + "2024-12-20 19:39:19,047 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:39:19,400 - INFO - ./data/processed_ATL03_20210426134011_05001106_006_02.h5\n", + "2024-12-20 19:39:19,410 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:39:27,100 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:39:27,100 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:39:27,195 - INFO - SUCCESS!\n", + "2024-12-20 19:39:27,207 - INFO - ./data/processed_ATL03_20190126165310_04470201_006_02.h5\n", + "2024-12-20 19:39:27,210 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:39:28,243 - ERROR - An error occurred: cannot convert float NaN to integer\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:39:28,256 - INFO - ./data/processed_ATL03_20190709211703_01800407_006_02.h5\n", + "2024-12-20 19:39:28,261 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:39:35,269 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:39:35,269 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:39:35,358 - INFO - SUCCESS!\n", + "2024-12-20 19:39:35,367 - INFO - ./data/processed_ATL03_20211102045156_06221307_006_01.h5\n", + "2024-12-20 19:39:35,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:39:35,867 - INFO - ./data/processed_ATL03_20220721041049_04471601_006_02.h5\n", + "2024-12-20 19:39:35,869 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:39:52,985 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:39:52,986 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:39:53,041 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:39:53,042 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:39:53,129 - INFO - SUCCESS!\n", + "2024-12-20 19:39:53,154 - INFO - ./data/processed_ATL03_20221019235040_04471701_006_01.h5\n", + "2024-12-20 19:39:53,166 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:40:07,376 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:40:07,376 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:07,433 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:40:07,433 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:07,514 - INFO - SUCCESS!\n", + "2024-12-20 19:40:07,524 - INFO - ./data/processed_ATL03_20230701235411_01802007_006_02.h5\n", + "2024-12-20 19:40:07,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:40:14,861 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:40:14,862 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:14,926 - INFO - SUCCESS!\n", + "2024-12-20 19:40:14,937 - INFO - ./data/processed_ATL03_20181207072958_10640107_006_02.h5\n", + "2024-12-20 19:40:14,941 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:40:15,473 - INFO - ./data/processed_ATL03_20181224182519_13310101_006_02.h5\n", + "2024-12-20 19:40:15,477 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:40:32,239 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:40:32,239 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:32,296 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:40:32,296 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:32,380 - INFO - SUCCESS!\n", + "2024-12-20 19:40:32,398 - INFO - ./data/processed_ATL03_20190308030958_10640207_006_02.h5\n", + "2024-12-20 19:40:32,400 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:40:39,158 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:40:39,159 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:39,180 - INFO - SUCCESS!\n", + "2024-12-20 19:40:39,189 - INFO - ./data/processed_ATL03_20190325140514_13310201_006_02.h5\n", + "2024-12-20 19:40:39,196 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:40:56,502 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:40:56,503 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:56,566 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:40:56,567 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:40:56,647 - INFO - SUCCESS!\n", + "2024-12-20 19:40:56,669 - INFO - ./data/processed_ATL03_20190606224932_10640307_006_02.h5\n", + "2024-12-20 19:40:56,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:41:04,212 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:41:04,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:41:04,304 - INFO - SUCCESS!\n", + "2024-12-20 19:41:04,326 - INFO - ./data/processed_ATL03_20190624094450_13310301_006_02.h5\n", + "2024-12-20 19:41:04,330 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:41:10,986 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:41:11,030 - INFO - ./data/processed_ATL03_20200604052846_10640707_006_01.h5\n", + "2024-12-20 19:41:11,035 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:41:35,893 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:41:35,894 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:41:35,952 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:41:35,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:41:36,016 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:41:36,016 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:41:36,106 - INFO - SUCCESS!\n", + "2024-12-20 19:41:36,117 - INFO - ./data/processed_ATL03_20200621162404_13310701_006_01.h5\n", + "2024-12-20 19:41:36,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:41:36,529 - INFO - ./data/processed_ATL03_20200903010832_10640807_006_02.h5\n", + "2024-12-20 19:41:36,533 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:41:36,881 - INFO - ./data/processed_ATL03_20200920120352_13310801_006_02.h5\n", + "2024-12-20 19:41:36,885 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:41:50,499 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:41:50,500 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:41:50,557 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:41:50,558 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:41:50,632 - INFO - SUCCESS!\n", + "2024-12-20 19:41:50,645 - INFO - ./data/processed_ATL03_20201202204823_10640907_006_01.h5\n", + "2024-12-20 19:41:50,649 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:42:07,867 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:42:07,867 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:42:07,874 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:42:07,875 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:42:07,930 - INFO - SUCCESS!\n", + "2024-12-20 19:42:07,940 - INFO - ./data/processed_ATL03_20201220074344_13310901_006_01.h5\n", + "2024-12-20 19:42:07,942 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:42:15,489 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:42:15,489 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:42:15,593 - INFO - SUCCESS!\n", + "2024-12-20 19:42:15,603 - INFO - ./data/processed_ATL03_20210321032334_13311001_006_01.h5\n", + "2024-12-20 19:42:15,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:42:15,933 - INFO - ./data/processed_ATL03_20210602120807_10641107_006_01.h5\n", + "2024-12-20 19:42:15,935 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:42:23,276 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:42:23,277 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:42:23,371 - INFO - SUCCESS!\n", + "2024-12-20 19:42:23,382 - INFO - ./data/processed_ATL03_20210901074802_10641207_006_02.h5\n", + "2024-12-20 19:42:23,383 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:42:32,504 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:42:32,504 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:42:32,580 - INFO - SUCCESS!\n", + "2024-12-20 19:42:32,590 - INFO - ./data/processed_ATL03_20181023091845_03780106_006_02.h5\n", + "2024-12-20 19:42:32,592 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:42:32,943 - INFO - ./data/processed_ATL03_20181208190538_10870102_006_02.h5\n", + "2024-12-20 19:42:32,948 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:42:33,282 - INFO - ./data/processed_ATL03_20190122045836_03780206_006_02.h5\n", + "2024-12-20 19:42:33,284 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:42:33,633 - INFO - ./data/processed_ATL03_20190309144538_10870202_006_02.h5\n", + "2024-12-20 19:42:33,638 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:42:54,627 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:42:54,676 - INFO - ./data/processed_ATL03_20190423003826_03780306_006_02.h5\n", + "2024-12-20 19:42:54,679 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:43:04,071 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:43:04,072 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:04,148 - INFO - SUCCESS!\n", + "2024-12-20 19:43:04,159 - INFO - ./data/processed_ATL03_20181125195614_08890102_006_02.h5\n", + "2024-12-20 19:43:04,162 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:43:04,558 - INFO - ./data/processed_ATL03_20190923053146_13310402_006_02.h5\n", + "2024-12-20 19:43:04,562 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:43:25,321 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:43:25,322 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:25,389 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:43:25,389 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:25,452 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:43:25,453 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:25,503 - INFO - SUCCESS!\n", + "2024-12-20 19:43:25,515 - INFO - ./data/processed_ATL03_20191223011133_13310502_006_01.h5\n", + "2024-12-20 19:43:25,522 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:43:48,345 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:43:48,346 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:48,405 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:43:48,406 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:48,466 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:43:48,467 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:48,515 - INFO - SUCCESS!\n", + "2024-12-20 19:43:48,527 - INFO - ./data/processed_ATL03_20200222221516_08890602_006_01.h5\n", + "2024-12-20 19:43:48,530 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:43:55,625 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:43:55,626 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:43:55,725 - INFO - SUCCESS!\n", + "2024-12-20 19:43:55,735 - INFO - ./data/processed_ATL03_20200407080809_01800706_006_02.h5\n", + "2024-12-20 19:43:55,738 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:44:18,453 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:44:18,454 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:44:18,465 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:44:18,466 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:44:18,505 - INFO - SUCCESS!\n", + "2024-12-20 19:44:18,517 - INFO - ./data/processed_ATL03_20200822133451_08890802_006_01.h5\n", + "2024-12-20 19:44:18,520 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:44:18,865 - INFO - ./data/processed_ATL03_20201005232741_01800906_006_01.h5\n", + "2024-12-20 19:44:18,867 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:44:35,157 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:44:35,157 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:44:35,210 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:44:35,211 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:44:35,289 - INFO - SUCCESS!\n", + "2024-12-20 19:44:35,302 - INFO - ./data/processed_ATL03_20210202174342_06221006_006_01.h5\n", + "2024-12-20 19:44:35,306 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:44:35,645 - INFO - ./data/processed_ATL03_20210220045435_08891002_006_01.h5\n", + "2024-12-20 19:44:35,648 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:44:49,790 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:44:49,791 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:44:49,848 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:44:49,849 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:44:49,925 - INFO - SUCCESS!\n", + "2024-12-20 19:44:49,937 - INFO - ./data/processed_ATL03_20210705102719_01801206_006_01.h5\n", + "2024-12-20 19:44:49,940 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:44:56,979 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:44:56,980 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:44:57,036 - INFO - SUCCESS!\n", + "2024-12-20 19:44:57,046 - INFO - ./data/processed_ATL03_20211102044325_06221306_006_01.h5\n", + "2024-12-20 19:44:57,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:44:57,386 - INFO - ./data/processed_ATL03_20220103014711_01801406_006_01.h5\n", + "2024-12-20 19:44:57,389 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:07,078 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:45:07,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:45:07,167 - INFO - SUCCESS!\n", + "2024-12-20 19:45:07,177 - INFO - ./data/processed_ATL03_20220403212702_01801506_006_02.h5\n", + "2024-12-20 19:45:07,179 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:14,615 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:45:14,615 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:45:14,709 - INFO - SUCCESS!\n", + "2024-12-20 19:45:14,721 - INFO - ./data/processed_ATL03_20221117223340_08891702_006_02.h5\n", + "2024-12-20 19:45:14,722 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:45:15,149 - INFO - ./data/processed_ATL03_20230101082633_01801806_006_02.h5\n", + "2024-12-20 19:45:15,151 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:15,738 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:45:15,751 - INFO - ./data/processed_ATL03_20230317164937_13311802_006_02.h5\n", + "2024-12-20 19:45:15,754 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:16,872 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:45:16,886 - INFO - ./data/processed_ATL03_20230616122853_13311902_006_02.h5\n", + "2024-12-20 19:45:16,888 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:17,218 - INFO - ./data/processed_ATL03_20240215005123_08892202_006_01.h5\n", + "2024-12-20 19:45:17,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:17,530 - INFO - ./data/processed_ATL03_20181220184041_12700102_006_02.h5\n", + "2024-12-20 19:45:17,533 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:24,574 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:45:24,574 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:45:24,664 - INFO - SUCCESS!\n", + "2024-12-20 19:45:24,675 - INFO - ./data/processed_ATL03_20190105055736_01190206_006_02.h5\n", + "2024-12-20 19:45:24,677 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:45:41,289 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:45:41,290 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:45:41,346 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:45:41,347 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:45:41,427 - INFO - SUCCESS!\n", + "2024-12-20 19:45:41,440 - INFO - ./data/processed_ATL03_20190321142037_12700202_006_02.h5\n", + "2024-12-20 19:45:41,442 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:46:02,756 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:46:02,757 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:02,816 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:46:02,817 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:02,875 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:46:02,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:02,925 - INFO - SUCCESS!\n", + "2024-12-20 19:46:02,937 - INFO - ./data/processed_ATL03_20191219011953_12700502_006_01.h5\n", + "2024-12-20 19:46:02,939 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:46:19,417 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:46:19,417 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:19,481 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:46:19,482 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:19,564 - INFO - SUCCESS!\n", + "2024-12-20 19:46:19,575 - INFO - ./data/processed_ATL03_20200318205941_12700602_006_01.h5\n", + "2024-12-20 19:46:19,577 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:46:32,908 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:46:32,909 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:32,959 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:46:32,960 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:33,024 - INFO - SUCCESS!\n", + "2024-12-20 19:46:33,036 - INFO - ./data/processed_ATL03_20200403081628_01190706_006_03.h5\n", + "2024-12-20 19:46:33,040 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:46:33,643 - INFO - ./data/processed_ATL03_20200617163925_12700702_006_01.h5\n", + "2024-12-20 19:46:33,645 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:46:50,777 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:46:50,777 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:50,839 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:46:50,839 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:50,934 - INFO - SUCCESS!\n", + "2024-12-20 19:46:50,949 - INFO - ./data/processed_ATL03_20200916121913_12700802_006_02.h5\n", + "2024-12-20 19:46:50,951 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:46:58,521 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:46:58,523 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:46:58,625 - INFO - SUCCESS!\n", + "2024-12-20 19:46:58,638 - INFO - ./data/processed_ATL03_20201001233605_01190906_006_01.h5\n", + "2024-12-20 19:46:58,640 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:47:15,449 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:47:15,450 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:47:15,507 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:47:15,508 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:47:15,601 - INFO - SUCCESS!\n", + "2024-12-20 19:47:15,614 - INFO - ./data/processed_ATL03_20210914185844_12701202_006_02.h5\n", + "2024-12-20 19:47:15,618 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:47:30,074 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:47:30,074 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:47:30,090 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:47:30,090 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:47:30,120 - INFO - SUCCESS!\n", + "2024-12-20 19:47:30,133 - INFO - ./data/processed_ATL03_20220315101830_12701402_006_01.h5\n", + "2024-12-20 19:47:30,135 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:47:47,086 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:47:47,086 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:47:47,140 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:47:47,141 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:47:47,221 - INFO - SUCCESS!\n", + "2024-12-20 19:47:47,232 - INFO - ./data/processed_ATL03_20220330213523_01191506_006_01.h5\n", + "2024-12-20 19:47:47,235 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:48:01,531 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:48:01,532 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:01,539 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:48:01,540 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:01,623 - INFO - SUCCESS!\n", + "2024-12-20 19:48:01,637 - INFO - ./data/processed_ATL03_20220629171522_01191606_006_01.h5\n", + "2024-12-20 19:48:01,641 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:48:02,904 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:48:02,919 - INFO - ./data/processed_ATL03_20220913013820_12701602_006_01.h5\n", + "2024-12-20 19:48:02,922 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:48:19,409 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:48:19,409 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:19,467 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:48:19,468 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:19,548 - INFO - SUCCESS!\n", + "2024-12-20 19:48:19,559 - INFO - ./data/processed_ATL03_20220928125511_01191706_006_01.h5\n", + "2024-12-20 19:48:19,562 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:48:26,584 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:48:26,584 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:26,674 - INFO - SUCCESS!\n", + "2024-12-20 19:48:26,686 - INFO - ./data/processed_ATL03_20221212211759_12701702_006_02.h5\n", + "2024-12-20 19:48:26,689 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:48:27,125 - INFO - ./data/processed_ATL03_20221228083454_01191806_006_02.h5\n", + "2024-12-20 19:48:27,128 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:48:33,818 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:48:33,819 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:33,910 - INFO - SUCCESS!\n", + "2024-12-20 19:48:33,921 - INFO - ./data/processed_ATL03_20231211035621_12702102_006_02.h5\n", + "2024-12-20 19:48:33,924 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:48:41,701 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:48:41,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:41,805 - INFO - SUCCESS!\n", + "2024-12-20 19:48:41,815 - INFO - ./data/processed_ATL03_20240310233541_12702202_006_01.h5\n", + "2024-12-20 19:48:41,819 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:48:42,173 - INFO - ./data/processed_ATL03_20240326105220_01192306_006_01.h5\n", + "2024-12-20 19:48:42,176 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:48:51,387 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:48:51,388 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:48:51,473 - INFO - SUCCESS!\n", + "2024-12-20 19:48:51,482 - INFO - ./data/processed_ATL03_20181027091027_04390106_006_02.h5\n", + "2024-12-20 19:48:51,502 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:48:51,962 - INFO - ./data/processed_ATL03_20190110173323_02030202_006_02.h5\n", + "2024-12-20 19:48:51,965 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:49:05,568 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:49:05,569 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:05,629 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:49:05,629 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:05,718 - INFO - SUCCESS!\n", + "2024-12-20 19:49:05,729 - INFO - ./data/processed_ATL03_20190126045022_04390206_006_02.h5\n", + "2024-12-20 19:49:05,731 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:49:12,630 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:49:12,631 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:12,650 - INFO - SUCCESS!\n", + "2024-12-20 19:49:12,659 - INFO - ./data/processed_ATL03_20190427003006_04390306_006_02.h5\n", + "2024-12-20 19:49:12,662 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:49:29,100 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:49:29,100 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:29,134 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:49:29,134 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:29,211 - INFO - SUCCESS!\n", + "2024-12-20 19:49:29,223 - INFO - ./data/processed_ATL03_20190726200942_04390406_006_02.h5\n", + "2024-12-20 19:49:29,226 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:49:42,273 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:49:42,274 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:42,304 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:49:42,304 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:42,365 - INFO - SUCCESS!\n", + "2024-12-20 19:49:42,381 - INFO - ./data/processed_ATL03_20181224062232_13230106_006_02.h5\n", + "2024-12-20 19:49:42,383 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:49:51,559 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:49:51,560 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:51,618 - INFO - SUCCESS!\n", + "2024-12-20 19:49:51,629 - INFO - ./data/processed_ATL03_20210918064035_13231206_006_02.h5\n", + "2024-12-20 19:49:51,631 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:49:59,631 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:49:59,631 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:49:59,702 - INFO - SUCCESS!\n", + "2024-12-20 19:49:59,712 - INFO - ./data/processed_ATL03_20211218022032_13231306_006_01.h5\n", + "2024-12-20 19:49:59,714 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:50:00,352 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:50:00,363 - INFO - ./data/processed_ATL03_20220318220022_13231406_006_01.h5\n", + "2024-12-20 19:50:00,367 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:50:07,238 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:50:07,239 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:50:07,327 - INFO - SUCCESS!\n", + "2024-12-20 19:50:07,339 - INFO - ./data/processed_ATL03_20220519190412_08811506_006_01.h5\n", + "2024-12-20 19:50:07,341 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:50:07,657 - INFO - ./data/processed_ATL03_20220916132009_13231606_006_01.h5\n", + "2024-12-20 19:50:07,660 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:50:08,043 - INFO - ./data/processed_ATL03_20200708014758_01940806_006_01.h5\n", + "2024-12-20 19:50:08,047 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:50:31,361 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:50:31,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:50:31,391 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:50:31,392 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:50:31,419 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:50:31,419 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:50:31,454 - INFO - SUCCESS!\n", + "2024-12-20 19:50:31,466 - INFO - ./data/processed_ATL03_20200803121633_05980802_006_01.h5\n", + "2024-12-20 19:50:31,469 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:50:55,526 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:50:55,526 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:50:55,545 - INFO - SUCCESS!\n", + "2024-12-20 19:50:55,558 - INFO - ./data/processed_ATL03_20201102075621_05980902_006_01.h5\n", + "2024-12-20 19:50:55,561 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:50:55,979 - INFO - ./data/processed_ATL03_20201207183135_11390906_006_01.h5\n", + "2024-12-20 19:50:55,982 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:51:03,247 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:51:03,257 - INFO - ./data/processed_ATL03_20210105170741_01941006_006_01.h5\n", + "2024-12-20 19:51:03,259 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:51:10,000 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:51:10,010 - INFO - ./data/processed_ATL03_20210201033616_05981002_006_01.h5\n", + "2024-12-20 19:51:10,013 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:51:17,864 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:51:17,910 - INFO - ./data/processed_ATL03_20210502231606_05981102_006_01.h5\n", + "2024-12-20 19:51:17,911 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:51:34,206 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:51:34,207 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:51:34,260 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:51:34,261 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:51:34,302 - INFO - SUCCESS!\n", + "2024-12-20 19:51:34,332 - INFO - ./data/processed_ATL03_20210531215210_10401102_006_01.h5\n", + "2024-12-20 19:51:34,335 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:51:34,770 - INFO - ./data/processed_ATL03_20210607095120_11391106_006_01.h5\n", + "2024-12-20 19:51:34,774 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:51:58,786 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:51:58,786 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:51:58,820 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:51:58,821 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:51:58,858 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:51:58,859 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:51:58,886 - INFO - SUCCESS!\n", + "2024-12-20 19:51:58,899 - INFO - ./data/processed_ATL03_20210801185558_05981202_006_01.h5\n", + "2024-12-20 19:51:58,903 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:52:13,397 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:52:13,398 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:52:13,443 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:52:13,443 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:52:13,494 - INFO - SUCCESS!\n", + "2024-12-20 19:52:13,506 - INFO - ./data/processed_ATL03_20210906053116_11391206_006_02.h5\n", + "2024-12-20 19:52:13,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:52:13,874 - INFO - ./data/processed_ATL03_20211031143557_05981302_006_01.h5\n", + "2024-12-20 19:52:13,877 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:52:30,503 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:52:30,560 - INFO - ./data/processed_ATL03_20220130101548_05981402_006_01.h5\n", + "2024-12-20 19:52:30,563 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:52:39,029 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:52:39,076 - INFO - ./data/processed_ATL03_20220306205103_11391406_006_01.h5\n", + "2024-12-20 19:52:39,080 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:52:39,451 - INFO - ./data/processed_ATL03_20220501055538_05981502_006_01.h5\n", + "2024-12-20 19:52:39,454 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:52:39,915 - INFO - ./data/processed_ATL03_20220530043148_10401502_006_01.h5\n", + "2024-12-20 19:52:39,917 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:52:40,268 - INFO - ./data/processed_ATL03_20220605163058_11391506_006_01.h5\n", + "2024-12-20 19:52:40,271 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:53:07,135 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:53:07,136 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:53:07,143 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:53:07,143 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:53:07,175 - INFO - SUCCESS!\n", + "2024-12-20 19:53:07,193 - INFO - ./data/processed_ATL03_20220731013539_05981602_006_02.h5\n", + "2024-12-20 19:53:07,194 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:53:14,698 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:53:14,698 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:53:14,754 - INFO - SUCCESS!\n", + "2024-12-20 19:53:14,772 - INFO - ./data/processed_ATL03_20220904121054_11391606_006_01.h5\n", + "2024-12-20 19:53:14,775 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:53:28,983 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:53:28,983 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:53:29,013 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:53:29,014 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:53:29,054 - INFO - SUCCESS!\n", + "2024-12-20 19:53:29,065 - INFO - ./data/processed_ATL03_20221003104652_01941706_006_01.h5\n", + "2024-12-20 19:53:29,067 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:53:46,462 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:53:46,462 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:53:46,513 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:53:46,513 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:53:46,581 - INFO - SUCCESS!\n", + "2024-12-20 19:53:46,599 - INFO - ./data/processed_ATL03_20221029211524_05981702_006_01.h5\n", + "2024-12-20 19:53:46,603 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:10,762 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:54:10,762 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:54:10,809 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:54:10,810 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:54:10,865 - INFO - SUCCESS!\n", + "2024-12-20 19:54:10,879 - INFO - ./data/processed_ATL03_20230128165520_05981802_006_02.h5\n", + "2024-12-20 19:54:10,883 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:25,288 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:54:25,289 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:54:25,310 - INFO - SUCCESS!\n", + "2024-12-20 19:54:25,323 - INFO - ./data/processed_ATL03_20230305033031_11391806_006_02.h5\n", + "2024-12-20 19:54:25,326 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:54:25,675 - INFO - ./data/processed_ATL03_20230429123455_05981902_006_02.h5\n", + "2024-12-20 19:54:25,676 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:25,966 - INFO - ./data/processed_ATL03_20181021191118_03540102_006_02.h5\n", + "2024-12-20 19:54:25,969 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:26,703 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:26,716 - INFO - ./data/processed_ATL03_20201115070544_07960902_006_01.h5\n", + "2024-12-20 19:54:26,719 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:27,102 - INFO - ./data/processed_ATL03_20201121190455_08950906_006_01.h5\n", + "2024-12-20 19:54:27,105 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:27,577 - INFO - ./data/processed_ATL03_20210220144449_08951006_006_01.h5\n", + "2024-12-20 19:54:27,581 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:28,206 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:28,218 - INFO - ./data/processed_ATL03_20210423114835_04531106_006_02.h5\n", + "2024-12-20 19:54:28,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:29,473 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:29,490 - INFO - ./data/processed_ATL03_20210515222529_07961102_006_01.h5\n", + "2024-12-20 19:54:29,493 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:30,519 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:30,534 - INFO - ./data/processed_ATL03_20210716192916_03541202_006_01.h5\n", + "2024-12-20 19:54:30,537 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:31,535 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:31,550 - INFO - ./data/processed_ATL03_20210821060433_08951206_006_01.h5\n", + "2024-12-20 19:54:31,553 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:54:31,988 - INFO - ./data/processed_ATL03_20211015150914_03541302_006_01.h5\n", + "2024-12-20 19:54:31,992 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:33,635 - ERROR - An error occurred: No objects to concatenate\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:33,651 - INFO - ./data/processed_ATL03_20211120014433_08951306_006_01.h5\n", + "2024-12-20 19:54:33,653 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:34,511 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:34,526 - INFO - ./data/processed_ATL03_20220114104907_03541402_006_01.h5\n", + "2024-12-20 19:54:34,528 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:35,483 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:35,497 - INFO - ./data/processed_ATL03_20220218212421_08951406_006_01.h5\n", + "2024-12-20 19:54:35,500 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:54:36,238 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:36,250 - INFO - ./data/processed_ATL03_20220415062831_03541502_006_02.h5\n", + "2024-12-20 19:54:36,252 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:36,777 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:36,789 - INFO - ./data/processed_ATL03_20220421182808_04531506_006_02.h5\n", + "2024-12-20 19:54:36,792 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l']\n", + "Processing strong beam: gt2l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:38,104 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:38,119 - INFO - ./data/processed_ATL03_20220514050505_07961502_006_01.h5\n", + "2024-12-20 19:54:38,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:39,129 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:39,141 - INFO - ./data/processed_ATL03_20220715020854_03541602_006_02.h5\n", + "2024-12-20 19:54:39,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:54:39,654 - INFO - ./data/processed_ATL03_20220721140804_04531606_006_02.h5\n", + "2024-12-20 19:54:39,656 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:40,639 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:40,654 - INFO - ./data/processed_ATL03_20220813004456_07961602_006_01.h5\n", + "2024-12-20 19:54:40,657 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:54:41,324 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:41,336 - INFO - ./data/processed_ATL03_20220819124411_08951606_006_01.h5\n", + "2024-12-20 19:54:41,339 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:41,699 - INFO - ./data/processed_ATL03_20221013214842_03541702_006_01.h5\n", + "2024-12-20 19:54:41,701 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:42,315 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:42,330 - INFO - ./data/processed_ATL03_20221118082353_08951706_006_02.h5\n", + "2024-12-20 19:54:42,332 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:42,670 - INFO - ./data/processed_ATL03_20230112172825_03541802_006_02.h5\n", + "2024-12-20 19:54:42,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:43,722 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:43,738 - INFO - ./data/processed_ATL03_20230217040342_08951806_006_02.h5\n", + "2024-12-20 19:54:43,741 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:54:44,327 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:44,342 - INFO - ./data/processed_ATL03_20230512114412_07961902_006_02.h5\n", + "2024-12-20 19:54:44,346 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:44,716 - INFO - ./data/processed_ATL03_20230518234317_08951906_006_02.h5\n", + "2024-12-20 19:54:44,727 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:45,096 - INFO - ./data/processed_ATL03_20230713084729_03542002_006_02.h5\n", + "2024-12-20 19:54:45,097 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:45,745 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:45,758 - INFO - ./data/processed_ATL03_20230817192232_08952006_006_02.h5\n", + "2024-12-20 19:54:45,760 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:46,066 - INFO - ./data/processed_ATL03_20231012042650_03542102_006_02.h5\n", + "2024-12-20 19:54:46,068 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:46,721 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:54:46,736 - INFO - ./data/processed_ATL03_20201119065724_08570902_006_01.h5\n", + "2024-12-20 19:54:46,739 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:54:54,996 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:54:55,048 - INFO - ./data/processed_ATL03_20201125185636_09560906_006_01.h5\n", + "2024-12-20 19:54:55,050 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:06,085 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:55:06,096 - INFO - ./data/processed_ATL03_20210120040113_04151002_006_01.h5\n", + "2024-12-20 19:55:06,098 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:55:06,429 - INFO - ./data/processed_ATL03_20210224143628_09561006_006_01.h5\n", + "2024-12-20 19:55:06,432 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:07,250 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:55:07,264 - INFO - ./data/processed_ATL03_20210519221709_08571102_006_01.h5\n", + "2024-12-20 19:55:07,266 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:08,347 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:55:08,360 - INFO - ./data/processed_ATL03_20210526101619_09561106_006_01.h5\n", + "2024-12-20 19:55:08,365 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:08,746 - INFO - ./data/processed_ATL03_20210818175703_08571202_006_01.h5\n", + "2024-12-20 19:55:08,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:22,850 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:55:22,868 - INFO - ./data/processed_ATL03_20210825055614_09561206_006_01.h5\n", + "2024-12-20 19:55:22,871 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:39,608 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:55:39,609 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:55:39,627 - INFO - SUCCESS!\n", + "2024-12-20 19:55:39,638 - INFO - ./data/processed_ATL03_20211019150055_04151302_006_01.h5\n", + "2024-12-20 19:55:39,641 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:55:39,970 - INFO - ./data/processed_ATL03_20211124013613_09561306_006_01.h5\n", + "2024-12-20 19:55:39,973 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:40,653 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:55:40,665 - INFO - ./data/processed_ATL03_20220216091649_08571402_006_01.h5\n", + "2024-12-20 19:55:40,667 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:55:55,468 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:55:55,479 - INFO - ./data/processed_ATL03_20220222211602_09561406_006_01.h5\n", + "2024-12-20 19:55:55,481 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:56:11,732 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:56:11,745 - INFO - ./data/processed_ATL03_20220518045644_08571502_006_01.h5\n", + "2024-12-20 19:56:11,747 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:56:18,466 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:56:18,510 - INFO - ./data/processed_ATL03_20220524165551_09561506_006_01.h5\n", + "2024-12-20 19:56:18,514 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:56:18,837 - INFO - ./data/processed_ATL03_20220817003641_08571602_006_01.h5\n", + "2024-12-20 19:56:18,840 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:56:33,346 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:56:33,358 - INFO - ./data/processed_ATL03_20220823123554_09561606_006_01.h5\n", + "2024-12-20 19:56:33,361 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:56:43,861 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:56:43,872 - INFO - ./data/processed_ATL03_20221115201621_08571702_006_02.h5\n", + "2024-12-20 19:56:43,875 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:56:44,544 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:56:44,556 - INFO - ./data/processed_ATL03_20221122081533_09561706_006_02.h5\n", + "2024-12-20 19:56:44,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:56:45,584 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 19:56:45,597 - INFO - ./data/processed_ATL03_20230214155613_08571802_006_02.h5\n", + "2024-12-20 19:56:45,600 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:57:00,762 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:57:00,763 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:57:00,779 - INFO - SUCCESS!\n", + "2024-12-20 19:57:00,793 - INFO - ./data/processed_ATL03_20230221035526_09561806_006_02.h5\n", + "2024-12-20 19:57:00,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:57:18,705 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:57:18,717 - INFO - ./data/processed_ATL03_20230516113550_08571902_006_02.h5\n", + "2024-12-20 19:57:18,720 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:57:34,018 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:57:34,031 - INFO - ./data/processed_ATL03_20230522233501_09561906_006_02.h5\n", + "2024-12-20 19:57:34,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:57:41,925 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 19:57:41,935 - INFO - ./data/processed_ATL03_20190513215648_06970306_006_02.h5\n", + "2024-12-20 19:57:41,937 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:57:53,059 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:57:53,060 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:57:53,159 - INFO - SUCCESS!\n", + "2024-12-20 19:57:53,171 - INFO - ./data/processed_ATL03_20190714190018_02550406_006_02.h5\n", + "2024-12-20 19:57:53,174 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:58:00,863 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:58:00,863 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:58:00,903 - INFO - SUCCESS!\n", + "2024-12-20 19:58:00,913 - INFO - ./data/processed_ATL03_20190812173630_06970406_006_02.h5\n", + "2024-12-20 19:58:00,915 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:58:16,098 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:58:16,099 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:58:16,164 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:58:16,165 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:58:16,224 - INFO - SUCCESS!\n", + "2024-12-20 19:58:16,235 - INFO - ./data/processed_ATL03_20190908040505_11010402_006_02.h5\n", + "2024-12-20 19:58:16,250 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:58:16,634 - INFO - ./data/processed_ATL03_20191207234455_11010502_006_01.h5\n", + "2024-12-20 19:58:16,636 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:58:17,046 - INFO - ./data/processed_ATL03_20200210085607_06970606_006_01.h5\n", + "2024-12-20 19:58:17,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:58:28,045 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 19:58:28,089 - INFO - ./data/processed_ATL03_20200307192440_11010602_006_01.h5\n", + "2024-12-20 19:58:28,092 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:58:35,078 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:58:35,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:58:35,151 - INFO - SUCCESS!\n", + "2024-12-20 19:58:35,162 - INFO - ./data/processed_ATL03_20200412055954_02550706_006_02.h5\n", + "2024-12-20 19:58:35,165 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:58:41,976 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:58:41,976 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:58:41,998 - INFO - SUCCESS!\n", + "2024-12-20 19:58:42,008 - INFO - ./data/processed_ATL03_20200606150429_11010702_006_01.h5\n", + "2024-12-20 19:58:42,012 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:58:50,181 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:58:50,181 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:58:50,212 - INFO - SUCCESS!\n", + "2024-12-20 19:58:50,223 - INFO - ./data/processed_ATL03_20200810001543_06970806_006_01.h5\n", + "2024-12-20 19:58:50,224 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:58:50,500 - INFO - ./data/processed_ATL03_20200905104415_11010802_006_02.h5\n", + "2024-12-20 19:58:50,502 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:59:06,211 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:59:06,212 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:59:06,253 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:59:06,254 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:59:06,334 - INFO - SUCCESS!\n", + "2024-12-20 19:59:06,345 - INFO - ./data/processed_ATL03_20201010211927_02550906_006_01.h5\n", + "2024-12-20 19:59:06,353 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:59:06,687 - INFO - ./data/processed_ATL03_20201108195531_06970906_006_01.h5\n", + "2024-12-20 19:59:06,690 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:59:07,010 - INFO - ./data/processed_ATL03_20210207153527_06971006_006_01.h5\n", + "2024-12-20 19:59:07,013 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:59:31,656 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:59:31,657 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:59:31,687 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 19:59:31,688 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:59:31,708 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 19:59:31,708 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:59:31,750 - INFO - SUCCESS!\n", + "2024-12-20 19:59:31,765 - INFO - ./data/processed_ATL03_20210306020400_11011002_006_01.h5\n", + "2024-12-20 19:59:31,767 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:59:32,117 - INFO - ./data/processed_ATL03_20210410123914_02551106_006_02.h5\n", + "2024-12-20 19:59:32,119 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:59:40,498 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 19:59:40,499 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 19:59:40,549 - INFO - SUCCESS!\n", + "2024-12-20 19:59:40,561 - INFO - ./data/processed_ATL03_20210604214350_11011102_006_01.h5\n", + "2024-12-20 19:59:40,564 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 19:59:41,022 - INFO - ./data/processed_ATL03_20210808065508_06971206_006_01.h5\n", + "2024-12-20 19:59:41,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 19:59:41,346 - INFO - ./data/processed_ATL03_20211107023508_06971306_006_01.h5\n", + "2024-12-20 19:59:41,348 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:00:04,885 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:00:04,886 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:00:04,941 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:00:04,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:00:04,983 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:00:04,983 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:00:05,025 - INFO - SUCCESS!\n", + "2024-12-20 20:00:05,036 - INFO - ./data/processed_ATL03_20211203130341_11011302_006_01.h5\n", + "2024-12-20 20:00:05,039 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:00:05,432 - INFO - ./data/processed_ATL03_20220205221457_06971406_006_01.h5\n", + "2024-12-20 20:00:05,434 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:00:05,745 - INFO - ./data/processed_ATL03_20220304084331_11011402_006_01.h5\n", + "2024-12-20 20:00:05,747 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:00:29,357 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:00:29,358 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:00:29,381 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:00:29,382 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:00:29,417 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:00:29,418 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:00:29,462 - INFO - SUCCESS!\n", + "2024-12-20 20:00:29,473 - INFO - ./data/processed_ATL03_20220603042329_11011502_006_01.h5\n", + "2024-12-20 20:00:29,476 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:00:29,800 - INFO - ./data/processed_ATL03_20220708145843_02551606_006_02.h5\n", + "2024-12-20 20:00:29,802 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:00:37,841 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:00:37,842 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:00:37,860 - INFO - SUCCESS!\n", + "2024-12-20 20:00:37,869 - INFO - ./data/processed_ATL03_20220902000322_11011602_006_01.h5\n", + "2024-12-20 20:00:37,871 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:00:45,108 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:00:45,158 - INFO - ./data/processed_ATL03_20221105091433_06971706_006_01.h5\n", + "2024-12-20 20:00:45,161 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:01:01,987 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:01:01,987 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:01:02,009 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:01:02,010 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:01:02,096 - INFO - SUCCESS!\n", + "2024-12-20 20:01:02,110 - INFO - ./data/processed_ATL03_20221201194302_11011702_006_02.h5\n", + "2024-12-20 20:01:02,113 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:01:24,215 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:01:24,215 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:01:24,226 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:01:24,227 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:01:24,248 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:01:24,249 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:01:24,292 - INFO - SUCCESS!\n", + "2024-12-20 20:01:24,304 - INFO - ./data/processed_ATL03_20230204045421_06971806_006_02.h5\n", + "2024-12-20 20:01:24,306 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:01:24,671 - INFO - ./data/processed_ATL03_20230302152246_11011802_006_02.h5\n", + "2024-12-20 20:01:24,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:01:50,438 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:01:50,439 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:01:50,475 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:01:50,475 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:01:50,529 - INFO - SUCCESS!\n", + "2024-12-20 20:01:50,548 - INFO - ./data/processed_ATL03_20230407015805_02551906_006_02.h5\n", + "2024-12-20 20:01:50,551 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:01:50,888 - INFO - ./data/processed_ATL03_20230601110225_11011902_006_02.h5\n", + "2024-12-20 20:01:50,891 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:08,197 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:02:08,198 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:02:08,216 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:02:08,217 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:02:08,282 - INFO - SUCCESS!\n", + "2024-12-20 20:02:08,294 - INFO - ./data/processed_ATL03_20230804201313_06972006_006_02.h5\n", + "2024-12-20 20:02:08,300 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:16,282 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:02:16,283 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:02:16,335 - INFO - SUCCESS!\n", + "2024-12-20 20:02:16,346 - INFO - ./data/processed_ATL03_20181024071849_03920106_006_02.h5\n", + "2024-12-20 20:02:16,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:02:16,689 - INFO - ./data/processed_ATL03_20181029185440_04760102_006_02.h5\n", + "2024-12-20 20:02:16,690 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:16,991 - INFO - ./data/processed_ATL03_20181122055455_08340106_006_02.h5\n", + "2024-12-20 20:02:16,993 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:17,346 - INFO - ./data/processed_ATL03_20181218162324_12380102_006_02.h5\n", + "2024-12-20 20:02:17,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:17,792 - INFO - ./data/processed_ATL03_20190116145920_02930202_006_02.h5\n", + "2024-12-20 20:02:17,795 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:18,160 - INFO - ./data/processed_ATL03_20190417103919_02930302_006_02.h5\n", + "2024-12-20 20:02:18,164 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:18,555 - INFO - ./data/processed_ATL03_20190522211426_08340306_006_02.h5\n", + "2024-12-20 20:02:18,567 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:18,907 - INFO - ./data/processed_ATL03_20190723181804_03920406_006_02.h5\n", + "2024-12-20 20:02:18,911 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:33,321 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:02:33,322 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:02:33,378 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:02:33,379 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:02:33,443 - INFO - SUCCESS!\n", + "2024-12-20 20:02:33,455 - INFO - ./data/processed_ATL03_20190815045501_07350402_006_02.h5\n", + "2024-12-20 20:02:33,468 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:02:43,134 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:02:43,135 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:02:43,174 - INFO - SUCCESS!\n", + "2024-12-20 20:02:43,185 - INFO - ./data/processed_ATL03_20190821165414_08340406_006_02.h5\n", + "2024-12-20 20:02:43,188 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:03:05,770 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:03:05,771 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:03:05,802 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:03:05,802 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:03:05,829 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:03:05,830 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:03:05,870 - INFO - SUCCESS!\n", + "2024-12-20 20:03:05,882 - INFO - ./data/processed_ATL03_20191016015852_02930502_006_02.h5\n", + "2024-12-20 20:03:05,884 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:03:28,691 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:03:28,692 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:03:28,719 - INFO - SUCCESS!\n", + "2024-12-20 20:03:28,731 - INFO - ./data/processed_ATL03_20200219081349_08340606_006_01.h5\n", + "2024-12-20 20:03:28,734 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:03:35,687 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:03:35,734 - INFO - ./data/processed_ATL03_20200316184225_12380602_006_01.h5\n", + "2024-12-20 20:03:35,738 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:03:46,654 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:03:46,655 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:03:46,705 - INFO - SUCCESS!\n", + "2024-12-20 20:03:46,716 - INFO - ./data/processed_ATL03_20200414171825_02930702_006_02.h5\n", + "2024-12-20 20:03:46,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:03:47,827 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:03:47,842 - INFO - ./data/processed_ATL03_20200421051736_03920706_006_02.h5\n", + "2024-12-20 20:03:47,845 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:03:54,463 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:03:54,509 - INFO - ./data/processed_ATL03_20200818233325_08340806_006_01.h5\n", + "2024-12-20 20:03:54,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:04:01,395 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:04:01,395 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:04:01,450 - INFO - SUCCESS!\n", + "2024-12-20 20:04:01,460 - INFO - ./data/processed_ATL03_20200914100157_12380802_006_02.h5\n", + "2024-12-20 20:04:01,463 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:04:01,812 - INFO - ./data/processed_ATL03_20201019203709_03920906_006_01.h5\n", + "2024-12-20 20:04:01,815 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:04:02,177 - INFO - ./data/processed_ATL03_20210216145307_08341006_006_01.h5\n", + "2024-12-20 20:04:02,181 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:04:19,844 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:04:19,845 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:04:19,861 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:04:19,862 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:04:19,900 - INFO - SUCCESS!\n", + "2024-12-20 20:04:19,913 - INFO - ./data/processed_ATL03_20210315012141_12381002_006_01.h5\n", + "2024-12-20 20:04:19,916 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:04:34,060 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:04:34,060 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:04:34,089 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:04:34,090 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:04:34,139 - INFO - SUCCESS!\n", + "2024-12-20 20:04:34,150 - INFO - ./data/processed_ATL03_20210412235744_02931102_006_02.h5\n", + "2024-12-20 20:04:34,156 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:04:50,803 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:04:50,850 - INFO - ./data/processed_ATL03_20210419115655_03921106_006_02.h5\n", + "2024-12-20 20:04:50,871 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:05:04,810 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:05:04,811 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:05:04,830 - INFO - SUCCESS!\n", + "2024-12-20 20:05:04,841 - INFO - ./data/processed_ATL03_20210712193735_02931202_006_01.h5\n", + "2024-12-20 20:05:04,844 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:05:05,202 - INFO - ./data/processed_ATL03_20211116015252_08341306_006_01.h5\n", + "2024-12-20 20:05:05,206 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:05:28,431 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:05:28,431 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:05:28,457 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:05:28,457 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:05:28,509 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:05:28,510 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:05:28,579 - INFO - SUCCESS!\n", + "2024-12-20 20:05:28,591 - INFO - ./data/processed_ATL03_20211212122125_12381302_006_01.h5\n", + "2024-12-20 20:05:28,597 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:05:42,958 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:05:42,958 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:05:42,995 - INFO - SUCCESS!\n", + "2024-12-20 20:05:43,007 - INFO - ./data/processed_ATL03_20220110105727_02931402_006_01.h5\n", + "2024-12-20 20:05:43,010 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:05:43,375 - INFO - ./data/processed_ATL03_20220214213239_08341406_006_01.h5\n", + "2024-12-20 20:05:43,378 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:05:43,722 - INFO - ./data/processed_ATL03_20220711021716_02931602_006_02.h5\n", + "2024-12-20 20:05:43,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:05:44,079 - INFO - ./data/processed_ATL03_20220717141626_03921606_006_02.h5\n", + "2024-12-20 20:05:44,082 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:05:53,875 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:05:53,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:05:53,939 - INFO - SUCCESS!\n", + "2024-12-20 20:05:53,949 - INFO - ./data/processed_ATL03_20221114083211_08341706_006_02.h5\n", + "2024-12-20 20:05:53,951 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:00,471 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:06:00,514 - INFO - ./data/processed_ATL03_20221210190042_12381702_006_02.h5\n", + "2024-12-20 20:06:00,519 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:06:01,143 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:06:01,155 - INFO - ./data/processed_ATL03_20230108173645_02931802_006_02.h5\n", + "2024-12-20 20:06:01,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:01,483 - INFO - ./data/processed_ATL03_20230213041205_08341806_006_02.h5\n", + "2024-12-20 20:06:01,486 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:01,804 - INFO - ./data/processed_ATL03_20230409131634_02931902_006_02.h5\n", + "2024-12-20 20:06:01,806 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:08,644 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:06:08,645 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:06:08,728 - INFO - SUCCESS!\n", + "2024-12-20 20:06:08,738 - INFO - ./data/processed_ATL03_20230416011550_03921906_006_03.h5\n", + "2024-12-20 20:06:08,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:15,823 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:06:15,824 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:06:15,880 - INFO - SUCCESS!\n", + "2024-12-20 20:06:15,890 - INFO - ./data/processed_ATL03_20230813193054_08342006_006_02.h5\n", + "2024-12-20 20:06:15,893 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:06:16,526 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:06:16,539 - INFO - ./data/processed_ATL03_20230909055925_12382002_006_02.h5\n", + "2024-12-20 20:06:16,542 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:16,908 - INFO - ./data/processed_ATL03_20231008043518_02932102_006_02.h5\n", + "2024-12-20 20:06:16,912 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:17,254 - INFO - ./data/processed_ATL03_20231112151033_08342106_006_01.h5\n", + "2024-12-20 20:06:17,264 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:17,615 - INFO - ./data/processed_ATL03_20181127173038_09180102_006_02.h5\n", + "2024-12-20 20:06:17,617 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:28,188 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:06:28,189 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:06:28,231 - INFO - SUCCESS!\n", + "2024-12-20 20:06:28,242 - INFO - ./data/processed_ATL03_20190102040559_00720206_006_02.h5\n", + "2024-12-20 20:06:28,245 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:29,280 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:06:29,293 - INFO - ./data/processed_ATL03_20190226131040_09180202_006_02.h5\n", + "2024-12-20 20:06:29,295 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:42,511 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:06:42,512 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:06:42,542 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:06:42,542 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:06:42,572 - INFO - SUCCESS!\n", + "2024-12-20 20:06:42,585 - INFO - ./data/processed_ATL03_20190402234550_00720306_006_02.h5\n", + "2024-12-20 20:06:42,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:49,820 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:06:49,821 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:06:49,920 - INFO - SUCCESS!\n", + "2024-12-20 20:06:49,931 - INFO - ./data/processed_ATL03_20190827043005_09180402_006_02.h5\n", + "2024-12-20 20:06:49,934 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:06:59,928 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:06:59,975 - INFO - ./data/processed_ATL03_20191126000956_09180502_006_01.h5\n", + "2024-12-20 20:06:59,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:07,400 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:07:07,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:07:07,444 - INFO - SUCCESS!\n", + "2024-12-20 20:07:07,454 - INFO - ./data/processed_ATL03_20191231104507_00720606_006_01.h5\n", + "2024-12-20 20:07:07,457 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:07:07,798 - INFO - ./data/processed_ATL03_20200129092110_05140606_006_01.h5\n", + "2024-12-20 20:07:07,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:08,150 - INFO - ./data/processed_ATL03_20200224194940_09180602_006_01.h5\n", + "2024-12-20 20:07:08,160 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:08,527 - INFO - ./data/processed_ATL03_20200331062448_00720706_006_01.h5\n", + "2024-12-20 20:07:08,530 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:15,875 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:07:15,927 - INFO - ./data/processed_ATL03_20200525152929_09180702_006_01.h5\n", + "2024-12-20 20:07:15,929 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:32,880 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:07:32,881 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:07:32,941 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:07:32,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:07:33,005 - INFO - SUCCESS!\n", + "2024-12-20 20:07:33,017 - INFO - ./data/processed_ATL03_20200630020440_00720806_006_01.h5\n", + "2024-12-20 20:07:33,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:07:33,373 - INFO - ./data/processed_ATL03_20200824110915_09180802_006_01.h5\n", + "2024-12-20 20:07:33,375 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:40,405 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:07:40,406 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:07:40,456 - INFO - SUCCESS!\n", + "2024-12-20 20:07:40,468 - INFO - ./data/processed_ATL03_20200928214429_00720906_006_02.h5\n", + "2024-12-20 20:07:40,471 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:54,729 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:07:54,730 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:07:54,776 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:07:54,777 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:07:54,823 - INFO - SUCCESS!\n", + "2024-12-20 20:07:54,835 - INFO - ./data/processed_ATL03_20201123064905_09180902_006_01.h5\n", + "2024-12-20 20:07:54,837 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:56,131 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:07:56,144 - INFO - ./data/processed_ATL03_20210124035255_04761002_006_01.h5\n", + "2024-12-20 20:07:56,147 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:07:56,493 - INFO - ./data/processed_ATL03_20210126160025_05141006_006_01.h5\n", + "2024-12-20 20:07:56,505 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:08:06,295 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:08:06,295 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:08:06,315 - INFO - SUCCESS!\n", + "2024-12-20 20:08:06,325 - INFO - ./data/processed_ATL03_20210329130412_00721106_006_01.h5\n", + "2024-12-20 20:08:06,331 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:08:20,399 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:08:20,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:08:20,407 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:08:20,408 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:08:20,428 - INFO - SUCCESS!\n", + "2024-12-20 20:08:20,440 - INFO - ./data/processed_ATL03_20210523220850_09181102_006_01.h5\n", + "2024-12-20 20:08:20,443 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:08:37,622 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:08:37,623 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:08:37,635 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:08:37,636 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:08:37,670 - INFO - SUCCESS!\n", + "2024-12-20 20:08:37,682 - INFO - ./data/processed_ATL03_20210628084402_00721206_006_01.h5\n", + "2024-12-20 20:08:37,715 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:08:38,508 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:08:38,528 - INFO - ./data/processed_ATL03_20210822174844_09181202_006_01.h5\n", + "2024-12-20 20:08:38,531 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:08:52,032 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:08:52,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:08:52,096 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:08:52,096 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:08:52,147 - INFO - SUCCESS!\n", + "2024-12-20 20:08:52,159 - INFO - ./data/processed_ATL03_20211023145237_04761302_006_01.h5\n", + "2024-12-20 20:08:52,161 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:08:52,501 - INFO - ./data/processed_ATL03_20211026030006_05141306_006_01.h5\n", + "2024-12-20 20:08:52,503 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:08:59,801 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:08:59,848 - INFO - ./data/processed_ATL03_20211227000354_00721406_006_01.h5\n", + "2024-12-20 20:08:59,851 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:09:16,290 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:09:16,291 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:09:16,316 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:09:16,317 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:09:16,386 - INFO - SUCCESS!\n", + "2024-12-20 20:09:16,397 - INFO - ./data/processed_ATL03_20220220090831_09181402_006_01.h5\n", + "2024-12-20 20:09:16,400 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:09:30,025 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:09:30,026 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:09:30,079 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:09:30,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:09:30,128 - INFO - SUCCESS!\n", + "2024-12-20 20:09:30,138 - INFO - ./data/processed_ATL03_20220327194347_00721506_006_01.h5\n", + "2024-12-20 20:09:30,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:09:46,861 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:09:46,861 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:09:46,885 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:09:46,885 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:09:46,945 - INFO - SUCCESS!\n", + "2024-12-20 20:09:46,956 - INFO - ./data/processed_ATL03_20220522044820_09181502_006_01.h5\n", + "2024-12-20 20:09:46,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:09:47,631 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:09:47,643 - INFO - ./data/processed_ATL03_20220626152342_00721606_006_01.h5\n", + "2024-12-20 20:09:47,646 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:10:10,584 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:10:10,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:10:10,595 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:10:10,596 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:10:10,650 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:10:10,651 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:10:10,724 - INFO - SUCCESS!\n", + "2024-12-20 20:10:10,735 - INFO - ./data/processed_ATL03_20220821002822_09181602_006_01.h5\n", + "2024-12-20 20:10:10,739 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:10:24,212 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:10:24,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:10:24,266 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:10:24,267 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:10:24,312 - INFO - SUCCESS!\n", + "2024-12-20 20:10:24,323 - INFO - ./data/processed_ATL03_20220925110334_00721706_006_01.h5\n", + "2024-12-20 20:10:24,329 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:10:24,680 - INFO - ./data/processed_ATL03_20221119200803_09181702_006_02.h5\n", + "2024-12-20 20:10:24,683 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:10:25,374 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:10:25,385 - INFO - ./data/processed_ATL03_20221225064301_00721806_006_02.h5\n", + "2024-12-20 20:10:25,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:10:32,130 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:10:32,174 - INFO - ./data/processed_ATL03_20230218154755_09181802_006_02.h5\n", + "2024-12-20 20:10:32,176 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:10:48,427 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:10:48,428 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:10:48,478 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:10:48,479 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:10:48,526 - INFO - SUCCESS!\n", + "2024-12-20 20:10:48,538 - INFO - ./data/processed_ATL03_20230326022309_00721906_006_02.h5\n", + "2024-12-20 20:10:48,540 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:10:54,981 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:10:55,025 - INFO - ./data/processed_ATL03_20230520112730_09181902_006_02.h5\n", + "2024-12-20 20:10:55,030 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:11:18,101 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:11:18,102 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:11:18,157 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:11:18,158 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:11:18,215 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:11:18,216 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:11:18,273 - INFO - SUCCESS!\n", + "2024-12-20 20:11:18,285 - INFO - ./data/processed_ATL03_20230624220227_00722006_006_02.h5\n", + "2024-12-20 20:11:18,289 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:11:18,610 - INFO - ./data/processed_ATL03_20230819070641_09182002_006_02.h5\n", + "2024-12-20 20:11:18,612 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:11:25,226 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:11:25,271 - INFO - ./data/processed_ATL03_20230923174141_00722106_006_02.h5\n", + "2024-12-20 20:11:25,273 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:11:32,788 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:11:32,789 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:11:32,876 - INFO - SUCCESS!\n", + "2024-12-20 20:11:32,886 - INFO - ./data/processed_ATL03_20181204052950_10170106_006_02.h5\n", + "2024-12-20 20:11:32,889 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:11:33,803 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:11:33,816 - INFO - ./data/processed_ATL03_20190128143438_04760202_006_02.h5\n", + "2024-12-20 20:11:33,817 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:11:44,305 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:11:44,306 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:11:44,362 - INFO - SUCCESS!\n", + "2024-12-20 20:11:44,375 - INFO - ./data/processed_ATL03_20190305010951_10170206_006_02.h5\n", + "2024-12-20 20:11:44,377 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:11:45,290 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:11:45,303 - INFO - ./data/processed_ATL03_20190429101419_04760302_006_02.h5\n", + "2024-12-20 20:11:45,305 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:11:52,160 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:11:52,161 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:11:52,212 - INFO - SUCCESS!\n", + "2024-12-20 20:11:52,222 - INFO - ./data/processed_ATL03_20190603204925_10170306_006_02.h5\n", + "2024-12-20 20:11:52,224 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:12:06,214 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:12:06,226 - INFO - ./data/processed_ATL03_20190729055357_04760402_006_02.h5\n", + "2024-12-20 20:12:06,228 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:12:15,832 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:12:15,833 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:12:15,908 - INFO - SUCCESS!\n", + "2024-12-20 20:12:15,919 - INFO - ./data/processed_ATL03_20191001150521_00720506_006_03.h5\n", + "2024-12-20 20:12:15,921 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:12:23,105 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:12:23,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:12:23,131 - INFO - SUCCESS!\n", + "2024-12-20 20:12:23,141 - INFO - ./data/processed_ATL03_20191028013354_04760502_006_01.h5\n", + "2024-12-20 20:12:23,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:12:29,927 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:12:29,975 - INFO - ./data/processed_ATL03_20191202120904_10170506_006_01.h5\n", + "2024-12-20 20:12:29,977 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:12:36,836 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:12:36,837 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:12:36,873 - INFO - SUCCESS!\n", + "2024-12-20 20:12:36,884 - INFO - ./data/processed_ATL03_20191228223737_00340602_006_01.h5\n", + "2024-12-20 20:12:36,886 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:12:37,193 - INFO - ./data/processed_ATL03_20200302074848_10170606_006_01.h5\n", + "2024-12-20 20:12:37,194 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:12:37,506 - INFO - ./data/processed_ATL03_20200426165327_04760702_006_02.h5\n", + "2024-12-20 20:12:37,507 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:12:54,297 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:12:54,298 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:12:54,356 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:12:54,356 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:12:54,445 - INFO - SUCCESS!\n", + "2024-12-20 20:12:54,458 - INFO - ./data/processed_ATL03_20200601032839_10170706_006_01.h5\n", + "2024-12-20 20:12:54,460 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:13:08,723 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:13:08,723 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:13:08,772 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:13:08,773 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:13:08,853 - INFO - SUCCESS!\n", + "2024-12-20 20:13:08,865 - INFO - ./data/processed_ATL03_20200726123314_04760802_006_01.h5\n", + "2024-12-20 20:13:08,866 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:13:09,154 - INFO - ./data/processed_ATL03_20200830230825_10170806_006_01.h5\n", + "2024-12-20 20:13:09,155 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:13:18,747 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:13:18,748 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:13:18,776 - INFO - SUCCESS!\n", + "2024-12-20 20:13:18,787 - INFO - ./data/processed_ATL03_20201025081259_04760902_006_01.h5\n", + "2024-12-20 20:13:18,788 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:13:19,348 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:13:19,361 - INFO - ./data/processed_ATL03_20201129184814_10170906_006_01.h5\n", + "2024-12-20 20:13:19,363 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:13:39,952 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:13:39,953 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:13:39,995 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:13:39,996 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:13:40,020 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:13:40,021 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:13:40,065 - INFO - SUCCESS!\n", + "2024-12-20 20:13:40,079 - INFO - ./data/processed_ATL03_20201226051650_00341002_006_01.h5\n", + "2024-12-20 20:13:40,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:13:49,589 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:13:49,635 - INFO - ./data/processed_ATL03_20201228172419_00721006_006_01.h5\n", + "2024-12-20 20:13:49,636 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:13:49,917 - INFO - ./data/processed_ATL03_20210424233245_04761102_006_02.h5\n", + "2024-12-20 20:13:49,919 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:14:09,492 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:14:09,492 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:09,517 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:14:09,518 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:09,564 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:14:09,565 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:09,646 - INFO - SUCCESS!\n", + "2024-12-20 20:14:09,659 - INFO - ./data/processed_ATL03_20210530100800_10171106_006_01.h5\n", + "2024-12-20 20:14:09,661 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:14:19,783 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:14:19,794 - INFO - ./data/processed_ATL03_20210724191237_04761202_006_01.h5\n", + "2024-12-20 20:14:19,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:14:26,730 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:14:26,731 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:26,807 - INFO - SUCCESS!\n", + "2024-12-20 20:14:26,820 - INFO - ./data/processed_ATL03_20210829054754_10171206_006_01.h5\n", + "2024-12-20 20:14:26,821 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:14:40,166 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:14:40,167 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:40,213 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:14:40,214 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:40,277 - INFO - SUCCESS!\n", + "2024-12-20 20:14:40,289 - INFO - ./data/processed_ATL03_20210924161631_00341302_006_02.h5\n", + "2024-12-20 20:14:40,290 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:14:49,939 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:14:49,940 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:49,963 - INFO - SUCCESS!\n", + "2024-12-20 20:14:49,974 - INFO - ./data/processed_ATL03_20210927042400_00721306_006_02.h5\n", + "2024-12-20 20:14:49,975 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:14:50,254 - INFO - ./data/processed_ATL03_20220122103228_04761402_006_01.h5\n", + "2024-12-20 20:14:50,256 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:14:57,421 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:14:57,422 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:14:57,491 - INFO - SUCCESS!\n", + "2024-12-20 20:14:57,501 - INFO - ./data/processed_ATL03_20220226210742_10171406_006_01.h5\n", + "2024-12-20 20:14:57,502 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:15:11,280 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:15:11,281 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:15:11,334 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:15:11,335 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:15:11,400 - INFO - SUCCESS!\n", + "2024-12-20 20:15:11,413 - INFO - ./data/processed_ATL03_20220423061224_04761502_006_02.h5\n", + "2024-12-20 20:15:11,415 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:15:27,097 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:15:27,098 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:15:27,114 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:15:27,115 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:15:27,157 - INFO - SUCCESS!\n", + "2024-12-20 20:15:27,167 - INFO - ./data/processed_ATL03_20220528164735_10171506_006_01.h5\n", + "2024-12-20 20:15:27,169 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:15:34,422 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:15:34,433 - INFO - ./data/processed_ATL03_20220723015219_04761602_006_02.h5\n", + "2024-12-20 20:15:34,434 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:15:41,938 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:15:41,938 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:15:42,009 - INFO - SUCCESS!\n", + "2024-12-20 20:15:42,019 - INFO - ./data/processed_ATL03_20220827122737_10171606_006_01.h5\n", + "2024-12-20 20:15:42,020 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:15:58,318 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:15:58,319 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:15:58,345 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:15:58,346 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:15:58,405 - INFO - SUCCESS!\n", + "2024-12-20 20:15:58,417 - INFO - ./data/processed_ATL03_20220922225605_00341702_006_01.h5\n", + "2024-12-20 20:15:58,419 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:15:58,702 - INFO - ./data/processed_ATL03_20221126080716_10171706_006_02.h5\n", + "2024-12-20 20:15:58,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:16:05,134 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:16:05,178 - INFO - ./data/processed_ATL03_20230120171151_04761802_006_02.h5\n", + "2024-12-20 20:16:05,179 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:16:12,827 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:16:12,837 - INFO - ./data/processed_ATL03_20230225034718_10171806_006_02.h5\n", + "2024-12-20 20:16:12,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:16:28,561 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:16:28,561 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:16:28,603 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:16:28,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:16:28,658 - INFO - SUCCESS!\n", + "2024-12-20 20:16:28,670 - INFO - ./data/processed_ATL03_20230421125121_04761902_006_02.h5\n", + "2024-12-20 20:16:28,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:16:42,793 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:16:42,794 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:16:42,851 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:16:42,852 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:16:42,940 - INFO - SUCCESS!\n", + "2024-12-20 20:16:42,953 - INFO - ./data/processed_ATL03_20230526232637_10171906_006_02.h5\n", + "2024-12-20 20:16:42,956 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:00,089 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:17:00,090 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:17:00,138 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:17:00,139 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:17:00,202 - INFO - SUCCESS!\n", + "2024-12-20 20:17:00,214 - INFO - ./data/processed_ATL03_20230825190553_10172006_006_02.h5\n", + "2024-12-20 20:17:00,217 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:06,975 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:06,987 - INFO - ./data/processed_ATL03_20231020041016_04762102_006_02.h5\n", + "2024-12-20 20:17:06,990 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:17:07,311 - INFO - ./data/processed_ATL03_20200118213016_03540602_006_01.h5\n", + "2024-12-20 20:17:07,313 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:08,301 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:08,316 - INFO - ./data/processed_ATL03_20200223080530_08950606_006_01.h5\n", + "2024-12-20 20:17:08,318 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:17:08,963 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:08,976 - INFO - ./data/processed_ATL03_20200418171006_03540702_006_02.h5\n", + "2024-12-20 20:17:08,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:09,958 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:09,972 - INFO - ./data/processed_ATL03_20200425050917_04530706_006_02.h5\n", + "2024-12-20 20:17:09,974 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:10,937 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:10,951 - INFO - ./data/processed_ATL03_20201017082939_03540902_006_01.h5\n", + "2024-12-20 20:17:10,953 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:12,290 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:12,306 - INFO - ./data/processed_ATL03_20201023202849_04530906_006_01.h5\n", + "2024-12-20 20:17:12,308 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:12,981 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:12,995 - INFO - ./data/processed_ATL03_20210319011319_12991002_006_01.h5\n", + "2024-12-20 20:17:12,997 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:13,308 - INFO - ./data/processed_ATL03_20210416234925_03541102_006_02.h5\n", + "2024-12-20 20:17:13,310 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:13,619 - INFO - ./data/processed_ATL03_20210723072827_04531206_006_01.h5\n", + "2024-12-20 20:17:13,620 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:13,926 - INFO - ./data/processed_ATL03_20211216121305_12991302_006_01.h5\n", + "2024-12-20 20:17:13,928 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:14,218 - INFO - ./data/processed_ATL03_20220120224817_04531406_006_01.h5\n", + "2024-12-20 20:17:14,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:14,517 - INFO - ./data/processed_ATL03_20230119052730_04531806_006_02.h5\n", + "2024-12-20 20:17:14,519 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:14,826 - INFO - ./data/processed_ATL03_20230413130807_03541902_006_02.h5\n", + "2024-12-20 20:17:14,830 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:16,281 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:16,296 - INFO - ./data/processed_ATL03_20230420010712_04531906_006_02.h5\n", + "2024-12-20 20:17:16,298 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:17,206 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:17:17,217 - INFO - ./data/processed_ATL03_20230719204635_04532006_006_02.h5\n", + "2024-12-20 20:17:17,221 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:17:17,547 - INFO - ./data/processed_ATL03_20231018162610_04532106_006_02.h5\n", + "2024-12-20 20:17:17,548 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:17,853 - INFO - ./data/processed_ATL03_20200802003223_05750806_006_01.h5\n", + "2024-12-20 20:17:17,856 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:35,406 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:17:35,407 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:17:35,453 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:17:35,454 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:17:35,491 - INFO - SUCCESS!\n", + "2024-12-20 20:17:35,504 - INFO - ./data/processed_ATL03_20200828110056_09790802_006_01.h5\n", + "2024-12-20 20:17:35,509 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:43,191 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:17:43,192 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:17:43,284 - INFO - SUCCESS!\n", + "2024-12-20 20:17:43,297 - INFO - ./data/processed_ATL03_20201031201211_05750906_006_01.h5\n", + "2024-12-20 20:17:43,300 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:17:50,033 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:17:50,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:17:50,088 - INFO - SUCCESS!\n", + "2024-12-20 20:17:50,101 - INFO - ./data/processed_ATL03_20201127064045_09790902_006_01.h5\n", + "2024-12-20 20:17:50,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:18:13,418 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:18:13,419 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:18:13,426 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:18:13,426 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:18:13,469 - INFO - SUCCESS!\n", + "2024-12-20 20:18:13,481 - INFO - ./data/processed_ATL03_20210128034437_05371002_006_01.h5\n", + "2024-12-20 20:18:13,483 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:18:13,802 - INFO - ./data/processed_ATL03_20210130155207_05751006_006_01.h5\n", + "2024-12-20 20:18:13,803 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:18:28,438 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:18:28,440 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:18:28,458 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:18:28,458 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:18:28,484 - INFO - SUCCESS!\n", + "2024-12-20 20:18:28,497 - INFO - ./data/processed_ATL03_20210402125553_01331106_006_02.h5\n", + "2024-12-20 20:18:28,499 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:18:28,808 - INFO - ./data/processed_ATL03_20210527220029_09791102_006_01.h5\n", + "2024-12-20 20:18:28,811 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:18:38,610 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:18:38,620 - INFO - ./data/processed_ATL03_20210731071149_05751206_006_01.h5\n", + "2024-12-20 20:18:38,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:18:45,298 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:18:45,299 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:18:45,379 - INFO - SUCCESS!\n", + "2024-12-20 20:18:45,390 - INFO - ./data/processed_ATL03_20210826174024_09791202_006_01.h5\n", + "2024-12-20 20:18:45,392 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:18:59,912 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:18:59,913 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:18:59,931 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:18:59,932 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:18:59,997 - INFO - SUCCESS!\n", + "2024-12-20 20:19:00,011 - INFO - ./data/processed_ATL03_20211027144417_05371302_006_01.h5\n", + "2024-12-20 20:19:00,014 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:19:00,355 - INFO - ./data/processed_ATL03_20211030025147_05751306_006_01.h5\n", + "2024-12-20 20:19:00,363 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:01,363 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:19:01,378 - INFO - ./data/processed_ATL03_20220128223137_05751406_006_01.h5\n", + "2024-12-20 20:19:01,382 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:11,201 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:19:11,202 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:19:11,279 - INFO - SUCCESS!\n", + "2024-12-20 20:19:11,290 - INFO - ./data/processed_ATL03_20220224090016_09791402_006_01.h5\n", + "2024-12-20 20:19:11,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:24,577 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:19:24,578 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:19:24,591 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:19:24,592 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:19:24,654 - INFO - SUCCESS!\n", + "2024-12-20 20:19:24,668 - INFO - ./data/processed_ATL03_20220526044001_09791502_006_01.h5\n", + "2024-12-20 20:19:24,671 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:32,091 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:19:32,102 - INFO - ./data/processed_ATL03_20220729135134_05751606_006_02.h5\n", + "2024-12-20 20:19:32,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:19:32,452 - INFO - ./data/processed_ATL03_20181118060318_07730106_006_02.h5\n", + "2024-12-20 20:19:32,455 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:42,907 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:19:42,952 - INFO - ./data/processed_ATL03_20190112150746_02320202_006_02.h5\n", + "2024-12-20 20:19:42,956 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:19:43,338 - INFO - ./data/processed_ATL03_20190217014308_07730206_006_02.h5\n", + "2024-12-20 20:19:43,341 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:43,713 - INFO - ./data/processed_ATL03_20190413104740_02320302_006_02.h5\n", + "2024-12-20 20:19:43,717 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:44,070 - INFO - ./data/processed_ATL03_20190518212247_07730306_006_02.h5\n", + "2024-12-20 20:19:44,072 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:51,135 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:19:51,136 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:19:51,168 - INFO - SUCCESS!\n", + "2024-12-20 20:19:51,179 - INFO - ./data/processed_ATL03_20190713062708_02320402_006_02.h5\n", + "2024-12-20 20:19:51,182 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:19:51,589 - INFO - ./data/processed_ATL03_20190719182620_03310406_006_02.h5\n", + "2024-12-20 20:19:51,591 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:19:51,937 - INFO - ./data/processed_ATL03_20190811050320_06740402_006_02.h5\n", + "2024-12-20 20:19:51,941 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:20:05,986 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:20:05,987 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:20:06,027 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:20:06,027 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:20:06,090 - INFO - SUCCESS!\n", + "2024-12-20 20:20:06,102 - INFO - ./data/processed_ATL03_20190817170232_07730406_006_02.h5\n", + "2024-12-20 20:20:06,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:20:16,006 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:20:16,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:20:16,077 - INFO - SUCCESS!\n", + "2024-12-20 20:20:16,089 - INFO - ./data/processed_ATL03_20191110004315_06740502_006_01.h5\n", + "2024-12-20 20:20:16,092 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:20:29,670 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:20:29,671 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:20:29,718 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:20:29,719 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:20:29,785 - INFO - SUCCESS!\n", + "2024-12-20 20:20:29,796 - INFO - ./data/processed_ATL03_20191116124227_07730506_006_01.h5\n", + "2024-12-20 20:20:29,799 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:20:37,453 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:20:37,453 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:20:37,522 - INFO - SUCCESS!\n", + "2024-12-20 20:20:37,532 - INFO - ./data/processed_ATL03_20200110214656_02320602_006_01.h5\n", + "2024-12-20 20:20:37,535 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:20:47,465 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:20:47,524 - INFO - ./data/processed_ATL03_20200215082209_07730606_006_01.h5\n", + "2024-12-20 20:20:47,527 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:20:54,153 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:20:54,154 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:20:54,219 - INFO - SUCCESS!\n", + "2024-12-20 20:20:54,228 - INFO - ./data/processed_ATL03_20200509160249_06740702_006_01.h5\n", + "2024-12-20 20:20:54,232 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:20:55,004 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:20:55,017 - INFO - ./data/processed_ATL03_20200516040159_07730706_006_01.h5\n", + "2024-12-20 20:20:55,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:02,342 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:21:02,343 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:21:02,389 - INFO - SUCCESS!\n", + "2024-12-20 20:21:02,407 - INFO - ./data/processed_ATL03_20200710130629_02320802_006_01.h5\n", + "2024-12-20 20:21:02,409 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:09,946 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:21:09,947 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:21:10,037 - INFO - SUCCESS!\n", + "2024-12-20 20:21:10,050 - INFO - ./data/processed_ATL03_20200814234144_07730806_006_01.h5\n", + "2024-12-20 20:21:10,056 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:19,665 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:21:19,712 - INFO - ./data/processed_ATL03_20201009084617_02320902_006_01.h5\n", + "2024-12-20 20:21:19,715 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:21:20,031 - INFO - ./data/processed_ATL03_20201107072221_06740902_006_01.h5\n", + "2024-12-20 20:21:20,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:20,354 - INFO - ./data/processed_ATL03_20210108042612_02321002_006_01.h5\n", + "2024-12-20 20:21:20,357 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:27,524 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:21:27,575 - INFO - ./data/processed_ATL03_20210212150129_07731006_006_01.h5\n", + "2024-12-20 20:21:27,578 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:34,576 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:21:34,577 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:21:34,649 - INFO - SUCCESS!\n", + "2024-12-20 20:21:34,670 - INFO - ./data/processed_ATL03_20210415120514_03311106_006_02.h5\n", + "2024-12-20 20:21:34,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:21:34,999 - INFO - ./data/processed_ATL03_20210507224208_06741102_006_01.h5\n", + "2024-12-20 20:21:35,002 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:43,032 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:21:43,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:21:43,078 - INFO - SUCCESS!\n", + "2024-12-20 20:21:43,088 - INFO - ./data/processed_ATL03_20210514104119_07731106_006_01.h5\n", + "2024-12-20 20:21:43,091 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:52,971 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:21:52,971 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:21:53,044 - INFO - SUCCESS!\n", + "2024-12-20 20:21:53,060 - INFO - ./data/processed_ATL03_20210708194554_02321202_006_01.h5\n", + "2024-12-20 20:21:53,063 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:21:53,396 - INFO - ./data/processed_ATL03_20210813062112_07731206_006_01.h5\n", + "2024-12-20 20:21:53,399 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:21:54,240 - ERROR - An error occurred: cannot convert float NaN to integer\n", + "2024-12-20 20:21:54,254 - INFO - ./data/processed_ATL03_20211007152553_02321302_006_01.h5\n", + "2024-12-20 20:21:54,257 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:22:08,494 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:22:08,494 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:22:08,545 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:22:08,546 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:22:08,606 - INFO - SUCCESS!\n", + "2024-12-20 20:22:08,619 - INFO - ./data/processed_ATL03_20211112020112_07731306_006_01.h5\n", + "2024-12-20 20:22:08,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:22:16,179 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:22:16,179 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:22:16,252 - INFO - SUCCESS!\n", + "2024-12-20 20:22:16,263 - INFO - ./data/processed_ATL03_20220106110546_02321402_006_01.h5\n", + "2024-12-20 20:22:16,266 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:22:16,617 - INFO - ./data/processed_ATL03_20220506052140_06741502_006_01.h5\n", + "2024-12-20 20:22:16,620 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:22:33,665 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:22:33,666 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:22:33,705 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:22:33,706 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:22:33,765 - INFO - SUCCESS!\n", + "2024-12-20 20:22:33,776 - INFO - ./data/processed_ATL03_20220512172052_07731506_006_01.h5\n", + "2024-12-20 20:22:33,778 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:22:40,748 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:22:40,748 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:22:40,822 - INFO - SUCCESS!\n", + "2024-12-20 20:22:40,835 - INFO - ./data/processed_ATL03_20220707022536_02321602_006_02.h5\n", + "2024-12-20 20:22:40,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:22:41,161 - INFO - ./data/processed_ATL03_20220805010143_06741602_006_01.h5\n", + "2024-12-20 20:22:41,164 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:22:41,801 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:22:41,819 - INFO - ./data/processed_ATL03_20220811130052_07731606_006_01.h5\n", + "2024-12-20 20:22:41,822 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:22:49,598 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:22:49,598 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:22:49,646 - INFO - SUCCESS!\n", + "2024-12-20 20:22:49,661 - INFO - ./data/processed_ATL03_20221005220520_02321702_006_01.h5\n", + "2024-12-20 20:22:49,664 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:22:59,782 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:22:59,834 - INFO - ./data/processed_ATL03_20221110084030_07731706_006_01.h5\n", + "2024-12-20 20:22:59,837 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:07,394 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:23:07,394 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:23:07,460 - INFO - SUCCESS!\n", + "2024-12-20 20:23:07,470 - INFO - ./data/processed_ATL03_20230104174503_02321802_006_02.h5\n", + "2024-12-20 20:23:07,473 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:23:07,820 - INFO - ./data/processed_ATL03_20230209042023_07731806_006_02.h5\n", + "2024-12-20 20:23:07,823 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:08,222 - INFO - ./data/processed_ATL03_20230511000003_07731906_006_02.h5\n", + "2024-12-20 20:23:08,225 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:14,971 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:23:15,021 - INFO - ./data/processed_ATL03_20230705090414_02322002_006_02.h5\n", + "2024-12-20 20:23:15,024 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:22,353 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:23:22,354 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:23:22,407 - INFO - SUCCESS!\n", + "2024-12-20 20:23:22,417 - INFO - ./data/processed_ATL03_20190107154149_01560202_006_02.h5\n", + "2024-12-20 20:23:22,420 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:23:22,756 - INFO - ./data/processed_ATL03_20190408112141_01560302_006_02.h5\n", + "2024-12-20 20:23:22,760 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:23,084 - INFO - ./data/processed_ATL03_20190710190835_01940406_006_02.h5\n", + "2024-12-20 20:23:23,086 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:23,463 - INFO - ./data/processed_ATL03_20190806053720_05980402_006_02.h5\n", + "2024-12-20 20:23:23,465 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:39,942 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:23:39,943 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:23:39,976 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:23:39,976 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:23:40,039 - INFO - SUCCESS!\n", + "2024-12-20 20:23:40,050 - INFO - ./data/processed_ATL03_20191009144841_01940506_006_02.h5\n", + "2024-12-20 20:23:40,053 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:23:40,413 - INFO - ./data/processed_ATL03_20191105011714_05980502_006_01.h5\n", + "2024-12-20 20:23:40,416 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:23:54,391 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:23:54,391 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:23:54,417 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:23:54,418 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:23:54,474 - INFO - SUCCESS!\n", + "2024-12-20 20:23:54,485 - INFO - ./data/processed_ATL03_20191210115225_11390506_006_01.h5\n", + "2024-12-20 20:23:54,487 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:23:54,814 - INFO - ./data/processed_ATL03_20200105222056_01560602_006_01.h5\n", + "2024-12-20 20:23:54,819 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:24:04,694 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:24:04,742 - INFO - ./data/processed_ATL03_20200108102826_01940606_006_01.h5\n", + "2024-12-20 20:24:04,745 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:24:11,504 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:24:11,552 - INFO - ./data/processed_ATL03_20200408060812_01940706_006_02.h5\n", + "2024-12-20 20:24:11,555 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:24:18,093 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:24:18,094 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:24:18,139 - INFO - SUCCESS!\n", + "2024-12-20 20:24:18,149 - INFO - ./data/processed_ATL03_20200504163646_05980702_006_01.h5\n", + "2024-12-20 20:24:18,151 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l']\n", + "Processing strong beam: gt1l\n", + "Processing binning for beam: gt1l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:24:25,925 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:24:25,926 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:24:25,959 - INFO - SUCCESS!\n", + "2024-12-20 20:24:25,969 - INFO - ./data/processed_ATL03_20200705134029_01560802_006_01.h5\n", + "2024-12-20 20:24:25,972 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:24:35,722 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:24:35,723 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:24:35,767 - INFO - SUCCESS!\n", + "2024-12-20 20:24:35,782 - INFO - ./data/processed_ATL03_20201006212745_01940906_006_01.h5\n", + "2024-12-20 20:24:35,784 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:24:48,875 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:24:48,875 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:24:48,895 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:24:48,896 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:24:48,957 - INFO - SUCCESS!\n", + "2024-12-20 20:24:48,966 - INFO - ./data/processed_ATL03_20210103050011_01561002_006_01.h5\n", + "2024-12-20 20:24:48,968 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:25:05,912 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:25:05,913 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:05,927 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:25:05,928 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:05,974 - INFO - SUCCESS!\n", + "2024-12-20 20:25:05,984 - INFO - ./data/processed_ATL03_20210406124733_01941106_006_02.h5\n", + "2024-12-20 20:25:05,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:25:06,313 - INFO - ./data/processed_ATL03_20210703201953_01561202_006_01.h5\n", + "2024-12-20 20:25:06,314 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:25:06,592 - INFO - ./data/processed_ATL03_20210706082722_01941206_006_01.h5\n", + "2024-12-20 20:25:06,593 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:25:19,024 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:25:19,025 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:19,045 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:25:19,045 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:19,085 - INFO - SUCCESS!\n", + "2024-12-20 20:25:19,095 - INFO - ./data/processed_ATL03_20211002155952_01561302_006_01.h5\n", + "2024-12-20 20:25:19,096 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:25:42,893 - INFO - Calculating Kd for beam: gt1l\n", + "2024-12-20 20:25:42,894 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:42,952 - INFO - Calculating Kd for beam: gt2l\n", + "2024-12-20 20:25:42,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:43,004 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:25:43,005 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:43,081 - INFO - SUCCESS!\n", + "2024-12-20 20:25:43,093 - INFO - ./data/processed_ATL03_20220101113944_01561402_006_01.h5\n", + "2024-12-20 20:25:43,094 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:25:43,369 - INFO - ./data/processed_ATL03_20220103234715_01941406_006_01.h5\n", + "2024-12-20 20:25:43,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:25:49,965 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:25:50,013 - INFO - ./data/processed_ATL03_20220402071936_01561502_006_02.h5\n", + "2024-12-20 20:25:50,014 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:25:50,295 - INFO - ./data/processed_ATL03_20220704150705_01941606_006_02.h5\n", + "2024-12-20 20:25:50,296 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:25:57,552 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:25:57,553 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:25:57,607 - INFO - SUCCESS!\n", + "2024-12-20 20:25:57,621 - INFO - ./data/processed_ATL03_20220930223925_01561702_006_01.h5\n", + "2024-12-20 20:25:57,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:26:07,163 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:26:07,163 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:26:07,216 - INFO - SUCCESS!\n", + "2024-12-20 20:26:07,226 - INFO - ./data/processed_ATL03_20221230181902_01561802_006_02.h5\n", + "2024-12-20 20:26:07,227 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", + "2024-12-20 20:26:07,510 - INFO - ./data/processed_ATL03_20230102062635_01941806_006_02.h5\n", + "2024-12-20 20:26:07,511 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "No Strong Beam\n", + "Strong Beams Found: ['gt2l', 'gt3l']\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt2l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:26:14,120 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", + "2024-12-20 20:26:14,169 - INFO - ./data/processed_ATL03_20230403020615_01941906_006_02.h5\n", + "2024-12-20 20:26:14,171 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:26:21,552 - INFO - Calculating Kd for beam: gt3l\n", + "2024-12-20 20:26:21,553 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-12-20 20:26:21,622 - INFO - SUCCESS!\n", + "2024-12-20 20:26:21,636 - INFO - ./data/processed_ATL03_20230630093812_01562002_006_02.h5\n", + "2024-12-20 20:26:21,638 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt3l']\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:26:28,789 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:26:28,800 - INFO - ./data/processed_ATL03_20230702214544_01942006_006_02.h5\n", + "2024-12-20 20:26:28,802 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:26:51,545 - ERROR - An error occurred: No objects to concatenate\n", + "2024-12-20 20:26:51,558 - INFO - ./data/processed_ATL03_20190212021707_06970206_006_02.h5\n", + "2024-12-20 20:26:51,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Strong Beams Found: ['gt1l', 'gt2l']\n", + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing subsurface filtering for beam: gt1l\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-12-20 20:26:59,891 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n" + ] + } + ], + "source": [ + "h5names = glob.glob('data/processed_*.h5')\n", + "\n", + "\n", + "for jj in range(len(h5names)):\n", + " # code from chao (in Main.ipynb)\n", + " atl03_file_inloop = h5names[jj]\n", + " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", + " # print(ATL03_h5_file_path)\n", + " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", + " # print(shoreline_data_path)\n", + " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", + " # print(GEBCO_full_path)\n", + " OutputPath = os.path.join(workspace_path, output_path)\n", + " # print(OutputPath)\n", + " \n", + " \n", + " #Get the gebco list\n", + " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + " \n", + " #Initialize with an empty list\n", + " GEBCO_file_path_lists = []\n", + " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + " #put the find one into the list\n", + " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + " \n", + " # print(GEBCO_file_path_lists)\n", + " \n", + " # Get all other necessary parameters\n", + " horizontal_res = horizontal_res\n", + " vertical_res = vertical_res\n", + " subsurface_thresh = subsurface_thresh\n", + " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", + " \n", + " # Configure logging\n", + " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", + " \n", + " \n", + " # When all paramters ready, call the main function\n", + " main()\n", + " # delete the hefty h5 file once done with processing - only store calculated kd values\n", + " os.remove(ATL03_h5_file_path)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "a67064df-8b1e-4c65-ba47-14b022e6dcfc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + } + ], + "source": [ + "FF = glob.glob('data/data_*.csv')\n", + "FF.sort()\n", + "all_turb = pd.DataFrame(data=None,\n", + " columns=['time','lat','lon','z','turb'],\n", + " )\n", + "\n", + "for jj in range(len(FF)):\n", + " df_full = pd.read_csv(FF[jj],header=0)\n", + "\n", + " \n", + " df = pd.DataFrame(data=None,\n", + " columns=['time','lat','lon','z','turb'],\n", + " )\n", + " # try loading each file\n", + " df['time'] = df_full['time (UTC)']\n", + " df['lat'] = df_full['latitude (degrees_north)']\n", + " df['lon'] = df_full['longitude (degrees_east)']\n", + " \n", + " # check for various names for depth column\n", + " if 'depth (m)' in df_full.columns:\n", + " df['z'] = df_full['depth (m)'] \n", + " elif 'z (m)' in df_full.columns:\n", + " df['z'] = df_full['z (m)']\n", + " elif 'depth_reading (m)' in df_full.columns:\n", + " df['z'] = df_full['depth_reading (m)']\n", + " else:\n", + " print('')\n", + "\n", + " # check for various names for turbidity column\n", + " if 'turbidity (ntus)' in df_full.columns:\n", + " df['turb'] = df_full['turbidity (ntus)']\n", + " elif 'turbidity (NTU)' in df_full.columns:\n", + " df['turb'] = df_full['turbidity (NTU)']\n", + " elif 'sea_water_turbidity (NTU)' in df_full.columns:\n", + " df['turb'] = df_full['sea_water_turbidity (NTU)']\n", + " elif 'sea_water_turbidity (RFU)' in df_full.columns:\n", + " df['turb'] = df_full['sea_water_turbidity (RFU)']\n", + " elif 'sea_water_turbidity_1 (1)' in df_full.columns:\n", + " df['turb'] = df_full['sea_water_turbidity_1 (1)']\n", + " elif 'NTU (ntu)' in df_full.columns:\n", + " df['turb'] = df_full['NTU (ntu)']\n", + " else:\n", + " print(FF[jj])\n", + " \n", + " \n", + " df = df[df['z']<2]\n", + " \n", + " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", + "\n", + "\n", + "all_turb = all_turb.dropna(axis='index')\n", + "all_turb.reset_index(drop=True, inplace=True)\n", + "all_turb.to_csv('results/all_turbidity_compile.csv')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/03_calckd_buoys.ipynb b/icesat2_kdph-main/03_calckd_buoys.ipynb new file mode 100644 index 0000000..d65c61a --- /dev/null +++ b/icesat2_kdph-main/03_calckd_buoys.ipynb @@ -0,0 +1,1490 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "bc036035", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import glob\n", + "from datetime import datetime, timedelta\n", + "import matplotlib.pyplot as plt\n", + "from scipy import stats\n", + "\n", + "%cd -q '/Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "61cd619c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "5f48f327", + "metadata": {}, + "outputs": [], + "source": [ + "def calc_kd(z,par):\n", + " z = np.abs(z)\n", + " # remove nans and negative par values (bad data)\n", + " z = z[(par>=0) & ~np.isnan(par)]\n", + " par = par[(par>=0) & ~np.isnan(par)]\n", + "\n", + " # calculate Kd from the log-linear slope of the light decay\n", + " lnpar = np.log(par)\n", + " \n", + " fit = stats.linregress(x=z,y=lnpar)\n", + " kd = np.abs(fit.slope)\n", + " rval = np.abs(fit.rvalue)\n", + " stderr = fit.stderr\n", + " return kd, rval, stderr\n", + "\n", + "\n", + "def ooi_run_kdcalc(df):\n", + " \n", + " # get the start time of the file\n", + " t = df.loc[0,'time'] \n", + " # check if there is no data shallower than 20 m:\n", + " df = df[abs(df['z'])<20]\n", + " if len(df) < 4:\n", + " kd = np.nan\n", + " rval = np.nan\n", + " stderr = np.nan\n", + " return kd, rval, stderr, t\n", + " \n", + " # if there is data, check for multiple casts:\n", + " df.reset_index(drop=True, inplace=True)\n", + " dt = df['time'].diff()\n", + " df['cast'] = 0\n", + " cast = 0\n", + " for jj in range(len(df)):\n", + " if dt[jj]>timedelta(minutes=10):\n", + " cast += 1\n", + " df.loc[jj,'cast'] = cast\n", + " else:\n", + " df.loc[jj,'cast'] = cast\n", + " tot_casts = len(np.unique(df['cast']))\n", + " \n", + " # if there's only 1 cast, calculate kd once\n", + " # otherwise loop through casts and calc for each\n", + " if tot_casts==1:\n", + " # pull out depth and par\n", + " z = df['z'].to_numpy()\n", + " par = df['par'].to_numpy()\n", + " t = df.loc[0,'time']\n", + " kd, rval, stderr = calc_kd(z,par)\n", + " else:\n", + " kd = np.empty(tot_casts)\n", + " rval = np.empty(tot_casts)\n", + " stderr = np.empty(tot_casts)\n", + " t = df.loc[:tot_casts,'time']\n", + " for jj in range(tot_casts):\n", + " z = df.loc[df['cast']==jj,'z'].to_numpy()\n", + " par = df.loc[df['cast']==jj,'par'].to_numpy()\n", + " t[jj] = min(df.loc[df['cast']==jj,'time'])\n", + " kd[jj], rval[jj], stderr[jj] = calc_kd(z,par)\n", + " \n", + " return kd, rval, stderr, t\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# much simpler for ws dataset - only 1 cast per file\n", + "def ws_kd_calc(df):\n", + " # pull out depth and par\n", + " z = np.abs(df['z'].to_numpy())\n", + " par = df['par'].to_numpy()\n", + " \n", + " # remove nans and negative par values (bad data)\n", + " z = z[(par>=0) & ~np.isnan(par)]\n", + " par = par[(par>=0) & ~np.isnan(par)]\n", + "\n", + " # only calculate over upper 10m\n", + " par = par[z<20]\n", + " z = z[z<20]\n", + " \n", + " if len(z) == 0:\n", + " kd = np.nan\n", + " rval = np.nan\n", + " stderr = np.nan\n", + " else:\n", + " # calc ln of par \n", + " lnpar = np.log(par)\n", + " # calculate Kd from the log-linear slope of the light decay\n", + " fit = stats.linregress(x=z,y=lnpar)\n", + "# par_pred = fit.slope*z + lnpar[0]\n", + " kd = np.abs(fit.slope)\n", + " rval = fit.rvalue\n", + " stderr=fit.stderr\n", + "\n", + " return kd,rval,stderr" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "id": "fa6cd1ba", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0010991938234688 -0.9986642388432644\n", + "1.0040070941250372 -0.9751482427953707\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "FF = glob.glob('icesat2/ooi/data*.csv')\n", + "FF.sort()\n", + "\n", + "ooi_kd_array = pd.DataFrame(data=None,\n", + " index=range(len(FF)),\n", + " columns=['time','lat','lon','kd','rval','stderr','stn']\n", + " )\n", + "jj = 43\n", + " \n", + "df = pd.read_csv(FF[jj],\n", + " index_col=0,\n", + " header=0,\n", + " usecols=[i for i in range(6)],\n", + " names=['', 'time', 'lat', 'lon', 'z', 'par']\n", + " ) #\n", + "df['time'] = pd.to_datetime(df[\"time\"]).round('s')\n", + "df = df[abs(df['z'])<20]\n", + "df.reset_index(drop=True, inplace=True)\n", + "dt = df['time'].diff()\n", + "\n", + "df['cast'] = 0\n", + "cast = 0\n", + "for jj in range(len(df)):\n", + " if dt[jj]>timedelta(minutes=10):\n", + " cast += 1\n", + " df.loc[jj,'cast'] = cast\n", + " else:\n", + " df.loc[jj,'cast'] = cast\n", + "tot_casts = len(np.unique(df['cast']))\n", + "\n", + "\n", + "for jj in range(tot_casts):\n", + " # pull out depth and par\n", + " z = np.abs(df.loc[df['cast']==jj,'z'].to_numpy())\n", + " par = df.loc[df['cast']==jj,'par'].to_numpy()\n", + " \n", + "# # sort by depth\n", + "# par = par[np.argsort(z)]\n", + "# z = np.sort(z)\n", + "\n", + " # remove nans and negative par values (bad data)\n", + " z = z[(par>=0) & ~np.isnan(par)]\n", + " par = par[(par>=0) & ~np.isnan(par)]\n", + " \n", + " lnpar = np.log(par)\n", + " # calculate Kd from the log-linear slope of the light decay\n", + " fit = stats.linregress(x=z,y=lnpar)\n", + " kd = np.abs(fit.slope)\n", + " rval = np.abs(fit.rvalue)\n", + " stderr = fit.stderr\n", + " print(stderr,rval)\n", + "\n", + "# plt.figure()\n", + "# plt.plot(z,lnpar,'k-')\n", + "# par_pred = fit.slope*z +fit.intercept\n", + "# plt.plot(z,par_pred,'r-')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f7d21db7", + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n", + "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " df['cast'] = 0\n" + ] + }, + { + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
timelatlonkdrvalstderr
02019-06-03 13:59:00+00:0044.6589-124.095950.2009450.9975870.003611
12019-08-06 19:59:00+00:0044.6589-124.095950.3955410.987140.015536
22021-08-28 20:06:00+00:0044.6589-124.095950.217670.9947690.005421
32022-07-02 20:07:00+00:0044.6589-124.095950.4438590.9857960.017824
42019-10-07 20:16:00+00:0044.63302-124.302330.2183620.9996220.001416
52023-05-30 12:03:00+00:0044.369353-124.954108NaNNaNNaN
62024-08-26 14:35:00+00:0044.369353-124.9541080.1142530.9854690.003282
72024-08-26 16:50:00+00:0044.369353-124.9541080.0953430.9891410.002361
82024-08-26 19:15:00+00:0044.369353-124.9541080.0966780.9989410.000775
92019-09-08 20:03:00+00:0047.13553-124.270170.2626040.9975220.004492
102021-06-27 23:32:00+00:0047.13553-124.270170.2446650.9958130.005447
112019-06-14 01:30:00+00:0046.85262-124.98263NaNNaNNaN
122020-09-09 23:44:00+00:0046.85262-124.98263NaNNaNNaN
132022-03-09 01:09:00+00:0046.85262-124.98263NaNNaNNaN
142022-03-31 11:43:00+00:0046.85262-124.98263NaNNaNNaN
152023-03-29 17:10:00+00:0046.85262-124.98263NaNNaNNaN
162024-03-26 21:37:00+00:0046.85262-124.98263NaNNaNNaN
172022-01-27 21:02:00+00:0040.133907-70.770433NaNNaNNaN
182019-08-03 15:19:00+00:0040.226633-70.889067NaNNaNNaN
192020-08-02 12:02:00+00:0040.226633-70.889067NaNNaNNaN
202021-07-31 18:02:00+00:0040.226633-70.889067NaNNaNNaN
212022-10-28 21:02:00+00:0040.226633-70.889067NaNNaNNaN
222019-08-03 15:19:00+00:0040.096817-70.87915NaNNaNNaN
232021-01-29 15:02:00+00:0040.096817-70.87915NaNNaNNaN
242021-07-31 18:02:00+00:0040.096817-70.87915NaNNaNNaN
252022-01-27 21:02:00+00:0040.096817-70.87915NaNNaNNaN
262022-10-27 09:02:00+00:0040.096817-70.87915NaNNaNNaN
272022-01-28 00:02:00+00:0040.364917-70.780483NaNNaNNaN
282022-05-29 03:02:00+00:0040.364917-70.780483NaNNaNNaN
292022-10-27 09:02:00+00:0040.364917-70.780483NaNNaNNaN
302018-11-04 06:02:00+00:0039.939333-70.770183NaNNaNNaN
312019-02-03 00:02:00+00:0039.939333-70.770183NaNNaNNaN
322020-10-30 18:03:00+00:0039.939333-70.770183NaNNaNNaN
332021-10-30 12:02:00+00:0039.939333-70.770183NaNNaNNaN
342022-01-27 21:02:00+00:0039.939333-70.770183NaNNaNNaN
352022-01-27 21:02:00+00:0040.362005-70.878502NaNNaNNaN
362022-01-27 21:02:00+00:0040.362005-70.878502NaNNaNNaN
372019-02-04 12:02:00+00:0039.936-70.879417NaNNaNNaN
382019-08-05 03:03:00+00:0039.936-70.879417NaNNaNNaN
392019-11-04 00:02:00+00:0039.936-70.879417NaNNaNNaN
402020-10-30 18:03:00+00:0039.936-70.879417NaNNaNNaN
412021-05-01 21:02:00+00:0039.936-70.879417NaNNaNNaN
422021-07-31 18:02:00+00:0039.936-70.879417NaNNaNNaN
432022-01-27 21:02:00+00:0039.936-70.879417NaNNaNNaN
442021-03-10 16:49:00+00:0044.528949-125.3896640.1018060.8186410.011436
452021-03-10 19:13:00+00:0044.528949-125.3896640.0797970.6261370.017042
462022-05-09 19:15:00+00:0044.515161-125.3898990.1238110.9986640.001099
472022-05-09 21:45:00+00:0044.515161-125.3898990.1154220.9751480.003999
482023-07-02 10:30:00+00:0044.515161-125.389899NaNNaNNaN
492023-10-01 06:10:00+00:0044.515161-125.389899NaNNaNNaN
502023-10-01 06:10:00+00:0044.515161-125.389899NaNNaNNaN
512024-03-30 21:45:00+00:0044.515161-125.3898990.1084110.9910190.002134
522024-03-31 01:29:00+00:0044.515161-125.3898990.1116990.9844280.003279
532021-01-02 18:34:00+00:0045.816712-129.754055NaNNaNNaN
542021-04-03 14:52:00+00:0045.816712-129.7540550.0930020.9817620.002884
552021-04-03 17:07:00+00:0045.816712-129.7540550.0911180.9897660.002077
562021-04-03 19:32:00+00:0045.816712-129.7540550.0847950.9884160.002112
572023-03-24 15:33:00+00:0045.816712-129.754055NaNNaNNaN
582023-06-29 23:12:00+00:0045.816712-129.754055NaNNaNNaN
592023-09-28 18:51:00+00:0045.816712-129.754055NaNNaNNaN
\n", + "
" + ], + "text/plain": [ + " time lat lon kd rval \\\n", + "0 2019-06-03 13:59:00+00:00 44.6589 -124.09595 0.200945 0.997587 \n", + "1 2019-08-06 19:59:00+00:00 44.6589 -124.09595 0.395541 0.98714 \n", + "2 2021-08-28 20:06:00+00:00 44.6589 -124.09595 0.21767 0.994769 \n", + "3 2022-07-02 20:07:00+00:00 44.6589 -124.09595 0.443859 0.985796 \n", + "4 2019-10-07 20:16:00+00:00 44.63302 -124.30233 0.218362 0.999622 \n", + "5 2023-05-30 12:03:00+00:00 44.369353 -124.954108 NaN NaN \n", + "6 2024-08-26 14:35:00+00:00 44.369353 -124.954108 0.114253 0.985469 \n", + "7 2024-08-26 16:50:00+00:00 44.369353 -124.954108 0.095343 0.989141 \n", + "8 2024-08-26 19:15:00+00:00 44.369353 -124.954108 0.096678 0.998941 \n", + "9 2019-09-08 20:03:00+00:00 47.13553 -124.27017 0.262604 0.997522 \n", + "10 2021-06-27 23:32:00+00:00 47.13553 -124.27017 0.244665 0.995813 \n", + "11 2019-06-14 01:30:00+00:00 46.85262 -124.98263 NaN NaN \n", + "12 2020-09-09 23:44:00+00:00 46.85262 -124.98263 NaN NaN \n", + "13 2022-03-09 01:09:00+00:00 46.85262 -124.98263 NaN NaN \n", + "14 2022-03-31 11:43:00+00:00 46.85262 -124.98263 NaN NaN \n", + "15 2023-03-29 17:10:00+00:00 46.85262 -124.98263 NaN NaN \n", + "16 2024-03-26 21:37:00+00:00 46.85262 -124.98263 NaN NaN \n", + "17 2022-01-27 21:02:00+00:00 40.133907 -70.770433 NaN NaN \n", + "18 2019-08-03 15:19:00+00:00 40.226633 -70.889067 NaN NaN \n", + "19 2020-08-02 12:02:00+00:00 40.226633 -70.889067 NaN NaN \n", + "20 2021-07-31 18:02:00+00:00 40.226633 -70.889067 NaN NaN \n", + "21 2022-10-28 21:02:00+00:00 40.226633 -70.889067 NaN NaN \n", + "22 2019-08-03 15:19:00+00:00 40.096817 -70.87915 NaN NaN \n", + "23 2021-01-29 15:02:00+00:00 40.096817 -70.87915 NaN NaN \n", + "24 2021-07-31 18:02:00+00:00 40.096817 -70.87915 NaN NaN \n", + "25 2022-01-27 21:02:00+00:00 40.096817 -70.87915 NaN NaN \n", + "26 2022-10-27 09:02:00+00:00 40.096817 -70.87915 NaN NaN \n", + "27 2022-01-28 00:02:00+00:00 40.364917 -70.780483 NaN NaN \n", + "28 2022-05-29 03:02:00+00:00 40.364917 -70.780483 NaN NaN \n", + "29 2022-10-27 09:02:00+00:00 40.364917 -70.780483 NaN NaN \n", + "30 2018-11-04 06:02:00+00:00 39.939333 -70.770183 NaN NaN \n", + "31 2019-02-03 00:02:00+00:00 39.939333 -70.770183 NaN NaN \n", + "32 2020-10-30 18:03:00+00:00 39.939333 -70.770183 NaN NaN \n", + "33 2021-10-30 12:02:00+00:00 39.939333 -70.770183 NaN NaN \n", + "34 2022-01-27 21:02:00+00:00 39.939333 -70.770183 NaN NaN \n", + "35 2022-01-27 21:02:00+00:00 40.362005 -70.878502 NaN NaN \n", + "36 2022-01-27 21:02:00+00:00 40.362005 -70.878502 NaN NaN \n", + "37 2019-02-04 12:02:00+00:00 39.936 -70.879417 NaN NaN \n", + "38 2019-08-05 03:03:00+00:00 39.936 -70.879417 NaN NaN \n", + "39 2019-11-04 00:02:00+00:00 39.936 -70.879417 NaN NaN \n", + "40 2020-10-30 18:03:00+00:00 39.936 -70.879417 NaN NaN \n", + "41 2021-05-01 21:02:00+00:00 39.936 -70.879417 NaN NaN \n", + "42 2021-07-31 18:02:00+00:00 39.936 -70.879417 NaN NaN \n", + "43 2022-01-27 21:02:00+00:00 39.936 -70.879417 NaN NaN \n", + "44 2021-03-10 16:49:00+00:00 44.528949 -125.389664 0.101806 0.818641 \n", + "45 2021-03-10 19:13:00+00:00 44.528949 -125.389664 0.079797 0.626137 \n", + "46 2022-05-09 19:15:00+00:00 44.515161 -125.389899 0.123811 0.998664 \n", + "47 2022-05-09 21:45:00+00:00 44.515161 -125.389899 0.115422 0.975148 \n", + "48 2023-07-02 10:30:00+00:00 44.515161 -125.389899 NaN NaN \n", + "49 2023-10-01 06:10:00+00:00 44.515161 -125.389899 NaN NaN \n", + "50 2023-10-01 06:10:00+00:00 44.515161 -125.389899 NaN NaN \n", + "51 2024-03-30 21:45:00+00:00 44.515161 -125.389899 0.108411 0.991019 \n", + "52 2024-03-31 01:29:00+00:00 44.515161 -125.389899 0.111699 0.984428 \n", + "53 2021-01-02 18:34:00+00:00 45.816712 -129.754055 NaN NaN \n", + "54 2021-04-03 14:52:00+00:00 45.816712 -129.754055 0.093002 0.981762 \n", + "55 2021-04-03 17:07:00+00:00 45.816712 -129.754055 0.091118 0.989766 \n", + "56 2021-04-03 19:32:00+00:00 45.816712 -129.754055 0.084795 0.988416 \n", + "57 2023-03-24 15:33:00+00:00 45.816712 -129.754055 NaN NaN \n", + "58 2023-06-29 23:12:00+00:00 45.816712 -129.754055 NaN NaN \n", + "59 2023-09-28 18:51:00+00:00 45.816712 -129.754055 NaN NaN \n", + "\n", + " stderr \n", + "0 0.003611 \n", + "1 0.015536 \n", + "2 0.005421 \n", + "3 0.017824 \n", + "4 0.001416 \n", + "5 NaN \n", + "6 0.003282 \n", + "7 0.002361 \n", + "8 0.000775 \n", + "9 0.004492 \n", + "10 0.005447 \n", + "11 NaN \n", + "12 NaN \n", + "13 NaN \n", + "14 NaN \n", + "15 NaN \n", + "16 NaN \n", + "17 NaN \n", + "18 NaN \n", + "19 NaN \n", + "20 NaN \n", + "21 NaN \n", + "22 NaN \n", + "23 NaN \n", + "24 NaN \n", + "25 NaN \n", + "26 NaN \n", + "27 NaN \n", + "28 NaN \n", + "29 NaN \n", + "30 NaN \n", + "31 NaN \n", + "32 NaN \n", + "33 NaN \n", + "34 NaN \n", + "35 NaN \n", + "36 NaN \n", + "37 NaN \n", + "38 NaN \n", + "39 NaN \n", + "40 NaN \n", + "41 NaN \n", + "42 NaN \n", + "43 NaN \n", + "44 0.011436 \n", + "45 0.017042 \n", + "46 0.001099 \n", + "47 0.003999 \n", + "48 NaN \n", + "49 NaN \n", + "50 NaN \n", + "51 0.002134 \n", + "52 0.003279 \n", + "53 NaN \n", + "54 0.002884 \n", + "55 0.002077 \n", + "56 0.002112 \n", + "57 NaN \n", + "58 NaN \n", + "59 NaN " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# calculate Kd from OOI data\n", + "\n", + "\n", + "FF = glob.glob('icesat2/ooi/data*.csv')\n", + "FF.sort()\n", + "\n", + "ooi_kd_array = pd.DataFrame(data=None,\n", + " index=range(len(FF)*2),\n", + " columns=['time','lat','lon','kd','rval','stderr']\n", + " )\n", + "cc = 0\n", + "for fname in FF:\n", + " # load the file as a pandas array\n", + " df = pd.read_csv(fname,\n", + " index_col=0,\n", + " header=0,\n", + " usecols=[i for i in range(6)],\n", + " names=['', 'time', 'lat', 'lon', 'z', 'par']\n", + " ) #\n", + " df['time'] = pd.to_datetime(df[\"time\"]).round('s')\n", + " # ooi_kd_array.loc[jj,'stn'] = FF[jj][9:-4] # save the file name if its useful\n", + "\n", + " # calculate kd (there may be more than 1 value if there are multiple casts in 1 file)\n", + " try:\n", + " kd,rval,stderr,t = ooi_run_kdcalc(df)\n", + " except:\n", + " kd = np.nan\n", + " rval = np.nan\n", + " stderr = np.nan\n", + " \n", + " # either put in the 1 value or put in each value...super dumb way to do this but Im in a rush\n", + " if type(kd) != np.ndarray:\n", + " ooi_kd_array.loc[cc,'time'] = t\n", + " ooi_kd_array.loc[cc,'lat'] = df.loc[1,'lat']\n", + " ooi_kd_array.loc[cc,'lon'] = df.loc[1,'lon']\n", + " ooi_kd_array.loc[cc,'kd'] = kd\n", + " ooi_kd_array.loc[cc,'rval'] = rval\n", + " ooi_kd_array.loc[cc,'stderr'] = stderr\n", + " cc += 1 # raise counter\n", + " else: \n", + " for jj in range(len(kd)):\n", + " ooi_kd_array.loc[cc,'time'] = t[jj]\n", + " ooi_kd_array.loc[cc,'lat'] = df.loc[1,'lat']\n", + " ooi_kd_array.loc[cc,'lon'] = df.loc[1,'lon']\n", + " ooi_kd_array.loc[cc,'kd'] = kd[jj]\n", + " ooi_kd_array.loc[cc,'rval'] = rval[jj]\n", + " ooi_kd_array.loc[cc,'stderr'] = stderr[jj]\n", + " cc += 1 # raise counter\n", + "\n", + "ooi_kd_array = ooi_kd_array.dropna(how='all')\n", + "\n", + "# pd.DataFrame()\n", + "# d = {'time' = ff[0,1],'kd': m, 'rval': rval, 'stderr': stderr}\n", + "# df = pd.DataFrame(data=d)\n", + "\n", + "ooi_kd_array.to_csv('../output/icesat2/ooi_kdcalculations10m.csv')\n", + "ooi_kd_array" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "2c841687", + "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", + "
timelatlonkdrvalstderr
02018-12-18T08:19:41Z24.597167-81.1813330.204801-0.911410.002248
12020-08-20T00:54:19Z25.404333-82.21050.000078-0.003740.000411
22020-10-09T09:36:26Z26.632167-82.55951.567188-0.7979450.023695
32022-12-06T19:31:24Z27.796667-82.8796670.0019690.5327380.00006
42022-12-06T20:09:35Z27.7405-82.9283330.0001240.1307190.000017
\n", + "
" + ], + "text/plain": [ + " time lat lon kd rval stderr\n", + "0 2018-12-18T08:19:41Z 24.597167 -81.181333 0.204801 -0.91141 0.002248\n", + "1 2020-08-20T00:54:19Z 25.404333 -82.2105 0.000078 -0.00374 0.000411\n", + "2 2020-10-09T09:36:26Z 26.632167 -82.5595 1.567188 -0.797945 0.023695\n", + "3 2022-12-06T19:31:24Z 27.796667 -82.879667 0.001969 0.532738 0.00006\n", + "4 2022-12-06T20:09:35Z 27.7405 -82.928333 0.000124 0.130719 0.000017" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# calculate kd for all of gulf of mexico ctd profiles \n", + "FF = glob.glob('icesat2/ctd_ws/data*.csv')\n", + "FF.sort()\n", + "\n", + "ws_kd_array = pd.DataFrame(data=None,\n", + " index=range(len(FF)),\n", + " columns=['time','lat','lon','kd','rval','stderr']\n", + " )\n", + "\n", + "for jj in range(len(FF)):\n", + " df = pd.read_csv(FF[jj],\n", + " index_col=0,\n", + " header=0,\n", + " usecols=[i for i in [0,2,3,4,5,6,28]],\n", + " names=['','prof', 'time', 'lat', 'lon', 'z', 'par']\n", + " )\n", + "# ws_kd_array.loc[jj,'stn'] = FF[jj][12:-4]\n", + " \n", + " try:\n", + " kd,rval,stderr = ws_kd_calc(df)\n", + " except:\n", + " kd = np.nan\n", + " rval = np.nan\n", + " stderr = np.nan\n", + "\n", + " time = df.loc[1,'time']\n", + " lat = df.loc[1,'lat']\n", + " lon = df.loc[1,'lon']\n", + "\n", + " ws_kd_array.loc[jj,'time'] = time\n", + " ws_kd_array.loc[jj,'lat'] = lat\n", + " ws_kd_array.loc[jj,'lon'] = lon\n", + " ws_kd_array.loc[jj,'kd'] = kd\n", + " ws_kd_array.loc[jj,'rval'] = rval\n", + " ws_kd_array.loc[jj,'stderr'] = stderr\n", + "\n", + "\n", + "\n", + "pname = '../output/icesat2/'\n", + "ws_kd_array.to_csv(pname+'ws_kdcalculations10m.csv')\n", + "ws_kd_array" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "797738d3", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bcodmo/bcodmo_dataset_518582_2e2e_e9a0_6c3e.csv\n", + " cast latitude longitude depth_w time par\n", + "0 01 21.391 -158.2908 1323 2013-07-02T04:14:31Z 383.36\n", + "1 01 22.75 -158.0002 4743 2013-07-02T21:55:50Z 3588.1\n", + "2 02 22.75 -158.0003 4742 2013-07-03T13:53:21Z 2.2892\n", + "3 01 24.0882 -157.999 4496 2013-07-03T21:56:40Z 1001.3\n", + "4 01 27.0658 -157.9975 5392 2013-07-04T13:59:16Z 1.9284\n", + "bcodmo/bcodmo_dataset_757784_f8fc_ca99_ecce.csv\n", + " Station Site time depth Par latitude longitude\n", + "0 001 Shakedown 2018-05-07T17:46:00Z 3.0 1460.0 11.24758 -56.32338\n", + "1 001 Shakedown 2018-05-07T17:47:00Z 7.0 169.0 11.24768 -56.32336\n", + "2 001 Shakedown 2018-05-07T17:48:00Z 30.0 45.1 11.24788 -56.32324\n", + "3 001 Shakedown 2018-05-07T17:49:00Z 56.0 14.8 11.24816 -56.32307\n", + "4 001 Shakedown 2018-05-07T17:50:00Z 85.0 3.71 11.24842 -56.32296\n", + "bcodmo/bcodmo_dataset_774958_89bb_d996_f2f0.csv\n", + " cast latitude longitude time depth PAR\n", + "0 1 32.1698 -64.5028 2019-05-20T15:52:16Z 15.062 315.99\n", + "1 2 32.1748 -64.4947 2019-05-21T07:11:03Z 11.639 1.0E-12\n", + "2 3 32.274 -64.5 2019-05-21T14:06:26Z 14.377 112.6\n", + "3 4 32.571 -64.6463 2019-05-21T19:43:48Z 13.007 103.71\n", + "4 5 32.4745 -64.5273 2019-05-22T13:57:02Z 14.377 54.236\n", + "bcodmo/bcodmo_dataset_783911_2f9c_8b20_d8a3.csv\n", + " Station time depth PAR_Irradiance latitude longitude\n", + "0 1 2017-12-26T19:16:13Z 0.987 594.0 -64.72202 -87.27946\n", + "1 1 2017-12-26T19:16:17Z 1.979 514.0 -64.72202 -87.27946\n", + "2 1 2017-12-26T19:16:19Z 2.973 458.0 -64.72202 -87.27946\n", + "3 1 2017-12-26T19:16:22Z 3.957 399.0 -64.72202 -87.27946\n", + "4 1 2017-12-26T19:16:25Z 4.954 370.0 -64.72202 -87.27946\n", + "bcodmo/bcodmo_dataset_784290_eebd_40d0_b2f6.csv\n", + " Sta_Sequence Station latitude longitude Water_Depth time \\\n", + "0 1 WF 29.14812 -94.79963 15.9 2017-09-23T00:32:00Z \n", + "1 2 GI 29.066 -94.90167 16.2 2017-09-23T01:51:00Z \n", + "2 3 SS 28.95975 -95.094 16.57 2017-09-23T03:27:00Z \n", + "3 4 S21 28.76455 -95.29817 NaN 2017-09-23T05:29:00Z \n", + "4 4 S21 28.76455 -95.29817 NaN 2017-09-23T08:29:00Z \n", + "\n", + " PAR_Irradiance \n", + "0 NaN \n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 0.16 \n", + "bcodmo/bcodmo_dataset_807119_af4f_a794_1c25.csv\n", + " latitude longitude time par depth\n", + "0 40.2705 -70.82917 2018-04-27T00:19:24Z 1.1092 3.969\n", + "1 40.20583 -70.82883 2018-04-27T01:06:29Z 1.6557 2.977\n", + "2 40.141 -70.82983 2018-04-27T01:53:55Z 1.0538 2.977\n", + "3 40.076 -70.82867 2018-04-27T02:43:26Z 1.2449 3.969\n", + "4 40.011 -70.82833 2018-04-27T03:33:33Z 1.4921 1.985\n", + "bcodmo/bcodmo_dataset_815732_68e0_5c4d_62dc.csv\n", + " Cast_ID time latitude longitude depth PAR_Irradiance\n", + "0 1 2015-03-16T15:56:47Z 31.032117 -76.343633 2.0 1417.0\n", + "1 2 2015-03-16T17:50:10Z 31.005317 -76.334083 2.0 -379.4\n", + "2 3 2015-03-16T19:54:54Z 31.052872 -76.597728 2.0 1350.0\n", + "3 4 2015-03-17T11:53:17Z 31.05692 -76.591803 3.0 54.1\n", + "4 5 2015-03-17T15:30:57Z 31.075522 -76.849018 2.0 1590.0\n", + "bcodmo/bcodmo_dataset_874909_v1_8bf6_bf9e_ab56.csv\n", + " latitude longitude time Station depth PAR_Irradiance\n", + "0 -76.45435 167.91856 2018-02-11T19:19:00Z 67 0.989 838.72\n", + "1 -74.74383 170.3741 2018-02-13T21:25:00Z 70 0.989 4108.9\n", + "2 -74.80015 164.39491 2018-02-14T22:28:00Z 72 0.988 2313.2\n", + "3 -74.7991 164.59668 2018-02-16T20:15:00Z 76 0.963 732.07\n", + "4 -74.69552 164.79597 2018-02-17T20:34:00Z 78 0.989 860.87\n", + "bcodmo/bcodmo_dataset_908342_v1_7e78_d78e_c5cc.csv\n", + " Station latitude longitude time par\n", + "0 9001 -56.5005 -140.70284 2021-02-02T03:45:31Z 40.389\n", + "1 9101 -56.00383 -140.50467 2021-02-02T07:42:22Z -0.001258\n", + "2 9201 -53.4965 -137.0215 2021-02-03T09:27:45Z 0.98411\n", + "3 9301 -53.78167 -137.52467 2021-02-03T13:03:40Z 1.0E-12\n", + "4 9401 -54.07917 -138.0225 2021-02-03T16:28:53Z 105.03\n", + "bcodmo/bcodmo_dataset_915709_v1_1cbb_6b39_1f21.csv\n", + " CTD_Cast Par latitude longitude time\n", + "0 1 1.0E-12 42.4245 -69.75144 2021-08-04T04:48:02Z\n", + "1 1 1.0E-12 42.42576 -69.75328 2021-08-04T04:41:36Z\n", + "2 1 1.0E-12 42.4259 -69.75348 2021-08-04T04:40:54Z\n", + "3 1 1.0E-12 42.42618 -69.75387 2021-08-04T04:39:34Z\n", + "4 1 1.0E-12 42.42645 -69.75429 2021-08-04T04:38:14Z\n" + ] + } + ], + "source": [ + "# Process BCODMO data : only keep unique entries to search ICESat-2\n", + "FF = glob.glob('bcodmo/*.csv')\n", + "FF.sort()\n", + "\n", + "for jj in range(len(FF)):\n", + " df = pd.read_csv(FF[jj],header=0)\n", + " df.drop(0,inplace=True)\n", + " df = df.drop_duplicates(subset=['time'])\n", + " df.reset_index(drop=True, inplace=True)\n", + "\n", + " print(FF[jj])\n", + " print(df.head())\n", + " \n", + " fname = FF[jj][:-4]+'_unique.pkl'\n", + " df.to_pickle(fname)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "e0dd94b3", + "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", + "
StationSitetimedepthParlatitudelongitude
0unitlessunitlessUTCmmicromoles photons per square meter per second...degrees_northdegrees_east
1001Shakedown2018-05-07T17:46:00Z3.01460.011.24758-56.32338
5001Shakedown2018-05-07T17:47:00Z7.0169.011.24768-56.32336
28001Shakedown2018-05-07T17:48:00Z30.045.111.24788-56.32324
54001Shakedown2018-05-07T17:49:00Z56.014.811.24816-56.32307
\n", + "
" + ], + "text/plain": [ + " Station Site time depth \\\n", + "0 unitless unitless UTC m \n", + "1 001 Shakedown 2018-05-07T17:46:00Z 3.0 \n", + "5 001 Shakedown 2018-05-07T17:47:00Z 7.0 \n", + "28 001 Shakedown 2018-05-07T17:48:00Z 30.0 \n", + "54 001 Shakedown 2018-05-07T17:49:00Z 56.0 \n", + "\n", + " Par latitude \\\n", + "0 micromoles photons per square meter per second... degrees_north \n", + "1 1460.0 11.24758 \n", + "5 169.0 11.24768 \n", + "28 45.1 11.24788 \n", + "54 14.8 11.24816 \n", + "\n", + " longitude \n", + "0 degrees_east \n", + "1 -56.32338 \n", + "5 -56.32336 \n", + "28 -56.32324 \n", + "54 -56.32307 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Process BCODMO data\n", + "FF = glob.glob('bcodmo/*.csv')\n", + "FF.sort()\n", + "\n", + "# ws_kd_array = pd.DataFrame(data=None,\n", + "# index=range(len(FF)),\n", + "# columns=['time','lat','lon','kd','rval','stderr','stn']\n", + "# )\n", + "jj = 1\n", + "\n", + "df = pd.read_csv(FF[jj],\n", + " header=0)\n", + "df = df.drop_duplicates(subset=['time'])\n", + "df.head()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/03_load_turbidity_data.ipynb b/icesat2_kdph-main/03_load_turbidity_data.ipynb new file mode 100644 index 0000000..b2a3d8f --- /dev/null +++ b/icesat2_kdph-main/03_load_turbidity_data.ipynb @@ -0,0 +1,191 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c6d637a7-d252-47bc-9943-d15b5d7e1348", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import glob\n", + "from datetime import datetime, timedelta\n", + "import matplotlib.pyplot as plt\n", + "from scipy import stats\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "f41f85b1-b583-4d36-83f3-b4811cd3efb8", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_745/1937311913.py:21: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " all_turb = pd.concat([all_turb, df], ignore_index=True)\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# figure out how to do this easily for 1 site (ndbc)\n", + "\n", + "FF = glob.glob('data/data_gov-ndbc*.csv')\n", + "FF.sort()\n", + "all_turb = pd.DataFrame(data=None,\n", + " columns=['time','lat','lon','z','turb'],\n", + " )\n", + "for jj in range(len(FF)):\n", + " df_full = pd.read_csv(FF[jj],\n", + " header=0) #\n", + "\n", + " df = pd.DataFrame(data=None,\n", + " columns=['time','lat','lon','z','turb'],\n", + " )\n", + " df['time'] = df_full['time (UTC)']\n", + " df['lat'] = df_full['latitude (degrees_north)']\n", + " df['lon'] = df_full['longitude (degrees_east)']\n", + " df['z'] = df_full['depth_reading (m)']\n", + " df['turb'] = df_full['sea_water_turbidity (NTU)']\n", + " df = df[df['z']<2]\n", + " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", + "\n", + "\n", + "all_turb = all_turb.dropna(axis='index')\n", + "all_turb.reset_index(drop=True, inplace=True)\n", + "\n", + "plt.plot(all_turb['time'],all_turb['turb'],'o')\n", + "all_turb.to_csv('results/ndbc_turb.csv')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "d89f2e0c-4d7e-4535-a1af-d65bffa73cb7", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "data/data_E01_waves_mstrain_all_2018-10-24 13:28:38+00:00.csv\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_745/1631083876.py:49: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", + "/tmp/ipykernel_745/1631083876.py:49: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", + " all_turb = pd.concat([all_turb, df], ignore_index=True)\n" + ] + }, + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAGdCAYAAAAWp6lMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA4KklEQVR4nO3dfXhU9Z3//9eE3EBicoBAMkmNGDVSaPAOagjahcqNWJH2cr9im5ritSxKUTAKq2J/W8FtE8q2aLvZIlq33mBN/2jZ6qop7GpRSkICNltuvGE1SoCEoISZoLmB5PP7w+bEIXcTmLuceT6ua66LOec9cz7ncDLzms/5nHNcxhgjAAAAB4sJdwMAAACCjcADAAAcj8ADAAAcj8ADAAAcj8ADAAAcj8ADAAAcj8ADAAAcj8ADAAAcLzbcDYgUnZ2dOnLkiJKTk+VyucLdHAAA4AdjjJqbm5WZmamYmL77cQg8f3PkyBFlZWWFuxkAAOAs1NXV6fzzz+9zPoHnb5KTkyV9vsFSUlLC3BoAAOAPr9errKws+3u8LwSev+k6jJWSkkLgAQBgiBloOAqDlgEAgOMReAAAgOMReAAAgOMReAAAgOMReAAAgOMReAAAgOMReAAAgOMReAAAgONx4UEgAnV0GlXVHldjc6vSkofr6uzRGhbDPd4A4GwReIAIU763Xqtf3KcGb5s9zZ2SoNXzv6K5uRlhbBkADF0c0gIiSPneei3Z9JZP2JGkBm+blmx6S+V768PUMgAY2gg8QITo6DS6p6ym35p7ymrU0WlC0yAAcBACDxAhth84prbTnf3WtJ3u1PYDx0LUIgBwDgIPECGeeOODgNYBALoReIAIUXf8s4DWAQC6EXiACHGwqSWgdQCAbgQeAADgeAQeAADgeAQeAADgeAQeAADgeAQeAADgeAQeAADgeAQeIEL4+8fIHy0ADB6fnUCEiBsW2DoAQDcCDxAhTncEtg4A0I3AA0SI/m8bOvg6AEA3Ag8QIUyA6wAA3Qg8AADA8YIeeA4fPqzbbrtNqampSkxM1BVXXKHdu3fb840xWr16tTIzMzVixAjNmDFD+/bt83mPtrY2LVu2TGPGjFFSUpLmz5+vQ4cO+dQ0NTWpsLBQlmXJsiwVFhbqxIkTwV49AAAwBAQ18DQ1Nemaa65RXFycXn31Ve3fv18/+9nPNHLkSLtm3bp1Wr9+vUpLS1VdXS23263Zs2erubnZrikqKtLmzZtVVlam7du36+TJk5o3b546OrpHbxYUFKimpkbl5eUqLy9XTU2NCgsLg7l6AABgiHAZY4I2JODBBx/Un//8Z7355pu9zjfGKDMzU0VFRXrggQckfd6bk56erp/85Ce688475fF4NHbsWD333HO69dZbJUlHjhxRVlaWXnnlFV1//fV6++23NXHiRFVWViovL0+SVFlZqfz8fL3zzjsaP378gG31er2yLEsej0cpKSkB2gKA/y588GW/az9ce2MQWwIAQ4e/399B7eF58cUXNWXKFN1yyy1KS0vTlVdeqSeffNKeX1tbq4aGBs2ZM8eelpCQoOnTp2vHjh2SpN27d+vUqVM+NZmZmcrNzbVrKioqZFmWHXYkaerUqbIsy64BIl2sK7B1AIBuQQ08H3zwgTZs2KCcnBz98Y9/1JIlS7R8+XI9++yzkqSGhgZJUnp6us/r0tPT7XkNDQ2Kj4/XqFGj+q1JS0vrsfy0tDS75kxtbW3yer0+DyCcRifGBbQOANAtqIGns7NTV111lYqLi3XllVfqzjvv1OLFi7VhwwafOpfL9yerMabHtDOdWdNbfX/vU1JSYg9wtixLWVlZ/q4WEBRTxo0MaB0AoFtQA09GRoYmTpzoM23ChAk6ePCgJMntdktSj16YxsZGu9fH7Xarvb1dTU1N/dYcPXq0x/KPHTvWo/eoy6pVq+TxeOxHXV3dWawhEDhNracDWgcA6BbUwHPNNdfo3Xff9Zn23nvvady4cZKk7Oxsud1ubd261Z7f3t6ubdu2adq0aZKkyZMnKy4uzqemvr5ee/futWvy8/Pl8XhUVVVl1+zcuVMej8euOVNCQoJSUlJ8HkA4fXyyPaB1AIBuscF883vvvVfTpk1TcXGxFixYoKqqKj3xxBN64oknJH1+GKqoqEjFxcXKyclRTk6OiouLlZiYqIKCAkmSZVlatGiRVqxYodTUVI0ePVorV67UpEmTNGvWLEmf9xrNnTtXixcv1saNGyVJd9xxh+bNm+fXGVpAJPi03b+bZPlbBwDoFtTA89WvflWbN2/WqlWr9Mgjjyg7O1uPPfaYvvvd79o1999/v1paWrR06VI1NTUpLy9PW7ZsUXJysl3z6KOPKjY2VgsWLFBLS4tmzpypp59+WsOGdd82+vnnn9fy5cvts7nmz5+v0tLSYK4eEFAtrf713PhbBwDoFtTr8AwlXIcH4XbRgy/7dWPQGEkfcB0eAJAUIdfhAeA/7pYOAMFD4AEAAI5H4AEAAI5H4AEAAI5H4AEAAI5H4AEAAI5H4AEAAI5H4AEihL9/jPzRAsDg8dkJRIhYP/8a/a0DAHTjoxOIEKf9vKKgv3UAgG4EHiBSuAJcBwCwEXiACJEY61+S8bcOANCNwANEiIvGJge0DgDQjcADRAhv26mA1gEAuhF4gAgRF+PfoSp/6wAA3Qg8QIRISogNaB0AoBuBB4gQw+OGBbQOANCNwANEiOOftge0DgDQjcADRIjRSfEBrQMAdCPwABHis1MdAa0DAHQj8AARou7jkwGtAwB0I/AAEcLT6t9NsvytAwB0I/AAAADHI/AAESIp3r8/R3/rAADd+OQEIkRaSkJA6wAA3Qg8QIRIHh4X0DoAQDcCDxAhOC0dAIKHwANEiJyx5wW0DgDQjcADRIjP2v3s4fGzDgDQjcADRIj3jzUHtA4A0I3AA0SIps9OBbQOANCNwANEiGEx/v05+lsHAOjGJycQIRLjhwW0DgDQLaiBZ/Xq1XK5XD4Pt9ttzzfGaPXq1crMzNSIESM0Y8YM7du3z+c92tratGzZMo0ZM0ZJSUmaP3++Dh065FPT1NSkwsJCWZYly7JUWFioEydOBHPVgIAbNzoxoHUAgG5B7+H5yle+ovr6evuxZ88ee966deu0fv16lZaWqrq6Wm63W7Nnz1Zzc/egzKKiIm3evFllZWXavn27Tp48qXnz5qmjo/tMlYKCAtXU1Ki8vFzl5eWqqalRYWFhsFcNCKi0lBEBrQMAdIsN+gJiY316dboYY/TYY4/pBz/4gW6++WZJ0jPPPKP09HT95je/0Z133imPx6OnnnpKzz33nGbNmiVJ2rRpk7KysvTf//3fuv766/X222+rvLxclZWVysvLkyQ9+eSTys/P17vvvqvx48cHexWBgHCP9O+WEf7WAQC6Bb2H58CBA8rMzFR2dra+/e1v64MPPpAk1dbWqqGhQXPmzLFrExISNH36dO3YsUOStHv3bp06dcqnJjMzU7m5uXZNRUWFLMuyw44kTZ06VZZl2TXAUODx8+wrf+sAAN2C2sOTl5enZ599VpdeeqmOHj2qH/3oR5o2bZr27dunhoYGSVJ6errPa9LT0/XRRx9JkhoaGhQfH69Ro0b1qOl6fUNDg9LS0nosOy0tza7pTVtbm9ra2uznXq/37FYSCJD3GvzbB/2tAwB0C2rgueGGG+x/T5o0Sfn5+br44ov1zDPPaOrUqZIkl8vl8xpjTI9pZzqzprf6gd6npKREa9as8Ws9gFA46m0PaB0AoFtIT0tPSkrSpEmTdODAAXtcz5m9MI2NjXavj9vtVnt7u5qamvqtOXr0aI9lHTt2rEfv0RetWrVKHo/HftTV1Z3TugHnitPSASB4Qhp42tra9PbbbysjI0PZ2dlyu93aunWrPb+9vV3btm3TtGnTJEmTJ09WXFycT019fb327t1r1+Tn58vj8aiqqsqu2blzpzwej13Tm4SEBKWkpPg8gHAak+zfYGR/6wAA3YJ6SGvlypW66aabdMEFF6ixsVE/+tGP5PV6tXDhQrlcLhUVFam4uFg5OTnKyclRcXGxEhMTVVBQIEmyLEuLFi3SihUrlJqaqtGjR2vlypWaNGmSfdbWhAkTNHfuXC1evFgbN26UJN1xxx2aN28eZ2hhSBmdFBfQOgBAt6AGnkOHDuk73/mOPv74Y40dO1ZTp05VZWWlxo0bJ0m6//771dLSoqVLl6qpqUl5eXnasmWLkpOT7fd49NFHFRsbqwULFqilpUUzZ87U008/rWHDurv1n3/+eS1fvtw+m2v+/PkqLS0N5qoBAfdBo383BfW3DgDQzWWMMeFuRCTwer2yLEsej4fDWwiLK1a/qhOtnQPWjRweo5rVNwxYBwDRwN/vb+6lBUSIz9oHDjuDqQMAdCPwAAAAxyPwABFigMtPDboOANCNwANEiNgY//4c/a0DAHTjkxOIEMP9vKCgv3UAgG4EHiBCjE6MD2gdAKAbgQeIEBMz/bscgr91AIBuBB4gQvy/yVkBrQMAdCPwABFi2iVjlDTA+JykhGGadsmYELUIAJyDwANEiGExLv1sweX91vzslss1LIbz0gFgsAg8QASZm5uhx2+7Su6U4T7TM6zhevy2qzQ3NyNMLQOAoS2oNw8FMHhzczM0e6JbVbXH1djcqrTk4bo6ezQ9OwBwDgg8QAQaFuNS/sWp4W4GADgGh7QAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjEXgAAIDjhSzwlJSUyOVyqaioyJ5mjNHq1auVmZmpESNGaMaMGdq3b5/P69ra2rRs2TKNGTNGSUlJmj9/vg4dOuRT09TUpMLCQlmWJcuyVFhYqBMnToRgrQAAwFAQksBTXV2tJ554QpdddpnP9HXr1mn9+vUqLS1VdXW13G63Zs+erebmZrumqKhImzdvVllZmbZv366TJ09q3rx56ujosGsKCgpUU1Oj8vJylZeXq6amRoWFhaFYNQAAMBSYIGtubjY5OTlm69atZvr06eaee+4xxhjT2dlp3G63Wbt2rV3b2tpqLMsyjz/+uDHGmBMnTpi4uDhTVlZm1xw+fNjExMSY8vJyY4wx+/fvN5JMZWWlXVNRUWEkmXfeecfvdno8HiPJeDyec1ldAAAQQv5+fwe9h+euu+7SjTfeqFmzZvlMr62tVUNDg+bMmWNPS0hI0PTp07Vjxw5J0u7du3Xq1CmfmszMTOXm5to1FRUVsixLeXl5ds3UqVNlWZZd05u2tjZ5vV6fBwAAcKbYYL55WVmZ3nrrLVVXV/eY19DQIElKT0/3mZ6enq6PPvrIromPj9eoUaN61HS9vqGhQWlpaT3ePy0tza7pTUlJidasWTO4FQIAAENS0Hp46urqdM8992jTpk0aPnx4n3Uul8vnuTGmx7QznVnTW/1A77Nq1Sp5PB77UVdX1+8yAQDA0BW0wLN79241NjZq8uTJio2NVWxsrLZt26Zf/OIXio2NtXt2zuyFaWxstOe53W61t7erqamp35qjR4/2WP6xY8d69B59UUJCglJSUnweAADAmYIWeGbOnKk9e/aopqbGfkyZMkXf/e53VVNTo4suukhut1tbt261X9Pe3q5t27Zp2rRpkqTJkycrLi7Op6a+vl579+61a/Lz8+XxeFRVVWXX7Ny5Ux6Px64BAADRLWhjeJKTk5Wbm+szLSkpSampqfb0oqIiFRcXKycnRzk5OSouLlZiYqIKCgokSZZladGiRVqxYoVSU1M1evRorVy5UpMmTbIHQU+YMEFz587V4sWLtXHjRknSHXfcoXnz5mn8+PHBWj0AADCEBHXQ8kDuv/9+tbS0aOnSpWpqalJeXp62bNmi5ORku+bRRx9VbGysFixYoJaWFs2cOVNPP/20hg0bZtc8//zzWr58uX021/z581VaWhry9QEAAJHJZYwx4W5EJPB6vbIsSx6Ph/E8AAAMEf5+f3MvLQAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HgEHgAA4HhBDTwbNmzQZZddppSUFKWkpCg/P1+vvvqqPd8Yo9WrVyszM1MjRozQjBkztG/fPp/3aGtr07JlyzRmzBglJSVp/vz5OnTokE9NU1OTCgsLZVmWLMtSYWGhTpw4EcxVAwAAQ0hQA8/555+vtWvXateuXdq1a5euu+46ffOb37RDzbp167R+/XqVlpaqurpabrdbs2fPVnNzs/0eRUVF2rx5s8rKyrR9+3adPHlS8+bNU0dHh11TUFCgmpoalZeXq7y8XDU1NSosLAzmqgEAgKHEhNioUaPMr371K9PZ2WncbrdZu3atPa+1tdVYlmUef/xxY4wxJ06cMHFxcaasrMyuOXz4sImJiTHl5eXGGGP2799vJJnKykq7pqKiwkgy77zzjt/t8ng8RpLxeDznuooAACBE/P3+DtkYno6ODpWVlenTTz9Vfn6+amtr1dDQoDlz5tg1CQkJmj59unbs2CFJ2r17t06dOuVTk5mZqdzcXLumoqJClmUpLy/Prpk6daosy7JretPW1iav1+vzAAAAzhT0wLNnzx6dd955SkhI0JIlS7R582ZNnDhRDQ0NkqT09HSf+vT0dHteQ0OD4uPjNWrUqH5r0tLSeiw3LS3NrulNSUmJPebHsixlZWWd03oCAIDIFfTAM378eNXU1KiyslLf//73tXDhQu3fv9+e73K5fOqNMT2mnenMmt7qB3qfVatWyePx2I+6ujp/VwkAAAwxQQ888fHxuuSSSzRlyhSVlJTo8ssv189//nO53W5J6tEL09jYaPf6uN1utbe3q6mpqd+ao0eP9ljusWPHevQefVFCQoJ99ljXAwAAOFPIr8NjjFFbW5uys7Pldru1detWe157e7u2bdumadOmSZImT56suLg4n5r6+nrt3bvXrsnPz5fH41FVVZVds3PnTnk8HrsGAABEt9hgvvlDDz2kG264QVlZWWpublZZWZn+9Kc/qby8XC6XS0VFRSouLlZOTo5ycnJUXFysxMREFRQUSJIsy9KiRYu0YsUKpaamavTo0Vq5cqUmTZqkWbNmSZImTJiguXPnavHixdq4caMk6Y477tC8efM0fvz4YK4eAAAYIoIaeI4eParCwkLV19fLsixddtllKi8v1+zZsyVJ999/v1paWrR06VI1NTUpLy9PW7ZsUXJysv0ejz76qGJjY7VgwQK1tLRo5syZevrppzVs2DC75vnnn9fy5cvts7nmz5+v0tLSYK4aAAAYQlzGGBPuRkQCr9cry7Lk8XgYzwMAwBDh7/c399ICAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOR+ABAACOF9TAU1JSoq9+9atKTk5WWlqavvWtb+ndd9/1qTHGaPXq1crMzNSIESM0Y8YM7du3z6emra1Ny5Yt05gxY5SUlKT58+fr0KFDPjVNTU0qLCyUZVmyLEuFhYU6ceJEMFcPAAAMEUENPNu2bdNdd92lyspKbd26VadPn9acOXP06aef2jXr1q3T+vXrVVpaqurqarndbs2ePVvNzc12TVFRkTZv3qyysjJt375dJ0+e1Lx589TR0WHXFBQUqKamRuXl5SovL1dNTY0KCwuDuXoAAGCoMCHU2NhoJJlt27YZY4zp7Ow0brfbrF271q5pbW01lmWZxx9/3BhjzIkTJ0xcXJwpKyuzaw4fPmxiYmJMeXm5McaY/fv3G0mmsrLSrqmoqDCSzDvvvONX2zwej5FkPB7POa8nAAAIDX+/v0M6hsfj8UiSRo8eLUmqra1VQ0OD5syZY9ckJCRo+vTp2rFjhyRp9+7dOnXqlE9NZmamcnNz7ZqKigpZlqW8vDy7ZurUqbIsy645U1tbm7xer88DAAA4U8gCjzFG9913n6699lrl5uZKkhoaGiRJ6enpPrXp6en2vIaGBsXHx2vUqFH91qSlpfVYZlpaml1zppKSEnu8j2VZysrKOrcVBAAAEStkgefuu+/WX//6V73wwgs95rlcLp/nxpge0850Zk1v9f29z6pVq+TxeOxHXV2dP6sBAACGoJAEnmXLlunFF1/U66+/rvPPP9+e7na7JalHL0xjY6Pd6+N2u9Xe3q6mpqZ+a44ePdpjuceOHevRe9QlISFBKSkpPg8AAOBMQQ08xhjdfffd+v3vf6/XXntN2dnZPvOzs7Pldru1detWe1p7e7u2bdumadOmSZImT56suLg4n5r6+nrt3bvXrsnPz5fH41FVVZVds3PnTnk8HrsGAAKpo9Oo4v1P9Ieaw6p4/xN1dJpwNwlAP2KD+eZ33XWXfvOb3+gPf/iDkpOT7Z4cy7I0YsQIuVwuFRUVqbi4WDk5OcrJyVFxcbESExNVUFBg1y5atEgrVqxQamqqRo8erZUrV2rSpEmaNWuWJGnChAmaO3euFi9erI0bN0qS7rjjDs2bN0/jx48P5ioCiELle+u15qX9qve02tMyrOF6+KaJmpubEcaWAeiLyxgTtJ8lfY2f+fWvf63bb79d0ue9QGvWrNHGjRvV1NSkvLw8/fu//7s9sFmSWltb9U//9E/6zW9+o5aWFs2cOVO//OUvfQYaHz9+XMuXL9eLL74oSZo/f75KS0s1cuRIv9rq9XplWZY8Hg+HtwD0qXxvvb6/6S2d+cHZ9Wm34barCD1ACPn7/R3UwDOUEHgADKSj0+jan7zm07PzRS5Jbmu4tj9wnYbF9H/iBYDA8Pf7m3tpAYCfqmqP9xl2JMlIqve0qqr2eOgaBcAvBB4A8FNjc99h52zqAIQOgQcA/DQmKSGgdQBCh8ADAH7q9HPIo791AEKHwAMAftrp59gcf+sAhA6BBwD85m/PDT08QKQh8ACAn/IvGhPQOgChQ+ABAD9NvThVIxPj+q0ZmRinqRenhqhFAPxF4AEAPw2LcWntzZP6rVl78yQuOghEIAIPAAzC3NwMPX7bVXKn+J567k5J0OPcVgKIWEG9eSgAONHc3AzNnuhWVe1xNTa3Ki15uK7OHk3PDhDBCDwAcBaGxbiUz1gdYMgg8ADAWejoNPTwAEMIgQcABql8b73WvLTf50aiGdZwPXzTRMbwABGKQcsAMAjle+v1/U1v9bhreoOnVd/f9JbK99aHqWUA+kPgAQA/dXQarXlpf6/XUe6atual/ero5ErLQKQh8ACAn6pqj/fo2fkiI6ne06oq7qUFRBzG8AA4a9E2cLexue+wczZ1AEKHwAPgrETjwN205OEBrQMQOhzSAjBo0Tpw9+rs0QPeS2tUYpyuzh4dohYB8BeBB8CgRPvA3fbTnf3ObxtgPoDwIPAAGJRoHrhb+f4n+qy9o9+az9o7VPn+JyFqEQB/EXgADEo0D9zd8f7HAa0DEDoEHgCDEs0Ddw+faAloHYDQIfAAGJSrs0crwxquvk4+d+nzs7WcOHC3s8O/8Tn+1gEIHQIPgEEZFuPSwzdNlKQeoafr+cM3TXTk9XiOnfTvMJ2/dQBCh8ADYNDm5mZow21XyW35HrZyW8O14barHHsdnk8+PRXQOgChw4UHAZyVubkZmj3RHVVXWu7Zp3WudQBChcAD4KwNi3Ep/+LUcDcjZL7sTtZ7jSf9qgMQWTikBQB+umVyVkDrAIQOgQcA/JTnZ2+Wv3UAQofAAwB+qv7Qv6tH+1sHIHQIPADgpwo/bxnhbx2A0Alq4HnjjTd00003KTMzUy6XS//5n//pM98Yo9WrVyszM1MjRozQjBkztG/fPp+atrY2LVu2TGPGjFFSUpLmz5+vQ4cO+dQ0NTWpsLBQlmXJsiwVFhbqxIkTwVw1AFHJ3xuiOvPGqcBQFtTA8+mnn+ryyy9XaWlpr/PXrVun9evXq7S0VNXV1XK73Zo9e7aam5vtmqKiIm3evFllZWXavn27Tp48qXnz5qmjo/sGfgUFBaqpqVF5ebnKy8tVU1OjwsLCYK4agCiUf9GYgNYBCB2XMSYkP0VcLpc2b96sb33rW5I+793JzMxUUVGRHnjgAUmf9+akp6frJz/5ie688055PB6NHTtWzz33nG699VZJ0pEjR5SVlaVXXnlF119/vd5++21NnDhRlZWVysvLkyRVVlYqPz9f77zzjsaPH+9X+7xeryzLksfjUUpKSuA3AIAhr6W9QxN+WD5gXe6XUvRfy74WghYB8Pf7O2xjeGpra9XQ0KA5c+bY0xISEjR9+nTt2LFDkrR7926dOnXKpyYzM1O5ubl2TUVFhSzLssOOJE2dOlWWZdk1vWlra5PX6/V5AEB/nqv40K+6vYe9Otl6OriNATAoYQs8DQ0NkqT09HSf6enp6fa8hoYGxcfHa9SoUf3WpKWl9Xj/tLQ0u6Y3JSUl9pgfy7KUlcV1M4DB6ug0qnj/E/2h5rAq3v9EHZ3OHrtSvrfvz5QzFZW9FcSWABissF9p2eXyvQS7MabHtDOdWdNb/UDvs2rVKt133332c6/XS+gBBqF8b73WvLRf9Z7uG2VmWMP18E0THXsvrbqmT/2u/d/DniC2BMBgha2Hx+12S1KPXpjGxka718ftdqu9vV1NTU391hw9erTH+x87dqxH79EXJSQkKCUlxecBwD/le+v1/U1v+YQdSWrwtOr7m95S+d76MLUsuBLjh/ldGzfADzcAoRW2wJOdnS23262tW7fa09rb27Vt2zZNmzZNkjR58mTFxcX51NTX12vv3r12TX5+vjwej6qqquyanTt3yuPx2DXoFm2HIBB4HZ1Ga17a3+uJ113T1ry035H7Vv7F/p99NTyWwANEkqAe0jp58qT+7//+z35eW1urmpoajR49WhdccIGKiopUXFysnJwc5eTkqLi4WImJiSooKJAkWZalRYsWacWKFUpNTdXo0aO1cuVKTZo0SbNmzZIkTZgwQXPnztXixYu1ceNGSdIdd9yhefPm+X2GVrSIxkMQCLyq2uM9ena+yEiq97Sqqva4424smnpevN+13raOgYsAhExQA8+uXbv09a9/3X7eNWZm4cKFevrpp3X//ferpaVFS5cuVVNTk/Ly8rRlyxYlJ3ffafjRRx9VbGysFixYoJaWFs2cOVNPP/20hg3r7lp+/vnntXz5cvtsrvnz5/d57Z9o1XUI4szf3F2HIDbcdhWhB35pbO477JxN3VDR0Wm0qfKg3/WtpzhLC4gkIbsOT6Rz8nV4OjqNrv3Ja33+KndJclvDtf2B6zQshm549K/i/U/0nScrB6x7YfFUR/Xw+LveXc6Lc2nvv3wjiC0CIA2B6/AgdAZzCAIYyNXZo5VhDVdf0dilzw+VXp09OpTNCrrB9lh9eorfkkAkIfBEgWg9BIHgGBbj0sM3TZSkHqGn6/nDN010XG9hWvLwQdUTd4DIQuCJAv5+UA/2Ax3Ra25uhjbcdpXclu8+47aGO3Y82NXZo/nABIawsF94EMHXdQiiwdPa66/OrjE8TjsEgeCam5uh2RPdqqo9rsbmVqUlf74POa1np8uwGJeuykrRrjpuQwMMRfxgiQLReggCwTcsxqX8i1P1zSu+pPyLUx2/D83JzQx3EwCcJQJPlIjGQxBAoKWelxDuJgA4SxzSiiLRdggCCLQ3DzSGuwkAzhKBJ8p0HYIAMDgdnUb/9b/OvEcYEA04pAUAfqiqPa7TnGsODFn08ESZjk7DIS3gLHCdKmBoI/BEEW4eCpw9rlMFDG0c0ooSXTcPPfMWE103Dy3fy9gEoD9cpwoY2gg8UaCj02jNS/t7vehg17Q1L+1XRycDFIC+cOgXGNoIPFGAm4cCAKIdgScKcPNQAEC0I/BEAW4eCgCIdpylFQWuzh6tkYlxOvHZqT5rRibGMSgzgjj58gFOXjcAkYvAA0k9byqK8HHy5QOcvG4AIhuHtKJAVe3xfnt3JKnps1MMWo4ATr58QF/rVu9p1ZJNb+nCB1/WhQ++HKbWDYyzGIGhjcATBRi0PDQ4+fIB/a3bmSI19PCDABjaCDxRgEHLQ4OTLx8w0LqdKRJDDz8IgKGNwBMFJo8bpYHGhMa4Pq9D+Di5J+5s2hxpoWdMUkK4mwDgHBB4osDuj5o00FGQTvN5HcLHyT1xQ7HNPTCyHxjSCDxRwMk9B05ydfZoZVj9B4MMa/iQvHyAP+sW6Rq9/H0AQxmnpUcBJ/ccRLqTrad172//ooNNLbpg1Ag9euuVOm947392w2Jcmn95hja+Udvn+82/PGNIXrNmWIxLuV9KGdQ4nkjDDwLg7Pz05b+o9M0j9vO7v5aplTdeGfJ2EHiiQNev6wZPa69nybgkuYdoz0Ekm1/6pv56yGs/f7ehWbmr/6jLzk/Ri3d/rUd9R6fRi//b/2nnL/5vve6fO2HIhZ720536n7cbw92Mc7LviHfgIgA+ehuLV/rmEZW+eUQfrr0xpG3hkFYUGBbj0sM3TezzlGAj6eGbJg65L9FIdmbY+aK/HvJqfumbPab7cybTUD1L67mKDwccRxbpDje1hLsJwJAy0IkHoT4xgcATJf5ysP8ByQPNh/9Otp7uM+x0+eshr062nvaZNhTHWnV0GlW8/4n+UHNYFe9/0uc1gt45OvjekUjpb+xaR29L/xfvBNDtpy//JaB1gcAhrSjQfrpTT/QzLkSSnnijVivmfFnxscHLwC3tHSp+Zb8+/OQzXZiaqIe+MVEj4ocFbXnhcu9v/fsDzl39R/vfH669cciNtRrMbSJe2n140O//Voi7u3tTvrdeSza9ddav7+g09JwiKn1xzM5AdaEaz0MPTxD5++s32J7eXjvgFW7N3+qCZfGz1Zrww3I9V3lQbx74WM9VHtSEH5Zr8bPVQVtmuBw8i0MfFz74sj3Wqq+vR5ci5yyt/m4TceYtMC5a9bJaB7nrh/rYfm/ONexIUskf9gSoNQDOFYEnSMr31uvan7ym7zxZqXvKavSdJyt17U9eC8u9kP5rj3+/rv2tG6zFz1Zr6/7eB6xu3d/ouNCTNfLsemAufugVPXzTREk9L/nS9TwSxloNdJsIo+5bYFy06uWzGrsz/V9fO5cmnrOOTnPOYUeSfrWzLgCtARAIBJ4gGMyv31D46+HmgNYNRkt7R59hp8vW/Y1qae8I+LL9tf+QVxf97caVXY+LHnxZ+wcYh9OXb1897qzbsmTTW9pw21VKT/ENTUbSP9+Yo8NNLfrhH/bqqTc/UPvpzrNezrnwd3D1f+2qO+uByh990iLPADe8Daa7N20N27IBJ5iVkxLQukBgDE+A+fvrd/ZEd9h/qYdC8Sv7/a77l29NCnJreurrLIFOSd/425lUgz288pe6cxsA/peDTWro5SJ3j7x8wOf5v7z8tu78u2yt+sbEHrW9rVegDhPVHf/Ur7p7fn9uh3Muf2SLVn79At19ff/7xdms60CveXU/A5SBc/E/B/z7wZiROjK4DfkCR/Xw/PKXv1R2draGDx+uyZMn6803e576G2xOPrX4bHz4yWd+1T1XeTDILenJ31MiB3vq5KHj53b6cn8XHuyttuSMUNlXewN1Cuj9vwvduJSfvn6w33afzboGe/sA0e6Sh14ecNxol9MhHNvqmMDz29/+VkVFRfrBD36gv/zlL/ra176mG264QQcPhvaL9C91nwS0bqg7fxDjWUL5hTPYw1WDqT/q8a8HJFA2vlFrH94K9nUvXgxDMJV6b/fZrGukXRcEcJqDH3+mwRxtf2NfcMaO9sYxgWf9+vVatGiR/vEf/1ETJkzQY489pqysLG3YsCGk7VhXfmDgokHUDXUvVB8aVP3jW/cFqSW+vtHLhf8CVb/rQ89gm3POrv7/Xg1aj9UXLf/P8J11VPrH7mWfzbqGYvsA0e7vfvr6oOoPfxq6sYiOCDzt7e3avXu35syZ4zN9zpw52rFjR6+vaWtrk9fr9Xkg/Nb+z4fhbsI5Oz1wScCdCMMyQ+2nr4endwmAMzgi8Hz88cfq6OhQenq6z/T09HQ1NDT0+pqSkhJZlmU/srKyQtFUAFHE+aclAEOHIwJPF5fL9+PFGNNjWpdVq1bJ4/HYj7o6rpcBILBqI+ACigA+54jAM2bMGA0bNqxHb05jY2OPXp8uCQkJSklJ8Xk4VcGUUQGtC6YHZ14Y7iacswVXWSFf5uSRIV9kyK38+gUhW9ZFIVsSgFBxROCJj4/X5MmTtXWr78XCtm7dqmnTpoW0Lf5e6ySUl84v/n/+bQN/6wZjsOu5ZPZXAt6G3gy2XYOpX7fg2sE255z97sEbQ7LvDea1gd7Hv3g9nrNZ18G85rUAtD0Sbo8BhFowP1vPlSMCjyTdd999+tWvfqX/+I//0Ntvv617771XBw8e1JIlS0LeloH+A8PxQRjONkViCBzM8s6mXWf7mnNdVij+n/15j66aQP2f9vY+Z7Oug3lNqIIh4DSR+pnvmMBz66236rHHHtMjjzyiK664Qm+88YZeeeUVjRt39pf5Pxd9/UeG84Pww7U39jhsVTBlVEja1N8yHpx5Ydi2SzADwodrb+xxeKuvw13+fNFeesaN5SePHNyXeiC3cX/vdea8c1nuyq9fMKhl+bPMwbzmw7U39ji8NdDhLsIOEJk//F3GmPDcwjvCeL1eWZYlj8fj6PE8AAA4ib/f347p4QEAAOgLgQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADheUAPPj3/8Y02bNk2JiYkaOXJkrzUHDx7UTTfdpKSkJI0ZM0bLly9Xe3u7T82ePXs0ffp0jRgxQl/60pf0yCOPyBjjU7Nt2zZNnjxZw4cP10UXXaTHH388WKsFAACGmNhgvnl7e7tuueUW5efn66mnnuoxv6OjQzfeeKPGjh2r7du365NPPtHChQtljNG//du/SZK8Xq9mz56tr3/966qurtZ7772n22+/XUlJSVqxYoUkqba2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "FF = glob.glob('data/data_*.csv')\n", + "FF.sort()\n", + "all_turb = pd.DataFrame(data=None,\n", + " columns=['time','lat','lon','z','turb'],\n", + " )\n", + "\n", + "for jj in range(len(FF)):\n", + " df_full = pd.read_csv(FF[jj],header=0)\n", + "\n", + " \n", + " df = pd.DataFrame(data=None,\n", + " columns=['time','lat','lon','z','turb'],\n", + " )\n", + " # try loading each file\n", + " df['time'] = df_full['time (UTC)']\n", + " df['lat'] = df_full['latitude (degrees_north)']\n", + " df['lon'] = df_full['longitude (degrees_east)']\n", + " \n", + " # check for various names for depth column\n", + " if 'depth (m)' in df_full.columns:\n", + " df['z'] = df_full['depth (m)'] \n", + " elif 'z (m)' in df_full.columns:\n", + " df['z'] = df_full['z (m)']\n", + " elif 'depth_reading (m)' in df_full.columns:\n", + " df['z'] = df_full['depth_reading (m)']\n", + " else:\n", + " print(FF[jj])\n", + "\n", + " # check for various names for turbidity column\n", + " if 'turbidity (ntus)' in df_full.columns:\n", + " df['turb'] = df_full['turbidity (ntus)'] \n", + " elif 'sea_water_turbidity (NTU)' in df_full.columns:\n", + " df['turb'] = df_full['sea_water_turbidity (NTU)']\n", + " elif 'sea_water_turbidity (RFU)' in df_full.columns:\n", + " df['turb'] = df_full['sea_water_turbidity (RFU)']\n", + " else:\n", + " print(FF[jj])\n", + " \n", + " \n", + " df = df[df['z']<2]\n", + " \n", + " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", + "\n", + "\n", + "all_turb = all_turb.dropna(axis='index')\n", + "all_turb.reset_index(drop=True, inplace=True)\n", + "all_turb.to_csv('results/all_turbidity_compile.csv')\n", + "plt.plot(all_turb['lat'],all_turb['turb'],'o')\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/03_proc_icesat4matlab.ipynb b/icesat2_kdph-main/03_proc_icesat4matlab.ipynb new file mode 100644 index 0000000..0f4cc18 --- /dev/null +++ b/icesat2_kdph-main/03_proc_icesat4matlab.ipynb @@ -0,0 +1,618 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8f821b93-0ec9-41db-af0e-61e26934504d", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import glob\n", + "from datetime import datetime, timedelta\n", + "import matplotlib.pyplot as plt\n", + "from math import radians, sin, cos, acos\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "# pd.set_option('display.max_rows', None)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c20024b9-6169-45ec-a236-69b8b6c03d41", + "metadata": {}, + "outputs": [], + "source": [ + "def calc_distance(lat1,lon1,lat2,lon2):\n", + " if lat1-lat2==0:\n", + " dist = 0\n", + " else:\n", + " lat1 = radians(lat1)\n", + " lon1 = radians(lon1)\n", + " lat2 = radians(lat2)\n", + " lon2 = radians(lon2)\n", + " dist = 6371.01 * acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(lon1 - lon2))\n", + " return dist" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "23b438ae-3319-4256-a476-d547ac56e166", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
rgtsc_orientcyclesegment_distbackground_ratetrackregionsolar_elevationpairsegment_idlandcoveratl08_classsnowcoverheightreliefyapc_scorey_atcx_atcatl03_cnfquality_phgeometryspot
time
2024-03-22 01:15:24.318551296521235.097173e+06593992.4832632216.16729702541862554255-25.5307480.0044.496086-9.50521430POINT (-129.75048 45.78967)4
2024-03-22 01:15:24.318651392521235.097173e+06593992.4832632216.16729702541862554255-33.3619690.0044.523972-8.77252010POINT (-129.75048 45.78968)4
2024-03-22 01:15:24.318951424521235.097173e+06593992.4832632216.16729702541862554255-25.9837060.0044.497410-6.65974040POINT (-129.75048 45.78969)4
2024-03-22 01:15:24.319251200521235.097173e+06593992.4832632216.16729702541862554255-25.7792450.0044.496601-4.52706140POINT (-129.75049 45.78971)4
2024-03-22 01:15:24.319651328521235.097173e+06593992.4832632216.16729702541862554255-25.6305500.0044.496162-1.68258040POINT (-129.75049 45.78974)4
.....................................................................
2024-03-22 01:15:25.504951552521235.103184e+06463590.8205332216.15327812544862554255-26.2457390.00-44.4487195.07593640POINT (-129.75674 45.84372)3
2024-03-22 01:15:25.504951552521235.103184e+06463590.8205332216.15327812544862554255-26.5386240.00-44.4477275.07516040POINT (-129.75674 45.84372)3
2024-03-22 01:15:25.505151488521235.103184e+06463590.8205332216.15327812544862554255-49.6454540.00-44.3745926.44118200POINT (-129.75674 45.84373)3
2024-03-22 01:15:25.505551360521235.103184e+06463590.8205332216.15327812544862554255-14.0022740.00-44.5046819.38809110POINT (-129.75675 45.84375)3
2024-03-22 01:15:25.505551360521235.103184e+06463590.8205332216.15327812544862554255-70.7925110.00-44.3130239.23861200POINT (-129.75675 45.84375)3
\n", + "

20085 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " rgt sc_orient cycle segment_dist \\\n", + "time \n", + "2024-03-22 01:15:24.318551296 52 1 23 5.097173e+06 \n", + "2024-03-22 01:15:24.318651392 52 1 23 5.097173e+06 \n", + "2024-03-22 01:15:24.318951424 52 1 23 5.097173e+06 \n", + "2024-03-22 01:15:24.319251200 52 1 23 5.097173e+06 \n", + "2024-03-22 01:15:24.319651328 52 1 23 5.097173e+06 \n", + "... ... ... ... ... \n", + "2024-03-22 01:15:25.504951552 52 1 23 5.103184e+06 \n", + "2024-03-22 01:15:25.504951552 52 1 23 5.103184e+06 \n", + "2024-03-22 01:15:25.505151488 52 1 23 5.103184e+06 \n", + "2024-03-22 01:15:25.505551360 52 1 23 5.103184e+06 \n", + "2024-03-22 01:15:25.505551360 52 1 23 5.103184e+06 \n", + "\n", + " background_rate track region \\\n", + "time \n", + "2024-03-22 01:15:24.318551296 593992.483263 2 2 \n", + "2024-03-22 01:15:24.318651392 593992.483263 2 2 \n", + "2024-03-22 01:15:24.318951424 593992.483263 2 2 \n", + "2024-03-22 01:15:24.319251200 593992.483263 2 2 \n", + "2024-03-22 01:15:24.319651328 593992.483263 2 2 \n", + "... ... ... ... \n", + "2024-03-22 01:15:25.504951552 463590.820533 2 2 \n", + "2024-03-22 01:15:25.504951552 463590.820533 2 2 \n", + "2024-03-22 01:15:25.505151488 463590.820533 2 2 \n", + "2024-03-22 01:15:25.505551360 463590.820533 2 2 \n", + "2024-03-22 01:15:25.505551360 463590.820533 2 2 \n", + "\n", + " solar_elevation pair segment_id landcover \\\n", + "time \n", + "2024-03-22 01:15:24.318551296 16.167297 0 254186 255 \n", + "2024-03-22 01:15:24.318651392 16.167297 0 254186 255 \n", + "2024-03-22 01:15:24.318951424 16.167297 0 254186 255 \n", + "2024-03-22 01:15:24.319251200 16.167297 0 254186 255 \n", + "2024-03-22 01:15:24.319651328 16.167297 0 254186 255 \n", + "... ... ... ... ... \n", + "2024-03-22 01:15:25.504951552 16.153278 1 254486 255 \n", + "2024-03-22 01:15:25.504951552 16.153278 1 254486 255 \n", + "2024-03-22 01:15:25.505151488 16.153278 1 254486 255 \n", + "2024-03-22 01:15:25.505551360 16.153278 1 254486 255 \n", + "2024-03-22 01:15:25.505551360 16.153278 1 254486 255 \n", + "\n", + " atl08_class snowcover height relief \\\n", + "time \n", + "2024-03-22 01:15:24.318551296 4 255 -25.530748 0.0 \n", + "2024-03-22 01:15:24.318651392 4 255 -33.361969 0.0 \n", + "2024-03-22 01:15:24.318951424 4 255 -25.983706 0.0 \n", + "2024-03-22 01:15:24.319251200 4 255 -25.779245 0.0 \n", + "2024-03-22 01:15:24.319651328 4 255 -25.630550 0.0 \n", + "... ... ... ... ... \n", + "2024-03-22 01:15:25.504951552 4 255 -26.245739 0.0 \n", + "2024-03-22 01:15:25.504951552 4 255 -26.538624 0.0 \n", + "2024-03-22 01:15:25.505151488 4 255 -49.645454 0.0 \n", + "2024-03-22 01:15:25.505551360 4 255 -14.002274 0.0 \n", + "2024-03-22 01:15:25.505551360 4 255 -70.792511 0.0 \n", + "\n", + " yapc_score y_atc x_atc atl03_cnf \\\n", + "time \n", + "2024-03-22 01:15:24.318551296 0 44.496086 -9.505214 3 \n", + "2024-03-22 01:15:24.318651392 0 44.523972 -8.772520 1 \n", + "2024-03-22 01:15:24.318951424 0 44.497410 -6.659740 4 \n", + "2024-03-22 01:15:24.319251200 0 44.496601 -4.527061 4 \n", + "2024-03-22 01:15:24.319651328 0 44.496162 -1.682580 4 \n", + "... ... ... ... ... \n", + "2024-03-22 01:15:25.504951552 0 -44.448719 5.075936 4 \n", + "2024-03-22 01:15:25.504951552 0 -44.447727 5.075160 4 \n", + "2024-03-22 01:15:25.505151488 0 -44.374592 6.441182 0 \n", + "2024-03-22 01:15:25.505551360 0 -44.504681 9.388091 1 \n", + "2024-03-22 01:15:25.505551360 0 -44.313023 9.238612 0 \n", + "\n", + " quality_ph geometry spot \n", + "time \n", + "2024-03-22 01:15:24.318551296 0 POINT (-129.75048 45.78967) 4 \n", + "2024-03-22 01:15:24.318651392 0 POINT (-129.75048 45.78968) 4 \n", + "2024-03-22 01:15:24.318951424 0 POINT (-129.75048 45.78969) 4 \n", + "2024-03-22 01:15:24.319251200 0 POINT (-129.75049 45.78971) 4 \n", + "2024-03-22 01:15:24.319651328 0 POINT (-129.75049 45.78974) 4 \n", + "... ... ... ... \n", + "2024-03-22 01:15:25.504951552 0 POINT (-129.75674 45.84372) 3 \n", + "2024-03-22 01:15:25.504951552 0 POINT (-129.75674 45.84372) 3 \n", + "2024-03-22 01:15:25.505151488 0 POINT (-129.75674 45.84373) 3 \n", + "2024-03-22 01:15:25.505551360 0 POINT (-129.75675 45.84375) 3 \n", + "2024-03-22 01:15:25.505551360 0 POINT (-129.75675 45.84375) 3 \n", + "\n", + "[20085 rows x 22 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fname = 'icesat2_ooi-rs03axps-sf03a-3c-parada301_2024-03-21T22_10_31Z.pkl'\n", + "gdf = pd.read_pickle('data/'+fname)\n", + "gdf" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "1d72dbef-f954-499f-be76-c1de3233b325", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# load time, lat and lon\n", + "fnames = glob.glob('ice*.pkl')\n", + "fnames.sort()\n", + "for jj in range(len(fnames)):\n", + " gdf = pd.read_pickle(fnames[jj])\n", + " # sort by photon collection time\n", + " gdf = gdf.sort_index()\n", + " \n", + " # pull out lat, lon, and calculate distance from first photon\n", + " lat = gdf.geometry.y.to_numpy()\n", + " lon = gdf.geometry.x.to_numpy()\n", + " gdf['latitude']= lat\n", + " gdf['longitude']= lon\n", + " gdf['dist_along_km'] = [calc_distance(lat[0],lon[0],lat[jj],lon[jj]) for jj in range(len(lat))]\n", + " \n", + " # remove unnecessary data\n", + " gdf = gdf.drop(columns=['region', 'sc_orient','rgt','cycle','background_rate','landcover','relief','snowcover','atl08_class','spot','geometry'])\n", + " \n", + " # save as mat for use with Emily's Kd calculation code\n", + " gdf.to_csv(fnames[jj][:-4]+'_formatlab.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "0b3821fa-6e3c-4755-85f2-c23e80b25907", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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TqG7u/uzBTuAFPIcAPzgBz/gscce4+WXX2b69On89re/5ZprrvlMmQ5EhTwPQgimTJnCtGnTOP744z9zlgNVof8WAH76058SDAYpLy+noaGBp5566lPnORAVwzn4wJYtW7j//vuZNm3aXucodrJQKgK33HLLLjfofnhZtmwZAIqi7LK/EGK36//dh7d/kn3+vY3rugD8/Oc/52tf+xpjxoxh7ty5KIrC448//omzFqsD4RwA/PCHP+SUU07h6KOP5sorr2TOnDk8/PDDdHV1fdKoRe1AOA/3338/iUSCG2+8cW+iHTAOhHPwgR//+MesWLGCRYsWoWka3/rWtxAHwcsmDqRzANDc3MzEiRO58MILufLKKz8u3gFHL/QBSDB9+nQuvvjij2wzaNAg3nvvPdra2nbZ1tHRscv/HXyguroaeP//EGpqavrWt7e39+1TXV2NaZr09PTs9H8Q7e3tnHTSSQB9+44cObJvu9frZciQITQ0NHySmEXtQDgHuzN27FgANm/eTHl5+Uce/4HgQDgPixcv5q233trlPVnHH388l156KX/5y18+QdLidSCcgw/EYjFisRiHH344RxxxBHV1dbz11luMGzfuk4UtUgfSOWhubmb8+PGMGzeOhx566JMFPNDs97uipE/tgxv33n777b51b7311ie6ce+uu+7qW5fP53d7497f/va3vjbNzc073bgXj8eF1+vd6WZu0zRFZWWlePDBBz/XnMWskOdgd5555hkBiO3bt3/WaAeUQp6H7du3i1WrVvUtCxcuFID4+9//LhobG/dF3KJUbH8LDQ0NAhAvv/zyZ0x24Cj0OdixY4c47LDDxMUXX7zbp0IPFrJQOsBMnDhRHH300WLJkiViyZIl4qijjtrlUdDhw4eLf/zjH30/33nnnSIajYp//OMfYtWqVeKSSy7Z7aOg/fv3Fy+++KJ49913xWmnnbbL47g/+MEPRL9+/cTChQvF+vXrxdSpU0VlZaXo7u7e98GLSKHOwZtvvinuvfdesWLFCrF161bxt7/9TdTW1opzzz13/wQvMoX8W/h327ZtOySfehOicOfg7bffFvfff79YsWKFqK+vF4sXLxZf/OIXxdChQ0Uul9s/4YtEoc5BU1OTGDZsmDjttNPEjh07dpqy5GAjC6UDTFdXl7j00ktFOBwW4XBYXHrppaKnp2enNoCYO3du38+u64qZM2eK6upq4fV6xZe//GWxatWqnfbJZrNi+vTpoqysTPj9fjF58mTR0NCwUxvTNMWMGTNEZWWlCIfD4owzzhCrV6/eV1GLVqHOwfLly8WJJ54ootGo8Pl8Yvjw4WLmzJkinU7vy7hFq5B/C//uUC6UCnUO3nvvPTF+/HhRVlYmvF6vGDRokJg2bZrYsWPHvoxblAp1DubOnSuA3S4HG0WIg+DON0mSJEmSpH1APvUmSZIkSZK0B7JQkiRJkiRJ2gNZKEmSJEmSJO2BLJQkSZIkSZL2QBZKkiRJkiRJeyALJUmSJEmSpD2QhZIkSZIkSdIeyEJJkiRJkqRd3HbbbZx00kkEAgFKSko+0T5tbW1MmTKF2tpaAoEAEydOZNOmTTu1eeihhzj11FOJRCIoikJvb+9O2+vr65k6dSqDBw/G7/czdOhQZs6ciWmae3X8r776Kueccw61tbUoisKTTz65V/t/QBZKkiRJkiTtwjRNLrzwQr73ve99ovZCCM4//3y2bt3KU089xYoVKxg4cCBnnHEG6XS6r10mk2HixIncdNNNu+1n/fr1uK7Lgw8+yJo1a7jvvvuYM2fOHtvvSTqd5phjjuEPf/jDXu33YXJmbkmSJEmS9uiRRx7h+uuv3+XKz4dt3LiR4cOHs3r1ao488kgAHMehsrKSu+66iyuvvHKn9q+88grjx4+np6fnY69YzZo1iwceeICtW7f2rVu7di033HADr776KsFgkAkTJnDfffcRi8V22V9RFObNm8f555//iTL/O3lFSZIkSZKkzyyfzwPg8/n61mmahsfj4fXXX/9MfcfjccrKyvp+bmlp4ZRTTmH06NEsW7aMBQsW0NbWxkUXXfSZxtkdWShJkiRJkvSZjRgxgoEDB3LjjTfS09ODaZrceeedtLa20tLS8qn73bJlC/fffz/Tpk3rW/fAAw9w3HHHcfvttzNixAiOPfZY/vM//5OXX36ZjRs3fh5x+shCSZIkSZIOEbfccguKonzksmzZsk/Vt2EYPPHEE2zcuJGysjICgQCvvPIKZ599Npqmfao+m5ubmThxIhdeeOFOX90tX76cl19+mVAo1LeMGDECeL+w+jzpn2tvkiRJkiQVrenTp3PxxRd/ZJtBgwZ96v7HjBnDypUricfjmKZJRUUFJ554Iscff/xe99Xc3Mz48eMZN24cDz300E7bXNflnHPO4a677tplv5qamk99/LsjCyVJkiRJOkTEYrHd3uz8eYtGowBs2rSJZcuWceutt+7V/k1NTYwfP54xY8Ywd+5cVHXnL8COO+44nnjiCQYNGoSu79tSRn71JkmSJEnSLhoaGli5ciUNDQ04jsPKlStZuXIlqVSqr82IESOYN29e38+PP/44r7zySt8UAWeeeSbnn38+EyZM6GvT2trKypUr2bx5MwCrVq1i5cqVdHd3A+9fSTr11FOpq6tj9uzZdHR00NraSmtra18f3//+9+nu7uaSSy5h6dKlbN26lUWLFvGd73wHx3EASKVSfccMsG3btr48e0VIkiRJkiR9yBVXXCGAXZaXX365rw0g5s6d2/fz7373O9G/f39hGIYYMGCAuPnmm0U+n9+p35kzZ+623w/6mTt37m63f7hk2bhxo/jqV78qSkpKhN/vFyNGjBDXX3+9cF1XCCHEyy+/vNs+rrjiir36Pch5lCRJkiRJkvZAfvUmSZIkSZK0B7JQkiRJkiRJ2gNZKEmSJEmSJO2BLJQkSZIkSZL2QBZKkiRJkiRJeyALJUmSJEmSpD2QhZIkSZIkSdIeyEJJkiRJkiRpD2ShJEmSJEmStAeyUJIkSZIkSdoDWShJkiRJkiTtgSyUJEmSJEmS9uD/A5LfkbvF6uEvAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# #confirm that above is doing what I expect...\n", + "\n", + "# fig = plt.figure()\n", + "# plt.scatter(along_dist_km,height)\n", + "\n", + "# fig = plt.figure()\n", + "# plt.scatter(longitude,latitude,c=height)\n", + "\n", + "# fig = plt.figure()\n", + "# gdf.plot(column='height',aspect=1/10)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb b/icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb new file mode 100644 index 0000000..7052b6f --- /dev/null +++ b/icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb @@ -0,0 +1,216 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c43f4063-0bb8-471c-bb5c-6cf373e8cc0f", + "metadata": {}, + "source": [ + "plot kd from argo, ws profiles, and ooi array" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7403ceef-8892-466a-86d8-01f06f288770", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet geopy" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a13b3781-26c0-43db-bed8-6b65ded2dbc9", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from datetime import datetime, timedelta, timezone\n", + "import matplotlib.pyplot as plt\n", + "from scipy import stats\n", + "import glob\n", + "from geopy.distance import geodesic" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "8645932d-8500-48d1-972e-075a718aa2bc", + "metadata": {}, + "outputs": [], + "source": [ + "def matchkdvals(file_name,ground):\n", + " is2 = pd.read_csv(file_name)# load data\n", + " t = datetime.strptime(file_name[8:22],'%Y%m%d%H%M%S')# strip time from file name\n", + " t = t.replace(tzinfo=timezone.utc)\n", + " tdiff = abs(t - ground['time']) # calculate difference between file time and each argo entry\n", + " # find all entries in argo where tdiff<6h\n", + " ground_sub = ground[tdiff<(timedelta(hours=12))]\n", + " rows = ground_sub.index.values\n", + " \n", + " # find all entries in argo where distance is < 10km\n", + " for jj in rows:\n", + " ground_coords = (ground_sub.loc[jj,'lat'],ground_sub.loc[jj,'lon']) #lat,lon tuple\n", + " dist = np.ones(len(is2))*np.nan\n", + " for kk in range(len(is2)):\n", + " is2_coords = (is2.loc[kk,'latitude'],is2.loc[kk,'longitude'])\n", + " try:\n", + " dist[kk] = geodesic(ground_coords, is2_coords).km\n", + " except:\n", + " continue\n", + " idx = np.argmin(dist)\n", + " if np.min(dist)<10:\n", + " ground.loc[jj,'icesat2_kd'] = is2.loc[idx,'kd']\n", + " ground.loc[jj,'dist_offset'] = np.min(dist)\n", + " ground.loc[jj,'time_offset'] = tdiff[jj]\n", + " \n", + " return ground\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "9503d5d0-1a51-40aa-bc21-696b38fa46ae", + "metadata": {}, + "outputs": [], + "source": [ + "pname = 'results/'\n", + "\n", + "# load argo data:\n", + "argo = pd.read_csv('data/Dataset_Kd_Paper_2018.csv')\n", + "argo[\"time\"] = pd.to_datetime(argo[\"dt_float\"]-719529,unit='d',utc=True).round('s')\n", + "argo = argo.rename(columns={\"lat_float\": \"lat\", \"lon_float\": \"lon\"})\n", + "# argo['dt_float'] = pd.to_datetime(argo[\"dt_float\"],format='ISO8601').round('s')\n", + "argo['icesat2_kd'] = np.nan\n", + "argo['dist_offset'] = np.nan\n", + "argo['time_offset'] = timedelta(hours=0)\n", + "fnames = glob.glob(pname+'*Further.csv')\n", + "for file in fnames:\n", + " # print(file)\n", + " argo = matchkdvals(file,argo)\n", + "\n", + "# load ooi data:\n", + "ooi = pd.read_csv(pname+'ooi_kdcalculations10m.csv',index_col=0)\n", + "ooi['time'] = pd.to_datetime(ooi[\"time\"],format='ISO8601').round('s')\n", + "ooi['icesat2_kd'] = np.nan\n", + "ooi['dist_offset'] = np.nan\n", + "ooi['time_offset'] = timedelta(hours=0)\n", + "fnames = glob.glob(pname+'*Further.csv')\n", + "for file in fnames:\n", + " ooi = matchkdvals(file,ooi)\n", + "\n", + "# load ws data:\n", + "ws = pd.read_csv(pname+'ws_kdcalculations10m.csv',index_col=0)\n", + "ws['time'] = pd.to_datetime(ws[\"time\"],format='ISO8601').round('s')\n", + "ws['icesat2_kd'] = np.nan\n", + "ws['dist_offset'] = np.nan\n", + "ws['time_offset'] = timedelta(hours=0)\n", + "fnames = glob.glob(pname+'*Further.csv')\n", + "for file in fnames:\n", + " ws = matchkdvals(file,ws)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "2b3924e3-0ea6-4699-88b5-1a3eea9376bd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure()\n", + "plt.scatter(argo['kd_490_f'],argo['icesat2_kd'], label = 'Argo Floats, kd_490')\n", + "plt.scatter(ooi['kd'],ooi['icesat2_kd'], label = 'OR Endurance Array')\n", + "plt.scatter(ws['kd'],ws['icesat2_kd'], label = 'GoM CTD casts, ')\n", + "# plt.xlim([-0.01,0.25])\n", + "# plt.ylim([-0.01,0.25])\n", + "plt.axline((0, 0), slope=1,c='k')\n", + "plt.legend()\n", + "plt.xlabel('kd from ground-truth')\n", + "plt.ylabel('kd_photon from icesat-2')\n", + "\n", + "plt.figure()\n", + "p = plt.scatter(argo['kd_490_f'],argo['icesat2_kd'],s = 30, c= argo['time_offset']/3.6e9)\n", + "plt.colorbar(p) # color by hour of time offset between ground truth and icesat2\n", + "\n", + "plt.figure()\n", + "p = plt.scatter(argo['kd_490_f'],argo['icesat2_kd'],s = 30, c= argo['dist_offset'])\n", + "plt.colorbar(p) # color by distance offset (km) between ground truth and icesat2" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb b/icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb new file mode 100644 index 0000000..aa08525 --- /dev/null +++ b/icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb @@ -0,0 +1,242 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c43f4063-0bb8-471c-bb5c-6cf373e8cc0f", + "metadata": {}, + "source": [ + "plot kd from argo, ws profiles, and ooi array" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7403ceef-8892-466a-86d8-01f06f288770", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet geopy" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a13b3781-26c0-43db-bed8-6b65ded2dbc9", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from datetime import datetime, timedelta, timezone\n", + "import matplotlib.pyplot as plt\n", + "from scipy import stats\n", + "import glob\n", + "from geopy.distance import geodesic" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9bcf0649-2ad9-471c-84d7-6c68dd897073", + "metadata": {}, + "outputs": [], + "source": [ + "def matchkd_turb(file_name):\n", + " is2 = pd.read_csv(file_name)# load data\n", + " t = datetime.strptime(file_name[8:22],'%Y%m%d%H%M%S')# strip time from file name\n", + " t = t.replace(tzinfo=timezone.utc)\n", + " tdiff = abs(t - turb['time']) # calculate difference between file time and each argo entry\n", + " \n", + " # find all entries in argo where tdiff<6h\n", + " turb_sub = turb[tdiff<(timedelta(hours=14))]\n", + " rows = turb_sub.index.values\n", + "\n", + " # find all possible matched entries where distance is < 10km\n", + " for jj in rows:\n", + " dist = np.ones(len(is2))*np.nan\n", + " turb_coords = (turb_sub.loc[jj,'lat'],turb_sub.loc[jj,'lon']) #lat,lon tuple\n", + " for kk in range(len(is2)):\n", + " is2_coords = (is2.loc[kk,'latitude'],is2.loc[kk,'longitude'])\n", + " try:\n", + " dist[kk] = geodesic(turb_coords, is2_coords).km\n", + " except:\n", + " continue\n", + " idx = np.argmin(dist)\n", + " if np.min(dist)<10:\n", + " turb.loc[jj,'icesat2_kd'] = is2.loc[idx,'kd']\n", + " turb.loc[jj,'dist_offset'] = np.min(dist)\n", + " turb.loc[jj,'time_offset'] = tdiff[jj]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9503d5d0-1a51-40aa-bc21-696b38fa46ae", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "pname = 'results/'\n", + "# load turbidity data:\n", + "turb = pd.read_csv(pname+'all_turbidity_compile.csv',index_col=0)\n", + "turb['time'] = pd.to_datetime(turb[\"time\"],format='ISO8601').round('s')\n", + "turb['icesat2_kd'] = np.nan\n", + "turb['dist_offset'] = np.nan\n", + "turb['time_offset'] = timedelta(hours=0)\n", + "fnames = glob.glob(pname+'*Further.csv')\n", + "for file in fnames:\n", + " matchkd_turb(file)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "2b3924e3-0ea6-4699-88b5-1a3eea9376bd", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.01, 0.45)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# color by latitude\n", + "plt.figure()\n", + "p = plt.scatter(turb['turb'],turb['icesat2_kd'],s=20,c=turb['lat'],vmin=20,vmax=70)\n", + "# plt.axline((0, 0), slope=1,c='k')\n", + "plt.colorbar(p)\n", + "plt.xlabel('turbidity (NTUs)')\n", + "plt.ylabel('kd from icesat-2')\n", + "# plt.yscale('log')\n", + "# plt.xscale('log')\n", + "plt.xlim([-2,200])\n", + "plt.ylim([0.01,0.45])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "52e105f6-61fc-4f7e-902c-8dfe84367371", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.01, 0.45)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# color by distance offset (km) between buoy and icesat-2\n", + "plt.figure()\n", + "p = plt.scatter(turb['turb'],turb['icesat2_kd'],s=20,c=turb['dist_offset'],vmin=0,vmax=5)\n", + "plt.colorbar(p)\n", + "plt.xlabel('turbidity (NTUs)')\n", + "plt.ylabel('kd from icesat-2')\n", + "plt.xlim([-2,200])\n", + "plt.ylim([0.01,0.45])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "e6c45b6c-6e8a-4a87-8bff-8b899ae3fd54", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.01, 0.45)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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3yy3rqlTp5KVleXckpKSqn0dQgghRF3TlOdbfat2ojF69Giee+45iouLgZJEITExkSeffJIbb7yxyvWEhoZiNBrLtF6kpaVVOh/H4sWLue+++/jkk0+4/PLLK9zXYDDQt2/fCls0LBYLAQEBLpsQQgjR6FwI82i89tprnDp1ivDwcPLz8xk2bBjt2rXD39+fF198scr1mM1mEhISWLZsmUv5smXLKpyPY+HChdx99918/PHHzsnCKqKUYtu2bbRs2bLKsQkhhBCidlT7qZOAgADWrFnDzz//zJYtW9B1nd69e1fasuDOlClTGD9+PH369GHgwIHMmzePxMREJk6cCJR0aSQnJzufZFm4cCF33nkns2bNYsCAAc7WEG9vbwIDAwGYPn06AwYMoH379thsNmbPns22bdt4++23qx2fEEII0ah4Os6iAcZoVDvRKDV8+HCGDx/u0cnHjRtHRkYGzz33HCkpKXTr1o2lS5cSGxsLQEpKisucGu+88w52u52HH36Yhx9+2Fl+1113MX/+fKBkjo8HHniA1NRUAgMD6dWrF6tWraJfv34exSqEEEI0uCb4eKumVPWm73jsscdo164djz32mEv5W2+9xcGDB8vMddEU2Ww2AgMDycrKkvEaQgghKlQfnxml54h+/XkM3jWfgFLPLyBpyjP1+vlW7TEan332GYMHDy5TPmjQID799NNaCUoIIYQQbjTBwaDV7jrJyMhwjoc4V0BAQLNcJv4fu67AbCi5M0rB6g3RLLnngwaOSgghxAWpCXadVLtFo127dnz//fdlyr/77jvatm1bK0E1FnP2XYfF+Mdd0TQYOiCJiT/f3IBRCSGEEE1HtVs0pkyZwiOPPMKpU6ecg0F/+ukn/vnPfzaL8RnnKp037Nz5w5SCTi3PNExAQgghLmwXwlMn9957L4WFhbz44os8//zzALRp04a5c+dy55131nqADcndMFlNa5jV74QQQghPZ/dsEjODAvzf//0fx48f5+TJk9hsNg4fPtzskozKzPr3yw0dghBCCNHo1XgeDaBGa5s0Je6WXCltzVhBEj888BAJI/zxi1IYDdEU2jtg1K10CQ0nPsSbInsi6WcU8UFdsAaexKGKifTuhJfB26O4zuTksy8pjQAfK51jwqu0NowQQohmoJ4Hg86dO5e5c+dy9OhRALp27crf//53Ro4cWeU6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rSQkJLB69eqGDsmtGTNm0LdvX/z9/QkPD2fMmDHs27fPZZ+7774bTdNctgEDBjRQxO5NmzatTIyRkZHO15VSTJs2jVatWuHt7c0ll1zCrl27GjDistq0aVPmGjRN4+GHHwYa531YtWoV1157La1atULTNL744guX16vyvhcWFvLoo48SGhqKr68v1113HcePH28U11BcXMxf//pXunfvjq+vL61ateLOO+/kxIkTLnVccsklZe7NLbfc0iiuAar2s9OY7wPg9ndD0zReffVV5z4NfR+q8ve0KfxONAaSaFSidHncp556iq1btzJkyBBGjhxJYmJiQ4dWxsqVK3n44YdZv349y5Ytw263M2LECHJzc132u+qqq0hJSXFuS5cubaCIy9e1a1eXGHfs2OF87R//+Aevv/46b731Fhs3biQyMpIrrriC7OzsBozY1caNG13iL53s5uabb3bu09juQ25uLj169OCtt95y+3pV3vfJkyfz+eefs2jRItasWUNOTg6jRo3C4XA0+DXk5eWxZcsWnnnmGbZs2cKSJUvYv38/1113XZl9J0yY4HJv3nnnnfoIH6j8PkDlPzuN+T4ALrGnpKTw/vvvo2kaN954o8t+DXkfqvL3tCn8TjQKNV7h5QLRr18/NXHiRJeyTp06qSeffLKBIqq6tLQ0BaiVK1c6y+666y41evTohguqCp599lnVo0cPt6/puq4iIyPVyy+/7CwrKChQgYGB6l//+lc9RVh9kyZNUvHx8UrXdaVU478PgPr888+d31flfc/MzFReXl5q0aJFzn2Sk5OVwWBQ33//fb3FXur8a3Dnt99+U4A6duyYs2zYsGFq0qRJdRtcFbm7hsp+dprifRg9erQaPny4S1ljug9Klf172hR/JxqKtGhUoHR53BEjRriUV2t53AaUlZUFUGahn19++YXw8HA6dOjAhAkTSEtLa4jwKnTgwAFatWpFXFwct9xyC4cPHwbgyJEjpKamutwTi8XCsGHDGu09KSoq4qOPPuLee+91WYSoKdyHUlV53zdv3kxxcbHLPq1ataJbt26N9t5kZWWhaRotWrRwKf/vf/9LaGgoXbt25c9//nOjai2Din92mtp9OHnyJN9++y333Xdfmdca0304/+9pc/2dqAsyM2gF0tPTcTgcZRaOiYiIKLPATGOjlGLKlClcfPHFdOvWzVk+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76dbt24899xzQElrQ1UdPHiQTz75hM8++8zlQ/XDDz/kvvvuY8OGDWzatIkHHniA2NhYJkyYUKYOXde54YYbCA0NZf369dhstgq7cqKjo/nss8+48cYb2bdvHwEBAXh7e2M2m3nsscf46quvuPnmmwFIT0/nm2++4fvvvy+3vtWrV3P77be7fe3ll1+mb9++bNy4kb59+1bxXamZhx9+mKKiIlatWoWvry+7d+/Gz8/P+brZbKZHjx6sXr2a4cOH12ksQlyoJNEQopYFBgZiNpvx8fEhMjKy2scXFRXxn//8p0xyEh0dzRtvvIGmaXTs2JEdO3bwxhtvuE00li9fzp49ezh69ChRUVEAvPTSS4wcOdLtOY1GI8HBwQCEh4e7tLzcdtttfPDBB85E47///S9RUVFccsklbuvKzMwkMzOTVq1auX29d+/ejB07lieffJKffvqpwvfCU4mJidx44410794dgLZt25bZp3Xr1lUa0yGEqBnpOhGikYmNjXXbAjJgwACXbpaBAwdy4MABt+ML9uzZQ0xMjDPJKN2/JiZMmMCPP/5IcnIyAB988AF33323Syznys/PB0rGY5TnhRdeYPXq1fz44481iqmqHnvsMV544QUGDx7Ms88+y++//15mH29vb/Ly8uo0DiEuZJJoCFFPDAaDy5gKcD/Y09fX1+NznX8eoNzEoDK9evWiR48eLFiwgC1btrBjxw7uvvvucvcPCQlB0zTOnDlT7j7x8fFMmDCBJ5980m2slQkICCArK6tMeekTM4GBgQDcf//9HD58mPHjx7Njxw769OnDm2++6XLM6dOnq9W1JYSoHkk0hKgDZrO5TEtDWFgY2dnZLvM2VGcOi/Xr15f5vn379m4HR3bp0oXExEROnDjhLFu3bl2lMQNuW0juv/9+PvjgA95//30uv/zyCp/8MJvNdOnShd27d1d4vr///e/s37+fRYsWVbifO506dWLnzp0UFBS4lG/cuJGwsDCCgoKcZdHR0UycOJElS5bwpz/9iXfffdflmJ07d9KrV69qxyCEqBpJNISoA23atGHDhg0cPXqU9PR0dF2nf//++Pj48Le//Y2DBw/y8ccfM3/+/CrXmZSUxJQpU9i3bx8LFy7kzTffZNKkSW73vfzyy+nYsSN33nkn27dvZ/Xq1Tz11FMV1h8bG4umaXzzzTecOnWKnJwc52u33347ycnJvPvuu9x7772VxnrllVeyZs2aCveJiIhgypQpzJ49u9L6znf77bdjMpkYP348mzZt4tChQ3z00UfMmDGDv/zlL879Jk+ezA8//MCRI0fYsmULP//8M507d/7/du7Y9bQ4jOP457KKUjIYWCRKslisyKiU0cR0mFAkRbKw+wvUsdnOaPGPoKyMOoPcTffefld+6nt/3Xvfr/U532/P+Ol5Ot9Hfb/f63Q6qVAofLoHAK8haAAGdLtdeb1epVIphUIhHY9HBYNBrVYrOY6jdDot27Y1Ho9fvrNer+t6vSqXy8myLLXb7d8+0OXxeLTZbOS6rnK5nBqNhmaz2dP7I5GIJpOJ+v2+wuGwWq3Wo+b3+1WtVuXz+T58KOtXzWZTjuN8uN74Ua/X++kvkFcFAgHtdjvd73dVKhVlMhnN53NNp1N1Op3Hd7fbTZZlKZlMqlwuK5FIaLlcPuq2batUKikajX66BwCv+XZ/Z0EK4L9TLBaVTCZfnkDUajVls1kNBgPDnb3HdV3F43HZtq18Pv/V7QD/LCYaAJ46n89ar9fabreyLOvlc4vF4q1pxZ9yOBw0HA4JGYBhTDQAPBWLxXS5XDQajdTtdr+6HQB/GYIGAAAwhtUJAAAwhqABAACMIWgAAABjCBoAAMAYggYAADCGoAEAAIwhaAAAAGMIGgAAwBiCBgAAMOY7jfZr9xNPljYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# color by time offset (hours) between buoy and icesat-2\n", + "plt.figure()\n", + "p = plt.scatter(turb['turb'],turb['icesat2_kd'],s=20,c=turb['time_offset']/3.6e9,vmin=0,vmax=6)\n", + "plt.colorbar(p)\n", + "plt.xlabel('turbidity (NTUs)')\n", + "plt.ylabel('kd from icesat-2')\n", + "plt.xlim([-2,200])\n", + "plt.ylim([0.01,0.45])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/LICENSE b/icesat2_kdph-main/LICENSE new file mode 100644 index 0000000..7e90438 --- /dev/null +++ b/icesat2_kdph-main/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 gloverha + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/icesat2_kdph-main/Main.ipynb b/icesat2_kdph-main/Main.ipynb new file mode 100644 index 0000000..bfce771 --- /dev/null +++ b/icesat2_kdph-main/Main.ipynb @@ -0,0 +1,363 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "5e0f151d-ae57-4612-bd22-fe99186f0c91", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet rtree" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7335b77d-91bf-44ee-b871-93798bfb993d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install --quiet hdbscan" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "51198b80-27e1-4229-92f1-4db7ba4611fd", + "metadata": {}, + "outputs": [], + "source": [ + "# main.py\n", + "import os\n", + "import re\n", + "import glob\n", + "import pandas as pd\n", + "import numpy as np\n", + "import logging\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from config import workspace_path, atl03_path, atl03_file,\\\n", + " other_data_path ,shoreline_data ,gebco_path ,\\\n", + " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", + " ignore_subsurface_height_thres ,output_path \n", + "\n", + "\n", + " \n", + "from kd_utils.data_processing import load_data, \\\n", + " extract_file_params, \\\n", + " Extract_sea_photons, \\\n", + " filter_photon_dataset_by_hull_area, \\\n", + " plot_convex_hulls\n", + " \n", + "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", + " get_sea_surface_height\n", + " \n", + " \n", + "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", + "\n", + "from kd_utils.visualization import plot_photon_height, \\\n", + " plot_kd_photons, \\\n", + " plot_filtered_seafloor_photons\n", + " \n", + "from kd_utils.Kd_analysis import process_kd_calculation\n", + "\n", + "from kd_utils.interpolation import geoid_correction, \\\n", + " refraction_correction, \\\n", + " interpolate_labels, \\\n", + " apply_interpolation\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c92c03d7-10ea-4401-8c87-315935464cc6", + "metadata": {}, + "outputs": [], + "source": [ + "def main():\n", + " try:\n", + " \n", + " # Load IS2 and extract sea photons\n", + " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", + " \n", + " # Extract sea photon by applying the land mask\n", + " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", + " \n", + " \n", + " # Main processing function to apply binning beam-by-beam \n", + " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", + " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", + " \n", + " \n", + " # filter to get subsurface photons\n", + " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", + " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", + " \n", + " \n", + " # Visualization of the filtered seafloor photons\n", + " # Uncomment the following lines to visualize if needed\n", + " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", + " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", + " # sea_photon_dataset=sea_photon_dataset, \n", + " # sea_surface_height=sea_surface_height, \n", + " # output_path=output_path)\n", + " \n", + " ########################\n", + " # Todo: move the filter to the begining\n", + " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", + " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", + " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", + " # Filter out points below the seafloor\n", + " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", + " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", + " ]\n", + " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", + " \n", + " \n", + " ###################################\n", + " ### Todo: move the filter to the begining\n", + " # Steps to standardize KD calculation by filtering out \n", + " # segments lacking sufficient subsurface photons.\n", + " # Approach: Use the ConvexHull of photons within \n", + " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", + " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", + " \n", + " # Apply filtering based on hull area if desired\n", + " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", + " Final_filtered_subsurface_photon_dataset, hull_area_threshold=5000\n", + " )\n", + " \n", + " # Visualization\n", + " # Uncomment the following line to visualize if needed\n", + " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, convex_hulls, convex_hull_areas)\n", + " \n", + " ########################################### \n", + " # calculate kd and save it to table\n", + " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", + " \n", + " \n", + " ## Todo move this part into a function so that it will not looks too busy here\n", + " # Extract the timestamp using regex and use it to set the output file name\n", + " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", + " timestamp = match.group(1) if match else \"unknown\"\n", + " \n", + " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", + " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", + " \n", + " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", + " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", + " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", + " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", + " def find_closest(group):\n", + " if not group.empty:\n", + " center = group['relative_AT_dist_center'].iloc[0]\n", + " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", + " closest_index = group['dist_to_center'].idxmin()\n", + " return group.loc[[closest_index]]\n", + " else:\n", + " return pd.DataFrame(columns=group.columns)\n", + " \n", + " # Filter out empty or all-NA entries\n", + " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", + " \n", + " # Group by 'lat_bins' and apply the find_closest function\n", + " closest_to_center = unique_photon_dataset_filtered\\\n", + " .groupby('lat_bins', observed=False)\\\n", + " .apply(find_closest, include_groups=True)\n", + " # .reset_index()\n", + " \n", + " # Remove the index without resetting it if 'lat_bins' already exists\n", + " closest_to_center.index = closest_to_center.index.droplevel(0)\n", + " \n", + " # Ensure relevant entries are excluded before concatenation\n", + " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", + " \n", + " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", + " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", + " #plot_kd_photons(filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", + " \n", + " logging.info(\"SUCCESS!\")\n", + " \n", + " except Exception as e:\n", + " logging.error(f\"An error occurred: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "17fe40b6-ad4b-4410-bd3e-d8677012c7cc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "./data/processed_ATL03_20230825074121_10102002_006_02.h5\n", + "./data/ne_10m_land.shp\n", + "./data/gebco_2024_geotiff/\n", + "./results/\n", + "['./data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w-90.0_e0.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif', './data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w90.0_e180.0.tif', './data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w-180.0_e-90.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w90.0_e180.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w-90.0_e0.0.tif', './data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w0.0_e90.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w-180.0_e-90.0.tif']\n" + ] + } + ], + "source": [ + "# Prepare the paths and parameters\n", + "ATL03_h5_file_path = os.path.join(workspace_path, atl03_path, atl03_file)\n", + "print(ATL03_h5_file_path)\n", + "\n", + "shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", + "print(shoreline_data_path)\n", + "\n", + "GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", + "print(GEBCO_full_path)\n", + "\n", + "OutputPath = os.path.join(workspace_path, output_path)\n", + "print(OutputPath)\n", + "\n", + "\n", + "#Get the gebco list\n", + "#gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", + "GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", + "\n", + "#Initialize with an empty list\n", + "GEBCO_file_path_lists = []\n", + "for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", + " #put the find one into the list\n", + " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", + "\n", + "print(GEBCO_file_path_lists)\n", + "\n", + "# Get all other necessary parameters\n", + "horizontal_res = horizontal_res\n", + "\n", + "vertical_res = vertical_res\n", + "\n", + "subsurface_thresh = subsurface_thresh\n", + "\n", + "Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b8a2dde6-c1d5-408d-becc-07eeb0086c4e", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-11-27 16:39:09,557 - INFO - ./data/processed_ATL03_20230825074121_10102002_006_02.h5\n", + "2024-11-27 16:39:09,563 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Processing strong beam: gt1l\n", + "Processing strong beam: gt2l\n", + "Processing strong beam: gt3l\n", + "Processing binning for beam: gt1l\n", + "Processing binning for beam: gt2l\n", + "Processing binning for beam: gt3l\n", + "Processing subsurface filtering for beam: gt1l\n", + "Processing subsurface filtering for beam: gt2l\n", + "Processing subsurface filtering for beam: gt3l\n" + ] + }, + { + "data": { + "image/png": "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zuWXX84rX/lKYHzB9Nd//df4vs8v/uIvkiQJAK997Ws5dOgQH//4x09p5pZlGWmanvKjlLr3O/R+cPnll/Pyl7+c888/n0984hP8yZ/8Cddeey2XXHIJBw4cAMbNzv6//+//A8b76corrzxtML07Bw8eBNgMAye84hWvwLIsPvrRj/Kud72Lr371q5sh7oR7ch68973v5bGPfSwzMzNceeWVmz8wvoB/0pOexEc+8hF+67d+i89//vO88IUv5F3vehfPe97zTinr5z//ef7P//k//P7v/z7/+I//uBk2b7vtts15XvSiF/GpT32KN7/5zfzzP/8zH/jAB3jKU55Cs9m8031w/vnnMzs7uyV4ffnLX8bzPG644YbNMJmmKV/72td4ylOectr1zM7ObtbovvzlL9/c1jsel5//+Z/nnHPO4R//8R/53d/9XT760Y/ym7/5m3davpP93u/9HkeOHOEDH/gA73//+zlw4ADPfvazybLsLpe74YYb+Jmf+Rmuu+46/vf//t987nOf45nPfCa/8Ru/sdlcESCKIlqtFv/9v/93PvWpT/F3f/d3PO5xj+N5z3seH/nIR7as8yUveQn/7b/9N37mZ36Gj33sY/z93/89z3nOc04JKj/4wQ/47d/+bX7zN3+TT3/601x44YW8/OUv5+tf//o92ua7c+DAAS677DL+8i//ki996Uu8/vWv5+Mf/zjPfvazN+d505vexC/8wi8AbDkPZ2dn73b9Jz4PwjDkuuuu43d+53eo1Wo885nPvNtlkyThOc95Dpdeeimf/vSnednLXsYf//Ef8853vvO+b7AQ4r5TQgjxI7KysqIA9V//63+9R/PfeOONClCvfe1rt0z/9re/rQD1e7/3e5vTnvCEJyhAffvb394y73nnnaee/vSnb/7+mc98RgHqn//5nzenpWmq5ubm1M///M9vTnvVq16lisWiOnLkyJb1/a//9b8UoK6//vrNad/4xjeUaZrq9a9/vfrgBz+oAPWBD3xgy3If+tCHFHCXP7t3796c/9ChQwpQH/rQh07ZL4B6y1vecsq6Dx06tDntxS9+8Zb1nU673Vae56nLLrtsy/SjR48qx3HU85///FNe4+qrr77LdZ4871VXXaWSJFH9fl997nOfU5OTk6pUKqmVlZUt893x+L7rXe9SgFpeXlZK3bvz4JnPfOZpt/vP//zPFaA+/vGPb5n+zne+85TzAVDT09Oq1+ttTltZWVG6rqvLL798c1qxWFSvf/3r73Z/3NELX/hCdcYZZ2z+/pSnPEW98pWvVLVaTf3VX/2VUkqpb37zm6eU6wlPeIJ6whOesPn7+vr6KefCCW95y1sUoN71rndtmf7a175Wua6r8jzfnLZ792714he/ePP3f/3Xf1XAKefFxz/+cQWoK6+88i637+lPf7qan59X3W53y/Rf+7VfU67rqlarddrl0jRVSZKol7/85eriiy/enP71r39dAeqNb3zjXb7u7t27leu6W96zo9FI1et19apXveoul1VqfNxf97rX3e18J+R5rpIkUV/72tcUoH7wgx9s/u11r3udujeXVC9+8YtP+5kwOzurvvGNb2yZ98Tx+dd//ddTlr/j+X3ZZZepffv23eNyCCHuP1JTJYT4ifGv//qvAKc0aXrkIx/J/v37+Zd/+Zct02dmZk553ufCCy/c0tzsGc94BjMzM3zoQx/anPZP//RPLC0t8bKXvWxz2uc+9zme9KQnMTc3t6VG6RnPeAYAX/va1zbnfexjH8sf/MEf8O53v5vXvOY1vPCFL+TlL3/5abfpIx/5CFdfffUpP4973OPuxZ65f1x55ZWMRqNT9u/OnTt58pOffMr+vbce/ehHY1kWpVKJZz3rWczMzPDFL36R6enpLfOd3NwTxscMbm8meG/Pg9P5yle+QqFQ2KxBOOHEOu+4jic96UlbOuKYnp5mampqy7n0yEc+kg9/+MO84x3v4Kqrrtqsqbw7l156KbfddhuHDh0iDEO+8Y1v8J//83/mSU96EldccQUwrr1yHGfb58Xp9m0Yhqytrd2nZeHU5psnC8OQf/mXf+G5z30uvu9vee9cdtllhGHIVVddtTn/P/zDP/DYxz6WYrGIaZpYlsVf/uVfbml++sUvfhGA173udXdb5oc+9KHs2rVr83fXdTnnnHPussz3xm233cbzn/98ZmZmMAwDy7J4whOeALClzPeF53mbnwff/va3+cQnPsE555zDZZddtlnjelc0TdtSYwanfv4JIX58pKMKIcSPzMTEBL7vc+jQoXs0/4lmVKdrNjM3N3fKxUKj0ThlPsdxGI1Gm7+bpsmLXvQi3vOe99DpdKhWq3z4wx9mdnaWpz/96Zvzra6u8tnPfnbLswwnu2PTwxe84AW86U1vIooifud3fudOt2n//v2bnTecrFKpsLCwcKfL/Sjc3f49cYF/X33kIx9h//79mKbJ9PT0nTZ/uuNxO/Gs3Ynjdm/Pg9NpNpvMzMxsecYKYGpqCtM0T2myd0/OpY997GO84x3v4AMf+ABvetObKBaLPPe5z+Vd73oXMzMzd1qWE036vvzlL7N3716SJOHJT34yq6urvP3tb9/822Mf+1g8z7vbbbsrd7dv7+9lm80maZrynve8h/e85z2nnefEe+cTn/gEv/iLv8h/+S//hd/5nd9hZmYG0zR53/vet+U5qPX1dQzDuMt9emdlPlHue7K9d2cwGPD4xz8e13V5xzvewTnnnIPv+ywsLPC85z1v26+h6/opnw1Pf/rT2blzJ7/1W791t8HK931c190yzXEcwjDcVrmEEPeNhCohxI+MYRhceumlfPGLX+TYsWPMz8/f5fwnLpCWl5dPmXdpaYmJiYn7VI6XvvSl/M//+T/5+7//e37pl36Jz3zmM7z+9a/HMIzNeSYmJrjwwgv5gz/4g9OuY25ubvP/WZbxghe8gFqthuM4vPzlL+eb3/wmtm3fp/IBmxdHd3zI/K6e17m3Tt6/d7Sd/XvCnQXIe+v+OA8ajQbf/va3UUptCVZra2ukaXqftnViYoJ3v/vdvPvd7+bo0aN85jOf4Xd/93dZW1u7yx4s5+fnOeecc/jyl7/Mnj17eMQjHkG1WuXSSy/lta99Ld/+9re56qqrtjx/9NOiVqthGAYvetGL7rRmae/evQD8zd/8DXv37uVjH/vYlmNyx3N+cnKSLMtYWVm5R88l/ah85StfYWlpia9+9aubtVPAnY7Xdn/wfZ8zzzyTH/zgBz+y1xBC/GhI8z8hxI/UG97wBpRSvPKVrySO41P+niQJn/3sZwF48pOfDLDZ0cQJV199NTfeeCOXXnrpfSrD/v37edSjHsWHPvQhPvrRjxJFES996Uu3zPOsZz2L6667jjPPPJNHPOIRp/ycHKre8pa38G//9m/87d/+LR/72Mf4wQ9+cJe1VffE9PQ0ruty7bXXbpl+up7R7qtLLrkEz/NO2b/Hjh3jK1/5yn3ev/e3e3Me3FmtxKWXXspgMOBTn/rUluknOkTY7rbu2rWLX/u1X+OpT30q3/ve9+52/qc85Sl85Stf4YorruCpT30qAOeccw67du3izW9+M0mS3GknFSfcm1qnHxff93nSk57ENddcw4UXXnja986JkKxp2uZA0iesrKycco6faHL7vve978e3Iadxopx37LX0//7f/3vKvPfXsRkMBhw8eJCpqaltrUcI8eMnNVVCiB+pSy65hPe973289rWv5eEPfzivec1rOP/880mShGuuuYb3v//9XHDBBTz72c9m3759/Oqv/irvec970HWdZzzjGRw+fJg3velN7Ny58x73YnY6L3vZy3jVq17F0tISj3nMY9i3b9+Wv//+7/8+V1xxBY95zGP4jd/4Dfbt20cYhhw+fJgvfOEL/Pmf/znz8/NcccUVXH755bzpTW/avDC//PLL+e///b/zxCc+kec+97n3qXyapvHCF76QD37wg5x55plcdNFF/Pu//zsf/ehH7/M231G1WuVNb3oTv/d7v8ev/Mqv8Mu//Ms0m03e9ra34boub3nLW+6319qOe3MePOQhD+ETn/gE73vf+3j4wx++2aTqV37lV/izP/szXvziF3P48GEe8pCH8I1vfIM//MM/5LLLLrvbAHNH3W6XJz3pSTz/+c/n3HPPpVQqcfXVV/OlL33ptL0J3tGll17Ke9/7XjY2Nnj3u9+9ZfqHPvQharXalu7UT6dUKrF7924+/elPc+mll1Kv15mYmGDPnj33alvub3/yJ3/C4x73OB7/+Mfzmte8hj179tDv9zl48CCf/exnNwe4fdaznsUnPvEJXvva1/ILv/ALLCws8Pa3v53Z2dnNnicBHv/4x/OiF72Id7zjHayurvKsZz0Lx3G45ppr8H2fX//1X7/fyn7rrbfy//7f/ztl+nnnncdjHvMYarUar371q3nLW96CZVn87d/+7WlrkR7ykIcA8M53vpNnPOMZGIbBhRdeeJe113mebz5vluc5i4uL/Omf/intdvt+HUJBCPFj8kD3lCGE+I/h+9//vnrxi1+sdu3apWzbVoVCQV188cXqzW9+s1pbW9ucL8sy9c53vlOdc845yrIsNTExoV74wheqhYWFLet7whOeoM4///xTXufOesHrdrvK8zwFqL/4i784bRnX19fVb/zGb6i9e/cqy7JUvV5XD3/4w9Ub3/hGNRgM1NLSkpqamlJPfvKTVZZlm8vlea6e/exnq2q1utkj3931nne6Xuu63a56xSteoaanp1WhUFDPfvaz1eHDh++33v9O+MAH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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-11-27 16:40:26,073 - INFO - Calculating Kd for beam: gt1l\n", + "2024-11-27 16:40:26,074 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-11-27 16:40:26,598 - INFO - Calculating Kd for beam: gt2l\n", + "2024-11-27 16:40:26,599 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "2024-11-27 16:40:27,159 - INFO - Calculating Kd for beam: gt3l\n", + "2024-11-27 16:40:27,160 - INFO - Calculating Kd from filtered subsurface photon dataset\n", + "/tmp/ipykernel_144/4080034087.py:90: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", + " .apply(find_closest, include_groups=True)\n", + "2024-11-27 16:40:27,942 - INFO - SUCCESS!\n" + ] + } + ], + "source": [ + "\n", + "\n", + "# Configure logging\n", + "logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", + "\n", + "\n", + "# When all paramters ready, call the main function\n", + "main()\n", + " \n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ac012527-5bad-47f3-8258-b4bcaae7997c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a0bb0280-5189-4684-917c-a12a5396442e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/__pycache__/config.cpython-311.pyc b/icesat2_kdph-main/__pycache__/config.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b276004fc6588d2f693c90f486ed261526c99644 GIT binary patch literal 495 zcmYjOF;C+#6n0u#LTFQH-r2__bJAw7v_+5X=5p5JHtJ#@Pc0`vY}hrf0Zda9iNX05@C2jCxK2qR`; z3uc2gaFaFh2HU_b*1~Pp#+z&t+swvWZ0k2Vb@GPi=PgDJ_48iL$=PU5A{sMKizM%d zd=e-!9*uvHkSimnQ(wM`{*dco8762kso~<4XIFaO2!pF6-M$+*XM2RgFzH+dWnN-m6zNRrP)ERVA~t z4T9&Nzkk&I$21}TvdUK<56aI_bcTwPm~hHjMq}!}EN1TO#h&~6vG2Y?9N_C^VP1=C zc^HS3@Od8a@M9X+d5zaUCh-)%%o}_fmIj~Uv#?C_IerP>8P0Y{b78dJcp~{Q6Orsj z-C@x&sVsEVl`1lQ5j}nSINC@|@<=6ndqS-=wjMr;mVeS(!*6wMwb?ksjLCMBRZ}L- z1s9n~sya`Mub<2>Kv~+9!gi&JHiC2cb6l|4n53BG;-A07xNwP1ZB;u(O9V69Ily;-kL|h6T71BiFFx6(o zxqhfc)X79r+iz;yc`zcW~*n=;hw=fl@Tm4=pUkTOvMY^XF zb<}#0$symtDw3XP-Is^&ptQDpxG*5d~ccM{V|rPS?Q@|D3+ zRnM^>ZTziepPoZSf;yd}GmP1qDr@RcYd?Q1JT(+cNc{yWPX9s-IRQMU^d%cp>rVX z?FpQ3e4oR%it;DYrH;mR+xM7`F^iKrpTg*kMZ%}~%pchz83#Qw4oiyBe>$#}L0LQZ znO(HrbMU?d@A-*0X7yPao=lZBe)*as*}-R~QHB^jEJGI%?`@t(fh9!`ypNJBi$Lil z>MEH>dLTM!Hx)d3w)Mfojg6fM_yM`myM1E@`cA7Q2cqD~U`2MoFS%!%69AbCy&_ew zW%^2Ru3KDk{a|zzTKC@WufKom#rw;J9`qotlOZM!2YcQe^ZGQAGr!tG1i zI{PmsdUge_+h>qo$6kAFRav5)U9$aWztc^#EKhZwm`=YrUDcI17z%B4_gQRJydqD;^_`%pUGZZ%@+8@xLY5(wrK7xG5FzF*Xg_<6sCLM`kY!zgIn-2G8L@^9|0=IR|Rd&KTUqi;8&$8P8y2L;ZcXnUC3 zbi6zn_TI>A-iaKCM#0V9ch~Y}SOo)>7NCGiik_&vOca%;jj94S&B{X~(sN)^lZk4| z61HupiZf7jlVN7suac}{X&O)EN9|5urX4YX-Dc(q?9;YGdysbag<6AEFQ6jcJdph+ zyW+49=@L`#!TQ!|XXDIAaq#{f0^kC`J$e&cjpT`>3U~n5DIGJku&X%Bu8^^X*vdX+ zq|^V)K^ZtXfIT!G`g(vi{DguSR&zi@^PLu;tqu*8FwFQi!ND>GOIV^O$YTiR2o7pPm7@uPSm0!5tFda\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
rgttrackregionsegment_idbackground_ratepaircyclesc_orientsolar_elevationsegment_dist...atl08_classlandcoveryapc_scoresnowcoverquality_phx_atcatl03_cnfheightgeometryspot
time
2023-01-21 06:16:40.471485952484167954107303.5564540181-68.1931921.593187e+07...425502550-23.8953674-39.041676POINT (-76.07301 37.20210)6
2023-01-21 06:16:40.471586048484167954107303.5564540181-68.1931921.593187e+07...425502550-23.1815624-38.770771POINT (-76.07301 37.20209)6
2023-01-21 06:16:40.471985920484167954107303.5564540181-68.1931921.593187e+07...425502550-20.3133741-45.427681POINT (-76.07301 37.20206)6
2023-01-21 06:16:40.472285952484167954107303.5564540181-68.1931921.593187e+07...425502550-18.1817894-38.845711POINT (-76.07301 37.20205)6
2023-01-21 06:16:40.472885760484167954107303.5564540181-68.1931921.593187e+07...425502550-13.8953594-39.379562POINT (-76.07302 37.20201)6
..................................................................
2023-01-21 06:16:43.3035860484841679629335931.8533921181-68.3153691.594956e+07...4255025503.7621410-14.573852POINT (-76.09313 37.04324)5
2023-01-21 06:16:43.3035860484841679629335931.8533921181-68.3153691.594956e+07...4255025503.6626291-41.881130POINT (-76.09313 37.04324)5
2023-01-21 06:16:43.3037859844841679629335931.8533921181-68.3153691.594956e+07...4255025505.0527051-47.709576POINT (-76.09313 37.04323)5
2023-01-21 06:16:43.3037859844841679629335931.8533921181-68.3153691.594956e+07...4255025505.0643911-44.528160POINT (-76.09313 37.04323)5
2023-01-21 06:16:43.3037859844841679629335931.8533921181-68.3153691.594956e+07...4255025505.0749811-41.621281POINT (-76.09313 37.04323)5
\n", + "

51593 rows × 22 columns

\n", + "" + ], + "text/plain": [ + " rgt track region segment_id \\\n", + "time \n", + "2023-01-21 06:16:40.471485952 484 1 6 795410 \n", + "2023-01-21 06:16:40.471586048 484 1 6 795410 \n", + "2023-01-21 06:16:40.471985920 484 1 6 795410 \n", + "2023-01-21 06:16:40.472285952 484 1 6 795410 \n", + "2023-01-21 06:16:40.472885760 484 1 6 795410 \n", + "... ... ... ... ... \n", + "2023-01-21 06:16:43.303586048 484 1 6 796293 \n", + "2023-01-21 06:16:43.303586048 484 1 6 796293 \n", + "2023-01-21 06:16:43.303785984 484 1 6 796293 \n", + "2023-01-21 06:16:43.303785984 484 1 6 796293 \n", + "2023-01-21 06:16:43.303785984 484 1 6 796293 \n", + "\n", + " background_rate pair cycle sc_orient \\\n", + "time \n", + "2023-01-21 06:16:40.471485952 7303.556454 0 18 1 \n", + "2023-01-21 06:16:40.471586048 7303.556454 0 18 1 \n", + "2023-01-21 06:16:40.471985920 7303.556454 0 18 1 \n", + "2023-01-21 06:16:40.472285952 7303.556454 0 18 1 \n", + "2023-01-21 06:16:40.472885760 7303.556454 0 18 1 \n", + "... ... ... ... ... \n", + "2023-01-21 06:16:43.303586048 35931.853392 1 18 1 \n", + "2023-01-21 06:16:43.303586048 35931.853392 1 18 1 \n", + "2023-01-21 06:16:43.303785984 35931.853392 1 18 1 \n", + "2023-01-21 06:16:43.303785984 35931.853392 1 18 1 \n", + "2023-01-21 06:16:43.303785984 35931.853392 1 18 1 \n", + "\n", + " solar_elevation segment_dist ... \\\n", + "time ... \n", + "2023-01-21 06:16:40.471485952 -68.193192 1.593187e+07 ... \n", + "2023-01-21 06:16:40.471586048 -68.193192 1.593187e+07 ... \n", + "2023-01-21 06:16:40.471985920 -68.193192 1.593187e+07 ... \n", + "2023-01-21 06:16:40.472285952 -68.193192 1.593187e+07 ... \n", + "2023-01-21 06:16:40.472885760 -68.193192 1.593187e+07 ... \n", + "... ... ... ... \n", + "2023-01-21 06:16:43.303586048 -68.315369 1.594956e+07 ... \n", + "2023-01-21 06:16:43.303586048 -68.315369 1.594956e+07 ... \n", + "2023-01-21 06:16:43.303785984 -68.315369 1.594956e+07 ... \n", + "2023-01-21 06:16:43.303785984 -68.315369 1.594956e+07 ... \n", + "2023-01-21 06:16:43.303785984 -68.315369 1.594956e+07 ... \n", + "\n", + " atl08_class landcover yapc_score snowcover \\\n", + "time \n", + "2023-01-21 06:16:40.471485952 4 255 0 255 \n", + "2023-01-21 06:16:40.471586048 4 255 0 255 \n", + "2023-01-21 06:16:40.471985920 4 255 0 255 \n", + "2023-01-21 06:16:40.472285952 4 255 0 255 \n", + "2023-01-21 06:16:40.472885760 4 255 0 255 \n", + "... ... ... ... ... \n", + "2023-01-21 06:16:43.303586048 4 255 0 255 \n", + "2023-01-21 06:16:43.303586048 4 255 0 255 \n", + "2023-01-21 06:16:43.303785984 4 255 0 255 \n", + "2023-01-21 06:16:43.303785984 4 255 0 255 \n", + "2023-01-21 06:16:43.303785984 4 255 0 255 \n", + "\n", + " quality_ph x_atc atl03_cnf height \\\n", + "time \n", + "2023-01-21 06:16:40.471485952 0 -23.895367 4 -39.041676 \n", + "2023-01-21 06:16:40.471586048 0 -23.181562 4 -38.770771 \n", + "2023-01-21 06:16:40.471985920 0 -20.313374 1 -45.427681 \n", + "2023-01-21 06:16:40.472285952 0 -18.181789 4 -38.845711 \n", + "2023-01-21 06:16:40.472885760 0 -13.895359 4 -39.379562 \n", + "... ... ... ... ... \n", + "2023-01-21 06:16:43.303586048 0 3.762141 0 -14.573852 \n", + "2023-01-21 06:16:43.303586048 0 3.662629 1 -41.881130 \n", + "2023-01-21 06:16:43.303785984 0 5.052705 1 -47.709576 \n", + "2023-01-21 06:16:43.303785984 0 5.064391 1 -44.528160 \n", + "2023-01-21 06:16:43.303785984 0 5.074981 1 -41.621281 \n", + "\n", + " geometry spot \n", + "time \n", + "2023-01-21 06:16:40.471485952 POINT (-76.07301 37.20210) 6 \n", + "2023-01-21 06:16:40.471586048 POINT (-76.07301 37.20209) 6 \n", + "2023-01-21 06:16:40.471985920 POINT (-76.07301 37.20206) 6 \n", + "2023-01-21 06:16:40.472285952 POINT (-76.07301 37.20205) 6 \n", + "2023-01-21 06:16:40.472885760 POINT (-76.07302 37.20201) 6 \n", + "... ... ... \n", + "2023-01-21 06:16:43.303586048 POINT (-76.09313 37.04324) 5 \n", + "2023-01-21 06:16:43.303586048 POINT (-76.09313 37.04324) 5 \n", + "2023-01-21 06:16:43.303785984 POINT (-76.09313 37.04323) 5 \n", + "2023-01-21 06:16:43.303785984 POINT (-76.09313 37.04323) 5 \n", + "2023-01-21 06:16:43.303785984 POINT (-76.09313 37.04323) 5 \n", + "\n", + "[51593 rows x 22 columns]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ATL03_gdf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "490eeac4", + "metadata": {}, + "outputs": [], + "source": [ + " \n", + "# Extract latitude and longitude from the geometry\n", + "ATL03_gdf['latitude'] = ATL03_gdf.geometry.y\n", + "ATL03_gdf['longitude'] = ATL03_gdf.geometry.x\n", + "\n", + "\n", + "# Create a scatter plot of height vs. latitude\n", + "plt.figure(figsize=(10, 6))\n", + "plt.scatter(ATL03_gdf['latitude'], ATL03_gdf['height'], s=1, c='blue', alpha=0.5)\n", + "plt.title(\"Height vs. Latitude for ATL03 Points\")\n", + "plt.xlabel(\"Latitude\")\n", + "plt.ylabel(\"Height (meters)\")\n", + "plt.ylim(-60, -16) # Set y-axis limits\n", + "plt.grid(True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a40bbf6d", + "metadata": {}, + "source": [ + "# Need to fix the loop below: below is the old code that we used icepyx to do the same thing" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "id": "b4616a9b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-34.32363789 -16.57428851 -33.94800545 -16.21392815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-35.38298801 -17.27116185 -35.00597865 -16.91080149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-36.43158698 -17.88191518 -36.05331636 -17.52155482]\n", + "[-114.19533771 13.23280149 -113.82487229 13.59316185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-114.69261406 13.52929815 -114.32168594 13.88965851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-115.54558663 12.94487482 -115.17555997 13.30523518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-115.65389395 13.24736815 -115.28340605 13.60772851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.26434335 10.56915982 -109.89754665 10.92952018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-21.57397311 -24.95193018 -21.17709355 -24.59156982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.19465189 -24.86336018 -19.79805477 -24.50299982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.89886861 -23.98789351 -20.50499139 -23.62753315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.70809594 -24.94431685 -20.31124072 -24.58395649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.60872371 -23.73342351 -20.21561295 -23.37306315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.63942331 -23.67175018 -20.24649669 -23.31138982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.96223812 -23.40802351 -20.57009188 -23.04766315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.98995983 -23.34894518 -20.59798683 -22.98858482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-21.04274314 -23.31246018 -20.65087686 -22.95209982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-21.07873736 -23.25249851 -20.68704598 -22.89213815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-21.40781579 -23.31541185 -21.01594087 -22.95505149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-21.5250624 -23.28912018 -21.13326426 -22.92875982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-23.02633303 -23.79305185 -22.63304363 -23.43269149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-25.07907249 -23.73483518 -24.68595751 -23.37447482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-25.93920155 -23.80872351 -25.54586511 -23.44836315]\n", + "[-27.6627603 -23.29224851 -27.27095304 -22.93188815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-27.54140392 -23.58809518 -27.14872608 -23.22773482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-30.48417714 -21.50298018 -30.0973362 -21.14261982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-30.01905081 -20.71236351 -29.63424585 -20.35200315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-29.36274435 -21.42860685 -28.97609899 -21.06824649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-24.92224441 11.47888482 -24.55429225 11.83924518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-26.87506206 10.53955649 -26.50830128 10.89991685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-22.1797048 7.42249649 -21.81614854 7.78285685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-22.64814683 7.36805315 -22.28463651 7.72841351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.09816132 6.99666149 -19.73495534 7.35702185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-24.41271633 -19.57892185 -24.03066701 -19.21856149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-26.08383141 -20.18647518 -25.70032859 -19.82611482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-28.29307016 -19.58644185 -27.91100318 -19.22608149]\n", + "[-28.37084968 -19.34874351 -27.98933698 -18.98838315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-27.68897618 -19.92849685 -27.30609716 -19.56813649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-27.12297861 -20.57487685 -26.73851805 -20.21451649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-26.39420247 -20.90341685 -26.00891419 -20.54305649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.83953848 -20.53731851 -20.45517152 -20.17695815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.82410814 -20.53302351 -20.43975186 -20.17266315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.84743355 -20.61219018 -20.46287979 -20.25182982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-20.29515448 -21.54139685 -19.90821218 -21.18103649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-34.35583418 -20.15315518 -33.97241248 -19.79279482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-35.46879501 -19.21454351 -35.08759165 -18.85418315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-35.00043871 -20.14865351 -34.61702795 -19.78829315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-33.8530959 -23.20335351 -33.46154744 -22.84299315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-33.8592207 -23.57130685 -33.46659264 -23.21094649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-32.6124761 -24.45926351 -32.21715056 -24.09890315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-30.76880238 -22.02758018 -30.38055762 -21.66721982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-31.32239644 -22.71029185 -30.93226022 -22.34993149]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-33.41706583 -19.86555185 -33.03433751 -19.50519149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-27.5033222 50.45737149 -26.93513114 50.81773185]\n", + "[-66.69777986 20.62596149 -66.31228014 20.98632185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-66.69244901 20.96861649 -66.30606433 21.32897685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-67.70175517 20.24780149 -67.31721149 20.60816185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-62.50366084 18.68849649 -62.12283582 19.04885685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-63.66260148 19.25839315 -63.28045852 19.61875351]\n", + "[-67.73548218 19.28163649 -67.35328448 19.64199685]\n", + "[-67.44935367 19.52986982 -67.06656633 19.89023018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-67.78037026 19.80190482 -67.3969264 20.16226518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-69.02951761 20.35608149 -68.64470239 20.71644185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-68.49718841 21.23188982 -68.11011159 21.59225018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-66.67923174 21.56583982 -66.2912616 21.92620018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-68.51631212 21.31126649 -68.12902454 21.67162685]\n", + "[-63.30107273 25.53776315 -62.90109061 25.89812351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-61.62326284 26.51352982 -61.21991382 26.87389018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-63.76912536 28.42908982 -63.35864798 28.78945018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-64.670015 26.83504482 -64.26551834 27.19540518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-64.67773262 26.19050815 -64.27551738 26.55086851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-64.1498771 26.04792649 -63.74815624 26.40828685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-63.68331863 26.25706315 -63.28087137 26.61742351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-63.13303805 26.59727815 -62.72939195 26.95763851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-63.02199885 26.59397315 -62.61836449 26.95433351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-63.1484575 27.26227315 -62.74240584 27.62263351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[140.80524383 -46.86097185 141.33050277 -46.50061149]\n", + "[138.90401813 -47.18942351 139.43249847 -46.82906315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[139.96554226 -47.06114851 140.49275774 -46.70078815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[149.3598773 -55.45493518 149.9924861 -55.09457482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[149.15479859 -56.76368685 149.80914141 -56.40332649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 77.3837957 -41.59450518 77.86431096 -41.23414482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.25119373 39.63932982 7.72037293 39.99969018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.11314645 39.60677149 7.58210355 39.96713185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.92880591 39.54129482 7.39731743 39.90165518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.80362626 39.69904149 7.27321374 40.05940185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.49473742 40.78154649 7.97194258 41.14190685]\n", + "[ 7.44034702 40.81206149 7.91777298 41.17242185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-151.5926118 -19.99836518 -151.2095648 -19.63800482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-151.76050191 -19.56098518 -151.37849469 -19.20062482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-151.33901071 -19.96970518 -150.95603269 -19.60934482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-149.53832785 -22.07204018 -149.14996215 -21.71167982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-148.66110148 -21.85549185 -148.27332192 -21.49513149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-163.26823193 -20.79916351 -162.88320807 -20.43880315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-163.98444869 -19.47983685 -163.60263131 -19.11947649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-166.24381474 -19.53916351 -165.86185866 -19.17880315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-167.80297135 -19.74138685 -167.42053865 -19.38102649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 97.07930385 -49.76615851 97.63515281 -49.40579815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[114.22321422 -50.43140685 114.78678578 -50.07104649]\n", + "[128.87144199 -55.08991018 129.49830141 -54.72954982]\n", + "[27.99625049 33.82943815 28.43097285 34.18979851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.19534218 33.88014649 28.63032448 34.24050685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.22288222 33.88272982 28.65787778 34.24309018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[20.8005222 36.10910649 21.2475978 36.46946685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[20.63996319 36.19757649 21.08754681 36.55793685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[20.78038713 36.02050815 21.22695621 36.38086851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[20.9785613 35.52033149 21.42231204 35.88069185]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[20.22702768 34.93281982 20.66755566 35.29318018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.57305767 34.95685649 20.01371567 35.31721685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.20660499 34.79213315 19.64637501 35.15249351]\n", + "[18.47864274 34.93649815 18.9191906 35.29685851]\n", + "[33.65418058 32.67454649 34.08315608 33.03490685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[33.89337959 33.03299482 34.32410375 33.39335518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[33.97507069 33.08328149 34.40604265 33.44364185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[33.89857088 33.52885815 34.33176578 33.88921851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[33.7465564 33.48432982 34.17952694 33.84469018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[33.94059563 33.40300815 34.37315771 33.76336851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[34.87068867 33.89644982 35.30575467 34.25681018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.54296763 39.16587649 6.00895237 39.52623685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.2882345 39.05150815 6.75345884 39.41186851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.29792024 39.35368315 6.7651631 39.71404351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.28211002 38.52719482 7.74390331 38.88755518]\n", + "[ 2.22352708 36.69176149 2.67398958 37.05212185]\n", + "[23.0900973 34.47842482 23.52819604 34.83878518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[23.07236321 34.47807982 23.51046013 34.83844018]\n", + "[23.22262132 34.46365815 23.66064202 34.82401851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[20.86156803 37.11709982 21.31456531 37.47746018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[15.61589738 36.58283649 16.06571928 36.94319685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[16.16316615 37.52427649 16.61864051 37.88463685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[16.01855199 37.53756149 16.47410801 37.89792185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[15.22482962 37.25887149 15.67868372 37.61923185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[16.8512591 36.57315649 17.30102424 36.93351685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.47467684 42.00055482 4.96097316 42.36091518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.316618 42.00328649 4.80293533 42.36364685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.30598493 41.89850149 4.79149841 42.25886185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.44106674 41.87273982 4.92638326 42.23310018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.74085197 41.31923315 5.22199803 41.67959351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.05577544 41.08495482 5.53519123 41.44531518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.19797252 41.08257149 5.67737081 41.44293185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.87453211 40.81525649 5.35198122 41.17561685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.49013163 40.73329815 5.96698837 41.09365851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.91351312 41.18882815 5.39369354 41.54918851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.35788843 40.99403649 5.83663823 41.35439685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.75041773 41.17944815 6.23052894 41.53980851]\n", + "[ 5.99576659 41.51532315 6.47837674 41.87568351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.32823792 41.96687315 6.81427542 42.32723351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.32325623 42.53555982 7.81372377 42.89592018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.22625087 42.61351982 7.71733579 42.97388018]\n", + "[ 7.06280089 42.67977482 7.55441245 43.04013518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.05015423 42.75832149 7.54239244 43.11868185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.92971293 44.32336149 31.43498041 44.68372185]\n", + "[-147.17286536 -20.75570351 -146.78795124 -20.39534315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-147.35336363 -21.21589518 -146.96727297 -20.85553482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-148.55828862 -20.92398351 -148.17294798 -20.56362315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-150.86105144 -19.12845018 -150.48004516 -18.76808982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-150.60956527 -19.39380185 -150.22794813 -19.03344149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-151.02929577 -20.75071185 -150.64439423 -20.39035149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-153.89246143 -21.54789685 -153.50550197 -21.18753649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 0.53051746 37.05964315 0.98316921 37.42000351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.20822208 39.26627482 5.67487792 39.62663518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.0468152 39.14409649 6.5126548 39.50445685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.75210598 40.07380982 7.22428402 40.43417018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[100.35171986 -46.35230351 100.87210014 -45.99194315]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 95.93490541 -56.98413351 96.59309125 -56.62377315]\n", + "[104.00343876 -49.80096185 104.55968464 -49.44060149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 98.37317127 -55.08828518 99.00000539 -54.72792482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 97.96609923 -55.12575185 98.59351743 -54.76539149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-31.52810769 -20.40761851 -31.14406231 -20.04725815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-24.87792188 -18.93194518 -24.49736146 -18.57158482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[15.28938862 36.18294149 15.73688804 36.54330185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[15.2591805 35.95552982 15.7053795 36.31589018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[15.26245742 35.79240649 15.70773258 36.15276685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-85.05722157 -10.47484851 -84.69096509 -10.11448815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-86.01975199 -11.57067018 -85.65215135 -11.21030982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-86.81949347 -12.09885018 -86.45119319 -11.73848982]\n", + "[-85.89582489 -13.29845018 -85.52580845 -12.93808982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-86.44569478 -13.58935685 -86.07523522 -13.22899649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-88.817213 -14.88081018 -88.444657 -14.52044982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 70.58770271 -52.83553018 71.18176063 -52.47516982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-62.88577287 69.13376049 -61.86563647 69.49412085]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-63.21824224 68.00365782 -62.24856642 68.36401818]\n", + "[25.72207514 34.30955149 26.15928486 34.66991185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.74119823 34.34966149 26.17861843 34.71002185]\n", + "[25.65511238 34.04372149 26.09093762 34.40408185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.76689717 34.17224149 26.20338949 34.53260185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[26.52490579 33.73861315 26.95916421 34.09897351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.97409313 33.40865982 26.40668353 33.76902018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.69155037 33.16094982 26.12290629 33.52131018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.73587484 33.14837482 26.1671685 33.50873518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.25507973 33.27729982 25.68701361 33.63766018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.21786043 33.12927149 25.64905957 33.48963185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.3218908 33.10281649 25.7529592 33.46317685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.87704151 33.46705482 26.30992515 33.82741518]\n", + "[25.81356319 33.91998315 26.24875015 34.28034351]\n", + "[25.92604504 34.00206315 26.36165496 34.36242351]\n", + "[26.75361593 33.15668482 27.18495073 33.51704518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[26.40417699 32.94242149 26.83445635 33.30278185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.50807075 32.43312982 25.93588591 32.79349018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.57946644 34.05954149 28.01537356 34.41990185]\n", + "[27.85095071 34.09905315 28.28706263 34.45941351]\n", + "[27.88778492 34.10578149 28.32393174 34.46614185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.08886551 34.20166482 28.52551115 34.56202518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.03759985 34.41177149 29.47534681 34.77213185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.9357356 34.53321982 29.3741244 34.89358018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.93270428 34.54754982 29.37116906 34.90791018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.58505281 34.48642649 29.02319385 34.84678685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.56314232 34.43865482 29.00103102 34.79901518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.24959653 34.18720649 28.68616681 34.54756685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.34895832 34.17116149 28.78544502 34.53152185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.45677942 34.06289649 28.89270392 34.42325685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.93163275 34.19952982 29.36826725 34.55989018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.95773406 34.20605649 29.3944026 34.56641685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.41983959 33.92073649 29.85503041 34.28109685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.5542939 33.87038482 29.9892261 34.23074518]\n", + "[ 7.57665158 43.20580149 8.07250842 43.56616185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.18092371 42.97902482 7.67493629 43.33938518]\n", + "[ 6.33502798 42.66039982 6.82648535 43.02076018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.39530028 42.53242649 6.88574305 42.89278685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.41299021 42.50838649 6.90324313 42.86874685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.41579102 42.53350482 6.90624231 42.89386518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.53707604 42.59119982 7.02798396 42.95156018]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.14081813 42.64988315 6.63219187 43.01024351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.62268714 42.48338649 6.11274286 42.84374685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.58915141 42.47934149 6.07917526 42.83970185]\n", + "[ 5.64777141 42.55827649 6.13841859 42.91863685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.32867724 42.29170649 5.81722942 42.65206685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.45187539 42.36208815 5.94097794 42.72244851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.70367819 42.36732982 6.19282181 42.72769018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.76376206 42.23401815 6.25186461 42.59437851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.40227708 42.29729982 5.89087292 42.65766018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.79754154 42.37327982 6.28673179 42.73364018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.19816062 42.11366815 6.68532938 42.47402851]\n", + "[ 6.24455898 42.01343149 6.73095436 42.37379185]\n", + "[ 6.20942736 41.88260982 6.69481931 42.24297018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.91416527 41.87748815 6.39951807 42.23784851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.81471494 41.90720982 6.30029506 42.26757018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.81633936 42.06091815 6.30310064 42.42127851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.84305286 42.18234815 6.3307538 42.54270851]\n", + "[ 5.98627918 42.15063649 6.47373416 42.51099685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.0841045 42.16474149 6.57166883 42.52510185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.3640806 42.09987815 6.85114273 42.46023851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.2420992 42.19144982 6.7298708 42.55181018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.17981452 42.22610315 6.66785548 42.58646351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.20464373 42.23058982 6.6927196 42.59095018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.24454489 42.21572149 6.73250511 42.57608185]\n", + "[ 6.26922438 42.18668149 6.75695896 42.54704185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.20116255 42.24373982 6.68934078 42.60410018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.14173157 42.32686482 6.63055843 42.68722518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.23468083 41.96784982 6.72072583 42.32821018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.2443752 41.72118482 6.72853814 42.08154518]\n", + "[ 6.33429686 41.65292649 6.81794314 42.01328685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.29589859 41.71589315 6.78002141 42.07625351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.04115069 41.71885649 6.52529597 42.07921685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.56112047 41.51562149 6.04373286 41.87598185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.52914758 41.54125149 6.01195242 41.90161185]\n", + "[ 5.58335643 41.53357149 6.06610357 41.89393185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.56574928 41.51282982 6.04834072 41.87319018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.42497381 41.48049482 5.90732286 41.84085518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.52938206 41.14752149 6.00925794 41.50788185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.43763553 41.35413815 5.91904114 41.71449851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.10063569 41.28949482 6.58156098 41.64985518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.03498751 41.30786815 6.51604916 41.66822851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.98387071 41.30700482 6.46492595 41.66736518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.85632186 41.28558315 6.33721814 41.64594351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.92407958 35.24051815 28.36628376 35.60087851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.6022101 43.22327149 8.0982099 43.58363185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.20932442 43.04470315 7.70386891 43.40506351]\n", + "[ 7.13462307 42.92675482 7.6282136 43.28711518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.05312737 42.81748982 7.5458393 43.17785018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.99818334 42.79894649 7.49074666 43.15930685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.91491419 42.74039315 7.40700914 43.10075351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.96641001 42.64605649 7.45775333 43.00641685]\n", + "[ 7.90663748 42.15537482 8.39412919 42.51573518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.90851254 42.23132482 8.39659413 42.59168518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.85115387 42.25196149 8.33939613 42.61232185]\n", + "[ 7.90612896 42.31345982 8.39485104 42.67382018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.80868677 42.72805649 8.30068323 43.08841685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.77094956 42.82359315 8.26371044 43.18395351]\n", + "[ 7.73727852 42.85706982 8.23030815 43.21743018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.73734975 42.85219982 8.23034025 43.21256018]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.75400389 42.80172315 8.24658945 43.16208351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.36041134 34.94933649 28.80102866 35.30969685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.85047199 35.13918649 29.29212135 35.49954685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.8812543 35.10718815 29.32272904 35.46754851]\n", + "[28.29709637 35.22953482 28.73924029 35.58989518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.24108275 35.09735982 28.68250391 35.45772018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.17000111 35.02873815 28.61104889 35.38909851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.12343049 35.00317815 28.56433951 35.36353851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.06642594 34.96180149 28.50711072 35.32216185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.79234983 34.73934815 29.23183683 35.09970851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.29644261 35.16213649 29.73821739 35.52249685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.28488237 35.21823315 29.72696429 35.57859351]\n", + "[27.8877903 34.94910649 28.32840636 35.30946685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.87028494 34.81200649 28.31016172 35.17236685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.26564964 34.58069149 27.70429036 34.94105185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.23259554 34.53072649 27.67097112 34.89108685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.29094588 34.48526315 27.72908078 34.84562351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.54634207 34.36976482 27.98386793 34.73012518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.54768857 34.27896982 27.98473809 34.63933018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.97818944 34.30409482 29.41537056 34.66445518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.03560008 34.44076315 29.47349992 34.80112351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.16389564 34.48409649 29.60202436 34.84445685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[29.87364305 34.41372315 30.31140029 34.77408351]\n", + "[30.19728691 34.21263149 30.63398975 34.57299185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.33533741 34.31821982 30.77259259 34.67858018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.78814013 34.51578149 31.22643653 34.87614185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[31.1165671 34.26870482 31.5535629 34.62906518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.56861747 34.10351315 31.00475253 34.46387351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.56700341 34.11535315 31.00319993 34.47571351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.74034376 34.15946649 31.17676958 34.51982685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[31.38545519 34.23691649 31.82228481 34.59727685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.5693361 34.69774815 31.00860056 35.05810851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.54552286 34.79602982 30.9853138 35.15639018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.59233227 35.24682315 31.03457107 35.60718351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[30.74959859 35.02660149 31.19063475 35.38696185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[12.402451 39.26510482 12.869099 39.62546518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[12.11575121 39.15880315 12.58168879 39.51916351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[11.64538373 39.14303815 12.11121627 39.50339851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[11.45102391 39.19047315 11.91717275 39.55083351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.70893148 35.33373649 29.15164852 35.69409685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.899221 35.42076649 29.342419 35.78112685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.870195 35.44999982 29.313555 35.81036018]\n", + "[28.50900173 35.79205649 28.95427493 36.15241685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.31949899 35.72910649 28.76441767 36.08946685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.53630236 35.64652815 28.98075764 36.00688851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.31109255 35.81834149 28.75651411 36.17870185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.32728038 35.64902149 28.77174962 36.00938185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.46838993 35.62417149 28.91272007 35.98453185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.62543512 35.65268649 29.06992488 36.01304685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.3731284 35.67351982 28.81773494 36.03388018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.45065194 35.76063982 28.89574806 36.12100018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.39884031 35.71440482 28.84367635 36.07476518]\n", + "[28.49113249 35.77227815 28.93629417 36.13263851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.43650022 35.76953482 28.88164644 36.12989518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.4170385 35.72869315 28.86195484 36.08905351]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.42521209 35.72504149 28.87010791 36.08540185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.47571417 35.72667649 28.92061917 36.08703685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.50428805 35.72529649 28.94918529 36.08565685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[28.36290643 35.74068649 28.80789023 36.10104685]\n", + "[27.81677796 35.49935815 28.26041204 35.85971851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.68890211 35.30991815 28.13148789 35.67027851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.13859565 34.61916982 27.57744101 34.97953018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[26.23755424 34.43855649 26.67544242 34.79891685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[26.28967323 34.50265149 26.72790011 34.86301185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[26.09065324 34.32616649 26.5279501 34.68652685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[27.08870948 34.21547815 27.52542718 34.57583851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 64.87048338 -49.64559018 65.42496328 -49.28522982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 65.32464565 -47.27362685 65.85396101 -46.91326649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[134.41550709 -46.97720018 134.94189951 -46.61683982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.62730827 -9.44793018 -139.26218173 -9.08756982]\n", + "[-139.63903698 -9.46141351 -139.27389642 -9.10105315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.66370002 -9.47376685 -139.29854658 -9.11340649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.6863778 -9.47910518 -139.3212188 -9.11874482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.70613854 -9.47399851 -139.34098486 -9.11363815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.72257113 -9.47589518 -139.35741547 -9.11553482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.77035844 -9.52162518 -139.40515496 -9.16126482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.79849362 -9.56326018 -139.43324638 -9.20289982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.94053153 -9.59399018 -139.57525187 -9.23362982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.90947038 -9.86217351 -139.54390302 -9.50181315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.88274147 -9.94956851 -139.51707853 -9.58920815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.75425804 -10.00684185 -139.38853196 -9.64648149]\n", + "[-139.55644691 -9.84972185 -139.19089309 -9.48936149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.15946055 -9.50655518 -138.79427285 -9.14619482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-138.58704559 -9.52572685 -138.22183781 -9.16536649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-137.29944664 -9.65716018 -136.93409996 -9.29679982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-137.04592089 -9.63374851 -136.68059911 -9.27338815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-135.37641339 -9.15821851 -135.01158321 -8.79785815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-135.29924131 -9.09080185 -134.93447869 -8.73044149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-135.6337429 -8.60961518 -135.2694471 -8.24925482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-133.85380381 -8.55128518 -133.48956279 -8.19092482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-132.53850579 -8.60514518 -132.17421421 -8.24478482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-130.72437726 -8.84533851 -130.35985614 -8.48497815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-130.45618479 -8.65595185 -130.09184521 -8.29559149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-128.75783043 -8.97464851 -128.39318297 -8.61428815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-127.74005844 -8.91963518 -127.37546496 -8.55927482]\n", + "[-124.54846022 -8.37055018 -124.18438638 -8.01018982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.60753491 -8.35147351 -140.24347849 -7.99111315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.62692743 -8.35698851 -140.26286597 -7.99662815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.29859805 -8.47791351 -139.93442535 -8.11755315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.45709766 -8.54155185 -141.09286574 -8.18119149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.7519301 -8.79266351 -141.3874599 -8.43230315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.35668446 -9.02332185 -140.99198894 -8.66296149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.33690204 -8.15645351 -140.97302136 -7.79609315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.98743322 -7.56328185 -140.62406018 -7.20292149]\n", + "[-141.47175521 -8.24175685 -141.10779819 -7.88139649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.23313816 -8.61377685 -141.86883844 -8.25341649]\n", + "[-142.58432772 -8.10928351 -142.22048888 -7.74892315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.56475762 -8.07869851 -142.20094578 -7.71833815]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.98040831 -7.64432851 -141.61696829 -7.28396815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.13220856 -7.34590518 -141.76901144 -6.98554482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.77092803 -7.54672518 -141.40756857 -7.18636482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.30300928 -7.26368185 -140.93987732 -6.90332149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.1217542 -7.43058185 -140.7584892 -7.07022149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.05801047 -8.37460018 -139.69393293 -8.01423982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-138.38623727 -8.83855018 -138.02172273 -8.47818982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.77407882 -9.43937685 -140.40896118 -9.07901649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.73494647 -9.46042851 -140.36980693 -9.10006815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.75312282 -9.47914351 -140.38796378 -9.11878315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.73384593 -9.48509518 -140.36868067 -9.12473482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.8132906 -9.50359185 -140.448106 -9.14323149]\n", + "[-140.86207456 -9.49510351 -140.49689884 -9.13474315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.86741089 -9.53905018 -140.50218911 -9.17868982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.83403117 -9.56184351 -140.46878543 -9.20148315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.63386232 -9.48450851 -140.26869768 -9.12414815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.61791566 -9.73633685 -140.25248434 -9.37597649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.74101636 -9.69713351 -140.37562704 -9.33677315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-140.81319931 -9.54879185 -140.44796729 -9.18843149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.05561208 -9.44237851 -140.69049132 -9.08201815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.11607963 -9.36030851 -140.75104377 -8.99994815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.13766415 -9.39814351 -140.77258925 -9.03778315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.36519534 -9.35856685 -141.00016126 -8.99820649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.9112925 -9.61170185 -139.5459941 -9.25134149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.64906283 -9.92160518 -139.28343057 -9.56124482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-139.73840583 -9.92416018 -139.37277077 -9.56379982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.29516469 -9.07412185 -140.93041871 -8.71376149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.44830915 -9.19602685 -141.08344085 -8.83566649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.55680475 -9.28915351 -141.19184185 -8.92879315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.7363852 -9.42912685 -141.3712782 -9.06876649]\n", + "[-141.87268224 -9.50348185 -141.50749776 -9.14312149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.90818349 -9.51542351 -141.54298651 -9.15506315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-143.73173525 -9.33895518 -143.36672135 -8.97859482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-143.63120544 -9.51284018 -143.26601116 -9.15247982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.51318682 -9.67307851 -142.14782318 -9.31271815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.66024277 -9.73710351 -142.29481063 -9.37674315]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-143.01683106 -9.53614018 -142.65161234 -9.17577982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-143.35323511 -9.76321851 -142.98777489 -9.40285815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-143.25822208 -9.84690185 -142.89267132 -9.48654149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.88873798 -9.75312685 -142.52328862 -9.39276649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.69760061 -9.82577018 -141.33207279 -9.46540982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.89427458 -9.80854685 -141.52876542 -9.44818649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.4892935 -9.71684185 -142.1238831 -9.35648149]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-143.90027387 -8.91029018 -143.53568953 -8.54992982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-143.73421827 -9.33510018 -143.36920833 -8.97473982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.73985537 -9.88673685 -142.37426123 -9.52637649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.27552608 -10.16476851 -141.90962392 -9.80440815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-141.9933759 -10.08710851 -141.6275607 -9.72674815]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-142.38101349 -10.12449018 -142.01515651 -9.76412982]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.38297769 42.70442649 7.87478565 43.06478685]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.10356342 42.58639315 7.59443324 42.94675351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.01824898 42.53908315 7.50874436 42.89944351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.83186448 42.40949482 7.32133885 42.76985518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.79971354 42.35021815 7.28872313 42.71057851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.78956578 42.57443815 7.28034089 42.93479851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.02258975 42.56248815 7.51327025 42.92284851]\n", + "[ 7.37650036 42.45251982 7.86631297 42.81288018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.53203689 42.37829482 8.02126645 42.73865518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 8.06903681 42.40508149 8.55847653 42.76544185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 8.3779476 42.67683149 8.86953573 43.03719185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-62.70701615 61.94018449 -61.93638251 62.30054485]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.56951197 43.23034482 8.06556969 43.59070518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.5059631 43.24223365 8.00211823 43.60259401]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.25629743 43.27974065 7.75276024 43.64010101]\n", + "[ 7.09747972 43.24293632 7.59364061 43.60329668]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.05087825 43.23943132 7.54701041 43.59979168]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.99400442 43.13562615 7.48928825 43.49598651]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.85515317 42.99214065 7.34927183 43.35250101]\n", + "[ 6.50281233 42.84126199 6.995715 43.20162235]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.37982708 42.78019532 6.87224025 43.14055568]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.26748735 42.73567849 6.75954465 43.09603885]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.51039771 42.70370999 6.00219996 43.06407035]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 5.03890469 42.58207732 5.52974031 42.94243768]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.92284966 42.54675082 5.41340567 42.90711118]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.93684343 42.41977615 5.42639857 42.78013651]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.94725135 42.51582582 5.43756299 42.87618618]\n", + "[ 4.68224915 42.47221515 5.17221685 42.83257551]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.5336337 42.41512565 5.0231523 42.77548601]\n", + "[ 4.45390963 42.35453799 4.94295304 42.71489835]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 3.57715955 41.93046549 4.06291779 42.29082585]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 3.4062797 41.67056232 3.8900593 42.03092268]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 3.00127135 41.09900315 3.48079032 41.45936351]\n", + "[ 2.95467992 41.06206465 3.43392775 41.42242501]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.94144606 41.05393499 3.42063428 41.41429535]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.32169876 40.83936349 2.79932257 41.19972385]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.24048002 40.80911432 2.71788465 41.16947468]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.0702289 40.66948532 2.5466261 41.02984568]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.21564222 40.55557182 2.69122278 40.91593218]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.25200791 40.51159299 2.72727442 40.87195335]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.26653486 40.47446482 2.7415368 40.83482518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.16500912 40.48183599 2.64006355 40.84219635]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.17713509 40.47234132 2.65212191 40.83270168]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.11208417 40.43932532 2.58683616 40.79968568]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.11974757 40.42682799 2.59441077 40.78718835]\n", + "[ 2.06305265 40.42713232 2.53771801 40.78749268]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.05049742 40.40216899 2.52498558 40.76252935]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.05521718 40.45652949 2.53009149 40.81688985]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 2.0385323 40.42263082 2.5131657 40.78299118]\n", + "[ 1.92847018 40.39339799 2.40289615 40.75375835]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.66291322 40.17638015 2.13580878 40.53674051]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.63598751 40.16117632 2.10877649 40.52153668]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.59764122 39.90284699 2.06863145 40.26320735]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.69019173 39.93721699 2.16141994 40.29757735]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.60352039 39.87502449 2.07431828 40.23538485]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.61497916 39.91427982 2.08604851 40.27464018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.63389531 39.88676849 2.10477435 40.24712885]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.73197769 39.94771199 2.20327864 40.30807235]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.72491284 39.92996765 2.19609082 40.29032801]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.69646264 39.91558699 2.16754103 40.27594735]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.65575406 39.91286282 2.1268136 40.27322318]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 1.59111643 39.88210315 2.06196323 40.24246351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 64.38141176 -48.93148685 64.92796824 -48.57112649]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.34303347 43.36871482 7.84022853 43.72907518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.22145792 43.32787099 7.71831642 43.68823135]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 71.63865427 -51.48405518 72.21505573 -51.12369482]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.7663813 19.18474115 -108.3844113 19.54510151]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.96967848 19.92501182 -108.58593392 20.28537218]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.91016691 20.22263865 -108.52568609 20.58299901]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.57599003 20.18318315 -108.19160757 20.54354351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.29835689 20.28755765 -107.91371371 20.64791801]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.15657575 20.45075915 -107.77152165 20.81111951]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.25595565 20.43897382 -107.87093135 20.79933418]\n", + "[-108.21563247 20.91096382 -107.82939793 21.27132418]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-107.83936361 21.54719649 -107.45144379 21.90755685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-106.5240903 20.79095315 -106.1381667 21.15131351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-107.14497996 21.07471132 -106.75831764 21.43507168]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.9798385 21.45786149 -108.5921591 21.81822185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.01207647 20.30875899 -109.62738013 20.66911935]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-109.88342203 20.49352432 -109.49825957 20.85388468]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.11116051 20.32162415 -109.72643189 20.68198451]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.32262972 20.31063282 -109.93792868 20.67099318]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.38150496 20.26964432 -109.99690664 20.63000468]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.65696639 20.27885449 -110.27234501 20.63921485]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-111.53747884 19.69215365 -111.15430116 20.05251401]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-107.9048448 17.58576315 -107.5264386 17.94612351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.61578362 19.21358899 -108.23374598 19.57394935]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-108.80529517 19.71615365 -108.42205943 20.07651401]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-109.08804115 19.62052165 -108.70503625 19.98088201]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-109.25483508 19.60316682 -108.87187192 19.96352718]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-109.74780483 19.48524249 -109.36512417 19.84560285]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-112.00028496 20.29447849 -111.61562444 20.65483885]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.57615029 22.38273732 -110.18592131 22.74309768]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-109.98108858 22.50134632 -109.59052282 22.86170668]\n", + "[-110.50310724 22.84044682 -110.11156616 23.20080718]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.47285455 22.97953065 -110.08090805 23.33989101]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-110.48983757 22.97209432 -110.09791283 23.33245468]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.49586384 43.21258315 7.99177616 43.57294351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.45794661 43.21231315 7.95385672 43.57267351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.43927191 43.23300649 7.93535143 43.59336685]\n", + "[ 7.40689408 43.23735815 7.90300925 43.59771851]\n", + "[ 7.38577573 43.22474649 7.88178761 43.58510685]\n", + "[ 7.38790468 43.21074982 7.88380199 43.57111018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.38245402 43.19746149 7.87824265 43.55782185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.34948058 43.14073815 7.84480608 43.50109851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 7.11641425 43.13370315 7.61168241 43.49406351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.92374132 43.13319482 7.41900534 43.49355518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 6.88563293 43.12666482 7.38084374 43.48702518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[36.99240512 42.20022315 37.48024488 42.56058351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[37.02990178 42.04559482 37.51654488 42.40595518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[38.22320374 41.38549482 38.70484292 41.74585518]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[39.53889307 41.38791315 40.02055027 41.74827351]\n", + "[40.60881871 42.12234815 41.09605463 42.48270851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[40.30364411 42.71911815 40.79556923 43.07947851]\n", + "[38.87983365 43.46878982 39.37785635 43.82915018]\n", + "[38.60951242 43.55572482 39.10825758 43.91608518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.94353546 34.51125315 26.38180788 34.87161351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[26.36179809 34.74373315 26.80130857 35.10409351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.10289451 34.44477149 25.54081549 34.80513185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[24.15006914 34.33471482 24.58741086 34.69507518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[24.54946423 34.04880482 24.98531577 34.40916518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[24.59043485 33.86871315 25.02535849 34.22907351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[24.84761783 33.62105315 25.28127883 33.98141351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.00149939 33.63556482 25.43523395 33.99592518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.08359117 33.85909815 25.51846549 34.21945851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.10450948 33.95186649 25.53986052 34.31222685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.14788401 34.02440315 25.58360933 34.38476351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[25.05263046 34.22787649 25.48941288 34.58823685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[24.6257858 34.58966315 25.0644742 34.95002351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[24.19546878 34.79258315 24.63524122 35.15294351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[24.0337387 34.73292482 24.4731913 35.09328518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[23.34578178 34.92883649 23.78628822 35.28919685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[22.73685015 35.58830982 23.18097985 35.94867018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[22.81585201 35.50029815 23.25949133 35.86065851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[22.75706744 35.64292982 23.20150256 36.00329018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[22.51315583 35.98470149 22.95952083 36.34506185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.22351277 39.09321482 18.68901389 39.45357518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[16.39794704 38.01272815 16.85645962 38.37308851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[15.60985094 36.39835482 16.05859572 36.75871518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[15.38766233 35.96719315 15.83392767 36.32755351]\n", + "[16.52024826 35.26405815 16.96258174 35.62441851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.70918735 35.12867482 18.15077931 35.48903518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.85522214 35.14157149 18.29688452 35.50193185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.01928584 35.06623649 18.4605375 35.42659685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.10357018 34.99468815 18.54443316 35.35504851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.68839993 35.84522482 19.13397341 36.20558518]\n", + "[18.62981293 36.07041482 19.07666707 36.43077518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.7320472 36.19270649 19.1796028 36.55306685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.77965285 36.17045315 19.22708049 36.53081351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.70488612 36.47956982 19.15410388 36.83993018]\n", + "[18.61311714 36.56529482 19.0628362 36.92565518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.81096699 36.75725649 19.26181635 37.11761685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.84888979 36.75236649 19.29971021 37.11272685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.81738007 36.46049815 19.26648659 36.82085851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.82165084 36.50478482 19.27101582 36.86514518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.78054458 36.43034315 19.22947542 36.79070351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.40389141 36.41710982 18.85274525 36.77747018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.47858769 36.51042815 18.92798565 36.87078851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.30942082 36.46595982 18.75855918 36.82632018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.2055417 36.55861815 18.65522164 36.91897851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.24687676 36.56371982 18.69658658 36.92408018]\n", + "[18.17959331 36.48910149 18.62886669 36.84946185]\n", + "[18.02900121 36.22026315 18.47671545 36.58062351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.8318056 35.73861149 18.27677774 36.09897185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.62631193 35.57214649 18.07035141 35.93250685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.36710118 35.76623649 18.81222882 36.12659685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.14118497 41.06055149 18.62042169 41.42091185]\n", + "[17.99100082 41.75001482 18.47538252 42.11037518]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.30372761 41.85680149 17.78892239 42.21716185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.62272148 41.74018149 18.10702852 42.10054185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.47942205 41.53917482 17.96221129 41.89953518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.78975458 41.46158815 18.27196208 41.82194851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.99599774 41.62753315 18.47945226 41.98789351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.82041371 41.65596649 18.30408295 42.01632685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.65243037 41.53696149 18.13520297 41.89732185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.63204536 41.38685149 18.11369464 41.74721185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.04564338 41.50506982 18.52817662 41.86543018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.90772732 41.80091482 18.39249602 42.16127518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.6062828 42.02023315 18.09273054 42.38059351]\n", + "[17.26157979 41.85011815 17.74672355 42.21047851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.49810048 41.78124649 17.98271952 42.14160685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.87433282 41.44824649 18.35644052 41.80860685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.4148477 41.48168149 17.89720564 41.84204185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.34261658 41.44010815 17.82466342 41.80046851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.32945955 41.27901315 17.81030711 41.63937351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.8293727 41.69809149 18.31336064 42.05845185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.82876474 41.75863815 18.31321192 42.11899851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.22555384 42.02991815 17.71207616 42.39027851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.31152393 41.97094982 17.79759273 42.33131018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.32640439 41.88513149 17.81181561 42.24549185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.66106313 41.52779315 18.14376687 41.88815351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.79223802 41.74592315 18.27658864 42.10628351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.80022267 41.89081149 18.28567733 42.25117185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.74645027 41.80582815 18.23125639 42.16618851]\n", + "[17.63481897 41.98482649 18.12099437 42.34518685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.46155677 41.96239482 17.94755989 42.32275518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.52418733 41.81272982 18.00904601 42.17309018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.52416714 41.75449649 18.00858286 42.11485685]\n", + "[17.63625837 41.82863982 18.12123829 42.18900018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.82717993 41.95027649 18.31309007 42.31063685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.73950037 41.93494815 18.22529297 42.29530851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.27218357 41.86004315 17.75740309 42.22040351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.32974061 41.57989149 17.81283605 41.94025185]\n", + "[17.94048047 41.47649149 18.42279953 41.83685185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 3.34667166 69.22503815 4.37113167 69.58539851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[12.74214331 69.24826982 13.76771003 69.60863018]\n", + "[13.47375272 69.32085815 14.50279394 69.68121851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-0.58520366 63.86065982 0.23804366 64.22102018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-3.88572618 66.41275815 -2.97861382 66.77311851]\n", + "[-4.14198774 66.23908482 -3.24117893 66.59944518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-4.45767008 66.24994482 -3.55646992 66.61030518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-9.56538522 74.13376315 -8.23252478 74.49412351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-9.5752301 74.12941315 -8.2427299 74.48977351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-10.25466949 74.05898315 -8.92797385 74.41934351]\n", + "[-9.51456109 73.51931649 -8.23065558 73.87967685]\n", + "[-9.23173849 73.47453649 -7.95125485 73.83489685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-0.54519388 64.41841315 0.29489055 64.77877351]\n", + "[-0.16427637 64.20238815 0.66919637 64.56274851]\n", + "[-0.64608557 64.16602315 0.18628557 64.52638351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[ 4.62429951 71.35450982 5.76205049 71.71487018]\n", + "[ 1.93164613 70.10467315 2.99987387 70.46503351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-0.10764527 69.68404315 0.93916527 70.04440351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-10.64563346 74.49673982 -9.28198321 74.85710018]\n", + "[-15.72555382 72.90975815 -14.48664952 73.27011851]\n", + "[-15.80378643 72.53606982 -14.59087691 72.89643018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.90212319 57.12311849 20.56922015 57.48347885]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.74528201 57.15322782 20.41292565 57.51358818]\n", + "[17.7606458 41.35048149 18.2420242 41.71084185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.61400682 41.23113815 18.09449984 41.59149851]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.60306692 41.20224815 18.08334642 41.56260851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[18.09518734 41.55816815 18.57811932 41.91852851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.86211759 41.80434482 18.34691241 42.16470518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.38872929 41.89431149 17.87421071 42.25467185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[17.35723727 40.96011649 17.83573939 41.32047685]\n", + "[-10.45509636 -6.25603018 -10.0927003 -5.89566982]\n", + "[-14.33939943 -7.60268185 -13.97599391 -7.24232149]\n", + "[-23.15637519 -0.16469185 -22.79601481 0.19566851]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-23.03158359 -0.23431851 -22.67122307 0.12604185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[-18.37238788 0.58396649 -18.01199546 0.94432685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.75042158 57.12476482 20.41754842 57.48512518]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.72795497 57.11440999 20.39489403 57.47477035]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.74523038 57.17345982 20.41324196 57.53382018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.50312766 57.32916449 20.17398734 57.68952485]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.56903042 57.31551432 20.23963924 57.67587468]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.2352683 57.04145715 19.90088804 57.40181751]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.23365384 57.05554282 19.89952782 57.41590318]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.32754473 57.09088199 19.99405761 57.45124235]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.23170277 57.05632599 19.89759089 57.41668635]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.52135063 56.99549399 20.18614237 57.35585435]\n", + "[19.61869189 56.97185532 20.28305877 57.33221568]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.93160368 57.48771165 20.60539366 57.84807201]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[19.80919973 57.64782232 20.48598027 58.00818268]\n", + "[32.66485451 43.70512649 33.16484883 44.06548685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[32.60907058 43.70923982 33.10909942 44.06960018]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[31.80195773 43.56325315 32.30076561 43.92361351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[31.6333931 43.61909315 32.1326669 43.97945351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[31.6253417 43.82061815 32.1263083 44.18097851]\n", + "[31.40769827 43.90336649 31.90936507 44.26372685]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[31.49653061 43.88826315 31.99806939 44.24862351]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", + "[31.02959145 43.76731149 31.53010855 44.12767185]\n", + "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n" + ] + } + ], + "source": [ + "import csv\n", + "import numpy as np\n", + "import icepyx as ipx # Make sure you have installed and are importing icepyx\n", + "from datetime import datetime, timedelta\n", + "\n", + "# Set ATL parameters\n", + "short_name = 'ATL03'\n", + "\n", + "num_eff=0\n", + "\n", + "time_dif=1 #days\n", + "\n", + "# Open the CSV file for writing\n", + "output_csv_path = path+'granule_data_24hs_20km.csv'\n", + "with open(output_csv_path, 'w', newline='') as csvfile:\n", + " # Define the CSV column names\n", + " fieldnames = ['latitude', 'longitude', 'date', 'kd_par', 'granule_id']\n", + " # Create a CSV writer object\n", + " writer = csv.DictWriter(csvfile, fieldnames=fieldnames)\n", + " # Write the header to the CSV file\n", + " writer.writeheader()\n", + " \n", + " # Loop through the BGC_ArgoDateInfo array\n", + " # Each element is a tuple in the form (latitude, longitude, kd_par, collected_date)\n", + " for lat, lon, kd_par, formatted_date in unique_BGC_ArgoDateInfoArr:\n", + " \n", + " # Convert latitude and longitude to float if they are not already\n", + " lat = float(lat)\n", + " lon = float(lon)\n", + "\n", + " # Calculate 20 km in degrees for latitude and longitude\n", + " # A degree of latitude is approximately 111 kilometers (km) and longitude varies based on latitude\n", + " # but for simplicity we'll use an average for 20 km which will slightly overestimate the extent\n", + " km_in_deg_lat = 20 / 111\n", + " km_in_deg_lon = 20 / (111 * np.cos(np.radians(lat))) # Adjust for the longitude\n", + "\n", + " minx = lon - km_in_deg_lon\n", + " miny = lat - km_in_deg_lat\n", + " maxx = lon + km_in_deg_lon\n", + " maxy = lat + km_in_deg_lat\n", + "\n", + " # Set spatial extent\n", + " spatial_extent = np.array([minx, miny, maxx, maxy])\n", + " print(spatial_extent)\n", + "\n", + " # Calculate the date range, 24 hours on either side of the specified date\n", + " central_date = datetime.strptime(formatted_date, '%Y-%m-%d')\n", + " start_date = (central_date - timedelta(days=time_dif)).strftime('%Y-%m-%d')\n", + " end_date = (central_date + timedelta(days=time_dif)).strftime('%Y-%m-%d')\n", + " date_range = [start_date, end_date]\n", + " \n", + "# print(short_name,date_range) \n", + "\n", + " # Create a query instance for the ATL03 dataset\n", + " reg = ipx.Query(short_name, spatial_extent, date_range,version='006')\n", + " \n", + " # Get granule IDs\n", + " try:\n", + " \n", + " #get granules IDS\n", + " gran_ids = reg.avail_granules(ids=True, cloud=False)\n", + " \n", + " if gran_ids: \n", + " num_eff+=1\n", + "# print(num_eff)\n", + " \n", + " # Write each granule ID to the CSV file along with the latitude, longitude, and date\n", + " for gran_id in gran_ids:\n", + " writer.writerow({\n", + " 'latitude': lat,\n", + " 'longitude': lon,\n", + " 'date': formatted_date, \n", + " 'kd_par':kd_par,\n", + " 'granule_id': gran_id\n", + " })\n", + " \n", + " \n", + " except AssertionError as e:\n", + " # Handle the assertion error or pass\n", + " print(f\"An error occurred: {e}. Continuing with next item.\")\n", + " # Optionally, pass if you want to do nothing and just continue\n", + " # pass\n", + "\n", + " except AttributeError as e:\n", + " # Handle the attribute error or pass\n", + " print(f\"An error occurred: {e}. Continuing with next item.\")\n", + " # Optionally, pass if you want to do nothing and just continue\n", + " # pass\n", + "\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "id": "b03dc6ce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "96" + ] + }, + "execution_count": 192, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "num_eff" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "id": "e82cd2de", + "metadata": {}, + "outputs": [], + "source": [ + "reg = ipx.Query(short_name, spatial_extent, date_range,version='006')" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "f39c4afe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['2020-10-14', '2020-10-18']" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "date_range" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "id": "686d8e9e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 182, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reg" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "id": "14e49b8d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['2019-09-11', '2019-09-15']" + ] + }, + "execution_count": 164, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "array([-90.0905, 29.136 , -90.0865, 29.14 ])" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "id": "5be97375", + "metadata": {}, + "outputs": [], + "source": [ + "gran_ids = reg.avail_granules(ids=True, cloud=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "id": "ce7497e2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['ATL03_20201016102936_03400902_006_01.h5']]" + ] + }, + "execution_count": 184, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gran_ids" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "id": "5209e40c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.046954055988112704" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "km_in_deg_lon" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6cc44e4d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb b/icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb new file mode 100644 index 0000000..f2344aa --- /dev/null +++ b/icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb @@ -0,0 +1,369 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "3d6b3418-01b5-4546-ba53-175e3ad50d55", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Imports\n", + "import matplotlib.pyplot as plt\n", + "from sliderule import sliderule, icesat2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2e7c4e03-2993-4ff3-9beb-0a815328ae02", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Configure ICESat-2 API\n", + "icesat2.init(\"slideruleearth.io\", verbose=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "23d6327c-1b96-4a80-8843-adc760fba0e0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Area of Interest\n", + "region = sliderule.toregion('grandmesa.geojson')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c7dc7f2e-c8a3-4745-a8f5-7d28af1e0449", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Build ATL06 Request\n", + "parms = {\n", + " \"poly\": region[\"poly\"],\n", + " \"srt\": icesat2.SRT_LAND,\n", + " \"cnf\": icesat2.CNF_SURFACE_HIGH,\n", + " \"ats\": 10.0,\n", + " \"cnt\": 10,\n", + " \"len\": 40.0,\n", + " \"res\": 20.0,\n", + " \"atl03_geo_fields\": [\"dem_h\"]\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "fcf33b7a-026e-425e-8e6c-9887b9896138", + "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", + "
h_meangtregionpflagscycledh_fit_dxy_atcx_atch_sigmarms_misfitw_surface_window_finalrgtspotn_fit_photonssegment_idgeometrydem_h
time
2018-10-16 10:49:21.1770042881932.724302106010.03366744675.37890615708287.00.1117450.6042523.642701272631784256POINT (-108.05598 39.17009)1934.513398
2018-10-16 10:49:21.1800204801934.069145106010.08785444674.81640615708307.00.0953910.6629354.146861272652784257POINT (-108.05601 39.16991)1936.373667
2018-10-16 10:49:21.1834009601935.859843106010.08111044674.15625015708327.00.0859680.5899854.299329272649784258POINT (-108.05605 39.16971)1938.076879
2018-10-16 10:49:21.1863943681937.363736106010.08548944673.57812515708347.00.1035110.5528294.377315272629784259POINT (-108.05608 39.16953)1940.455453
2018-10-16 10:49:21.1893836801939.724812106010.15673144672.92187515708367.00.2288361.1055995.491649272624784260POINT (-108.05611 39.16935)1942.912454
\n", + "
" + ], + "text/plain": [ + " h_mean gt region pflags cycle \\\n", + "time \n", + "2018-10-16 10:49:21.177004288 1932.724302 10 6 0 1 \n", + "2018-10-16 10:49:21.180020480 1934.069145 10 6 0 1 \n", + "2018-10-16 10:49:21.183400960 1935.859843 10 6 0 1 \n", + "2018-10-16 10:49:21.186394368 1937.363736 10 6 0 1 \n", + "2018-10-16 10:49:21.189383680 1939.724812 10 6 0 1 \n", + "\n", + " dh_fit_dx y_atc x_atc h_sigma \\\n", + "time \n", + "2018-10-16 10:49:21.177004288 0.033667 44675.378906 15708287.0 0.111745 \n", + "2018-10-16 10:49:21.180020480 0.087854 44674.816406 15708307.0 0.095391 \n", + "2018-10-16 10:49:21.183400960 0.081110 44674.156250 15708327.0 0.085968 \n", + "2018-10-16 10:49:21.186394368 0.085489 44673.578125 15708347.0 0.103511 \n", + "2018-10-16 10:49:21.189383680 0.156731 44672.921875 15708367.0 0.228836 \n", + "\n", + " rms_misfit w_surface_window_final rgt spot \\\n", + "time \n", + "2018-10-16 10:49:21.177004288 0.604252 3.642701 272 6 \n", + "2018-10-16 10:49:21.180020480 0.662935 4.146861 272 6 \n", + "2018-10-16 10:49:21.183400960 0.589985 4.299329 272 6 \n", + "2018-10-16 10:49:21.186394368 0.552829 4.377315 272 6 \n", + "2018-10-16 10:49:21.189383680 1.105599 5.491649 272 6 \n", + "\n", + " n_fit_photons segment_id \\\n", + "time \n", + "2018-10-16 10:49:21.177004288 31 784256 \n", + "2018-10-16 10:49:21.180020480 52 784257 \n", + "2018-10-16 10:49:21.183400960 49 784258 \n", + "2018-10-16 10:49:21.186394368 29 784259 \n", + "2018-10-16 10:49:21.189383680 24 784260 \n", + "\n", + " geometry dem_h \n", + "time \n", + "2018-10-16 10:49:21.177004288 POINT (-108.05598 39.17009) 1934.513398 \n", + "2018-10-16 10:49:21.180020480 POINT (-108.05601 39.16991) 1936.373667 \n", + "2018-10-16 10:49:21.183400960 POINT (-108.05605 39.16971) 1938.076879 \n", + "2018-10-16 10:49:21.186394368 POINT (-108.05608 39.16953) 1940.455453 \n", + "2018-10-16 10:49:21.189383680 POINT (-108.05611 39.16935) 1942.912454 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Request ATL06 Data\n", + "atl06 = icesat2.atl06p(parms)\n", + "atl06.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6af9de57-1bc5-4163-abe0-f5bddd2207e2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Display Statistics\n", + "print(\"Reference Ground Tracks: {}\".format(atl06[\"rgt\"].unique()))\n", + "print(\"Cycles: {}\".format(atl06[\"cycle\"].unique()))\n", + "print(\"Received {} elevations\".format(atl06.shape[0]))\n", + "print(\"Timing Profiles\")\n", + "for key in icesat2.profiles:\n", + " print(\"{:20} {:.6f} secs\".format(key + \":\", icesat2.profiles[key]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47b48f46-8c12-4796-bd0f-8f26b6d5fbe3", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Build Delta Column\n", + "atl06[\"h_delta\"] = atl06[\"h_mean\"] - atl06[\"dem_h\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "96aacc09-79a4-48bb-8287-8703f217aae6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Plot Heights\n", + "f, ax = plt.subplots(1, 2)\n", + "ax[0].set_title(\"h_mean\")\n", + "atl06.plot(ax=ax[0], column='h_mean', cmap='inferno', s=0.1)\n", + "ax[1].set_title(\"h_delta\")\n", + "atl06.plot(ax=ax[1], column='h_delta', cmap='inferno', s=0.1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1d0ecee5-9d52-4370-a258-411fbb0b7626", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb b/icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb new file mode 100644 index 0000000..c38421a --- /dev/null +++ b/icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb @@ -0,0 +1,289 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "e243172d-a731-4f1a-ae97-7c7a1fd63757", + "metadata": { + "tags": [], + "user_expressions": [] + }, + "source": [ + "# ATL06 Subsetting and On-Demand Product Generation" + ] + }, + { + "cell_type": "markdown", + "id": "a824b4cc-e7a1-4d4e-be55-13f3a6c8e96e", + "metadata": { + "user_expressions": [] + }, + "source": [ + "### Purpose\n", + "Subset ATL06 granule and compare against on-demand generated ATL06 elevations using SlideRule" + ] + }, + { + "cell_type": "markdown", + "id": "e5e2efc2-078a-4e37-8083-75994ebf62e8", + "metadata": { + "tags": [], + "user_expressions": [] + }, + "source": [ + "#### Import Packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "338d80d9-e8f7-40ec-a294-683562437f69", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from sliderule import sliderule, icesat2, earthdata" + ] + }, + { + "cell_type": "markdown", + "id": "7dc950a2-4b0c-4c8f-b7cc-ea6092f8c96e", + "metadata": { + "tags": [], + "user_expressions": [] + }, + "source": [ + "#### Configure Logging" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "73e23172-83d2-4bd7-a2e9-84b9ac296037", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "import logging\n", + "loglevel = logging.CRITICAL\n", + "logging.basicConfig(level=loglevel)" + ] + }, + { + "cell_type": "markdown", + "id": "613b066a-fbda-4583-a29c-dbe35c182252", + "metadata": { + "tags": [], + "user_expressions": [] + }, + "source": [ + "#### Initialize SlideRule Python Client" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ca128df-4ff0-4b95-ae40-d0a040c9a9db", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "domain = \"slideruleearth.io\"\n", + "sliderule.init(domain, verbose=True, loglevel=loglevel)" + ] + }, + { + "cell_type": "markdown", + "id": "95e29e39-bef3-4312-8498-f037267da964", + "metadata": { + "tags": [], + "user_expressions": [] + }, + "source": [ + "#### Build Request Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f58197d-5265-4c83-bc62-6049ace71538", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "granule = '_20181016104402_02720106_006_02.h5'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "07da0425-2ebf-41aa-b84d-8f27a508cdbe", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "region = sliderule.toregion(\"../data/grandmesa.geojson\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3f01b208-4665-47c0-90e3-95834cc61338", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "parms = {\n", + " \"poly\": region[\"poly\"],\n", + " \"srt\": icesat2.SRT_LAND,\n", + " \"cnf\": icesat2.CNF_SURFACE_HIGH,\n", + " \"ats\": 10.0,\n", + " \"cnt\": 10,\n", + " \"len\": 40.0,\n", + " \"res\": 20.0\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "90bb8070-d857-424a-a100-d1ea32631e82", + "metadata": { + "tags": [], + "user_expressions": [] + }, + "source": [ + "#### Make ATL06 Subsetting Request" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ecc3f250-0785-4630-a261-13d12ab59819", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sdp = icesat2.atl06sp(parms, resources=['ATL06'+granule])\n", + "sdp" + ] + }, + { + "cell_type": "markdown", + "id": "a0f5c12e-c439-4549-ae7d-61af9954787b", + "metadata": { + "user_expressions": [] + }, + "source": [ + "#### Make ATL06 On-Demand Request" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d5128cac-5df0-4102-91e5-bb65cce7e0f2", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "sr = icesat2.atl06p(parms, resources=['ATL03_20181016104402_02720106_006_02.h5'])\n", + "sr" + ] + }, + { + "cell_type": "markdown", + "id": "0b5a2b18-f3fb-48bc-90d2-53350638d1dc", + "metadata": { + "tags": [], + "user_expressions": [] + }, + "source": [ + "#### Plot Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "61c365cf-6bab-408c-8b2f-49a3d896692b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Import Plotting Library\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64bc423d-2348-4217-804f-63119ff71d16", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# Setup Plot\n", + "fig,ax = plt.subplots(num=None, figsize=(10, 8))\n", + "fig.set_facecolor('white')\n", + "fig.canvas.header_visible = False\n", + "ax.set_title(\"SlideRule vs. Standard Data Product Elevations\")\n", + "ax.set_xlabel('UTC')\n", + "ax.set_ylabel('height (m)')\n", + "legend_elements = []\n", + "\n", + "# Plot SlideRule ATL06 Elevations\n", + "sc1 = ax.scatter(sr.index.values, sr[\"h_mean\"].values, c='red', s=2.5)\n", + "legend_elements.append(matplotlib.lines.Line2D([0], [0], color='red', lw=6, label='SR'))\n", + "\n", + "# Plot SDP ATL06 Elevations\n", + "sc2 = ax.scatter(sdp.index.values, sdp[\"h_li\"].values, c='blue', s=2.5)\n", + "legend_elements.append(matplotlib.lines.Line2D([0], [0], color='blue', lw=6, label='SDP'))\n", + "\n", + "# Display Legend\n", + "lgd = ax.legend(handles=legend_elements, loc=3, frameon=True)\n", + "lgd.get_frame().set_alpha(1.0)\n", + "lgd.get_frame().set_edgecolor('white')\n", + "\n", + "# Show Plot\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "04137254-5356-4f1d-9438-2126063f2258", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb b/icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb new file mode 100644 index 0000000..faf5751 --- /dev/null +++ b/icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb @@ -0,0 +1,798 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 12, + "id": "141611e8", + "metadata": {}, + "outputs": [], + "source": [ + "from erddapy import ERDDAP\n", + "import pandas as pd\n", + "# Import the urllib library\n", + "import urllib.request\n", + "\n", + "\n", + "# dir(ep.multiple_server_search)\n", + "# help(erddapy)\n", + "# ep.servers" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "66e680b6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('/Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data/bcodmo_dataset_815732.csv',\n", + " )" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# EXAMPLE: if you want to download the data to your computer\n", + "\n", + "#define the url you want to download\n", + "download_url = \"https://erddap.bco-dmo.org/erddap/tabledap/bcodmo_dataset_783911.csv?Station,time,Temperature,latitude,longitude&Temperature%3E=0&Temperature%3C=2\"\n", + "# Define where you want to save the file on your computer\n", + "save_path = '/Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data/'\n", + "name_to_save = \"bcodmo_dataset_815732.csv\"\n", + "\n", + "# download the dataset \n", + "urllib.request.urlretrieve(download_url, save_path+name_to_save)\n", + "\n", + "# Import the downloaded .csv data into jupyter notebooks with the package Pandas\n", + "dataframe = pd.read_csv(save_path+name_to_save, dtype='unicode')\n", + "print (dataframe)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bfaa6aae", + "metadata": {}, + "outputs": [], + "source": [ + "# EXAMPLE: if you want to read the data directly into python \n", + "\n", + "e.dataset_id = \"bcodmo_dataset_817952\"\n", + "e.variables = [\n", + " \"longitude\",\n", + " \"latitude\",\n", + " \"time\",\n", + " \"Temperature\"\n", + "]\n", + "e.constraints = {\n", + " \"time>=\": \"2017-01-13T00:00:00Z\",\n", + " \"time<=\": \"2017-01-16T23:59:59Z\",}\n", + "\n", + "url = e.get_download_url()\n", + "df_bcodmo = e.to_pandas( \n", + " parse_dates=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "082b15f9", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Row Type Variable Name Attribute Name \\\n", + "0 attribute NC_GLOBAL access_formats \n", + "1 attribute NC_GLOBAL acquisition_description \n", + "2 attribute NC_GLOBAL awards_0_award_nid \n", + "3 attribute NC_GLOBAL awards_0_award_number \n", + "4 attribute NC_GLOBAL awards_0_data_url \n", + "5 attribute NC_GLOBAL awards_0_funder_name \n", + "6 attribute NC_GLOBAL awards_0_funding_acronym \n", + "7 attribute NC_GLOBAL awards_0_funding_source_nid \n", + "8 attribute NC_GLOBAL awards_0_program_manager \n", + "9 attribute NC_GLOBAL awards_0_program_manager_nid \n", + "10 attribute NC_GLOBAL cdm_data_type \n", + "11 attribute NC_GLOBAL comment \n", + "12 attribute NC_GLOBAL Conventions \n", + "13 attribute NC_GLOBAL creator_email \n", + "14 attribute NC_GLOBAL creator_name \n", + "15 attribute NC_GLOBAL creator_type \n", + "16 attribute NC_GLOBAL creator_url \n", + "17 attribute NC_GLOBAL data_source \n", + "18 attribute NC_GLOBAL date_created \n", + "19 attribute NC_GLOBAL date_modified \n", + "20 attribute NC_GLOBAL defaultDataQuery \n", + "21 attribute NC_GLOBAL doi \n", + "22 attribute NC_GLOBAL Easternmost_Easting \n", + "23 attribute NC_GLOBAL geospatial_lat_max \n", + "24 attribute NC_GLOBAL geospatial_lat_min \n", + "25 attribute NC_GLOBAL geospatial_lat_units \n", + "26 attribute NC_GLOBAL geospatial_lon_max \n", + "27 attribute NC_GLOBAL geospatial_lon_min \n", + "28 attribute NC_GLOBAL geospatial_lon_units \n", + "29 attribute NC_GLOBAL geospatial_vertical_max \n", + "30 attribute NC_GLOBAL geospatial_vertical_min \n", + "31 attribute NC_GLOBAL geospatial_vertical_positive \n", + "32 attribute NC_GLOBAL geospatial_vertical_units \n", + "33 attribute NC_GLOBAL infoUrl \n", + "34 attribute NC_GLOBAL institution \n", + "35 attribute NC_GLOBAL instruments_0_acronym \n", + "36 attribute NC_GLOBAL instruments_0_dataset_instrument_description \n", + "37 attribute NC_GLOBAL instruments_0_dataset_instrument_nid \n", + "38 attribute NC_GLOBAL instruments_0_description \n", + "39 attribute NC_GLOBAL instruments_0_instrument_external_identifier \n", + "40 attribute NC_GLOBAL instruments_0_instrument_name \n", + "41 attribute NC_GLOBAL instruments_0_instrument_nid \n", + "42 attribute NC_GLOBAL instruments_0_supplied_name \n", + "43 attribute NC_GLOBAL keywords \n", + "44 attribute NC_GLOBAL keywords_vocabulary \n", + "45 attribute NC_GLOBAL license \n", + "46 attribute NC_GLOBAL metadata_source \n", + "47 attribute NC_GLOBAL Northernmost_Northing \n", + "48 attribute NC_GLOBAL param_mapping \n", + "49 attribute NC_GLOBAL parameter_source \n", + "50 attribute NC_GLOBAL people_0_affiliation \n", + "51 attribute NC_GLOBAL people_0_affiliation_acronym \n", + "52 attribute NC_GLOBAL people_0_person_name \n", + "53 attribute NC_GLOBAL people_0_person_nid \n", + "54 attribute NC_GLOBAL people_0_role \n", + "55 attribute NC_GLOBAL people_0_role_type \n", + "56 attribute NC_GLOBAL people_1_affiliation \n", + "57 attribute NC_GLOBAL people_1_affiliation_acronym \n", + "58 attribute NC_GLOBAL people_1_person_name \n", + "59 attribute NC_GLOBAL people_1_person_nid \n", + "60 attribute NC_GLOBAL people_1_role \n", + "61 attribute NC_GLOBAL people_1_role_type \n", + "62 attribute NC_GLOBAL people_2_affiliation \n", + "63 attribute NC_GLOBAL people_2_affiliation_acronym \n", + "64 attribute NC_GLOBAL people_2_person_name \n", + "65 attribute NC_GLOBAL people_2_person_nid \n", + "66 attribute NC_GLOBAL people_2_role \n", + "67 attribute NC_GLOBAL people_2_role_type \n", + "68 attribute NC_GLOBAL project \n", + "69 attribute NC_GLOBAL projects_0_acronym \n", + "70 attribute NC_GLOBAL projects_0_description \n", + "71 attribute NC_GLOBAL projects_0_end_date \n", + "72 attribute NC_GLOBAL projects_0_geolocation \n", + "73 attribute NC_GLOBAL projects_0_name \n", + "74 attribute NC_GLOBAL projects_0_project_nid \n", + "75 attribute NC_GLOBAL projects_0_project_website \n", + "76 attribute NC_GLOBAL projects_0_start_date \n", + "77 attribute NC_GLOBAL publisher_name \n", + "78 attribute NC_GLOBAL publisher_type \n", + "79 attribute NC_GLOBAL sourceUrl \n", + "80 attribute NC_GLOBAL Southernmost_Northing \n", + "81 attribute NC_GLOBAL standard_name_vocabulary \n", + "82 attribute NC_GLOBAL subsetVariables \n", + "83 attribute NC_GLOBAL summary \n", + "84 attribute NC_GLOBAL time_coverage_end \n", + "85 attribute NC_GLOBAL time_coverage_start \n", + "86 attribute NC_GLOBAL title \n", + "87 attribute NC_GLOBAL version \n", + "88 attribute NC_GLOBAL Westernmost_Easting \n", + "89 attribute NC_GLOBAL xml_source \n", + "90 variable file_name NaN \n", + "91 attribute file_name bcodmo_name \n", + "92 attribute file_name description \n", + "93 attribute file_name long_name \n", + "94 attribute file_name units \n", + "95 variable latitude NaN \n", + "96 attribute latitude _CoordinateAxisType \n", + "97 attribute latitude _FillValue \n", + "98 attribute latitude actual_range \n", + "99 attribute latitude axis \n", + "100 attribute latitude bcodmo_name \n", + "101 attribute latitude colorBarMaximum \n", + "102 attribute latitude colorBarMinimum \n", + "103 attribute latitude description \n", + "104 attribute latitude ioos_category \n", + "105 attribute latitude long_name \n", + "106 attribute latitude nerc_identifier \n", + "107 attribute latitude standard_name \n", + "108 attribute latitude units \n", + "109 variable longitude NaN \n", + "110 attribute longitude _CoordinateAxisType \n", + "111 attribute longitude _FillValue \n", + "112 attribute longitude actual_range \n", + "113 attribute longitude axis \n", + "114 attribute longitude bcodmo_name \n", + "115 attribute longitude colorBarMaximum \n", + "116 attribute longitude colorBarMinimum \n", + "117 attribute longitude description \n", + "118 attribute longitude ioos_category \n", + "119 attribute longitude long_name \n", + "120 attribute longitude nerc_identifier \n", + "121 attribute longitude standard_name \n", + "122 attribute longitude units \n", + "123 variable time NaN \n", + "124 attribute time _CoordinateAxisType \n", + "125 attribute time actual_range \n", + "126 attribute time axis \n", + "127 attribute time bcodmo_name \n", + "128 attribute time description \n", + "129 attribute time ioos_category \n", + "130 attribute time long_name \n", + "131 attribute time nerc_identifier \n", + "132 attribute time source_name \n", + "133 attribute time standard_name \n", + "134 attribute time time_origin \n", + "135 attribute time time_precision \n", + "136 attribute time units \n", + "137 variable prDM NaN \n", + "138 attribute prDM _FillValue \n", + "139 attribute prDM actual_range \n", + "140 attribute prDM bcodmo_name \n", + "141 attribute prDM description \n", + "142 attribute prDM long_name \n", + "143 attribute prDM nerc_identifier \n", + "144 attribute prDM units \n", + "145 variable t090C NaN \n", + "146 attribute t090C _FillValue \n", + "147 attribute t090C actual_range \n", + "148 attribute t090C bcodmo_name \n", + "149 attribute t090C description \n", + "150 attribute t090C long_name \n", + "151 attribute t090C nerc_identifier \n", + "152 attribute t090C units \n", + "153 variable t190C NaN \n", + "154 attribute t190C _FillValue \n", + "155 attribute t190C actual_range \n", + "156 attribute t190C bcodmo_name \n", + "157 attribute t190C description \n", + "158 attribute t190C long_name \n", + "159 attribute t190C nerc_identifier \n", + "160 attribute t190C units \n", + "161 variable c0S_m NaN \n", + "162 attribute c0S_m _FillValue \n", + "163 attribute c0S_m actual_range \n", + "164 attribute c0S_m bcodmo_name \n", + "165 attribute c0S_m description \n", + "166 attribute c0S_m long_name \n", + "167 attribute c0S_m nerc_identifier \n", + "168 attribute c0S_m units \n", + "169 variable c1S_m NaN \n", + "170 attribute c1S_m _FillValue \n", + "171 attribute c1S_m actual_range \n", + "172 attribute c1S_m bcodmo_name \n", + "173 attribute c1S_m description \n", + "174 attribute c1S_m long_name \n", + "175 attribute c1S_m nerc_identifier \n", + "176 attribute c1S_m units \n", + "177 variable sbeox0V NaN \n", + "178 attribute sbeox0V _FillValue \n", + "179 attribute sbeox0V actual_range \n", + "180 attribute sbeox0V bcodmo_name \n", + "181 attribute sbeox0V description \n", + "182 attribute sbeox0V long_name \n", + "183 attribute sbeox0V units \n", + "184 variable flECO_AFL NaN \n", + "185 attribute flECO_AFL _FillValue \n", + "186 attribute flECO_AFL actual_range \n", + "187 attribute flECO_AFL bcodmo_name \n", + "188 attribute flECO_AFL description \n", + "189 attribute flECO_AFL long_name \n", + "190 attribute flECO_AFL nerc_identifier \n", + "191 attribute flECO_AFL units \n", + "192 variable turbWETntu0 NaN \n", + "193 attribute turbWETntu0 _FillValue \n", + "194 attribute turbWETntu0 actual_range \n", + "195 attribute turbWETntu0 bcodmo_name \n", + "196 attribute turbWETntu0 description \n", + "197 attribute turbWETntu0 long_name \n", + "198 attribute turbWETntu0 units \n", + "199 variable sal00_D NaN \n", + "200 attribute sal00_D _FillValue \n", + "201 attribute sal00_D actual_range \n", + "202 attribute sal00_D bcodmo_name \n", + "203 attribute sal00_D description \n", + "204 attribute sal00_D long_name \n", + "205 attribute sal00_D nerc_identifier \n", + "206 attribute sal00_D units \n", + "207 variable spar NaN \n", + "208 attribute spar _FillValue \n", + "209 attribute spar actual_range \n", + "210 attribute spar bcodmo_name \n", + "211 attribute spar description \n", + "212 attribute spar long_name \n", + "213 attribute spar units \n", + "214 variable par NaN \n", + "215 attribute par _FillValue \n", + "216 attribute par actual_range \n", + "217 attribute par bcodmo_name \n", + "218 attribute par colorBarMaximum \n", + "219 attribute par colorBarMinimum \n", + "220 attribute par description \n", + "221 attribute par long_name \n", + "222 attribute par units \n", + "223 variable cpar NaN \n", + "224 attribute cpar _FillValue \n", + "225 attribute cpar actual_range \n", + "226 attribute cpar bcodmo_name \n", + "227 attribute cpar description \n", + "228 attribute cpar long_name \n", + "229 attribute cpar units \n", + "230 variable depth NaN \n", + "231 attribute depth _CoordinateAxisType \n", + "232 attribute depth _CoordinateZisPositive \n", + "233 attribute depth _FillValue \n", + "234 attribute depth actual_range \n", + "235 attribute depth axis \n", + "236 attribute depth bcodmo_name \n", + "237 attribute depth description \n", + "238 attribute depth ioos_category \n", + "239 attribute depth long_name \n", + "240 attribute depth nerc_identifier \n", + "241 attribute depth positive \n", + "242 attribute depth standard_name \n", + "243 attribute depth units \n", + "244 variable sal00 NaN \n", + "245 attribute sal00 _FillValue \n", + "246 attribute sal00 actual_range \n", + "247 attribute sal00 bcodmo_name \n", + "248 attribute sal00 description \n", + "249 attribute sal00 long_name \n", + "250 attribute sal00 nerc_identifier \n", + "251 attribute sal00 units \n", + "252 variable sal11 NaN \n", + "253 attribute sal11 _FillValue \n", + "254 attribute sal11 actual_range \n", + "255 attribute sal11 bcodmo_name \n", + "256 attribute sal11 description \n", + "257 attribute sal11 long_name \n", + "258 attribute sal11 nerc_identifier \n", + "259 attribute sal11 units \n", + "260 variable sbeox0ML_L NaN \n", + "261 attribute sbeox0ML_L _FillValue \n", + "262 attribute sbeox0ML_L actual_range \n", + "263 attribute sbeox0ML_L bcodmo_name \n", + "264 attribute sbeox0ML_L description \n", + "265 attribute sbeox0ML_L long_name \n", + "266 attribute sbeox0ML_L units \n", + "267 variable svCM NaN \n", + "268 attribute svCM _FillValue \n", + "269 attribute svCM actual_range \n", + "270 attribute svCM bcodmo_name \n", + "271 attribute svCM description \n", + "272 attribute svCM long_name \n", + "273 attribute svCM units \n", + "274 variable sigma_e00 NaN \n", + "275 attribute sigma_e00 _FillValue \n", + "276 attribute sigma_e00 actual_range \n", + "277 attribute sigma_e00 bcodmo_name \n", + "278 attribute sigma_e00 description \n", + "279 attribute sigma_e00 long_name \n", + "280 attribute sigma_e00 nerc_identifier \n", + "281 attribute sigma_e00 units \n", + "282 variable sigma_e11 NaN \n", + "283 attribute sigma_e11 _FillValue \n", + "284 attribute sigma_e11 actual_range \n", + "285 attribute sigma_e11 bcodmo_name \n", + "286 attribute sigma_e11 description \n", + "287 attribute sigma_e11 long_name \n", + "288 attribute sigma_e11 nerc_identifier \n", + "289 attribute sigma_e11 units \n", + "290 variable flag NaN \n", + "291 attribute flag _FillValue \n", + "292 attribute flag actual_range \n", + "293 attribute flag bcodmo_name \n", + "294 attribute flag colorBarMaximum \n", + "295 attribute flag colorBarMinimum \n", + "296 attribute flag description \n", + "297 attribute flag long_name \n", + "298 attribute flag units \n", + "\n", + " Data Type Value \n", + "0 String .htmlTable,.csv,.json,.mat,.nc,.tsv,.esriCsv,.... \n", + "1 String Standard CTD cast. \n", + "2 String 748850 \n", + "3 String OCE-1657803 \n", + "4 String https://www.nsf.gov/awardsearch/showAward?AWD_... \n", + "5 String NSF Division of Ocean Sciences \n", + "6 String NSF OCE \n", + "7 String 355 \n", + "8 String David L. Garrison \n", + "9 String 50534 \n", + "10 String Other \n", + "11 String CTD casts from the first cruise of SPIROPA pro... \n", + "12 String COARDS, CF-1.6, ACDD-1.3 \n", + "13 String info@bco-dmo.org \n", + "14 String BCO-DMO \n", + "15 String institution \n", + "16 String https://www.bco-dmo.org/ \n", + "17 String extract_data_as_tsv version 2.3 19 Dec 2019 \n", + "18 String 2020-03-27T19:41:31Z \n", + "19 String 2020-04-08T15:03:33Z \n", + "20 String &time<now \n", + "21 String 10.26008/1912/bco-dmo.807119.1 \n", + "22 double -70.814 \n", + "23 double 40.2705 \n", + "24 double 39.6215 \n", + "25 String degrees_north \n", + "26 double -70.814 \n", + "27 double -70.82983 \n", + "28 String degrees_east \n", + "29 double 305.414 \n", + "30 double 1.985 \n", + "31 String down \n", + "32 String m \n", + "33 String https://www.bco-dmo.org/dataset/807119 \n", + "34 String BCO-DMO \n", + "35 String CTD SBE 9 \n", + "36 String Sea-Bird SBE 9 \n", + "37 String 807126 \n", + "38 String The Sea-Bird SBE 9 is a type of CTD instrument... \n", + "39 String https://vocab.nerc.ac.uk/collection/L05/curren... \n", + "40 String CTD Sea-Bird 9 \n", + "41 String 488 \n", + "42 String Sea-Bird SBE 9 \n", + "43 String active, afl, available, bco, bco-dmo, biologic... \n", + "44 String GCMD Science Keywords \n", + "45 String https://www.bco-dmo.org/dataset/807119/license \n", + "46 String https://www.bco-dmo.org/api/dataset/807119 \n", + "47 double 40.2705 \n", + "48 String {'807119': {'lat': 'flag - latitude', 'lon': '... \n", + "49 String https://www.bco-dmo.org/mapserver/dataset/8071... \n", + "50 String Woods Hole Oceanographic Institution \n", + "51 String WHOI \n", + "52 String Dennis J. McGillicuddy \n", + "53 String 50429 \n", + "54 String Principal Investigator \n", + "55 String originator \n", + "56 String Woods Hole Oceanographic Institution \n", + "57 String WHOI \n", + "58 String Weifeng Gordon Zhang \n", + "59 String 748839 \n", + "60 String Co-Principal Investigator \n", + "61 String originator \n", + "62 String Woods Hole Oceanographic Institution \n", + "63 String WHOI BCO-DMO \n", + "64 String Mathew Biddle \n", + "65 String 708682 \n", + "66 String BCO-DMO Data Manager \n", + "67 String related \n", + "68 String SPIROPA \n", + "69 String SPIROPA \n", + "70 String NSF award abstract:\\nThe continental shelf bre... \n", + "71 String 2020-09 \n", + "72 String Shelf break south of New England, OOI Pioneer ... \n", + "73 String Collaborative Research: Shelfbreak Frontal Dy... \n", + "74 String 748894 \n", + "75 String http://science.whoi.edu/users/olga/SPIROPA/SPI... \n", + "76 String 2017-10 \n", + "77 String Biological and Chemical Oceanographic Data Man... \n", + "78 String institution \n", + "79 String (local files) \n", + "80 double 39.6215 \n", + "81 String CF Standard Name Table v55 \n", + "82 String flag \n", + "83 String CTD casts from the first cruise of SPIROPA pro... \n", + "84 String 2018-04-27T10:27:54Z \n", + "85 String 2018-04-27T00:19:24Z \n", + "86 String CTD casts from the first cruise of SPIROPA pro... \n", + "87 String 1 \n", + "88 double -70.82983 \n", + "89 String osprey2erddap.update_xml() v1.3 \n", + "90 String NaN \n", + "91 String flag \n", + "92 String name of the originators file \n", + "93 String File Name \n", + "94 String unitless \n", + "95 double NaN \n", + "96 String Lat \n", + "97 double NaN \n", + "98 double 39.6215, 40.2705 \n", + "99 String Y \n", + "100 String latitude \n", + "101 double 90.0 \n", + "102 double -90.0 \n", + "103 String latitude with positive values indicating North \n", + "104 String Location \n", + "105 String Latitude \n", + "106 String https://vocab.nerc.ac.uk/collection/P09/curren... \n", + "107 String latitude \n", + "108 String degrees_north \n", + "109 double NaN \n", + "110 String Lon \n", + "111 double NaN \n", + "112 double -70.82983, -70.814 \n", + "113 String X \n", + "114 String longitude \n", + "115 double 180.0 \n", + "116 double -180.0 \n", + "117 String longitude with negative values indicating West \n", + "118 String Location \n", + "119 String Longitude \n", + "120 String https://vocab.nerc.ac.uk/collection/P09/curren... \n", + "121 String longitude \n", + "122 String degrees_east \n", + "123 double NaN \n", + "124 String Time \n", + "125 double 1.524788364E9, 1.524824874E9 \n", + "126 String T \n", + "127 String ISO_DateTime_UTC \n", + "128 String Date and time in UTC following ISO8601 format \n", + "129 String Time \n", + "130 String ISO Date Time UTC \n", + "131 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "132 String ISO_DateTime_UTC \n", + "133 String time \n", + "134 String 01-JAN-1970 00:00:00 \n", + "135 String 1970-01-01T00:00:00Z \n", + "136 String seconds since 1970-01-01T00:00:00Z \n", + "137 float NaN \n", + "138 float NaN \n", + "139 float 2.0, 308.0 \n", + "140 String pressure \n", + "141 String Pressure \n", + "142 String PR DM \n", + "143 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "144 String decibar (db) \n", + "145 float NaN \n", + "146 float NaN \n", + "147 float 0.0697, 17.5374 \n", + "148 String temperature \n", + "149 String Temperature ITS-90 \n", + "150 String T090 C \n", + "151 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "152 String degrees Celsius (C) \n", + "153 float NaN \n", + "154 float NaN \n", + "155 float 0.0689, 17.5396 \n", + "156 String temperature \n", + "157 String Temperature 2 ITS-90 \n", + "158 String T190 C \n", + "159 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "160 String degrees Celsius (C) \n", + "161 float NaN \n", + "162 float NaN \n", + "163 float 3.360826, 4.666987 \n", + "164 String conductivity \n", + "165 String Conductivity \n", + "166 String C0 S M \n", + "167 String https://vocab.nerc.ac.uk/collection/P02/curren... \n", + "168 String Siemens per meter (S/m) \n", + "169 float NaN \n", + "170 float NaN \n", + "171 float 3.36096, 4.666813 \n", + "172 String conductivity \n", + "173 String Conductivity 2 \n", + "174 String C1 S M \n", + "175 String https://vocab.nerc.ac.uk/collection/P02/curren... \n", + "176 String Siemens per meter (S/m) \n", + "177 float NaN \n", + "178 float NaN \n", + "179 float 9.0E-28, 2.8368 \n", + "180 String O2_v \n", + "181 String Oxygen raw SBE 43 \n", + "182 String Sbeox0 V \n", + "183 String volts (V) \n", + "184 float NaN \n", + "185 float NaN \n", + "186 float -0.3564, 2.4199 \n", + "187 String chl_a_fluor \n", + "188 String Fluorescence WET Labs ECO-AFL/FL \n", + "189 String Fl ECO AFL \n", + "190 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "191 String milligrams per meter cubed (mg/m3) \n", + "192 float NaN \n", + "193 float NaN \n", + "194 float 9.0E-28, 0.9062 \n", + "195 String turbidity \n", + "196 String Turbidity WET Labs ECO \n", + "197 String Turb WETntu0 \n", + "198 String NTU \n", + "199 float NaN \n", + "200 float NaN \n", + "201 float 33.2242, 36.1086 \n", + "202 String sal \n", + "203 String Practical salinity from the very first data co... \n", + "204 String Sal00 D \n", + "205 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "206 String unitless \n", + "207 float NaN \n", + "208 float NaN \n", + "209 float 0.72592, 108.9 \n", + "210 String SPAR \n", + "211 String SPAR Biospherical/Licor \n", + "212 String Spar \n", + "213 String unknown \n", + "214 float NaN \n", + "215 float NaN \n", + "216 float -0.00391, 21.931 \n", + "217 String PAR \n", + "218 double 70.0 \n", + "219 double 0.0 \n", + "220 String PAR/Irradiance Biospherical/Licor \n", + "221 String Downwelling Photosynthetic Photon Radiance In ... \n", + "222 String unknown \n", + "223 float NaN \n", + "224 float NaN \n", + "225 float -0.01038, 67696.0 \n", + "226 String unknown \n", + "227 String CPAR/Corrected Irradiance \n", + "228 String Cpar \n", + "229 String percent (%) \n", + "230 double NaN \n", + "231 String Height \n", + "232 String down \n", + "233 double NaN \n", + "234 double 1.985, 305.414 \n", + "235 String Z \n", + "236 String depth \n", + "237 String Depth in salt water at specified latitudes \n", + "238 String Location \n", + "239 String Dep SM \n", + "240 String https://vocab.nerc.ac.uk/collection/P09/curren... \n", + "241 String down \n", + "242 String depth \n", + "243 String m \n", + "244 float NaN \n", + "245 float NaN \n", + "246 float 33.2235, 36.1092 \n", + "247 String sal \n", + "248 String Final practical salinity 1 \n", + "249 String Sal00 \n", + "250 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "251 String unitless \n", + "252 float NaN \n", + "253 float NaN \n", + "254 float 33.2236, 36.1056 \n", + "255 String sal \n", + "256 String Final practical salinity 2 \n", + "257 String Sal11 \n", + "258 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "259 String unitless \n", + "260 float NaN \n", + "261 float NaN \n", + "262 float 9.0E-28, 6.8735 \n", + "263 String dissolved Oxygen \n", + "264 String Oxygen SBE 43 \n", + "265 String Sbeox0 ML L \n", + "266 String milliliters per liter (ml/l) \n", + "267 float NaN \n", + "268 float NaN \n", + "269 float 1476.57, 1516.13 \n", + "270 String sound_vel \n", + "271 String Sound Velocity Chen-Millero \n", + "272 String SV CM \n", + "273 String meter per second (m/s) \n", + "274 float NaN \n", + "275 float NaN \n", + "276 float 25.8951, 27.1635 \n", + "277 String sigma_0 \n", + "278 String Density sigma-theta \n", + "279 String Sigma E00 \n", + "280 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "281 String kilogram per meter cubed (kg/m3) \n", + "282 float NaN \n", + "283 float NaN \n", + "284 float 25.8951, 27.164 \n", + "285 String sigma_0 \n", + "286 String Density 2 sigma-theta \n", + "287 String Sigma E11 \n", + "288 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", + "289 String kilogram per meter cubed (kg/m3) \n", + "290 float NaN \n", + "291 float NaN \n", + "292 float 0.0, 0.0 \n", + "293 String flag \n", + "294 double 150.0 \n", + "295 double 0.0 \n", + "296 String flag \n", + "297 String Flag \n", + "298 String unitless \n", + "['NC_GLOBAL' 'file_name' 'latitude' 'longitude' 'time' 'prDM' 't090C'\n", + " 't190C' 'c0S_m' 'c1S_m' 'sbeox0V' 'flECO_AFL' 'turbWETntu0' 'sal00_D'\n", + " 'spar' 'par' 'cpar' 'depth' 'sal00' 'sal11' 'sbeox0ML_L' 'svCM'\n", + " 'sigma_e00' 'sigma_e11' 'flag']\n" + ] + } + ], + "source": [ + "# EXAMPLE: if you want to just see all the variables for a site \n", + "e = ERDDAP(\n", + " server=\"https://erddap.bco-dmo.org/erddap\", \n", + " protocol=\"tabledap\", \n", + " response=\"csv\")\n", + "\n", + "info_url = e.get_info_url(dataset_id=\"bcodmo_dataset_807119\") \n", + "pd.read_csv(info_url)\n", + "\n", + "pd.set_option('display.max_rows', None) #make sure that jupyter notebook shows all rows \n", + "dataframe = pd.read_csv(info_url)\n", + "print(dataframe)\n", + "# get the unique variable names with pandas\n", + "print(dataframe[\"Variable Name\"].unique()) " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f03444c6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['bcodmo_dataset_4046' 'bcodmo_dataset_781633' 'bcodmo_dataset_778065' ...\n", + " 'bcodmo_dataset_728084' 'bcodmo_dataset_503145' 'bcodmo_dataset_812233']\n" + ] + } + ], + "source": [ + "url = e.get_search_url(search_for=\"PAR \", response=\"csv\")\n", + "\n", + "df = pd.read_csv(url)[\"Dataset ID\"].unique()\n", + "print(df)\n", + "# pd.read_csv(url)[\"Dataset ID\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e7397c3b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://erddap.bco-dmo.org/erddap/tabledap/bcodmo_dataset_817952.csv?longitude,latitude,time,POC&time>=1484265600.0&time<=1484611199.0\n" + ] + } + ], + "source": [ + "e = ERDDAP( \n", + "server= \"https://erddap.bco-dmo.org/erddap/\", \n", + "protocol=\"tabledap\", \n", + "response=\"csv\", )\n", + "\n", + "e.dataset_id = \"bcodmo_dataset_817952\" \n", + "e.variables = [ \n", + "\"longitude\", \n", + "\"latitude\", \n", + "\"time\", \n", + "\"POC\" ] \n", + "e.constraints = { \n", + "\"time>=\": \"2017-01-13T00:00:00Z\", \n", + "\"time<=\": \"2017-01-16T23:59:59Z\",}\n", + "\n", + "#Print the URL - check \n", + "url = e.get_download_url() \n", + "print(url)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py b/icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py new file mode 100644 index 0000000..5473212 --- /dev/null +++ b/icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py @@ -0,0 +1,47 @@ +# utils/Kd_analysis.py + +import numpy as np +import pandas as pd +from scipy.optimize import curve_fit + +def log_model(z, kd, e0): + return np.log(e0) - kd * z + +def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): + if df.empty or 'lat_bins' not in df.columns: + return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan]}) + lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan + photon_height_min = df['photon_height'].min() + photon_height_max = df['photon_height'].max() + if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + height_bins_range = abs(photon_height_max - photon_height_min) + if height_bins_range == 0: + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + height_bins_number = round(height_bins_range / vertical_res) + if height_bins_number < 5: + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) + counts, _ = np.histogram(df['photon_height'], bins=bin_edges) + bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 + hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) + # x value for model + hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + # y value for model + hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) + + hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + + # Skip the regression if there are fewer than 5 datapoints + if hist_df['log_photon_counts'].notna().sum() > 3: + try: + popt, _ = curve_fit(log_model, hist_df['zdepth'].dropna(), hist_df['log_photon_counts'].dropna(), p0=[1, np.exp(1)]) + kd, e0 = popt + if kd < 0: + kd = np.nan + except Exception as e: + print(f"Error in curve fitting: {e}") + kd, e0 = np.nan, np.nan + else: + kd, e0 = np.nan, np.nan + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [kd], 'e0': [e0]}) diff --git a/icesat2_kdph-main/kd_utils/Kd_analysis.py b/icesat2_kdph-main/kd_utils/Kd_analysis.py new file mode 100644 index 0000000..acf65bb --- /dev/null +++ b/icesat2_kdph-main/kd_utils/Kd_analysis.py @@ -0,0 +1,98 @@ +import numpy as np +import pandas as pd +import logging +# from scipy.optimize import curve_fit +from sklearn.linear_model import LinearRegression + + +# another solution is to calculate kd without hist +def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): + # Early exit if DataFrame is empty or missing required column + if df.empty or 'lat_bins' not in df.columns: + return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + + # Retrieve latitude and longitude + lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan + latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan + longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + + # Use value_counts to get photon counts in each height bin + height_counts = df['height_bins'].value_counts().sort_index() + bin_centers = height_counts.index.astype(float) + + # Create a DataFrame for the height bins and counts + hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': height_counts.values}) + + # Reverse zdepth for model alignment + hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + + # Log-transform photon counts, replacing zeros with NaN for regression + hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) + hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + + # Filter for rows without NaNs for regression + valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + + # Perform regression if there are sufficient valid data points + if valid_data['log_photon_counts'].notna().sum() > 3: + zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) + log_counts_valid = valid_data['log_photon_counts'].values + + # Perform linear regression + model = LinearRegression() + model.fit(zdepth_valid, log_counts_valid) + + # Calculate kd and e0 + kd = -model.coef_[0] + e0 = np.exp(model.intercept_) + + # Set kd to NaN if negative + if kd < 0: + kd = np.nan + else: + kd, e0 = np.nan, np.nan + + return pd.DataFrame({ + 'lat_bins': [lat_bin_value], + 'kd': [kd], + 'e0': [e0], + 'latitude': [latitude], + 'longitude': [longitude] + }) + + +# Original kd calculation function remains unchanged +def calculate_kd(filtered_seafloor_subsurface_photon_dataset): + logging.info("Calculating Kd from filtered subsurface photon dataset") + SubsurfacePhotonDFAddedKd = filtered_seafloor_subsurface_photon_dataset\ + .groupby('lat_bins', observed=False)\ + .apply(CalculateKdFromFilteredSubsurfacePhoton, include_groups=True) + + + # Remove the index without resetting it if 'lat_bins' already exists + SubsurfacePhotonDFAddedKd = SubsurfacePhotonDFAddedKd.droplevel(0) + return SubsurfacePhotonDFAddedKd + + +# Updated function to apply kd calculation beam-by-beam +def process_kd_calculation(Final_filtered_subsurface_photon_dataset): + # Initialize list to store results for each beam + kd_beam_datasets = [] + + # Group by 'beam_id' to process each beam independently + for beam_id, beam_data in Final_filtered_subsurface_photon_dataset.groupby('beam_id'): + logging.info(f"Calculating Kd for beam: {beam_id}") + + # Apply the calculate_kd function to the current beam's dataset + SubsurfacePhotonDFAddedKd = calculate_kd(beam_data) + + # Add a column to track the beam_id in the results + SubsurfacePhotonDFAddedKd['beam_id'] = beam_id + + # Append the result to the list + kd_beam_datasets.append(SubsurfacePhotonDFAddedKd) + + # Combine results from all beams into a single DataFrame + combined_kd_dataset = pd.concat(kd_beam_datasets, ignore_index=True) + + return combined_kd_dataset \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py b/icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py new file mode 100644 index 0000000..8146855 --- /dev/null +++ b/icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py @@ -0,0 +1,264 @@ +# utils/Kd_analysis.py +# updated to perform a linear fit in log-space, just like MATLAB's polyfitn(zdepth, y, 1) for a first-order polynomial. + +import numpy as np +import pandas as pd +import logging +# from scipy.optimize import curve_fit +from sklearn.linear_model import LinearRegression + +# def log_model(z, kd, e0): +# return np.log(e0) - kd * z + +## This is wrong because the input is already a bined data, +## it is not necessary to do a histogram again +# def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): +# if df.empty or 'lat_bins' not in df.columns: +# return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + +# # Get the latitude bin value +# lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan +# latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan +# longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + +# # Calculate photon height range +# photon_height_min = df['photon_height'].min() +# photon_height_max = df['photon_height'].max() + +# # Check for sufficient data range +# if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# height_bins_range = abs(photon_height_max - photon_height_min) +# height_bins_number = round(height_bins_range / vertical_res) + +# # Ensure there are enough bins +# if height_bins_number < 5: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# # Create histogram of photon heights +# bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) +# counts, _ = np.histogram(df['photon_height'], bins=bin_edges) +# bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 + +# # Store histogram data +# hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) + +# # x value for model +# # Reverse zdepth to align with the MATLAB approach +# hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + +# # Log-transform photon counts, replacing zeros with NaN +# # y value for model +# hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) +# hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + +# # Filter out rows with NaNs in either column for regression +# valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + +# # Check for enough valid data points +# # Skip the regression if there are fewer than 5 datapoints +# if valid_data['log_photon_counts'].notna().sum() > 3: +# # Drop NaNs for regression +# zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) +# log_counts_valid = valid_data['log_photon_counts'].values + +# # Perform linear regression +# model = LinearRegression() +# model.fit(zdepth_valid, log_counts_valid) + +# # Extract kd as the negative of the slope and e0 from the intercept +# kd = -model.coef_[0] + +# print('zdepth_valid:',zdepth_valid) +# print('photon_counts:',hist_df['photon_counts']) +# print('kd:',kd) + +# e0 = np.exp(model.intercept_) + +# # Set kd to NaN if negative +# if kd < 0: +# kd = np.nan +# else: +# kd, e0 = np.nan, np.nan + +# return pd.DataFrame({ +# 'lat_bins': [lat_bin_value], +# 'kd': [kd], +# 'e0': [e0], +# 'latitude': [latitude], +# 'longitude': [longitude] +# }) + + +# # one solution is to adjust the vertical_res to 0.25 +# def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.25): +# if df.empty or 'lat_bins' not in df.columns: +# return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + +# # Get the latitude bin value +# lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan +# latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan +# longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + +# # Calculate photon height range +# photon_height_min = df['photon_height'].min() +# photon_height_max = df['photon_height'].max() + +# # Check for sufficient data range +# if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# height_bins_range = abs(photon_height_max - photon_height_min) +# height_bins_number = round(height_bins_range / vertical_res) + +# # Ensure there are enough bins +# if height_bins_number < 5: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# # Create histogram of photon heights +# bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) +# counts, _ = np.histogram(df['photon_height'], bins=bin_edges) +# bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 + +# # Store histogram data +# hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) + +# # x value for model +# # Reverse zdepth to align with the MATLAB approach +# hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + +# # Log-transform photon counts, replacing zeros with NaN +# # y value for model +# hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) +# hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + +# # Filter out rows with NaNs in either column for regression +# valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + +# # Check for enough valid data points +# # Skip the regression if there are fewer than 5 datapoints +# if valid_data['log_photon_counts'].notna().sum() > 3: +# # Drop NaNs for regression +# zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) +# log_counts_valid = valid_data['log_photon_counts'].values + +# # Perform linear regression +# model = LinearRegression() +# model.fit(zdepth_valid, log_counts_valid) + +# # Extract kd as the negative of the slope and e0 from the intercept +# kd = -model.coef_[0] + +# print('zdepth_valid:',zdepth_valid) +# print('photon_counts:',hist_df['photon_counts']) +# print('kd:',kd) + +# e0 = np.exp(model.intercept_) + +# # Set kd to NaN if negative +# if kd < 0: +# kd = np.nan +# else: +# kd, e0 = np.nan, np.nan + +# return pd.DataFrame({ +# 'lat_bins': [lat_bin_value], +# 'kd': [kd], +# 'e0': [e0], +# 'latitude': [latitude], +# 'longitude': [longitude] +# }) + + +# another solution is to calculate kd without hist +def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): + # Early exit if DataFrame is empty or missing required column + if df.empty or 'lat_bins' not in df.columns: + return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + + # Retrieve latitude and longitude + lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan + latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan + longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + + # Use value_counts to get photon counts in each height bin + height_counts = df['height_bins'].value_counts().sort_index() + bin_centers = height_counts.index.astype(float) + + # Create a DataFrame for the height bins and counts + hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': height_counts.values}) + + # Reverse zdepth for model alignment + hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + + # Log-transform photon counts, replacing zeros with NaN for regression + hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) + hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + + # Filter for rows without NaNs for regression + valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + + # Perform regression if there are sufficient valid data points + if valid_data['log_photon_counts'].notna().sum() > 3: + zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) + log_counts_valid = valid_data['log_photon_counts'].values + + # Perform linear regression + model = LinearRegression() + model.fit(zdepth_valid, log_counts_valid) + + # Calculate kd and e0 + kd = -model.coef_[0] + e0 = np.exp(model.intercept_) + + # Set kd to NaN if negative + if kd < 0: + kd = np.nan + else: + kd, e0 = np.nan, np.nan + + return pd.DataFrame({ + 'lat_bins': [lat_bin_value], + 'kd': [kd], + 'e0': [e0], + 'latitude': [latitude], + 'longitude': [longitude] + }) + + +# Original kd calculation function remains unchanged +def calculate_kd(filtered_seafloor_subsurface_photon_dataset): + logging.info("Calculating Kd from filtered subsurface photon dataset") + SubsurfacePhotonDFAddedKd = filtered_seafloor_subsurface_photon_dataset\ + .groupby('lat_bins', observed=False)\ + .apply(CalculateKdFromFilteredSubsurfacePhoton, include_groups=True) + + + # Remove the index without resetting it if 'lat_bins' already exists + SubsurfacePhotonDFAddedKd = SubsurfacePhotonDFAddedKd.droplevel(0) + return SubsurfacePhotonDFAddedKd + + +# Updated function to apply kd calculation beam-by-beam +def process_kd_calculation(Final_filtered_subsurface_photon_dataset): + # Initialize list to store results for each beam + kd_beam_datasets = [] + + # Group by 'beam_id' to process each beam independently + for beam_id, beam_data in Final_filtered_subsurface_photon_dataset.groupby('beam_id'): + logging.info(f"Calculating Kd for beam: {beam_id}") + + # Apply the calculate_kd function to the current beam's dataset + SubsurfacePhotonDFAddedKd = calculate_kd(beam_data) + + # Add a column to track the beam_id in the results + SubsurfacePhotonDFAddedKd['beam_id'] = beam_id + + # Append the result to the list + kd_beam_datasets.append(SubsurfacePhotonDFAddedKd) + + # Combine results from all beams into a single DataFrame + combined_kd_dataset = pd.concat(kd_beam_datasets, ignore_index=True) + + return combined_kd_dataset \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py b/icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py new file mode 100644 index 0000000..46f6a58 --- /dev/null +++ b/icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py @@ -0,0 +1,108 @@ +import rasterio +import numpy as np +import pandas as pd +from rtree import index +from shapely.geometry import box, Point + +# 1. Function to create an R-tree spatial index for raster bounds +def create_spatial_index(gebco_paths): + """ + Create an R-tree spatial index for raster bounds to quickly find relevant rasters. + + Parameters: + gebco_paths (list): List of paths to GEBCO raster files. + + Returns: + raster_data_dict (dict): Dictionary containing loaded rasters and their respective data. + spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. + """ + idx = index.Index() + raster_data_dict = {} + for i, path in enumerate(gebco_paths): + with rasterio.Env(GTIFF_SRS_SOURCE='EPSG'): + gebco_raster = rasterio.open(path) + raster_data = gebco_raster.read(1) + raster_data_dict[path] = (gebco_raster, raster_data) + bounds = gebco_raster.bounds + idx.insert(i, (bounds.left, bounds.bottom, bounds.right, bounds.top), obj=path) + return raster_data_dict, idx + +# 2. Function to determine which rasters are needed for a given set of coordinates using spatial index in a batch manner +def get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index): + """ + Determine which raster datasets are relevant for the given coordinates using spatial index. + This function uses a more efficient approach by performing a bounding box query for batches of points. + + Parameters: + lons (numpy.ndarray): Array of longitudes. + lats (numpy.ndarray): Array of latitudes. + raster_data_dict (dict): Dictionary containing raster datasets and their data. + spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. + + Returns: + relevant_rasters (list): List of relevant raster datasets and their respective data. + """ + # Create a bounding box that covers all points + min_lon, max_lon = lons.min(), lons.max() + min_lat, max_lat = lats.min(), lats.max() + bounding_box = box(min_lon, min_lat, max_lon, max_lat) + + # Get all rasters that intersect with the bounding box + matches = list(spatial_index.intersection((bounding_box.bounds), objects=True)) + relevant_paths = {match.object for match in matches} + relevant_rasters = [(raster_data_dict[path][0], raster_data_dict[path][1]) for path in relevant_paths] + return relevant_rasters + +# 3. Function to get seafloor elevation from the relevant rasters in a vectorized manner +def get_seafloor_elevation(lons, lats, relevant_rasters): + """ + Get seafloor elevations for a batch of points based on longitude and latitude from relevant rasters. + + Parameters: + lons (numpy.ndarray): Array of longitudes. + lats (numpy.ndarray): Array of latitudes. + relevant_rasters (list): List of relevant raster datasets and their respective data. + + Returns: + seafloor_elevations (numpy.ndarray): Array of seafloor elevations. + """ + points = np.vstack((lons, lats)).T + seafloor_elevations = np.full(len(lons), np.nan) + + for gebco_raster, raster_data in relevant_rasters: + # Use rasterio.sample to get values for multiple points in a batch + values = list(gebco_raster.sample(points)) + for idx, value in enumerate(values): + if np.isnan(seafloor_elevations[idx]) and value is not None: + seafloor_elevations[idx] = value[0] + + return seafloor_elevations + +# 4. The main process function that ties everything together +def process_seafloor_data(gebco_paths, sea_photon_dataset): + """ + Main function to process the seafloor data. + + Parameters: + gebco_paths (list): List of paths to GEBCO raster files. + sea_photon_dataset (pandas.DataFrame): Dataset containing longitude, latitude, and photon height. + + Returns: + filtered_sea_photon_dataset (pandas.DataFrame): Filtered dataset containing points above the seafloor. + """ + # Create spatial index and load GEBCO Raster Data + raster_data_dict, spatial_index = create_spatial_index(gebco_paths) + + # Get the relevant rasters using spatial index + lons = sea_photon_dataset['longitude'].values + lats = sea_photon_dataset['latitude'].values + relevant_rasters = get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index) + + # Get seafloor elevation for all points + sea_photon_dataset['seafloor_elevation'] = get_seafloor_elevation(lons, lats, relevant_rasters) + + # Filter out points below the seafloor + filtered_sea_photon_dataset = sea_photon_dataset[sea_photon_dataset['photon_height'] > sea_photon_dataset['seafloor_elevation']] + # filtered_sea_photon_dataset.drop(columns=['seafloor_elevation'], inplace=True) + + return filtered_sea_photon_dataset \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/__init__.py b/icesat2_kdph-main/kd_utils/__init__.py new file mode 100644 index 0000000..0c3915c --- /dev/null +++ b/icesat2_kdph-main/kd_utils/__init__.py @@ -0,0 +1,8 @@ +# utils/__init__.py + +from .data_processing import load_data, extract_file_params, Extract_sea_photons, create_photon_dataframe +from .visualization import plot_photon_height, plot_kd_photons +from .Kd_analysis import CalculateKdFromFilteredSubsurfacePhoton +from .interpolation import interpolate_labels, apply_interpolation, geoid_correction, refraction_correction +from .bathy_processing import * +from .sea_photons_analysis import * \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/__pycache__/Kd_analysis.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/Kd_analysis.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e38c95451af5038452490da6bb7c52fb580ac0b7 GIT binary patch literal 4693 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 Qz3BGSy*t#yg{jv6046{nXaE2J literal 0 HcmV?d00001 diff --git a/icesat2_kdph-main/kd_utils/__pycache__/__init__.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ba5ecee2b95143a2a9a919eb5763e8953a7a415 GIT binary patch literal 792 zcmah`%We}f6t(kClW9WBYsZ2G3X4W!OI0Bux~YVa%E}wd89Ny__IPA_D#CYEfNTT=2e$BVl z=zZ*Mt1)~#=V;RX2@24p75d6BPC4@|9EuO#veeVLRDu@FGVQ|Qn>*48MvKgNle_RJ zwSsx5spGnP4%K4P2nU5Sev` zo!kqf_}jFwCKb-fd|{ig6WfZ=j?e)J$)$89Q}QE=BW*V(dNDCL#3if*79-5yOdqs8>XT&`F?m7tUP7j(&sYzpfv zy;N>WVGYt#dQ_}#d&k=FQi&7$7~10#yUzgEO^oq%2jL4`A^C4xqm$}ywnne2U0b7N U^*>vqC)LK*=xMcU_92M-1ucgFF#rGn literal 0 HcmV?d00001 diff --git a/icesat2_kdph-main/kd_utils/__pycache__/bathy_processing.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/bathy_processing.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..11c0e30dde7347c154c301123d4816a1bc41821c GIT binary patch literal 7444 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 Ze`%*QOJ#-2*D1$Qsp{He4mxyB|3B>UMic-5 literal 0 HcmV?d00001 diff --git a/icesat2_kdph-main/kd_utils/__pycache__/interpolation.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/interpolation.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb9cda4ec866938ef3e0e96672de9854fe33848a GIT binary patch literal 1306 zcmah|&1(}u6rb6T5W5>``l0EeHKGJ^XoInOs8*^_g;skhMJSkM%}$zaHy_Myift1J z;z7ZK2cbRoR9otye}dq}Vdk|6`i23;ocz#lYOO1EwCCc_qC zHx~eQi38YP>$H8^@3m+PNtu+XK|c!zV1JB0{8bUk0>l!RJcYe-xLzz+y2Iks8_1ZJ zrETg~iN!@vw$o;D%Tvs}!+7hB7i?W_8K75eww7agM+0jwVCgTJWqWe2V89n+MWfNP z+lg!;#}ey>%`H8jFw@M|ousy56tjs9Ln}F^Whc7+%|d<(A`W#W44k819s-9*gnbjB zN>0_VtB(IvW8c--{?5tcFO`}atE(%nx>BA0r3_Y|HsKxV;}LVh-HZV262WKZ02n;( zu((W)=+Y613tWLWSd^m`vo>-YjdB%b!+No3ZE4*UA!$AgnoF?lL4YcO1m52HaOK_X z``MZl;g>;}?ywIR3AUffBRD`uJMjtht1KKqyyH$kE27h5TNcZtU%yN^Mm-XIj{H>O z5+4E)$CNyIjTKD8FUZEg(3bO327Qf|E^yA$4%TrM^jM{R9ROLL*xNarud7K{O;+bm zm5II5ex|NWy2@ltnrsz@KHIA^s;@!v-@>E|g^T@#Rph?HrHh64Y2}OB42-x>3?GGD z;(;DUf}CYEX0c6A!IQpi=1NZ18$glfೇq+f;09+t%ZRSS7j_W>Wz4VR4Gwg-^ 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 sea_photon_dataset['seafloor_elevation']] + # filtered_sea_photon_dataset.drop(columns=['seafloor_elevation'], inplace=True) + + return filtered_sea_photon_dataset + + +# 5. The function to get the subsurface photon dataset +def get_subsurface_photon(binned_dataset_sea_surface, subsurface_thresh, GEBCO_paths): + # get sea surface height + # threshold to determine how much depth below sea surface will be accounted + # Output: + # ->final_sea_surface_height + # ->sea_surface_height_abnormal_label + # ->sea_surface_dominated_label + sea_surface_height, sea_surface_label, solo_sea_surface_label, subsurface_photon_dataset = \ + get_sea_surface_height(binned_dataset_sea_surface, subsurface_thresh) + + + # Filter out points below the seafloor + filtered_seafloor_subsurface_photon_dataset = process_seafloor_data(subsurface_photon_dataset, GEBCO_paths) + + # filtered_seafloor_subsurface_photon_dataset = subsurface_photon_dataset + return sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset + + +# Main processing function to apply the subsurface photon filtering beam-by-beam +def process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_paths): + # Initialize lists to store results for each beam + sea_surface_heights = [] + sea_surface_labels = [] + filtered_beam_datasets = [] + + # Group the binned dataset by 'beam_id' and process each group separately + for beam_id, beam_data in binned_dataset_sea_surface.groupby('beam_id'): + print(f'Processing subsurface filtering for beam: {beam_id}') + + # Apply get_subsurface_photon to the current beam's dataset + sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \ + get_subsurface_photon(beam_data, subsurface_thresh, GEBCO_paths) + + # Append each result to the lists + sea_surface_heights.append(sea_surface_height) + sea_surface_labels.append(sea_surface_label) + filtered_beam_datasets.append(filtered_seafloor_subsurface_photon_dataset) + + # Combine all filtered beam datasets into a single DataFrame + combined_filtered_dataset = pd.concat(filtered_beam_datasets, ignore_index=True) + + return sea_surface_heights, sea_surface_labels, combined_filtered_dataset diff --git a/icesat2_kdph-main/kd_utils/data_processing.py b/icesat2_kdph-main/kd_utils/data_processing.py new file mode 100644 index 0000000..3ea5b37 --- /dev/null +++ b/icesat2_kdph-main/kd_utils/data_processing.py @@ -0,0 +1,586 @@ +# utils/data_processing.py + + +import re +import os +import io +import time +import math +import h5py +import logging +import netCDF4 +import numpy as np +import geopandas as gpd + +import pandas as pd +from datetime import datetime +import matplotlib.pyplot as plt +import hdbscan +from sklearn.preprocessing import StandardScaler, MinMaxScaler +from scipy.spatial import ConvexHull + +import argparse +import subprocess +# import fiona +import utm +import pyproj +from pyproj import Transformer, Proj + +# from pyproj import Transformer +from matplotlib.widgets import LassoSelector +from matplotlib.path import Path + +from sklearn.cluster import DBSCAN +from .interpolation import * + + + +#this function from icesat2_toolkit +# PURPOSE: read ICESat-2 ATL03 HDF5 data files +def read_granule(FILENAME, ATTRIBUTES=False, **kwargs): + """ + Reads ICESat-2 ATL03 Global Geolocated Photons data files + + Parameters + ---------- + FILENAME: str + full path to ATL03 file + ATTRIBUTES: bool, default False + read file, group and variable attributes + + Returns + ------- + IS2_atl03_mds: dict + ATL03 variables + IS2_atl03_attrs: dict + ATL03 attributes + IS2_atl03_beams: list + valid ICESat-2 beams within ATL03 file + """ + # Open the HDF5 file for reading + if isinstance(FILENAME, io.IOBase): + fileID = h5py.File(FILENAME, 'r') + else: + fileID = h5py.File(os.path.expanduser(FILENAME), 'r') + + # Output HDF5 file information + logging.info(fileID.filename) + logging.info(list(fileID.keys())) + + # allocate python dictionaries for ICESat-2 ATL03 variables and attributes + IS2_atl03_mds = {} + IS2_atl03_attrs = {} + + # read each input beam within the file + IS2_atl03_beams = [] + for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\d[lr]',k))]: + # check if subsetted beam contains data + # check in both the geolocation and heights groups + try: + fileID[gtx]['geolocation']['segment_id'] + fileID[gtx]['heights']['delta_time'] + except KeyError: + pass + else: + IS2_atl03_beams.append(gtx) + + # for each included beam + for gtx in IS2_atl03_beams: + # get each HDF5 variable + IS2_atl03_mds[gtx] = {} + IS2_atl03_mds[gtx]['heights'] = {} + IS2_atl03_mds[gtx]['geolocation'] = {} + IS2_atl03_mds[gtx]['bckgrd_atlas'] = {} + IS2_atl03_mds[gtx]['geophys_corr'] = {} + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_mds[gtx]['heights'][key] = val[:] + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_mds[gtx]['geolocation'][key] = val[:] + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:] + # ICESat-2 Geophysical Corrections Group: Values for tides (ocean, + # solid earth, pole, load, and equilibrium), inverted barometer (IB) + # effects, and range corrections for tropospheric delays + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:] + + # Getting attributes of included variables + if ATTRIBUTES: + # Getting attributes of IS2_atl03_mds beam variables + IS2_atl03_attrs[gtx] = {} + IS2_atl03_attrs[gtx]['heights'] = {} + IS2_atl03_attrs[gtx]['geolocation'] = {} + IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {} + IS2_atl03_attrs[gtx]['geophys_corr'] = {} + # Global Group Attributes + for att_name,att_val in fileID[gtx].attrs.items(): + IS2_atl03_attrs[gtx][att_name] = att_val + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_attrs[gtx]['heights'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_attrs[gtx]['geolocation'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val + # ICESat-2 Geophysical Corrections Group + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val + + # ICESat-2 spacecraft orientation at time + IS2_atl03_mds['orbit_info'] = {} + IS2_atl03_attrs['orbit_info'] = {} + for key,val in fileID['orbit_info'].items(): + IS2_atl03_mds['orbit_info'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID['orbit_info'].attrs.items(): + IS2_atl03_attrs['orbit_info'][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs['orbit_info'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['orbit_info'][key][att_name] = att_val + + # information ancillary to the data product + # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC) + # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC) + # Add this value to delta time parameters to compute full gps_seconds + # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5 + # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch) + IS2_atl03_mds['ancillary_data'] = {} + IS2_atl03_attrs['ancillary_data'] = {} + ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc', + 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit', + 'end_region','end_rgt','granule_end_utc','granule_start_utc','release', + 'start_cycle','start_geoseg','start_gpssow','start_gpsweek', + 'start_orbit','start_region','start_rgt','version'] + for key in ancillary_keys: + # get each HDF5 variable + IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data'][key] = {} + for att_name,att_val in fileID['ancillary_data'][key].attrs.items(): + IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val + + # transmit-echo-path (tep) parameters + IS2_atl03_mds['ancillary_data']['tep'] = {} + IS2_atl03_attrs['ancillary_data']['tep'] = {} + for key,val in fileID['ancillary_data']['tep'].items(): + # get each HDF5 variable + IS2_atl03_mds['ancillary_data']['tep'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data']['tep'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val + + # channel dead time and first photon bias derived from ATLAS calibration + cal1,cal2 = ('ancillary_data','calibrations') + for var in ['dead_time','first_photon_bias']: + IS2_atl03_mds[cal1][var] = {} + IS2_atl03_attrs[cal1][var] = {} + for key,val in fileID[cal1][cal2][var].items(): + # get each HDF5 variable + if isinstance(val, h5py.Dataset): + IS2_atl03_mds[cal1][var][key] = val[:] + elif isinstance(val, h5py.Group): + IS2_atl03_mds[cal1][var][key] = {} + for k,v in val.items(): + IS2_atl03_mds[cal1][var][key][k] = v[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs[cal1][var][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][att_name] = att_val + if isinstance(val, h5py.Group): + for k,v in val.items(): + IS2_atl03_attrs[cal1][var][key][k] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val + + # get ATLAS impulse response variables for the transmitter echo path (TEP) + tep1,tep2 = ('atlas_impulse_response','tep_histogram') + IS2_atl03_mds[tep1] = {} + IS2_atl03_attrs[tep1] = {} + for pce in ['pce1_spot1','pce2_spot3']: + IS2_atl03_mds[tep1][pce] = {tep2:{}} + IS2_atl03_attrs[tep1][pce] = {tep2:{}} + # for each TEP variable + for key,val in fileID[tep1][pce][tep2].items(): + IS2_atl03_mds[tep1][pce][tep2][key] = val[:] + # Getting attributes of included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID[tep1][pce][tep2].attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs[tep1][pce][tep2][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val + + # Global File Attributes + if ATTRIBUTES: + for att_name,att_val in fileID.attrs.items(): + IS2_atl03_attrs[att_name] = att_val + + # Closing the HDF5 file + fileID.close() + # Return the datasets and variables + return (IS2_atl03_mds,IS2_atl03_attrs,IS2_atl03_beams) + + + +# convert_wgs_to_utm function, see https://stackoverflow.com/a/40140326/4556479 +def convert_wgs_to_utm(lon: float, lat: float): + """Based on lat and lng, return best utm epsg-code""" + utm_band = str((math.floor((lon + 180) / 6) % 60) + 1) + if len(utm_band) == 1: + utm_band = '0' + utm_band + if lat >= 0: + epsg_code = 'epsg:326' + utm_band + return epsg_code + epsg_code = 'epsg:327' + utm_band + return epsg_code + + +def orthometric_correction(lat, lon, Z, epsg): + # Define the Proj string + #To transform from WGS84 ellipsoidal height + # to EGM2008 orthometric height using PyProj + # proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +vunits=m +no_defs +geoidgrids=egm2008-1.gtx' + # # Define the Proj string for WGS84 ellipsoidal height + # wgs84_proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs' + + # # Define the Proj string for EGM2008 orthometric height: egm08_25,egm2008-1 + # egm2008_proj_string = \ + # '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs ' \ + # '+geoidgrids=C:/Workstation/ICESat2_HLS/Code/Geoids/egm08_25.gtx' + + # transform ellipsoid (WGS84) height to orthometric height + # transformer = Transformer.from_crs(wgs84_proj_string, egm2008_proj_string, always_xy=True) + transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) + X_egm08, Y_egm08, Z_egm08 = transformer.transform(lon, lat, Z) + + # transform WGS84 proj to local UTM + myProj = Proj(epsg) + X_utm, Y_utm = myProj(lon, lat) + + return Y_utm, X_utm, Z_egm08 + + + +def load_data(file_path): + IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = read_granule(file_path, ATTRIBUTES=True) + return IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams + + + +# requires that the input gdf has ranged index values i +# will need to change if index is changed to time or something +# this currently checks point in polygon for EVERY point +# would be significantly sped up if evaluated at 10m or something similar +# maybe later, fine for now +def isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF): + # try loading the shoreline data + try: + ICESat2_GDF.insert(0, 'lat', ICESat2_GDF.geometry.y, False) + ICESat2_GDF.insert(0, 'lon', ICESat2_GDF.geometry.x, False) + + # allocation of to be used arrays + zero_int_array = np.int64(np.zeros_like(ICESat2_GDF.geometry.x)) + + # Land flag initialized as -1 + # If shorelines downloaded already, will be set to 0 or 1 + ICESat2_GDF.insert(0, 'is_land', + zero_int_array - 1, False) + + # set the projection + ICESat2_GDF.set_crs("EPSG:4326", inplace=True) + + # load shoreline dataset to include only the features that intersect the bounding box + # bbox can be GeoDataFrame or GeoSeries | shapely Geometry, default None + # Filter features by given bounding box, GeoSeries, GeoDataFrame or a shapely geometry. + # engine str, 'fiona' or 'pyogrio' + # somtime it gives error if using fiona + # land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='fiona') + land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='pyogrio') + + # continue with getting a new array of 0-or-1 labels for each photon + land_point_labels = np.zeros_like(ICESat2_GDF.is_land.values) + + # update labels for points in the land polygons + pts_in_land = gpd.sjoin(ICESat2_GDF, land_polygon_gdf, predicate='within') + + # get land or not bool value + land_loc = ICESat2_GDF.index.isin(pts_in_land.index) + + # asigned them to new numpy array + land_point_labels[land_loc] = 1 + land_point_labels[~land_loc] = 0 + + return land_point_labels + + except Exception as e: + + print(e) + + print("Error loading shoreline data, returning -1s for is_land flag") + + # if the shoreline data is not available + # return the original label array + + return -np.ones_like(ICESat2_GDF.is_land.values) + + +def create_photon_dataframe(lat_ph, lon_ph, ref_elev, ref_azimuth, geoid, h_ph, \ + quality_ph, is_land_label_interp1d, signal_conf_photon, x_atc, relative_AT_dist): + # Apply geoid correction to the photon heights to convert them from ellipsoidal to orthometric heights + h_ph_geoid_cor = h_ph[:] - geoid[:] + + # Determine the EPSG code for the UTM zone based on the first photon's longitude and latitude + epsg_code = convert_wgs_to_utm(lon_ph[0], lat_ph[0]) + + # Perform orthometric correction to obtain UTM coordinates and corrected heights + lat_utm, lon_utm, h_ph_cor = orthometric_correction(lat_ph, lon_ph, h_ph, epsg_code) + + # Put the data into the dataframe + sea_photon_dataset = pd.DataFrame({ + 'latitude': lat_ph, + 'longitude': lon_ph, + 'lat': lat_utm, + 'lon': lon_utm, + 'photon_height': h_ph_geoid_cor, + 'quality_ph': quality_ph, + 'is_land_label': is_land_label_interp1d, + 'photon_conf': signal_conf_photon, + 'ref_elevation': ref_elev, + 'ref_azimuth': ref_azimuth, + 'relative_AT_dist': relative_AT_dist + }, columns=['latitude', 'longitude', 'lat', 'lon', 'photon_height', 'quality_ph', 'is_land_label', 'photon_conf', 'ref_elevation', 'ref_azimuth', 'relative_AT_dist']) + return sea_photon_dataset + + +def Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path): + Segment_ID = {} + Segment_Index_begin = {} + Segment_PE_count = {} + Equator_Segment_Distance = {} + Segment_Length = {} + Segment_Is_Land = {} + Segment_Lon = {} + Segment_Lat = {} + Segment_Elev = {} + Segment_Time = {} + Segment_ref_elev = {} + Segment_ref_azimuth = {} + background_rate = {} + background_counts = {} + + # Initialize a list to store data for each beam + beam_datasets = [] + + + # Loop over each strong beam in IS2_atl03_beams using the defined indices + for gtx in IS2_atl03_beams: + # Define the indices of the strong beams + if gtx.startswith('gt') and 'l' in gtx: # logic for strong beam + + print('Processing strong beam:', gtx) + + # Access the data for the current beam + IS2_val = IS2_atl03_mds[gtx] + + # Initialize dictionaries to store segment data for the beam + Segment_ID[gtx] = IS2_val['geolocation']['segment_id'] + n_seg = len(Segment_ID[gtx]) + n_pe, = IS2_val['heights']['delta_time'].shape + Segment_Index_begin[gtx] = IS2_val['geolocation']['ph_index_beg'] - 1 + Segment_PE_count[gtx] = IS2_val['geolocation']['segment_ph_cnt'] + Equator_Segment_Distance[gtx] = IS2_val['geolocation']['segment_dist_x'] + Segment_Length[gtx] = IS2_val['geolocation']['segment_length'] + delta_time = IS2_val['geolocation']['delta_time'] + segment_lat = IS2_val['geolocation']['reference_photon_lat'][:].copy() + segment_lon = IS2_val['geolocation']['reference_photon_lon'][:].copy() + ref_elev = IS2_val['geolocation']['ref_elev'][:].copy() + ref_azimuth = IS2_val['geolocation']['ref_azimuth'][:].copy() + geoid = IS2_val['geophys_corr']['geoid'][:].copy() + h_ph = IS2_val['heights']['h_ph'][:].copy() + lat_ph = IS2_val['heights']['lat_ph'][:].copy() + lon_ph = IS2_val['heights']['lon_ph'][:].copy() + signal_conf_photon = IS2_val['heights']['signal_conf_ph'][..., 0].copy() + x_atc = IS2_val['heights']['dist_ph_along'][:].copy() + y_atc = IS2_val['heights']['dist_ph_across'][:].copy() + quality_ph = IS2_val['heights']['quality_ph'] + + # Adjust x_atc based on segment distances + for seg_index in range(n_seg): + idx = Segment_Index_begin[gtx][seg_index] + cnt = Segment_PE_count[gtx][seg_index] + x_atc[idx:idx + cnt] += Equator_Segment_Distance[gtx][seg_index] + + # Calculate relative distances + relative_AT_dist = (x_atc - x_atc[0]) / 1000 + relative_seg_dist = (Equator_Segment_Distance[gtx] - Equator_Segment_Distance[gtx][0]) / 1000 + + # Create a GeoDataFrame to hold segment data for shoreline check + Segment_Is_Land['geometry'] = gpd.points_from_xy(segment_lon, segment_lat) + ICESat2_GDF = gpd.GeoDataFrame(Segment_Is_Land, crs="EPSG:4326") + + # Determine if it is land by the land/sea mask + Segment_Is_Land_Labels = isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF) + ICESat2_GDF.loc[:, 'is_land'] = Segment_Is_Land_Labels + + # Apply interpolations for required data + is_land_label_interp1d = apply_interpolation(interpolate_labels(segment_lat, Segment_Is_Land_Labels), lat_ph) + ph_ref_elev = apply_interpolation(interpolate_labels(segment_lat, ref_elev), lat_ph) + ph_ref_azimuth = apply_interpolation(interpolate_labels(segment_lat, ref_azimuth), lat_ph) + ph_geoid = apply_interpolation(interpolate_labels(segment_lat, geoid), lat_ph) + + + # Create photon DataFrame for the current beam + sea_photon_dataset = create_photon_dataframe(lat_ph=lat_ph, lon_ph=lon_ph, + ref_elev=ph_ref_elev,ref_azimuth=ph_ref_azimuth, + geoid=ph_geoid,h_ph=h_ph, + quality_ph=quality_ph, + is_land_label_interp1d=is_land_label_interp1d, + signal_conf_photon=signal_conf_photon, + x_atc=x_atc, # Note: x_atc is not used in the function. Remove if unnecessary. + relative_AT_dist=relative_AT_dist) + + # Filter out land photons + sea_photon_dataset = sea_photon_dataset[sea_photon_dataset['is_land_label'] != 1] + + # Add a new column to indicate the beam ID + sea_photon_dataset['beam_id'] = gtx + + # Append the processed dataset for the current beam to the list + beam_datasets.append(sea_photon_dataset) + + # Concatenate all beam data into a single DataFrame + all_beams_dataset = pd.concat(beam_datasets, ignore_index=True) + + return all_beams_dataset + + +def filter_photon_dataset_by_hull_area(photon_dataset, hull_area_threshold=3000): + """ + Filters photon dataset based on ConvexHull area threshold and returns the filtered dataset, + convex hull areas, and convex hull points. + """ + lat_bins_grouped = photon_dataset.groupby('lat_bins', observed=False) + filtered_dataset = photon_dataset.copy() + + convex_hulls = {} + convex_hull_areas = {} + + for lat_bin, bin_data in lat_bins_grouped: + if len(bin_data) >= 3: + points = bin_data[['lat', 'photon_height']].to_numpy() + hull = ConvexHull(points) + area = hull.volume + convex_hull_areas[lat_bin] = area + + # Store the ConvexHull points if area meets the threshold + if area >= hull_area_threshold: + convex_hulls[lat_bin] = points[hull.vertices] + else: + # Remove bins with hull area below the threshold + filtered_dataset = filtered_dataset[filtered_dataset['lat_bins'] != lat_bin] + + return filtered_dataset, convex_hull_areas, convex_hulls + + + + + + + + + +########################## +##Discard Functions Below +########################## + + +# Extracts key information from filenames, +# which could include processed status, product ID, timestamps, identifiers, or metadata. +def extract_file_params(file_path): + ''' + Example: input "processed_ATL06_20231115120000_20231115_001_12_data.h5" + Output: ('processed_', 'ATL06', '2023', '11', '15', '12', '00', '00', + '2023', '11', '15', '001', '12', '_data') + ''' + # Defines a regex pattern to match strings in the file path + rx = re.compile(r'(processed_)?(ATL\d{2})_(\d{4})(\d{2})(\d{2})(\d{2})' + r'(\d{2})(\d{2})_(\d{4})(\d{2})(\d{2})_(\d{3})_(\d{2})(.*?).h5$') + # Searches for all matches of the regex pattern in the given + params = rx.findall(file_path).pop() + return params + + +def create_mask(binned_data, sea_surface_height, seafloor_height, threshold_height): + ''' + create a mask for filtering sea surface, sea floor, and threshold_height + ''' + mask = (binned_data['height'] <= sea_surface_height) & \ + (binned_data['height'] >= seafloor_height) & \ + (binned_data['height'] >= threshold_height) + return mask + + +def generate_polygons_from_binned_data(lat, height, mask, lat_interval, height_interval): + ''' + horizontal_vertical_bin_dataset + Generate polygons for each bin after masking within a rectangle formed by height and latitude intervals + ''' + # Create latitude bins based on the specified interval + lat_bins = np.arange(lat.min(), lat.max() + lat_interval, lat_interval) + + # Create height bins within the range [-12, 2] based on the specified interval + height_bins = np.arange(-12, 2 + height_interval, height_interval) + + # Identify which bin each masked latitude and height value belongs to + lat_bin_indices = np.digitize(lat[mask], lat_bins) + + # Determine which height bin each masked point belongs to + height_bin_indices = np.digitize(height[mask], height_bins) + + # Combine latitude and height bin indices for each point + combined_bins = list(zip(lat_bin_indices, height_bin_indices)) + + # Find unique bin combinations and count the number of points in each bin + unique_bins, counts = np.unique(combined_bins, axis=0, return_counts=True) + + # Filter bins to include only those within valid index ranges + valid_bins = [(bin[0], bin[1]) for bin in unique_bins if 1 <= bin[0] < len(lat_bins) and 1 <= bin[1] < len(height_bins)] + + polygons = [] + for bin_lat, bin_height in valid_bins: + if bin_lat > 0 and bin_lat < len(lat_bins) and bin_height > 0 and bin_height < len(height_bins): + bin_points = np.array([(lat[mask][i], height[mask][i]) for i in range(sum(mask)) + if lat_bin_indices[i] == bin_lat and height_bin_indices[i] == bin_height]) + if len(bin_points) > 2: + hull = ConvexHull(bin_points) + polygons.append(bin_points[hull.vertices]) + + return lat_bins, height_bins, valid_bins, polygons + + + diff --git a/icesat2_kdph-main/kd_utils/interpolation.py b/icesat2_kdph-main/kd_utils/interpolation.py new file mode 100644 index 0000000..7670c89 --- /dev/null +++ b/icesat2_kdph-main/kd_utils/interpolation.py @@ -0,0 +1,19 @@ +# utils/interpolation.py + +import scipy.interpolate + +def interpolate_labels(segment_lat, labels): + model = scipy.interpolate.interp1d(segment_lat, labels, fill_value="extrapolate") + return model + +def apply_interpolation(model, lat_ph): + return model(lat_ph) + +def geoid_correction(lat_ph, segment_lat, geoid): + model = interpolate_labels(segment_lat, geoid) + return apply_interpolation(model, lat_ph) + +def refraction_correction(lat_ph, segment_lat, ref_elev, ref_azimuth): + elev_model = interpolate_labels(segment_lat, ref_elev) + azimuth_model = interpolate_labels(segment_lat, ref_azimuth) + return apply_interpolation(elev_model, lat_ph), apply_interpolation(azimuth_model, lat_ph) diff --git a/icesat2_kdph-main/kd_utils/kd_utils.py b/icesat2_kdph-main/kd_utils/kd_utils.py new file mode 100644 index 0000000..39c3687 --- /dev/null +++ b/icesat2_kdph-main/kd_utils/kd_utils.py @@ -0,0 +1,1181 @@ +#!/usr/bin/env python +# coding: utf-8 + +##### +# This group of functions processes ICESat-2 data and creates a bathymetric model. +# To do this, it follows a number of steps in the form of functions, including: +# 1. Reading data (ReadATL03()) +# 2. Orthometrically correcting the dataset (OrthometricCorrection()) +# 3. Pulling down the data segment ID (getAtl03SegID()) +# 4. Bin the data along latitudinal and height gradients (bin_data()) +# 5. Calculate sea height (get_sea_height()) +# 6. Get water temperature (get_water_temp()) +# 7. Correct bathymetric surface for refraction (RefractionCorrection()) +# 8. Calculate bathymetric height (get_bath_height()) +# 9. Produce figures (produce_figures()) +##### +import os +# os.environ["PROJ_LIB"] = r"C:\Users\wayne\anaconda3\Library\share\proj" + +import io +import os +import re +import time +import math +import h5py +import logging +import netCDF4 +import numpy as np +import geopandas as gpd + +import pandas as pd +from datetime import datetime +import matplotlib.pyplot as plt +import hdbscan +from sklearn.preprocessing import StandardScaler, MinMaxScaler + +import argparse +import subprocess +# import fiona +import utm +import pyproj +from pyproj import Transformer, Proj + +# from pyproj import Transformer +from matplotlib.widgets import LassoSelector +from matplotlib.path import Path + +from sklearn.cluster import DBSCAN + +#this function from icesat2_toolkit +# PURPOSE: read ICESat-2 ATL03 HDF5 data files +def read_granule(FILENAME, ATTRIBUTES=False, **kwargs): + """ + Reads ICESat-2 ATL03 Global Geolocated Photons data files + + Parameters + ---------- + FILENAME: str + full path to ATL03 file + ATTRIBUTES: bool, default False + read file, group and variable attributes + + Returns + ------- + IS2_atl03_mds: dict + ATL03 variables + IS2_atl03_attrs: dict + ATL03 attributes + IS2_atl03_beams: list + valid ICESat-2 beams within ATL03 file + """ + # Open the HDF5 file for reading + if isinstance(FILENAME, io.IOBase): + fileID = h5py.File(FILENAME, 'r') + else: + fileID = h5py.File(os.path.expanduser(FILENAME), 'r') + + # Output HDF5 file information + logging.info(fileID.filename) + logging.info(list(fileID.keys())) + + # allocate python dictionaries for ICESat-2 ATL03 variables and attributes + IS2_atl03_mds = {} + IS2_atl03_attrs = {} + + # read each input beam within the file + IS2_atl03_beams = [] + for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\d[lr]',k))]: + # check if subsetted beam contains data + # check in both the geolocation and heights groups + try: + fileID[gtx]['geolocation']['segment_id'] + fileID[gtx]['heights']['delta_time'] + except KeyError: + pass + else: + IS2_atl03_beams.append(gtx) + + # for each included beam + for gtx in IS2_atl03_beams: + # get each HDF5 variable + IS2_atl03_mds[gtx] = {} + IS2_atl03_mds[gtx]['heights'] = {} + IS2_atl03_mds[gtx]['geolocation'] = {} + IS2_atl03_mds[gtx]['bckgrd_atlas'] = {} + IS2_atl03_mds[gtx]['geophys_corr'] = {} + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_mds[gtx]['heights'][key] = val[:] + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_mds[gtx]['geolocation'][key] = val[:] + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:] + # ICESat-2 Geophysical Corrections Group: Values for tides (ocean, + # solid earth, pole, load, and equilibrium), inverted barometer (IB) + # effects, and range corrections for tropospheric delays + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:] + + # Getting attributes of included variables + if ATTRIBUTES: + # Getting attributes of IS2_atl03_mds beam variables + IS2_atl03_attrs[gtx] = {} + IS2_atl03_attrs[gtx]['heights'] = {} + IS2_atl03_attrs[gtx]['geolocation'] = {} + IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {} + IS2_atl03_attrs[gtx]['geophys_corr'] = {} + # Global Group Attributes + for att_name,att_val in fileID[gtx].attrs.items(): + IS2_atl03_attrs[gtx][att_name] = att_val + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_attrs[gtx]['heights'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_attrs[gtx]['geolocation'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val + # ICESat-2 Geophysical Corrections Group + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val + + # ICESat-2 spacecraft orientation at time + IS2_atl03_mds['orbit_info'] = {} + IS2_atl03_attrs['orbit_info'] = {} + for key,val in fileID['orbit_info'].items(): + IS2_atl03_mds['orbit_info'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID['orbit_info'].attrs.items(): + IS2_atl03_attrs['orbit_info'][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs['orbit_info'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['orbit_info'][key][att_name] = att_val + + # information ancillary to the data product + # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC) + # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC) + # Add this value to delta time parameters to compute full gps_seconds + # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5 + # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch) + IS2_atl03_mds['ancillary_data'] = {} + IS2_atl03_attrs['ancillary_data'] = {} + ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc', + 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit', + 'end_region','end_rgt','granule_end_utc','granule_start_utc','release', + 'start_cycle','start_geoseg','start_gpssow','start_gpsweek', + 'start_orbit','start_region','start_rgt','version'] + for key in ancillary_keys: + # get each HDF5 variable + IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data'][key] = {} + for att_name,att_val in fileID['ancillary_data'][key].attrs.items(): + IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val + + # transmit-echo-path (tep) parameters + IS2_atl03_mds['ancillary_data']['tep'] = {} + IS2_atl03_attrs['ancillary_data']['tep'] = {} + for key,val in fileID['ancillary_data']['tep'].items(): + # get each HDF5 variable + IS2_atl03_mds['ancillary_data']['tep'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data']['tep'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val + + # channel dead time and first photon bias derived from ATLAS calibration + cal1,cal2 = ('ancillary_data','calibrations') + for var in ['dead_time','first_photon_bias']: + IS2_atl03_mds[cal1][var] = {} + IS2_atl03_attrs[cal1][var] = {} + for key,val in fileID[cal1][cal2][var].items(): + # get each HDF5 variable + if isinstance(val, h5py.Dataset): + IS2_atl03_mds[cal1][var][key] = val[:] + elif isinstance(val, h5py.Group): + IS2_atl03_mds[cal1][var][key] = {} + for k,v in val.items(): + IS2_atl03_mds[cal1][var][key][k] = v[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs[cal1][var][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][att_name] = att_val + if isinstance(val, h5py.Group): + for k,v in val.items(): + IS2_atl03_attrs[cal1][var][key][k] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val + + # get ATLAS impulse response variables for the transmitter echo path (TEP) + tep1,tep2 = ('atlas_impulse_response','tep_histogram') + IS2_atl03_mds[tep1] = {} + IS2_atl03_attrs[tep1] = {} + for pce in ['pce1_spot1','pce2_spot3']: + IS2_atl03_mds[tep1][pce] = {tep2:{}} + IS2_atl03_attrs[tep1][pce] = {tep2:{}} + # for each TEP variable + for key,val in fileID[tep1][pce][tep2].items(): + IS2_atl03_mds[tep1][pce][tep2][key] = val[:] + # Getting attributes of included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID[tep1][pce][tep2].attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs[tep1][pce][tep2][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val + + # Global File Attributes + if ATTRIBUTES: + for att_name,att_val in fileID.attrs.items(): + IS2_atl03_attrs[att_name] = att_val + + # Closing the HDF5 file + fileID.close() + # Return the datasets and variables + return (IS2_atl03_mds,IS2_atl03_attrs,IS2_atl03_beams) + +# convert_wgs_to_utm function, see https://stackoverflow.com/a/40140326/4556479 +def convert_wgs_to_utm(lon: float, lat: float): + """Based on lat and lng, return best utm epsg-code""" + utm_band = str((math.floor((lon + 180) / 6) % 60) + 1) + if len(utm_band) == 1: + utm_band = '0' + utm_band + if lat >= 0: + epsg_code = 'epsg:326' + utm_band + return epsg_code + epsg_code = 'epsg:327' + utm_band + return epsg_code + + +def orthometric_correction(lat, lon, Z, epsg): + # Define the Proj string + #To transform from WGS84 ellipsoidal height + # to EGM2008 orthometric height using PyProj + # proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +vunits=m +no_defs +geoidgrids=egm2008-1.gtx' + # # Define the Proj string for WGS84 ellipsoidal height + # wgs84_proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs' + + # # Define the Proj string for EGM2008 orthometric height: egm08_25,egm2008-1 + # egm2008_proj_string = \ + # '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs ' \ + # '+geoidgrids=C:/Workstation/ICESat2_HLS/Code/Geoids/egm08_25.gtx' + + # transform ellipsoid (WGS84) height to orthometric height + # transformer = Transformer.from_crs(wgs84_proj_string, egm2008_proj_string, always_xy=True) + transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) + X_egm08, Y_egm08, Z_egm08 = transformer.transform(lon, lat, Z) + + # transform WGS84 proj to local UTM + myProj = Proj(epsg) + X_utm, Y_utm = myProj(lon, lat) + + return Y_utm, X_utm, Z_egm08 + + +# Snippet by Eric Guenther (via Amy N.) for assigning photons to a segment +def get_atl03_seg_id(atl03_ph_index_beg, atl03_segment_id, atl03_heights_len): + # We need to know spacecraft orbit info, + # which is provided across segments. + # This first function assigns photons to the segment they belong to. + # We end up making a new array + # that has more points to match the photon. Segment is defined as every 100m in the long track. + + # Filter all data where atl03_ph_index starts at 0 (0 indicates errors) + indsNotZero = atl03_ph_index_beg != 0 + atl03_ph_index_beg = atl03_ph_index_beg[indsNotZero] + atl03_segment_id = atl03_segment_id[indsNotZero] + + # Subtract 1 from ph_index_beg to start at python 0th pos + atl03_ph_index_beg = atl03_ph_index_beg - 1 + + # Sometimes the ph_index_beg is not at the 0th position, it is not, + # add it in and then add the associated segment id + # Warning, this is assuming that the segment id for the points are from + # the segment id directly before it, this assumption might fail, but I have + # not come across a case yet where it does. If you want to play it safe + # you could comment this section out and then if the first position is not + # 0 then all photons before the first position will not be assigned a + # segment id. + # if atl03_ph_index_beg[0] != 0: + # atl03_ph_index_beg = np.append(0,atl03_ph_index_beg) + # first_seg_id = atl03_segment_id[0] -1 + # atl03_segment_id = np.append(first_seg_id,atl03_segment_id) + + # Append atl03_height_len to end of array for final position + atl03_ph_index_beg = np.append(atl03_ph_index_beg, atl03_heights_len) + + # Make array equal to the length of the atl03_heights photon level data + ph_segment_id = np.zeros(atl03_heights_len) + + # Iterate through ph_index_beg, from the first to second to last number + # and set the photons between ph_index_beg i to ph_index_beg i + 1 to + # segment id i + for i in range(0, len(atl03_ph_index_beg) - 1): + ph_segment_id[atl03_ph_index_beg[i]:atl03_ph_index_beg[i + 1]] = atl03_segment_id[i] + + # Return list of segment_id at the photon level + return ph_segment_id + + +def ref_linear_interp(x, y): + # initialize an empty list + arr = [] + + # get unique x values + ux = np.unique(x) + for u in ux: + # get y values for x=u + idx = y[x == u] + + # try to get the y values for x=u-1 and x=u + # if this is not possible, set min and max to y values for x=u + try: + min = y[x == u - 1][0] + max = y[x == u][0] + except: + min = y[x == u][0] + max = y[x == u][0] + + # try to get the y values for x=u and x=u+1 + # if this is not possible, set min and max to y values for x=u + try: + min = y[x == u][0] + max = y[x == u + 1][0] + except: + min = y[x == u][0] + max = y[x == u][0] + + # if the min and max values are the same, + # fill the sub array with the value + if min == max: + sub = np.full((len(idx)), min) + arr.append(sub) + + # if min and max are different, + # create a sub array using linear interpolation + else: + sub = np.linspace(min, max, len(idx)) + arr.append(sub) + + # concatenate all the sub arrays into a single array and return + return np.concatenate(arr, axis=None).ravel() + + +# Bin data along vertical and horizontal scales +def horizontal_vertical_bin_dataset(dataset, lat_res, vertical_res): + """Bin data along vertical and horizontal scales + for later segmentation""" + + # Filter values within the range (-50, 10), because photons elevation outside this range will be real noise + valid_range = (-50, 10) + valid_mask = (dataset['photon_height'] > valid_range[0]) & (dataset['photon_height'] < valid_range[1]) + + # Apply the valid_mask to filter unwanted values + filtered_dataset = dataset[valid_mask] + + # Calculate the number of height bins + height_range = abs(filtered_dataset['photon_height'].max() - filtered_dataset['photon_height'].min()) + height_bin_number = max(1, round(height_range / vertical_res)) # Ensure at least one bin + + # Calculate the number of latitude bins + lat_range = abs(filtered_dataset['lat'].max() - filtered_dataset['lat'].min()) + lat_bin_number = max(1, round(lat_range / lat_res)) # Ensure at least one bin + + # Create bins for latitude + lat_bins = pd.cut(filtered_dataset['lat'], bins=lat_bin_number, labels=np.arange(lat_bin_number)) + + # Create bins for height + height_bins = pd.cut(filtered_dataset['photon_height'], bins=height_bin_number, + labels=np.round(np.linspace(filtered_dataset['photon_height'].min(), + filtered_dataset['photon_height'].max(), + num=height_bin_number), decimals=1)) + + # Add bins to dataframe using .loc to avoid SettingWithCopyWarning + filtered_dataset.loc[:, 'lat_bins'] = lat_bins + filtered_dataset.loc[:, 'height_bins'] = height_bins + filtered_dataset = filtered_dataset.reset_index(drop=True) + + return filtered_dataset + + +# thinking about grid searching to detect bathymetric directly +# rather than bin and then search +def horizontal_vertical_grid_density_cal(dataset, lat_res, vertical_res, density_threshold): + """Bin data along vertical and horizontal scales + and calculate high-density points using a grid method""" + + # Calculate the number of bins required both vertically + lat_bin_number = round(abs(dataset['lat'].min() - dataset['lat'].max()) / lat_res) + # and horizontally based on resolution size + height_bin_number = round(abs(dataset['photon_height'].min() - dataset['photon_height'].max()) / vertical_res) + + # Create the grid + grid = np.zeros((lat_bin_number, height_bin_number)) + + # Iterate over the dataset and assign points to cells + for _, row in dataset.iterrows(): + lat_index = int((row['lat'] - dataset['lat'].min()) / lat_res) + height_index = int((row['photon_height'] - dataset['photon_height'].min()) / vertical_res) + grid[lat_index, height_index] += 1 + + # Identify high-density cells + high_density_cells = np.argwhere(grid > density_threshold) + + # Create a copy of the dataset + dataset_copy = dataset.copy() + + # Assign the cell indices as bins to the dataset + dataset_copy['lat_bins'] = pd.cut(dataset['lat'], bins=lat_bin_number, + labels=np.arange(lat_bin_number)) + dataset_copy['height_bins'] = pd.cut(dataset['photon_height'], bins=height_bin_number, + labels=np.arange(height_bin_number)) + + # Reset the index of the copied dataset + dataset_copy = dataset_copy.reset_index(drop=True) + + return dataset_copy, high_density_cells + + +# Bin data along horizontal scale only +def horizontal_bin_dataset(dataset, lat_res): + """Bin data along the horizontal scale (lat) only + for later segmentation""" + + # Calculate the number of bins required horizontally based on resolution size + lat_bin_number = round(abs(dataset['lat_utm'].min() - dataset['lat_utm'].max()) / lat_res) + + # Cut lat bins + # lat_bins = pd.cut(dataset['lat'], bins=lat_bin_number, labels=np.array(range(lat_bin_number))) + lat_bins = pd.cut(dataset['lat_utm'], bins=lat_bin_number, labels=np.array(range(lat_bin_number))) + + # Create a copy of the dataset + dataset_copy = dataset.copy() + + # Add lat bins to the dataframe + dataset_copy['lat_bins'] = lat_bins + + # Reset the index of the copied dataset + dataset_copy = dataset_copy.reset_index(drop=True) + + return dataset_copy + + +# Bin data first, and then throw away only the surface bin +def get_rm_sea_surface_bin(binned_dataset): + """Calculate mean sea height for easier calculation of depth and cleaner + figures""" + + # set flag for the df save + flag = 1 + + # group dataset by lat bins + grouped_data = binned_dataset.groupby(['lat_bins'], group_keys=True) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average sea height + for k, v in data_groups.items(): + + lat_bin_average = v['lat'].mean() + + # Create new dataframe based on occurrence of photons per height bin + new_df = pd.DataFrame(v.groupby('height_bins',observed=False).count()) + + # Return the bin with the highest count + largest_h_bin = new_df['lat'].argmax() + + # Select the index of the bin with the highest count + largest_h_index = new_df.index[largest_h_bin] + + # get all values below this bin + # Use boolean indexing to select only the values below the peak bin + new_photon_array_without_peak_bin = v.loc[v['height_bins'] < largest_h_index] + + if flag == 1: + photon_array_without_peak_bin = new_photon_array_without_peak_bin + flag = 2 + + else: + photon_array_without_peak_bin = photon_array_without_peak_bin.append(new_photon_array_without_peak_bin) + + del new_df + + return photon_array_without_peak_bin + + +def get_sea_surface_height(binned_data, threshold): + """Calculate mean sea height for easier calculation of depth and cleaner figures""" + + #set flag for the df save + firstTimeIndex = True + + # Create sea height list + sea_surface_height = [] + mean_lat_bins_seq = [] + sea_surface_subsurface_photons_ratio = [] + + + # Group dataset by latitude bins + grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average sea height + for k, v in data_groups.items(): + # based on lat_utm + lat_bin_average = v['lat'].mean() + + # Create new dataframe based on occurrence of photons per height bin + new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) + + # Return the bin with the highest count + largest_h_bin = new_df['lat'].argmax() + + # Select the index of the bin with the highest count + largest_h_index = new_df.index[largest_h_bin] + + # Calculate the median value of all photon height values within this bin + photons_sea_surface = v.loc[v['height_bins'] == largest_h_index, 'photon_height'] + lat_bin_sea_median = photons_sea_surface.median() + + # Append to sea height list + sea_surface_height.append(lat_bin_sea_median) + mean_lat_bins_seq.append(lat_bin_average) + del new_df + + # Get all photons below sea surface + # to determine segment type of each subsurface water column + # Use calculated sea height to determine photons at 0.5m below peak + photons_sea_surface_up = \ + v.loc[(v['photon_height'] > (lat_bin_sea_median - threshold)) & + (v['photon_height'] < (lat_bin_sea_median + 2*threshold))] + + # Calculate the photon ratio between surface and whole photons + if v['photon_height'].shape[0] > 0: + new_photons_ratio_sea_surface = \ + photons_sea_surface_up.shape[0] / v['photon_height'].shape[0] + else: + new_photons_ratio_sea_surface = np.nan + + sea_surface_subsurface_photons_ratio.append((1 - new_photons_ratio_sea_surface)) + + # Filter out sea height bin values outside 2 SD of mean. + mean = np.nanmean(sea_surface_height, axis=0) + sd = np.nanstd(sea_surface_height, axis=0) + + final_sea_surface_height = np.where((sea_surface_height > (mean + 2 * sd)) | + (sea_surface_height < (mean - 2 * sd)), + np.nan, + sea_surface_height).tolist() + + sea_surface_height_abnormal_label = np.where(np.isnan(final_sea_surface_height), 0, 1) + + # Determine label based on ratio of sea surface photons and subsurface photons + sea_surface_dominated_label = \ + np.where(np.array(sea_surface_subsurface_photons_ratio) >= 0.2, 0, 1) + + # Loop through groups again and return photons below 0.5m of sea height + PhotonDFBelowThresholdPeak = pd.DataFrame() + for i, (k, v) in enumerate(data_groups.items()): + # Get all values below this bin + NewPhotonDFBelowThresholdPeak = \ + v.loc[v['photon_height'] < (final_sea_surface_height[i] - threshold)] + + if firstTimeIndex: + PhotonDFBelowThresholdPeak = NewPhotonDFBelowThresholdPeak + firstTimeIndex=False + else: + PhotonDFBelowThresholdPeak=\ + pd.concat([PhotonDFBelowThresholdPeak, NewPhotonDFBelowThresholdPeak]) + + + return final_sea_surface_height, \ + sea_surface_height_abnormal_label, \ + sea_surface_dominated_label,\ + PhotonDFBelowThresholdPeak + + +# +#Arbitrary cutoff below the max value - 0.5 m below peak +# (we may also use 1 m but we can add that later) (apply to raw photon data, each of 6 beams) +def get_photon_below_sea_surface(binned_data,threshold): + '''Calculate mean sea height for easier calculation of depth and cleaner figures''' + + #set flag for the df save + firstTimeIndex=1 + + # Create sea height list + sea_surface_height = [] +# mean_lat_bins_seq=[] + + grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average sea height + for k,v in data_groups.items(): + + lat_bin_average=v['lat_utm'].mean() + + # Create new dataframe based on occurance of photons per height bin + new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) + + # Return the bin with the highest count + largest_h_bin = new_df['lat_utm'].argmax() + + # Select the index of the bin with the highest count + largest_h = new_df.index[largest_h_bin] + + # Calculate the median value of all values within this bin + lat_bin_sea_median = v.loc[v['height_bins']==largest_h, 'photon_height'].median() + + # Append to sea height list + sea_surface_height.append(lat_bin_sea_median) +# mean_lat_bins_seq.append(lat_bin_average) + del new_df + + # Filter out sea height bin values outside 2 SD of mean. + mean = np.nanmean(sea_surface_height, axis=0) + sd = np.nanstd(sea_surface_height, axis=0) + Final_sea_height = np.where((sea_surface_height > (mean + 2*sd)) | (sea_surface_height < (mean - 2*sd)), np.nan, + sea_surface_height).tolist() + Abnormal_sea_height_label=np.where(np.isnan(Final_sea_height), 1, 0) + + + # Loop through groups again and return photons below 0.5m of sea height + for k,v in data_groups.items(): + + # get all values below this bin + # Use calculated sea height to determine photons at 0.5m below peak + NewPhotonArrayBelowThresholdPeak= \ + v.loc[v['photon_height']<(sea_surface_height[k]-threshold)] + + if firstTimeIndex ==1: + PhotonArrayBelowThresholdPeak=NewPhotonArrayBelowThresholdPeak + firstTimeIndex=2 + + else: + PhotonArrayBelowThresholdPeak=PhotonArrayBelowThresholdPeak.append(NewPhotonArrayBelowThresholdPeak) + + + return PhotonArrayBelowThresholdPeak + + + +# Function to get elevation for multiple points +def get_seafloor_bathy_GEBCO_batch(lons, lats, raster, raster_data): + # Convert geographic coordinates to the raster's coordinate system + rows, cols = raster.index(lons, lats) + rows, cols = np.array(rows), np.array(cols) + + # Ensure the indices are within bounds + valid_mask = (rows >= 0) & (rows < raster.height) & (cols >= 0) & (cols < raster.width) + elevations = np.full(lons.shape, np.nan) + elevations[valid_mask] = raster_data[rows[valid_mask], cols[valid_mask]] + + return elevations + +def get_water_temp(date_year, date_month, date_day, latitude, longitude): + """ + Pull down surface water temperature along the track from the JPL GHRSST opendap website. + + The GHRSST data are gridded tiles with dimension 17998 x 35999. + To get the specific grid tile of the SST, you must convert from lat, lon coordinates + to the gridded tile ratio of the SST data product using the coordinates of the IS2 data. + """ + # Get date from data filename + # data_path[-33:-25] + date = date_year + date_month + date_day + # date[0:4] + year = date_year + # date[4:6] + month = date_month + # date[6:8] + day = date_day + day_of_year = str(datetime.strptime(date, '%Y%m%d').timetuple().tm_yday) + # Add zero in front of day of year string + zero_day_of_year = day_of_year.zfill(3) + + # Calculate ratio of latitude from mid-point of IS2 track + old_lat = latitude.mean() + old_lat_min = -90 + old_lat_max = 90 + new_lat_min = 0 + new_lat_max = 17998 + + new_lat = round(((old_lat - old_lat_min) / (old_lat_max - old_lat_min)) * + (new_lat_max - new_lat_min) + new_lat_min) + + # Calculate ratio of longitude from mid-point of IS2 track + old_lon = longitude.mean() + old_lon_min = -180 + old_lon_max = 180 + new_lon_min = 0 + new_lon_max = 35999 + + new_lon = round(((old_lon - old_lon_min) / (old_lon_max - old_lon_min)) * + (new_lon_max - new_lon_min) + new_lon_min) + + # Access the SST data using the JPL OpenDap interface + url = 'https://opendap.jpl.nasa.gov/opendap/OceanTemperature/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/' \ + + str(year) + '/' + str(zero_day_of_year) + '/' + str(date) \ + + '090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc' + + dataset = netCDF4.Dataset(url) + + # Access the data and convert the temperature from K to C + water_temp = dataset['analysed_sst'][0, new_lat, new_lon] - 273.15 + return water_temp + + +def refraction_correction(WTemp, WSmodel, Wavelength, + Photon_ref_elev, Ph_ref_azimuth, + PhotonZ, PhotonX, PhotonY, Ph_Conf): + """ + WTemp; there is python library that pulls water temp data + WSmodel is the value surface height + Wavelength is fixed + """ + + # Only process photons below water surface model + PhotonX = PhotonX[PhotonZ <= WSmodel] + PhotonY = PhotonY[PhotonZ <= WSmodel] + Photon_ref_elev = Photon_ref_elev[PhotonZ <= WSmodel] + Ph_ref_azimuth = Ph_ref_azimuth[PhotonZ <= WSmodel] + Ph_Conf = Ph_Conf[PhotonZ <= WSmodel] + PhotonZ = PhotonZ[PhotonZ <= WSmodel] + + # water temp for refraction correction + WaterTemp = WTemp + + # Refraction coefficient # + a = -0.000001501562500 + b = 0.000000107084865 + c = -0.000042759374989 + d = -0.000160475520686 + e = 1.398067112092424 + wl = Wavelength + + # refractive index of air + n1 = 1.00029 + + # refractive index of water + n2 = (a * WaterTemp ** 2) + (b * wl ** 2) + (c * WaterTemp) + (d * wl) + e + + # assumption is 0.25416 + # This example is refractionCoef = 0.25449 + # 1.00029 is refraction of air constant + correction_coef = (1 - (n1 / n2)) + + # read photon ref_elev to get theta1 + theta1 = np.pi / 2 - Photon_ref_elev + + # eq 1. Theta2 + theta2 = np.arcsin(((n1 * np.sin(theta1)) / n2)) + + # eq 3. S + # Approximate water Surface = 1.5 + # D = raw uncorrected depth + D = WSmodel - PhotonZ + + # For Triangle DTS + S = D / np.cos(theta1) + + # eq 2. R + R = (S * n1) / n2 + Gamma = (np.pi / 2) - theta1 + + # For triangle RPS + # phi is an angle needed + phi = theta1 - theta2 + + # P is the difference between raw and corrected YZ location + P = np.sqrt(R ** 2 + S ** 2 - 2 * R * S * np.cos(phi)) + + # alpha is an angle needed + alpha = np.arcsin((R * np.sin(phi)) / P) + + # Beta angle needed for Delta Y an d Delta Z + Beta = Gamma - alpha + + # Delta Y + DY = P * np.cos(Beta) + + # Delta Z + DZ = P * np.sin(Beta) + + # Delta Easting + DE = DY * np.sin(Ph_ref_azimuth) + + # Delta Northing + DN = DY * np.cos(Ph_ref_azimuth) + + outX = PhotonX + DE + outY = PhotonY + DN + outZ = PhotonZ + DZ + + ''' + print('For selected Bathy photon:') + print('lat = ', PhotonY[9000]) + print('long = ', PhotonX[9000]) + print('Raw Depth = ', PhotonZ[9000]) + print('D = ', D[9000]) + + print('ref_elev = ', Photon_ref_elev[9000]) + + print('Delta East = ', DE[9000]) + print('Delta North = ', DN[9000]) + print('Delta Z = ', DZ[9000]) + ''' + return (outX, outY, outZ, Ph_Conf, PhotonX, PhotonY, PhotonZ, Ph_ref_azimuth, + Photon_ref_elev) # We are most interested in out-x, out-y, out-z + + +def get_bath_height_percentile_thresh(binned_data, percentile_thresh, sea_surface_height, vertical_res): + """ Detect bathymetric level per bin based on percentile_thresh """ + # Create sea height list + bath_height = [] + + geo_photon_height = [] + geo_longitude = [] + geo_latitude = [] + + # Group data by latitude + # Filter out surface data that are two bins below median surface value calculated above + binned_data_bath = binned_data[(binned_data['photon_height'] < + sea_surface_height - (vertical_res * 2))] + grouped_data = binned_data_bath.groupby(['lat_bins'], group_keys=True) + data_groups = dict(list(grouped_data)) + + # Create a percentile threshold of photon counts in each grid, + # grouped by both x and y axes. + count_threshold = np.percentile( + binned_data.groupby(['lat_bins', 'height_bins']).size().reset_index().groupby('lat_bins')[[0]].max(), + percentile_thresh) + + # Loop through groups and return average bathy height + for k, v in data_groups.items(): + new_df = pd.DataFrame(v.groupby('height_bins').count()) + bath_bin = new_df['lat'].argmax() + bath_bin_h = new_df.index[bath_bin] + + # Set threshold of photon counts per bin + # here this script determines whether there is bathymetry signals by + # the photon counts per bin below sea surface height + if new_df.iloc[bath_bin]['lat'] >= count_threshold: + + geo_photon_height.append(v.loc[v['height_bins'] == + bath_bin_h, 'cor_photon_height'].values) + geo_longitude.append(v.loc[v['height_bins'] == bath_bin_h, 'lon'].values) + geo_latitude.append(v.loc[v['height_bins'] == bath_bin_h, 'lat'].values) + + bath_bin_median = v.loc[v['height_bins'] == bath_bin_h, 'cor_photon_height'].median() + bath_height.append(bath_bin_median) + del new_df + + else: + bath_height.append(np.nan) + del new_df + + geo_longitude_list = np.concatenate(geo_longitude).ravel().tolist() + geo_latitude_list = np.concatenate(geo_latitude).ravel().tolist() + geo_photon_list = np.concatenate(geo_photon_height).ravel().tolist() + geo_depth = sea_surface_height - geo_photon_list + geo_df = pd.DataFrame( + {'lon': geo_longitude_list, 'lat': geo_latitude_list, + 'photon_height': geo_photon_list, + 'depth': geo_depth}) + + del geo_longitude_list, geo_latitude_list, geo_photon_list + + return bath_height, geo_df + + +def get_bath_height_HDBSCAN(lat_binned_data, percentile_thresh, sea_surface_height, vertical_res): + """ Calculate bathymetric level per lat bin based on horizontal resolution """ + # Create sea height list + bath_height = [] + geo_photon_height = [] + geo_longitude = [] + geo_latitude = [] + + # Group data by latitude + # Filter out surface data that are two bins (2 times height resolution) + # below median sea surface value calculated above + binned_data_bath = lat_binned_data[(lat_binned_data['photon_height'] < + sea_surface_height - (vertical_res * 2))] + + grouped_data = binned_data_bath.groupby(['lat_bins'], group_keys=True) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average bathymetric height + for k, v in data_groups.items(): + + # assign each group of dataset to a new dataframe + new_df = pd.DataFrame(v) + + # Check if the DataFrame is empty + if new_df.empty: + # If the DataFrame is empty, append null values to the lists and skip to the next iteration + bath_height.append(np.nan) + geo_photon_height.append([]) + geo_longitude.append([]) + geo_latitude.append([]) + del new_df + continue + + lat_height_pairs = list(zip(new_df['lat_utm'], new_df['cor_photon_height'])) + + # Convert to a numpy array for sklearn + lat_height_pairs_array = np.array(lat_height_pairs) + + # Perform HDBSCAN clustering on the photons below sea surface for each lat bin + # scaler = StandardScaler() + scaler = MinMaxScaler() + data_scaled = scaler.fit_transform(lat_height_pairs_array) + + min_cluster_size = 4 + + # Check the number of data points is greater than the initial min_cluster_size + if len(data_scaled) < min_cluster_size: + min_cluster_size = len(data_scaled) // 2 + if min_cluster_size < 2: + bath_height.append(np.nan) + geo_photon_height.append([]) + geo_longitude.append([]) + geo_latitude.append([]) + del new_df + continue + + # cluster = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, leaf_size=20) + cluster = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, + min_samples=3, cluster_selection_epsilon=20, + leaf_size=25, core_dist_n_jobs=-1) + cluster.fit(data_scaled) + + # Get the labels assigned to each point by the HDBSCAN model + labels = cluster.labels_ + + # Count the number of points assigned to each cluster + unique, counts = np.unique(labels, return_counts=True) + + # Create a dictionary that maps each cluster label to the count of points assigned to it + clusters_dict = dict(zip(unique, counts)) + + # Print the dictionary to see the size of each cluster + print(clusters_dict) + + # Identify the label of the largest cluster + max_cluster_label = max(clusters_dict, key=clusters_dict.get) + + # Check if no cluster is found + if max_cluster_label == -1: + bath_height.append(np.nan) + else: + # Add labels to the DataFrame + new_df_copy = new_df.copy() + new_df_copy['cluster'] = labels + + # Subset the DataFrame to get only the data points in the largest cluster + bath_cluster_data = new_df[new_df_copy['cluster'] == max_cluster_label] + + # calculate the median height value as the average bathymetric height + bath_bin_median = bath_cluster_data['cor_photon_height'].median() + bath_height.append(bath_bin_median) + + # Extract the longitude, latitude, and photon height for each lat bin + # and add it to respective lists + geo_photon_height.append(bath_cluster_data['cor_photon_height'].values) + geo_longitude.append(bath_cluster_data['lon_utm'].values) + geo_latitude.append(bath_cluster_data['lat_utm'].values) + + del new_df + + # Convert the lists to a single list + geo_longitude_list = np.concatenate(geo_longitude).ravel().tolist() + geo_latitude_list = np.concatenate(geo_latitude).ravel().tolist() + geo_photon_list = np.concatenate(geo_photon_height).ravel().tolist() + + # Calculate depth + geo_depth = sea_surface_height - np.array(geo_photon_list) + + # Create a DataFrame + geo_df = pd.DataFrame( + {'lon': geo_longitude_list, 'lat': geo_latitude_list, + 'photon_height': geo_photon_list, + 'depth': geo_depth.tolist()}) + + return bath_height, geo_df + +# requires that the input gdf has ranged index values i +# will need to change if index is changed to time or something +# this currently checks point in polygon for EVERY point +# would be significantly sped up if evaluated at 10m or something similar +# maybe later, fine for now +def isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF): + # try loading the shoreline data + try: + ICESat2_GDF.insert(0, 'lat', ICESat2_GDF.geometry.y, False) + ICESat2_GDF.insert(0, 'lon', ICESat2_GDF.geometry.x, False) + + # allocation of to be used arrays + zero_int_array = np.int64(np.zeros_like(ICESat2_GDF.geometry.x)) + + # Land flag initialized as -1 + # If shorelines downloaded already, will be set to 0 or 1 + ICESat2_GDF.insert(0, 'is_land', + zero_int_array - 1, False) + + # set the projection + ICESat2_GDF.set_crs("EPSG:4326", inplace=True) + + # load shoreline dataset to include only the features that intersect the bounding box + # bbox can be GeoDataFrame or GeoSeries | shapely Geometry, default None + # Filter features by given bounding box, GeoSeries, GeoDataFrame or a shapely geometry. + # engine str, 'fiona' or 'pyogrio' + # somtime it gives error if using fiona + # land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='fiona') + land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='pyogrio') + + # continue with getting a new array of 0-or-1 labels for each photon + land_point_labels = np.zeros_like(ICESat2_GDF.is_land.values) + + # update labels for points in the land polygons + pts_in_land = gpd.sjoin(ICESat2_GDF, land_polygon_gdf, predicate='within') + + # get land or not bool value + land_loc = ICESat2_GDF.index.isin(pts_in_land.index) + + # asigned them to new numpy array + land_point_labels[land_loc] = 1 + land_point_labels[~land_loc] = 0 + + return land_point_labels + + except Exception as e: + + print(e) + + print("Error loading shoreline data, returning -1s for is_land flag") + + # if the shoreline data is not available + # return the original label array + + return -np.ones_like(ICESat2_GDF.is_land.values) + + +# +def produce_figures(binned_data, bath_height, sea_height, solo_sea_surface_label, + y_limit_top, y_limit_bottom, percentile, file, geo_df, + ref_y, ref_z, beam, epsg_num): + """Create figures""" + + # Create bins for latitude + bath_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(bath_height))+20 + + sea_surface_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(sea_height))+10 + + # Create new dataframes for median values + bath_median_df = pd.DataFrame({'x': bath_x_axis_bins, 'y': bath_height}) + + # Create uniform sea surface based on median sea surface values and filter out surface breaching + sea_height1 = [np.nanmedian(sea_height) if i == i else np.nan for i in sea_height] + sea_median_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_height1}) + + # Create uniform solo sea surface label + sea_surface_label = solo_sea_surface_label + sea_surface_label_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_surface_label}) + idx_1 = np.where(sea_surface_label_df.y == 1) + idx_0 = np.where(sea_surface_label_df.y == 0) + + # Define figure size + fig = plt.rcParams["figure.figsize"] = (40, 25) + + # Plot raw points + # plt.scatter(x=binned_data.lat, + # y = binned_data.photon_height, marker='o', lw=0, s=1, alpha = 0.8, + # c = 'yellow', label = 'Raw photon height') + plt.scatter(ref_y, ref_z, s=0.5, alpha=0.1, c='black') + plt.scatter(geo_df.lat, geo_df.photon_height, s=0.8, marker = 'o', + alpha=0.1, c='red', label='Classified Photons') + + # plt.scatter(x=geo_df.lat, + # y = geo_df.photon_height, marker='o', lw=0, s=0.8, + # alpha = 0.8, c = 'black', label = 'Corrected photon bin') + + # Plot median values + plt.scatter(bath_median_df.x, bath_median_df.y, + marker='o', c='r', alpha=0.8, s=2, label='Median bathymetry') + + plt.scatter(sea_median_df.x, sea_median_df.y, + marker='o', c='b', alpha=1, s=2, label='Median sea surface') + + plt.scatter(sea_surface_label_df.iloc[idx_1].x, sea_surface_label_df.iloc[idx_1].y, + marker='o', c='pink', alpha=1, s=3, label='solo_sea_surface') + plt.scatter(sea_surface_label_df.iloc[idx_0].x, sea_surface_label_df.iloc[idx_0].y, + marker='o', c='g', alpha=1, s=3, label='non_solo_sea_surface') + + # Insert titles and subtitles + plt.title('Icesat2 Bathymetry\n' + file) + plt.xlabel('Latitude', fontsize=25) + plt.ylabel('Photon Height (m)', fontsize=25) + plt.xticks(fontsize=16) + plt.yticks(fontsize=16) + + plt.legend(loc="upper left", prop={'size': 20}) + + # Limit the x and y axes using parameters + plt.xlim(left=binned_data.lat.min(), right=binned_data.lat.max()) + plt.ylim(top=y_limit_top, bottom=y_limit_bottom) + + timestr = time.strftime("%Y%m%d_%H%M%S") + file = file.replace('.h5', '') + # Define where to save file + plt.tight_layout() + plt.savefig("C:/Workstation/ICESat2_HLS/" + file + '_gt' + + str(beam) + '_' + str(percentile) + + '_EPSG' + str(epsg_num) + '_' + timestr + ".pdf") + # plt.show() + # plt.close() + + # convert corrected locations back to wgs84 (useful to contain) + transformer = Transformer.from_crs("EPSG:" + str(epsg_num), + "EPSG:4326", always_xy=True) + print(transformer) + lon_wgs84, lat_wgs84 = transformer.transform( + geo_df.lon.values, geo_df.lat.values) + + geo_df['lon_wgs84'] = lon_wgs84 + geo_df['lat_wgs84'] = lat_wgs84 + + geodf = gpd.GeoDataFrame(geo_df, + geometry=gpd.points_from_xy(geo_df.lon_wgs84, + geo_df.lat_wgs84)) + + geodf.set_crs(epsg=4326, inplace=True) + + # geodf.to_file("C:/Workstation/ICESat2_HLS/" +file + '_gt' + '_' + str(percentile) + '_EPSG' + + # str(epsg_num) + '_' + timestr + ".gpkg", + # driver="GPKG") diff --git a/icesat2_kdph-main/kd_utils/sea_photons_analysis.py b/icesat2_kdph-main/kd_utils/sea_photons_analysis.py new file mode 100644 index 0000000..2e9cfcd --- /dev/null +++ b/icesat2_kdph-main/kd_utils/sea_photons_analysis.py @@ -0,0 +1,323 @@ + +import numpy as np +import geopandas as gpd +from datetime import datetime +import pandas as pd +import netCDF4 + + +# Function to apply binning beam-by-beam by calling the function of horizontal_vertical_bin_dataset +def process_sea_photon_binning(sea_photon_dataset, horizontal_res, vertical_res): + # Initialize list to store results from each beam + binned_beam_datasets = [] + + # Group the dataset by 'beam_id' and process each group separately + for beam_id, beam_data in sea_photon_dataset.groupby('beam_id'): + print(f'Processing binning for beam: {beam_id}') + + # Apply binning to the current beam dataset + binned_beam_data = horizontal_vertical_bin_dataset(beam_data, horizontal_res, vertical_res) + + # Append the binned data for the current beam to the list + binned_beam_datasets.append(binned_beam_data) + + # Combine all binned beam datasets into a single DataFrame + binned_dataset_sea_surface = pd.concat(binned_beam_datasets, ignore_index=True) + + return binned_dataset_sea_surface + + +# Bin data along vertical and horizontal scales +def horizontal_vertical_bin_dataset(dataset, lat_res, vertical_res): + """Bin data along vertical and horizontal scales + for later segmentation""" + + # Filter values within the range (-50, 10), because photons elevation outside this range will be real noise + valid_range = (-70, 5) + valid_mask = (dataset['photon_height'] > valid_range[0]) & (dataset['photon_height'] < valid_range[1]) + + # Apply the valid_mask to filter unwanted values + # and create a copy to avoid SettingWithCopyWarning + filtered_dataset = dataset[valid_mask].copy() + + # Calculate the number of height bins + height_range = abs(filtered_dataset['photon_height'].max() - filtered_dataset['photon_height'].min()) + height_bin_number = max(1, round(height_range / vertical_res)) # Ensure at least one bin + + # Calculate the number of latitude bins + lat_range = abs(filtered_dataset['lat'].max() - filtered_dataset['lat'].min()) + lat_bin_number = max(1, round(lat_range / lat_res)) # Ensure at least one bin + + # Create bins for latitude + lat_bins = pd.cut(filtered_dataset['lat'], bins=lat_bin_number, labels=np.arange(lat_bin_number)) + + # Create bins for height + height_bins = pd.cut(filtered_dataset['photon_height'], bins=height_bin_number, + labels=np.round(np.linspace(filtered_dataset['photon_height'].min(), + filtered_dataset['photon_height'].max(), + num=height_bin_number), decimals=1)) + + # Add bins to dataframe using .loc to avoid SettingWithCopyWarning + filtered_dataset.loc[:, 'lat_bins'] = lat_bins + filtered_dataset.loc[:, 'height_bins'] = height_bins + filtered_dataset = filtered_dataset.reset_index(drop=True) + + return filtered_dataset + + +def get_sea_surface_height(binned_data, threshold): + """Calculate mean sea height for easier calculation of depth and cleaner figures""" + + #set flag for the df save + firstTimeIndex = True + + # Create sea height list + sea_surface_height = [] + mean_lat_bins_seq = [] + sea_surface_subsurface_photons_ratio = [] + + + # Group dataset by latitude bins + grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average sea height + for k, v in data_groups.items(): + # based on lat_utm + lat_bin_average = v['lat'].mean() + + # Create new dataframe based on occurrence of photons per height bin + new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) + + # Check if new_df is not empty before finding the bin with the highest photon count + if not new_df.empty: + # Find the vertical bin with the highest photon count + largest_h_bin = new_df['lat'].argmax() + + # Select the index of the bin with the highest count + largest_h_index = new_df.index[largest_h_bin] + + # Calculate the median value of all photon height values within this bin + photons_sea_surface = v.loc[v['height_bins'] == largest_h_index, 'photon_height'] + lat_bin_sea_median = photons_sea_surface.median() + + # Append to sea height list + sea_surface_height.append(lat_bin_sea_median) + mean_lat_bins_seq.append(lat_bin_average) + del new_df + + # Get all photons below sea surface + # to determine segment type of each subsurface water column + # Use calculated sea height to determine photons at 0.5m below peak + photons_sea_surface_up = \ + v.loc[(v['photon_height'] > (lat_bin_sea_median - threshold)) & + (v['photon_height'] < (lat_bin_sea_median + 2*threshold))] + + # Calculate the photon ratio between surface and whole photons + if v['photon_height'].shape[0] > 0: + new_photons_ratio_sea_surface = \ + photons_sea_surface_up.shape[0] / v['photon_height'].shape[0] + else: + new_photons_ratio_sea_surface = np.nan + + sea_surface_subsurface_photons_ratio.append((1 - new_photons_ratio_sea_surface)) + + else: + # Append NaNs if the group is empty + sea_surface_height.append(np.nan) + mean_lat_bins_seq.append(np.nan) + sea_surface_subsurface_photons_ratio.append(np.nan) + + # Filter out sea height bin values outside 2 SD of mean. + mean = np.nanmean(sea_surface_height, axis=0) + sd = np.nanstd(sea_surface_height, axis=0) + + final_sea_surface_height = np.where((sea_surface_height > (mean + 2 * sd)) | + (sea_surface_height < (mean - 2 * sd)), + np.nan, + sea_surface_height).tolist() + + sea_surface_height_abnormal_label = np.where(np.isnan(final_sea_surface_height), 0, 1) + + # Determine label based on ratio of sea surface photons and subsurface photons + sea_surface_dominated_label = \ + np.where(np.array(sea_surface_subsurface_photons_ratio) >= 0.2, 0, 1) + + # Loop through groups again and return photons below 0.5m of sea height + PhotonDFBelowThresholdPeak = pd.DataFrame() + for i, (k, v) in enumerate(data_groups.items()): + + # Get all values below this bin + if not np.isnan(final_sea_surface_height[i]): + NewPhotonDFBelowThresholdPeak = \ + v.loc[v['photon_height'] < (final_sea_surface_height[i] - threshold)] + + if firstTimeIndex: + PhotonDFBelowThresholdPeak = NewPhotonDFBelowThresholdPeak + firstTimeIndex=False + else: + PhotonDFBelowThresholdPeak=\ + pd.concat([PhotonDFBelowThresholdPeak, NewPhotonDFBelowThresholdPeak]) + + + return final_sea_surface_height, \ + sea_surface_height_abnormal_label, \ + sea_surface_dominated_label,\ + PhotonDFBelowThresholdPeak + + +def get_water_temp(date_year, date_month, date_day, latitude, longitude): + """ + Pull down surface water temperature along the track from the JPL GHRSST opendap website. + + The GHRSST data are gridded tiles with dimension 17998 x 35999. + To get the specific grid tile of the SST, you must convert from lat, lon coordinates + to the gridded tile ratio of the SST data product using the coordinates of the IS2 data. + """ + # Get date from data filename + # data_path[-33:-25] + date = date_year + date_month + date_day + # date[0:4] + year = date_year + # date[4:6] + month = date_month + # date[6:8] + day = date_day + day_of_year = str(datetime.strptime(date, '%Y%m%d').timetuple().tm_yday) + # Add zero in front of day of year string + zero_day_of_year = day_of_year.zfill(3) + + # Calculate ratio of latitude from mid-point of IS2 track + old_lat = latitude.mean() + old_lat_min = -90 + old_lat_max = 90 + new_lat_min = 0 + new_lat_max = 17998 + + new_lat = round(((old_lat - old_lat_min) / (old_lat_max - old_lat_min)) * + (new_lat_max - new_lat_min) + new_lat_min) + + # Calculate ratio of longitude from mid-point of IS2 track + old_lon = longitude.mean() + old_lon_min = -180 + old_lon_max = 180 + new_lon_min = 0 + new_lon_max = 35999 + + new_lon = round(((old_lon - old_lon_min) / (old_lon_max - old_lon_min)) * + (new_lon_max - new_lon_min) + new_lon_min) + + # Access the SST data using the JPL OpenDap interface + url = 'https://opendap.jpl.nasa.gov/opendap/OceanTemperature/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/' \ + + str(year) + '/' + str(zero_day_of_year) + '/' + str(date) \ + + '090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc' + + dataset = netCDF4.Dataset(url) + + # Access the data and convert the temperature from K to C + water_temp = dataset['analysed_sst'][0, new_lat, new_lon] - 273.15 + return water_temp + + +def refraction_correction(WTemp, WSmodel, Wavelength, + Photon_ref_elev, Ph_ref_azimuth, + PhotonZ, PhotonX, PhotonY, Ph_Conf): + """ + WTemp; there is python library that pulls water temp data + WSmodel is the value surface height + Wavelength is fixed + """ + + # Only process photons below water surface model + PhotonX = PhotonX[PhotonZ <= WSmodel] + PhotonY = PhotonY[PhotonZ <= WSmodel] + Photon_ref_elev = Photon_ref_elev[PhotonZ <= WSmodel] + Ph_ref_azimuth = Ph_ref_azimuth[PhotonZ <= WSmodel] + Ph_Conf = Ph_Conf[PhotonZ <= WSmodel] + PhotonZ = PhotonZ[PhotonZ <= WSmodel] + + # water temp for refraction correction + WaterTemp = WTemp + + # Refraction coefficient # + a = -0.000001501562500 + b = 0.000000107084865 + c = -0.000042759374989 + d = -0.000160475520686 + e = 1.398067112092424 + wl = Wavelength + + # refractive index of air + n1 = 1.00029 + + # refractive index of water + n2 = (a * WaterTemp ** 2) + (b * wl ** 2) + (c * WaterTemp) + (d * wl) + e + + # assumption is 0.25416 + # This example is refractionCoef = 0.25449 + # 1.00029 is refraction of air constant + correction_coef = (1 - (n1 / n2)) + + # read photon ref_elev to get theta1 + theta1 = np.pi / 2 - Photon_ref_elev + + # eq 1. Theta2 + theta2 = np.arcsin(((n1 * np.sin(theta1)) / n2)) + + # eq 3. S + # Approximate water Surface = 1.5 + # D = raw uncorrected depth + D = WSmodel - PhotonZ + + # For Triangle DTS + S = D / np.cos(theta1) + + # eq 2. R + R = (S * n1) / n2 + Gamma = (np.pi / 2) - theta1 + + # For triangle RPS + # phi is an angle needed + phi = theta1 - theta2 + + # P is the difference between raw and corrected YZ location + P = np.sqrt(R ** 2 + S ** 2 - 2 * R * S * np.cos(phi)) + + # alpha is an angle needed + alpha = np.arcsin((R * np.sin(phi)) / P) + + # Beta angle needed for Delta Y an d Delta Z + Beta = Gamma - alpha + + # Delta Y + DY = P * np.cos(Beta) + + # Delta Z + DZ = P * np.sin(Beta) + + # Delta Easting + DE = DY * np.sin(Ph_ref_azimuth) + + # Delta Northing + DN = DY * np.cos(Ph_ref_azimuth) + + outX = PhotonX + DE + outY = PhotonY + DN + outZ = PhotonZ + DZ + + ''' + print('For selected Bathy photon:') + print('lat = ', PhotonY[9000]) + print('long = ', PhotonX[9000]) + print('Raw Depth = ', PhotonZ[9000]) + print('D = ', D[9000]) + + print('ref_elev = ', Photon_ref_elev[9000]) + + print('Delta East = ', DE[9000]) + print('Delta North = ', DN[9000]) + print('Delta Z = ', DZ[9000]) + ''' + return (outX, outY, outZ, Ph_Conf, PhotonX, PhotonY, PhotonZ, Ph_ref_azimuth, + Photon_ref_elev) # We are most interested in out-x, out-y, out-z + diff --git a/icesat2_kdph-main/kd_utils/visualization.py b/icesat2_kdph-main/kd_utils/visualization.py new file mode 100644 index 0000000..d07d80d --- /dev/null +++ b/icesat2_kdph-main/kd_utils/visualization.py @@ -0,0 +1,217 @@ +# utils/visualization.py + +import numpy as np +import pandas as pd +import time +import geopandas as gpd +from pyproj import Transformer, Proj +import matplotlib.pyplot as plt + +def plot_photon_height(sea_photon_dataset, hlims=[-25, 10]): + fig, ax = plt.subplots() + ax.scatter(sea_photon_dataset['latitude'], sea_photon_dataset['photon_height'], s=1, c='k', alpha=0.15, edgecolors='none', label='ATL03 Photons') + ax.set_xlabel('Relative AT Distance') + ax.set_ylabel('Height (h_ph)') + ax.set_title('Scatter Plot of ATL03 Photons') + ax.set_ylim(hlims) + ax.legend() + #plt.show() + +def plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset, sea_photon_dataset, sea_surface_height, output_path): + """ + Plots the filtered seafloor photon data along with sea surface and seafloor elevation data. + + Parameters: + - filtered_seafloor_subsurface_dataset: DataFrame containing the filtered subsurface photon data. + - sea_photon_dataset: DataFrame containing the original sea photon data. + - sea_surface_height: Array of sea surface height values. + - output_path: Path to save the output plot. + """ + + # get sea_surface_x_axis_bins + sea_surface_x_axis_bins = np.linspace(filtered_seafloor_subsurface_dataset['relative_AT_dist'].min(), + filtered_seafloor_subsurface_dataset['relative_AT_dist'].max(), + len(sea_surface_height)) + + hlims = [-25, 10] + fig, ax = plt.subplots() + + # Scatter plot of subsurface photons + ax.scatter(sea_photon_dataset['relative_AT_dist'], sea_photon_dataset['photon_height'], + s=1, c='k', alpha=0.15, edgecolors='none', label='Subsurface ATL03 Photons') + + # Overlay the seafloor elevation data as points + ax.plot(filtered_seafloor_subsurface_dataset['relative_AT_dist'], filtered_seafloor_subsurface_dataset['seafloor_elevation'], + linewidth=0.8, c='b', alpha=0.4, label='Seafloor Elevation') + + ax.plot(sea_surface_x_axis_bins, [x - 0.5 for x in sea_surface_height], + linewidth=0.8, color='#DD571C', alpha=0.4, label='0.5 m Below Surface Peak') + + # Set labels and title + ax.set_xlabel('Distance From Start of Track (km)') + ax.set_ylabel('Photon Height (m)') + ax.set_title('Scatter Plot of Filtered Sea Photon Dataset') + ax.set_ylim(hlims) + + # Add a legend + ax.legend() + + # Save the plot + plt.legend(loc='upper right') + plt.savefig(output_path, dpi=400, format='jpeg') + + # Show the plot + #plt.show() + +def plot_kd_photons(subsurface_photon_dataset, Kd_DF_MergedDistance): + hlims = [-45, 5] + fig, ax1 = plt.subplots(figsize=(10, 6)) + ax1.scatter(subsurface_photon_dataset['relative_AT_dist'], subsurface_photon_dataset['photon_height'], s=1.5, c='k', alpha=0.2, edgecolors='none', label='Subsurface ATL03 Photon Height') + ax1.set_xlabel('Relative Along-Track Distance') + ax1.set_ylabel('Photon Height', color='b') + ax1.tick_params(axis='y', labelcolor='b') + ax1.plot(subsurface_photon_dataset['relative_AT_dist'], subsurface_photon_dataset['seafloor_elevation'], linewidth=0.8, c='b', alpha=0.4, label='Seafloor Elevation') + ax1.axhline(y=-6, color='blue', linestyle='--', label='y=-6 m') + ax2 = ax1.twinx() + ax2.scatter(Kd_DF_MergedDistance['relative_AT_dist'], Kd_DF_MergedDistance['kd'], label='Kd values', color='r', alpha=0.6) + ax2.set_ylabel('Kd Value', color='r') + ax2.tick_params(axis='y', labelcolor='r') + ax1.set_ylim(hlims) + fig.suptitle('Photon Height and Kd Values along Relative Along-Track Distance') + handles1, labels1 = ax1.get_legend_handles_labels() + handles2, labels2 = ax2.get_legend_handles_labels() + fig.legend(handles1 + handles2, labels1 + labels2, loc='lower left', bbox_to_anchor=(0.08, 0.08)) + fig.tight_layout() + plt.savefig(r'C:\Workstation\ICESat2_HLS\Kd_ComparisionPaper\Results\IS2_subsurface_kd.jpg', dpi=400, format='jpeg') + #plt.show() + +def plot_bin_polygon_data(lat, height, seafloor_height, mask, lat_bins, height_bins, valid_bins, polygons, y_min, y_max): + plt.figure(figsize=(12, 6)) + + plt.subplot(1, 2, 1) + plt.title("Original Height Data") + plt.scatter(lat, height, c=height, cmap='viridis', s=10) + plt.plot(np.sort(lat), seafloor_height[np.argsort(lat)], 'r-', label='Seafloor') + plt.colorbar(label='Height') + plt.xlabel('Latitude') + plt.ylabel('Height') + plt.ylim(y_min, y_max) + plt.legend() + + plt.subplot(1, 2, 2) + plt.title("Masked Region (ROI)") + plt.scatter(lat[mask], height[mask], c=height[mask], cmap='viridis', s=10) + plt.plot(np.sort(lat), seafloor_height[np.argsort(lat)], 'r-', label='Seafloor') + + for polygon in polygons: + plt.gca().add_patch(plt.Polygon(polygon, edgecolor='red', facecolor='none', linewidth=1)) + + for lb in lat_bins: + plt.axvline(x=lb, color='gray', linestyle='--', linewidth=0.5) + for hb in height_bins: + plt.axhline(y=hb, color='gray', linestyle='--', linewidth=0.5) + + plt.colorbar(label='Height') + plt.xlabel('Latitude') + plt.ylabel('Height') + plt.ylim(y_min, y_max) + plt.legend() + + plt.tight_layout() + #plt.show() + +# +def produce_figures(binned_data, bath_height, sea_height, solo_sea_surface_label, + y_limit_top, y_limit_bottom, percentile, file, geo_df, + ref_y, ref_z, beam, epsg_num): + """Create figures""" + + # Create bins for latitude + bath_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(bath_height))+20 + + sea_surface_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(sea_height))+10 + + # Create new dataframes for median values + bath_median_df = pd.DataFrame({'x': bath_x_axis_bins, 'y': bath_height}) + + # Create uniform sea surface based on median sea surface values and filter out surface breaching + sea_height1 = [np.nanmedian(sea_height) if i == i else np.nan for i in sea_height] + sea_median_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_height1}) + + # Create uniform solo sea surface label + sea_surface_label = solo_sea_surface_label + sea_surface_label_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_surface_label}) + idx_1 = np.where(sea_surface_label_df.y == 1) + idx_0 = np.where(sea_surface_label_df.y == 0) + + # Define figure size + fig = plt.rcParams["figure.figsize"] = (40, 25) + + # Plot raw points + # plt.scatter(x=binned_data.lat, + # y = binned_data.photon_height, marker='o', lw=0, s=1, alpha = 0.8, + # c = 'yellow', label = 'Raw photon height') + plt.scatter(ref_y, ref_z, s=0.5, alpha=0.1, c='black') + plt.scatter(geo_df.lat, geo_df.photon_height, s=0.8, marker = 'o', + alpha=0.1, c='red', label='Classified Photons') + + # plt.scatter(x=geo_df.lat, + # y = geo_df.photon_height, marker='o', lw=0, s=0.8, + # alpha = 0.8, c = 'black', label = 'Corrected photon bin') + + # Plot median values + plt.scatter(bath_median_df.x, bath_median_df.y, + marker='o', c='r', alpha=0.8, s=2, label='Median bathymetry') + + plt.scatter(sea_median_df.x, sea_median_df.y, + marker='o', c='b', alpha=1, s=2, label='Median sea surface') + + plt.scatter(sea_surface_label_df.iloc[idx_1].x, sea_surface_label_df.iloc[idx_1].y, + marker='o', c='pink', alpha=1, s=3, label='solo_sea_surface') + plt.scatter(sea_surface_label_df.iloc[idx_0].x, sea_surface_label_df.iloc[idx_0].y, + marker='o', c='g', alpha=1, s=3, label='non_solo_sea_surface') + + # Insert titles and subtitles + plt.title('Icesat2 Bathymetry\n' + file) + plt.xlabel('Latitude', fontsize=25) + plt.ylabel('Photon Height (m)', fontsize=25) + plt.xticks(fontsize=16) + plt.yticks(fontsize=16) + + plt.legend(loc="upper left", prop={'size': 20}) + + # Limit the x and y axes using parameters + plt.xlim(left=binned_data.lat.min(), right=binned_data.lat.max()) + plt.ylim(top=y_limit_top, bottom=y_limit_bottom) + + timestr = time.strftime("%Y%m%d_%H%M%S") + file = file.replace('.h5', '') + # Define where to save file + plt.tight_layout() + plt.savefig("C:/Workstation/ICESat2_HLS/" + file + '_gt' + + str(beam) + '_' + str(percentile) + + '_EPSG' + str(epsg_num) + '_' + timestr + ".pdf") + # plt.show() + # plt.close() + + # convert corrected locations back to wgs84 (useful to contain) + transformer = Transformer.from_crs("EPSG:" + str(epsg_num), + "EPSG:4326", always_xy=True) + print(transformer) + lon_wgs84, lat_wgs84 = transformer.transform( + geo_df.lon.values, geo_df.lat.values) + + geo_df['lon_wgs84'] = lon_wgs84 + geo_df['lat_wgs84'] = lat_wgs84 + + geodf = gpd.GeoDataFrame(geo_df, + geometry=gpd.points_from_xy(geo_df.lon_wgs84, + geo_df.lat_wgs84)) + + geodf.set_crs(epsg=4326, inplace=True) + + # geodf.to_file("C:/Workstation/ICESat2_HLS/" +file + '_gt' + '_' + str(percentile) + '_EPSG' + + # str(epsg_num) + '_' + timestr + ".gpkg", + # driver="GPKG") \ No newline at end of file diff --git a/icesat2_kdph-main/load_icesatcsv.m b/icesat2_kdph-main/load_icesatcsv.m new file mode 100644 index 0000000..3eabcfe --- /dev/null +++ b/icesat2_kdph-main/load_icesatcsv.m @@ -0,0 +1,10 @@ +clear all,close all,clc + + +cd /Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data/icesat2 + +fid = fopen('icesat2_3873_formatlab.csv'); +formatspec='%s %f %f %f %f %f %f %f %f %f %f %f %f %f %f'; %14 + +T = textscan(fid,formatspec,'HeaderLines',1,'Delimiter',','); + diff --git a/icesat2_kdph-main/results/all_relevant_stations.pkl b/icesat2_kdph-main/results/all_relevant_stations.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fcf54829f688683ef8dac1a7948dc9945aa601e2 GIT binary patch literal 923518 zcmdqK>2qXBawj&UT^>Wu)zjV69CC)!q;^-cl9I~%_#_oj)zv-SbxZ->MdO*+gi&DM+A>T+|vzL{N<@Q;M> z!}~vh@Ivx0AHM$H|M}tY`zIg%?+-6N{O0TLfBk1qRzLs0KAipJ{U6P*-(4-(>%V$7 z{_vmwA4l+S-hcmp{qXeZ)8GCV{7?S#_5XPN;p9L6&zS7b=8N;`yTv>^di0<@9A{6u zqYv+Ye7U~14YTWcHeXzwuijlOF0Vhl|44Tm4YMcX5AT2Ed*yJAW>TR6Y=&pQPEQT* z8|qZUDis>)RC+4H3k`KDh*3;fs6ujeI~6K6m>CWy*%Lj(95&;zt)n^lhB}qjgHWNN zPBlzuYCZUd8ZV;&Bxj)MX8rETpS3@>Sf z0~S{F4RtC#N1>|PnvLCdg%=xYyo@HKTU8U%sORV#>b&~Z5z$bms%oNJ^?Dhgs);Td zYP@>d3)zhgb*ifLy^w`^+6#qO)eEIjd!cWrk65)(FJz&9ReCnmc=fB&v!PB^mA)U6 zzF*Zn8|u8Oy6=Z{KdAZ_8*01;I)v;8|u8Oa~zn4QTAk1RZX9s zqebuyhPgCqUcRADrJY2ms;P>N#{9ma#;dOtC{$GiN@G>}nv)2XR-kXFkEmTqs6zUp zPZX(2sH#rFM&l&Dp*G?`2ZB&l13?e>| z3|VMcm5U8^URB)>L%JVU{fiBCUOEYh^wlK9#!*%GY^d=XRsD+%b*kzdN1-_~{EX)W z<8f4#o(*QiVGqly)`V}UQ)yons;aL_qaM*W)OeX?l~lE5RT{NceM6m>_8g(AdX6+| zt@?%W4s}{A=Sk-+kYK2Psy>FTnF>xFqWmq=q(u2D6Y2vybEwKaiMW1V|_Lrwazj%=X{S$kZyHXG`^sumiD zG%>DP$TSR5n0Bh&*vRcsnLzUfBZ5$AHT#A-l~$loRl|jiJ(G;{h8iyuRMM^LB+^)w ztG<+QfT~=z{StYZg4s9JV41T~+fceyZ77XqI_!pqIxiy^sj3PT zUOLKrL!FmSvO-l&vTQUbLcXEKi$`HaRuZbv9J|ICWL}Lj=~|s5D}?%pRq5*|LUcF;d+4BavWmS51HASg!sPodXC{)#0ltyhw-%#VlO102EscNOGG-}=Z zhB~jRT*HuDL#=z^RrQ=<2U%QG`35thG@4w`Zq-O5m9e95sPVE{iQTGRC|z}=`Gz_# z?S(>B^+IW^&aqZNk;)u<_=ehu#=nHB>R-~RE#w>OytL;C6&h+(c54Jd>suo>YX2gy zdP6N$;m*Y-$GpLaFk)lXLei*x)i>0;Y6}Tf)k4y!{mVCea&fhKGF>mPmlunp>))=< zE)S0%et7>&G(W%i=jnIL*UQUS2REyCn`2OH7VG6=gL|I!A1&U)l2V>gF2a{`_=v^8&(8*R!*uv*p#(N6(+*HtWOtUsMn;5C4AD?+?Pb zgXg_&r!BZD!>=Da`!?0CJrT+XL+G1q^0_~P(+c7VIPv*j#1T)kPWv%~Y{#q@fS9bHeam$-4v zo=<1X)8!1t4N*UR@>TZuW_kgo1khhj-%gj1`@a?3;c7iS&mJx=R~{E^%q<=|30x7mLMd_Qi5@mNVUChox-4ija5~pPtNC^NUqB z$Gz`nah;8Z2oLbafQA&3{sE!;{l?l%4N`>bhzHvxrC@k9Y}-ZQ{^%m z^(OxSA#<57==Y?XdA?hjcP*V+f24oihvdvDYkV%*xS+8njk zI^?dq%46J~OxXVM!w1I?vcU|+f4|!sXN%eNG}wwD573?kThDRj-o2c+rtqJeMeAz0 zSRF|F7z!R9nFiU~mt6*Jsj5u_bf~%vL`k-RYmMsCkv)Fd zFzm=7scGPz+%(ux&;@GzY&x4QHk%eQNNeNbxz%a6kOBW9g88RtCq#Ip6JJb3MtU2; zbfPi<6O*CSipc;>OomP?CPObO128cedQlmGiOJBT48I6ze9&67V9B6jfxC>OVge4L z0s<2ga1d3}D5@l2V&VZ66K@n1515E}-KeFAiHrnP#9N4oj}-BiF02tY1~D-iqQ*d{ zs0>kKbfd-~CMH8v>MLRGtg##1s1cm=R5E|pyI6z>k;Vuv$B-&WU z4|j>!d){tM!_0s=iDDwtM4yOgz(9gf{LedGsvw5Kau`ElO^l%;7UEbp@m_D@sHpHm z>MtzDkP3{UqEjBm+-u$$Ms?VYE_QREVmbsWrbD1&iUKO8D4=4B>h`1B04k;ppkk&3 zD(2I|FBBm2K6MenKot=TG!el-5fMyGwsADx#?g3-=7>2WJ|e-G+6k@2mmQQISkYp* zw^1Axp$1&MUwnbTMCeBrSD?r-6h4=*ZyXivHH`N{V8s|h_dxylaykzwFD;k@MH{Ng;jSn=8M;$1!s9B^E%&foc|T&&jX6;N-N z?^YOmy*ydqKx4j~UM@H1c9)sXUSo+oZxc1&a!hX7!`5*o%RSv zpgbBJ3DcLEC1*SNJ7n+6cQhj z-+GEfX}RPpU`tlq)_O6e4L!i|bA6REmTO|4Uqrw5B-ApPsE2>Un&Qy%WWAif!V+gJ53J-P9^SU5H`goNRe*#m z*5ztCMb)^;&Zcvek63rI8DxK*q4tDm_!Dc!V0Je;7y zQJT=Ox-Uyt>sRnHS1z3+v@q_~^x}LuTeUW;8=gI*#@pbylFGj1^88l;d^g93u{gex z-eD{@h7DNfg)BTm<6?{5&^LFXNMGllG0wSrp>His^u|buf!dB0(|{MHpG#5PI)|xS zlDAr`o9ol*`FZPXxk27zg4QV}L>?FyagCit0MSEc<867xV|uu5L7CU>q7;%6PgWP7 z*EU$V&Tp3RTBH_Kof7KU<4q~{6uW#>t;Ty`@FdEVeUcqQ|yqyzjd|d{VVrs zB}qF>qe(hxl5U!$mnP|_Ne0`H1c~&FhG{ONG|4zkGD(s|G^cHZL&TsR)r`7n8-XOH z7m%F44veJ-ipXn8k^`lk0jHU%Nk^Dy)%DV<14&BUURt}ov|f48ML(}3EJ9{1Z{0eg0{9KL3u4n(AJhDXah?URInupDp--6yb7vC=iQT6LA6+t zpjtEuHgPE%fg~u55*H*vVJt~d7)z3}5e7=x2uC3}v#c*BY9NqYEU_`G?iVZxPvx3O zUR?z>r?va)DyTV264aa}32M%g1U08gUcXI>`}%EC+}CfD;=X>H6!&6X*DN<{$^h%M zcGqd`uCJ2fuCJ2fUY{gY2a;gsRWrIiNox1{Bq{Fo$rj=!o#7@OBp^uz2}n{w@+Pb~ zZRs~*wHT7HS`0~8Erukl7DE!uF2*t61Xln{5?lc+NpJ-)ByTs-AkhbbxF)R~1=Y^` zaDO=%40vnz+4UK&d2nGa@8er%i|M?DO9PzH5z~!gdQnV2iWvkkwS%EfcZ9d!I9~Qo z4{)zt94~LK@Py!}JOw*nxN}E$<1L4w{?Wx7oFU=pkhc@X6JT6Dg`0nvU;AIIPtI_Z zUlXU-?sfP{LVMZO<>wne-dwfufCit;=ykfC-f?Hhn_ITxsiU+4ecT!G^F;r@c}P*c zJ^DQGju9_;#EZC};Y~%D6K2CUReT&3lvd?L_iAVkc+&I0dTb>T7ds|Cy^eId^jgUd@hy zjQHt;b|-s_k9};i3*2Yo=03yq5%L(@S6A1|*(Te#rXM{x{NjrT+2PT54*v8Y-1XB( z;r1UtY7ab18ROG0!h}D1{Nmv8!OP!ePanN_afBB$gui+6=-4-q;F}jE0pVvA_~>^f z{?o6*1O527?Y@!d&%b$g@JwdNkESXJmvAK{pJ#d!X8GyUaQmNp`}E7~<-tRID<%JR z_~aYtIR6*EzjBJNv*bf?*YvEbnuPxG!2uSXZ(n?sb#N;1~uO?=q`uP`KB(=B}dpUpOD$(1H6+kV|-dPTk@Yt`_Z%KxX;TT z{nP4rb%nQnYSn`v;5k~SeeB-Xl&yFz*6!C@@y@T?4YUrr5Wdatp!gY{B;{%u-n!JS7jkQ3$i)7k4>*lru+;Mq!)0*@gv436!i6q62Af$}g)0c$~2 z<0ut5#M3%M+dfhzEUI`SCBDe!uf1!+z3`E0=hZ?izrz#|WYs6GnI^rCX$SwVY( z7{gsiWG?VsxEbV#&K7~y9YO23H;C|nSHmmuNw}_CR~_mQtn$Ef zSn$AAVIjxgh^yiy*Cn3liNp8W&?-Iw+e9;>ZN`m!a;<3lRmNgKP~tJ}-(vE>LU@6D zj7Pf4W2<~R@FwVYs6((uBRK}asOVVfAwJKr?PItA_FCA1nRd4`!-GPkYw*G2 zU1uk}EriGPReXG+(IcSoIE~7=rW^jPmiUV!@cle z8uK0V>oQ6S;eoz6*h?P8ARPH9TlFfN!@anCWpl~Qp=H&bz}>(MFY!yXW16GKVy_;GK-0@NhkHqAwg;sS z9kZf2)Jx0>QM&xXt8y&W9PTCNgtzx?ucA5F%P)0|1vOUL9PWh>V;bPeMyVud9wBqg z|9EB-2GAJA6PDAFPM2;hK~E5_$U9wJO&7VzF(q0S4tVc`AN?SH=)D(<~wcj^^!DZI1Ms zaB&>*dy31kz|1!Xd(n)Lu*7(I6p+?rdfVtL^@AZ`h(dLOSg2YYo~VK(7MD$22-1*zB29O*TJ`QQt7EYur$ zbJ@!=#pOEdQE|(*_F6Y>hjuZH%Im}8H@PqsM9EhAjk%imDDH6ql+miq!Cv$piW!A&1URIqf zA=DUo6!&@1@5YebBtEvq(rT#ddWFtoq*F`XWA=ux<3n1|IKL#n?4_Ekf=jR5soVSx z71gV3j`YHpvA}CF$oe9Gn^vo1dIfxIb~B~G=Dnai7F zCP>wc2gisfgtT7=#(kG|q}s&RpgKm5#%hXQd=c)HQ)v$MlB5Hp56bkxUaC3RD|g3n zyAWJ@b+Le9@gML6pcDa?_RT?NEWha6MZ%ZqO0nje!@ZDYQOk`=L%78S$p%LY&|S5c zpeL{@yjBEv5>}c+y`T;5$Fct`GP7H$isoQ1zxI^#l3rzVq?aVqVHs|DFW(&OMgN13 z_se*aUS)Hz7te865BtnK9?3%F;t5L1J*n1gnH6Z96EJ<`YiX@H*vl32kP|M$5P+gx zMjrJLF!D`Dv{S9wGRx6z&VLS`L@5K_zR#Rn|jgfe?e2I-{!M<(IPp zJ;APgj03Zdadm~}@ea-krTSvCE4kr+tQWMrj%kjD5+SUuZG3M;0?t5=k@{tI4m4}K zC^TJzVZ^);Xb$$G+PK2F^|k0#HkZ8=(+;%4?K55itLjqqhT5Ps7bt<|U@v4aXazec z+5Z>4%I30{h=SL_QYXT&$K2vX&=Y3Mu0B=Ky=8G|V?Jf?PpCX$PGur?kve6O2sDR# zx%?-UdN~$km9&WFU@y2omoI#mKyE)LLfIVbg+-5%F>&>5Az|5E_7YJ>+UW=82%OV) zXq*Liu*xw)ta$~U`)4~psPVm2bEFrJ1Ta6hJ5{}WbFf$Li1=t~t`#Rj*&OMG4@7du z=ymCP`Q~6RSO{**JYmKvnt*ji8+cblNe! zbFWtCiQ={+*=D;00t0!stu~iqnqIjjiizaRd~?~W6a`sZ5(qwwTcQR4BeRTxSZM_NL9mCeDiyrDYPUe10v%Pe9*rahLlgCk6yn&3T2 z5RE#5)g@k=lxUGudc#>HS9iMJK-K1OFPA{@Ri3$j=DmvMU@v0nX>v)%7%OuV_{Y{2YVHc=!*r{t86ZNDN(#7 z+DheW0z`8GFI`DQDVwWI856$hF&9^ksi5=hBzq=`g0B^E%3@)H5BsY!jJ*o9^J-sV z)tXCDq!(^pV1Xi)=dnJhHb;8#CIlsI9t%Y;-yG?cClJ|VKyW{nZ!UYuv>iHMOz}+x zC0b1YUk!qz7gTe(3*}79=1Q-j=#nKAD|x?c464nMUX+xVbk1FiUcNcl%ZXAhQF*Vj zxzfuYAGm_Dlc#_|wK>vDmW%x47b^C>d~>i@u8m2@8^-l2o6BA_4Cv@O+=}pkLtl0M zYL2h&y>!n8xUoRV(bHFRzn-7s3l>iBkyhu?_<9INkMig$h1^zQ=U0kQrI_$Y$5cxd z3LLj#mtZnjl>$i)6_;L4ECtUy;br&&o|qim^I|WL@56{w^g9>@T8&fS+jAjloC3=w zHhLgXr+ijY>^7;7fj$ndQsA3AAgKgAbLx3}KIXBdo>J@@MN_iv+LGlmUz7&Pb|gNmSD3%0X4b3Caxs#HOc*hB zYerQfNIGywHOdr!S>c2{#pMcrFsmAe5?RVCL~rpHbTPzffaJ>&H?H_s6A=zV3sEdO{|j4zRD;KYp|59_rT%G8zM*lWpits$>gYQvPsa+psR=ZhJ> z)kBKVu^g)N>`67VipIEYW?tQlvpLKjb%$wYBEeJ!@*tw*jqK2snhhrTYy5)yWpf{|1XVA&<6<*D3hR`K6$kY#wZ`VL)LQU99ybqsGj0o= z7RFp*`f`K{>RNND911*;4{RV}ATn}*E|@r$L&JMf(!r~kSEU*6-jrl4X@^U(!&`9b$_pzMX%uCE4~auVIQOH5@LgN9f1ufl;w)M+Rf_-g_tPc5 zad1hl{C^z0;D31MX4+YWyY`PSrg$9et;BO|x~6WGr+M-+>lawSr~H<>OrAM&JIA^O zzovn21+L(j7+5&7BB|rXT&w$h0aL|cN5$i0{4huz$ETZIU7nr3{{Ttr0`^K_E zHc$z=DUK%k6%lzmRwpSS^}+tHE?2Kt7x==hJW((i zbyWTM%hl!vSGZ(L@8b%nPumq5yEX1#kR+8Cmc4=I>VjF8=ub3S?gvJ4I1y?tdzmrE zEH&_`vP2uE6I#?=i)g04x$LEwBH*c4EMo~8KI0CT+A83MsY9b8q8m))NQz@sn@b55 zQ)Vpm!ne1@(7c`;Yx913wZPZ0`Xde~%qJPs?w|5}c>kB{8>}AA5nV*73H%I5w;@0! zM*TCL6pi`b2w$VA8{O7zz_%VBqx*2~qJy4>BMgM=Uj5;oEu=IRX9eB&&xcf#f z-MHXTjSMje2fL}pT;Y9|VFgdR5qxvNYqYY_Z7lGTUo|41u^zz>W0^+jE?+6i?o!Y| zN}gy)WeH^>&PAE{4}D0*h(gM_5-p)b~)0B|Fu_ z`^oZdU!jq8ZUa3jiDaS0S7dE*`sI-^k8KT zMWRR+3pxezr3*G?2v*madp=}^|1jXGI9WuHcIol`ey)Z}qa9F?d|HoWi--D(4HGy* z6z6Wb5tJAZr!%S%n-J+vc{xKVqWO%K-Sq~DB1%xA1D$LvztQR&`J#lA$-Nnu@K{A4 znq(hV8|?0uIm{69qO3QKybwZwF4p37M@a_;aD*S$m46(V7pzrc6#vJC|98qG2Wyj&3p)=4=$kaHn9XuQ#bt|P% z96c5s%T{iAVcG$o?U$VL*0FvUr24q*GG-*HKCX45kNnF%C@Eku)G5dsWuKx|Ev>3g zK91EjHb%@p5WAeEaFkp_i}UP3ul&L>$4VHDm>6`Qyj2y0x{sWMLg%(m-dfeQ8wWCC z>BH%W>El~f(em-;3PB^O2)h{c8E_L(w&D!YWf%m0*@{`pWdVzA-73#U`%+FKH!GnSgxaNyTn@T`<2me9I03doByzMj{*`w|Qm=zPq^BCDijzUQ+n%OUq&_k|gp zo78R{ge|w7g=ED!3S_|7S?7GEm6oS1xMh^l@>VJL(LtJ!nkCJ;YZ!676QM^*J*Ha0mpQ7COgNx=a+%gk=4wA=BXH=m;1&+jTFf}Nn>&7EF2OAN zK5O7>8L7!U+xsYVXUja)!QAAuSor4kBX+2$h`HHdt2_9Fm(cRqU+dOFhTO*ab8LAf z)x}(LTJc}z9n3EdDyYn~sw<7?J$dP@pYGwj}ss>CqpWMu|j>{HUq@gRQ7rOc-n*07y zXNTtyV||cf(QfrtwTeMQbxc9((#WE@YT`+mnm{==XU5V^PV03uZ(rO>$qD3=@*GkE z1deQ)`3wj70)F_(%|+IA>5AJT@RmKIYj$yp<7!M72UgSqsVmJ|&=L(DF-I|TDP|af z5)G+R(=4xYBsz7olL*&sh8i~j+*ipbG!!-WjNI_>Qt7js%jGpbUp>j)5UXUqCHT3+ zI0Q_K4C3|*6$C#u6+rML#qUf^4=j3ctw0Y}QkE6ucPVttA_CEmFc7H_EJR=<%ZcE} zrAyTs0`#E*Kv)tuVR8;k3cPM*2q(8{|jqJ{x5iE{x9TF_b+C%{9i>6t~P&8E|eIGHV~*34lb%7gwP+q z{R8?G{{W{Sk<;5hY_6`r3-ksCp@FOPkl5fMw}BCz2F8jQQrfBf zwm?4;+Y}?nWd8{QYNnoALA?J$dx(d4?Z&I9=jP0r9O;8+^$mu#^1u<+1q(5XVw<@ZhLKHX7`0-moZ z2BR^;&^8$H@j=)zgjEz+KkST$M?Kgoch09jk-xeL zHrQeDIVL+wuV0ZA4OTFG2+IzO20ML}aYmLW~bg?{oa+6+Cv=N1t2Uyrq+FdJH2hRkIr1-LxiaYcs6`i7s zWr{9FW8g71l0vYFaR< zJS3=fsf;39eI+`&n8{Hvt5Y;+ridOK_UP%ik)t&QOIU7$%Tf3_1*_zCzal9%Eru!f zmB!a)SUZZ_f~!$5tg$VIwUTx)tPu>W9XE+34_5cOfx}wS;SD2AfeeJFErv(CR~ZEj z*812q+Xg%_GLyp+Y!$>GJvB=KD7Z;0MaP+=P15a=oD7u|*uPX3+)j0AL>D_3bkPme zhfR*y@K)r&;gK~19;;PmTakkY4%RNX{n9*SSgZ98UJRM(V_4&3*mGCXC$~Pj3y0OC z@GOpBP*iA)!&c0Ij};q3;W-nx0Yw*_P$BqDLl24FHsIi~+F+)SgMpzD3`;hTg3D1z zVW*FsFy#33Vs*lT&V9Qjevb_W13jzS4lyS~JymS^26jDaPjDWk$3(Cgqu|gNAC0V1 zSf= z6wXM|pF19)fMZ*V%_%8*(|j(qQSc4-LeW1hc)&729y2!=jAALAUGTOxY!^rh3hK1W zxlrrVsnJ+>bC&C4uJr+z@p6D7F^Z!|jI!}|!9iBQa^z7^z%F&m4U=AID1tubD4M*` zQ8alWDGEu0UZ^R;UO0gV;aj~=;bhLo5K*sjYi`lY4rxl8TP94Q6$)lhM^61Pi8*K}lYl;|;M%xOH zM%#LdxYlt|yKMHt3Pn&-@JLANDB}Jhqku<~q|CTY@q)`%O%asTa;g;d)f5!H({ucQ^?JEsULWM^zR@}ud@b9{Al^rZFVi-+7*bXwm% z`lk2rA>ys|W^vw|XR~=WpPgp_ROBydjvw;_d`n@|}$a_@y!_mP*cW&|g@LBi4 z1Lk$s7}IQ8@dNjOB<>C1dJL|;FTQ#50Pc!kJYvQB;Nju(qi@O1|?hMau&aL$Oe$_P|duV zQIj}ce|Ip;mioH`=cvG#_80lI$+mgg3HiMK(u|_wh&j0+-#59VX#L{xE*Rl-_Hb)P z(Ro3f9dLmxCrXxEu2|bupFEEK_U?nk6JfLPsbyv-!lwqgtMI8cXD7m^25A)j9}A0e zVUw-ub_?6~q95ILh(^K7AkJ6h?p>0*$p-gfWU@hu(RSJ3&RigiHLIL2?ANTf7^2av zFX1eAEQy*HA=ue-zQZD!;QXKR9nizp!{^+U;Zp01Z=N21iyaU?Bz`r^YlKkQ0&Ty52~%N;cpBfESkrr715(|MCGjU9Zos&XV@NFN<95JpZ`2SJ%`I=3nIJWY1ei z&vCHDn{z46f6M(;WTQUAvvp%XK0bQnPLrNLX}$ac!RKNRJN~a57*z%0LzkWK!TH=y z_~1ZuCwy33Zmpl#qD1ZNfD3f911`|a4!G<_FG#D?s&)tN>`T1QoqfH|vd#4@TVAZ@ zi;L6(5c15uj{(c*>(qfp!c2V2YNo-TF=c{d)rw>xk%Q&Hy6p;_vRv5``%n6Ygf4JC2Q|_ z49VJi9z(MBp2vVyr&Vv?wLM_-Z|^=vVr96qe&T##+r7vuE6yI|l@(_XeASBcY)323 zz4)jV=U#l&igPbMDkG-(M032<_s)9v;G$NFdvH-J#XY#}MlULB6tZlenc~qc^<+ig zyWp#`#!lr`S!1VsRo2)kU)U|LpT14ksnMt?{rNszN`Jl&m(ri_!(}&m!QsteaT%U^ zWf9XZpIGdGi(Jia`{E-i3$7MV)Qt9Xd4>r$ywSM(o04YXQ}?LihA*GxR{8#vn;Ud9v;kq>&v@8m`PZ` zznR(PQyh6hQNHlOqk}s>LCJ0F@5P!KMLh)Kc>V484h-^n{oR3clfaBHPCNZ_Bw=5! zHrp|35@(M$ebC_^xeq@qej^uY`?=A9Yn4w^@AX_3L0)pY*CSUv3*Nz_QgCq>u-_aU z@j4FIyXpeAv)u(Osz5Tq?Vw|VtHFW^@ATZm@Wd@HnC$VM6&BpzJu7^Bf6Q~=+rcHS z;dHM{TyUcAnd@NxESd)2?pZX`{{6W?miyiYgN67n?xeeNC;d?S@0PC+%1z7`*9WmA z+<{K^ax@0M{_wuojPe=BZLgAdv&n+O{SEn(`#fdm-PLXwVLQAVMo443VFZ8L4I?p` z|Jcr5ceMVN+ysl&awNWk8k%Wkxb@GOnZeTjS>!|h*l+km(aBNGt! zVPpd0K8#F2+=mfNb{A#WUa#F%*>y&DRCb-w9hF^YbVp^^8JYM0iwGr|K% z`ADI>4s^Bi?=wCJOueV7KN*At_Q)MhyGQOY`X0H%6ZXg*?y*Pi`}G-|0sIyo***I5 z;JG})e%QkI1<51qLwt8w`MGZMneNDEU7_aPF@sij#|+ctvX5!vpTgb=BVUNzdusdy{%$177s>4;iY@!pG@rxXlMB>*e=dFlbU#_B;2p@a6YcVO z`9BugWeIYN54mi4IRyjmdk9!}&qL7k`yK**vF{<^G)H$ecl??V7TyC_7WzV~3Fzu(mIy~q6-<$I6&GeRA? z8)d5!=zcm^G|lRW5j&-$i4gFU%&so?|+Z~ z+vhO*RZ+e%-ID?Gjp?4a=Nr>KanCoVd*Y5Pvq#rN>e(N6=A%7w-)qqF_Z;^qJ7Sfa z`u;O~_*RY^4)t-v=uXECyJ40eH|&O4zC?oAJ&zmmMf?7Yb|z82Xy02Re{OMqMu-P) ztG8nmJ#K)ecfbW|-T@cr`2Jk{p~e05;twtE$tB;>I4-w5Ziw$cVKeT&cFYwv+yhtG zboX5Su6DN?pw0InD|~=nJ(RByz3VFi{fJ~Ld+ml%zH#By{Qh@`w}E*Px+m^=5xOVtP%(?p zJ#pW!-t!O|?dq!O{*3Ziyf-5si}z=g$Kw4N<&Hu|K7{ZiGdsFa=Vy56hI`_UI%ALA zVf6iRrzh-@d+r|YyTEsFTYG;-c?jK`kq@E!GuoAo_+zvz9JZ4vx_!zwKKJATHQ!$r z>UalSpx_;F*@<@Dmx19czz(0@>&w9STULAtes4ZlL3hFjYb8Is4)Li>g0vd4NL%=Tk9s)+&_Ykn?(Oqp3P5o5=9=Jl| zd*BKs?}6)n^qNObPfmdM5;=S|N}t=~5IptW_Yiq-?sFD-aPDyko&nP}?=(a-IBDTM zaNUcn?jmK^8sLt7_Zr|Ha}QkeB^MV|TkKq8rHH%qdCrTzdvNh((LK53Wzjvkz=quU z-jfS#wgWCZu@OJL&b^+Q(XRKbh|+zJK`+_+81SLJj{y(c`xx-Qy^jI!*jNqX=k%%t2 z8%FTK-7tdF?S@gg0&ZcoXni5K7u%XF$_4hySL1ugqN2bmiH$ml zdv3d2eC~DgxX&TrBYU0&9cbS}z`OQ61YB?5L%=V&Cj(UmZVqn!R}R;G5&Go;=D9j~`~;b_dTte)zCIY4^IlZie4n zvLIqWW8tqFgtQvOFd9Uyp+USo*I;E_IF!c16BNj3*PxY(rqEa`6(_H;R;rGbs-lgK zm8xT<;wK;!XMV0qgH|ej#z|wXR9!1o*Gkp3y6Re~x>l;5m8z$t>RI~|tYDSQ#44Ey zDwzo?nF%VH2`ZThDwzo?nE`7160}lj`x0xV()K0RN~P^ftd&aJmsl&6wlA>Sz67nV zw0()Sy3+O~*6K>zmsqPSZC_xuef!X)GB-h`I)X|_f=YD+m5>CL>IfPj1wSgR{-P-3mF zv_XN@1|2|?%Af?5>If1|`-?r40(K zHYh=>D{W9>t**2|iM6`Y1|`<&N*ff|ib3^~I)Y-AeF-W}5>zr1RGK8HWG1LINl?j5 zP-&8&l9`~=BtUInf>tVRUt+CP+P=hEskD8GwNh#O5^JT>_61hkm!Q>^wlA?(SK7YB zT3u=T5^Hs(?K_6*lm!VYT@h4L5mdS&sH7sObVX1}MNsLAppuH9(iK2$L4sB)Z9!tK zRN8{XTB)=JiM3K`3leLk(iQ|(TacjDm9`+UR#)1B#9Ccx3leK}Rk5Io(0&`5EDb7P zsX75mAq6Z|CtxY0fTijLEQJ)XRGomOkOG#fBd822pp{A)RIpYmWl+IdsgywlYo$^K z6|9v?8I)LMPywy3ltBe+b)^g{SgR{#P{CSVDT5NL4GQaPgA!D#BdCNVs8mN#2}w|? zj-V2fpi&({B_u(mx(Pt#W(1W~1eH_-l~e?kR0Ne&1eH_-l~e?kR0OS5%FPBg76dGX z6tEOhz*0y7OCbd;g%q$9QovG30ZSnTEQKVfh3sGor6vaim5>CLkOY;G1eK5km5>CL zkOY;G1eK5km5>0nkoIh3Ku`%uPzgy;2}w{1Nl*z%Pzgy;2}w{1Nl*z1Pz#COgw`ZM zB_u&5Bta!4K_w(XB_u&5Bta!4K_w(XB_v8>Efql}6+tBxK_wMIB^5y>6+tBxK_wMI zB^3%eEe1g)20!GG zR6-I|LK0L$5>!GGR6+vOLNXJofF-DeB&dWWsDvb_ge0hhB&dWWsDvb_ge0hh1gM2% zVpKvBR6-I|LK0L$5>!GGR6-I|LK0L$5>!GGR6+t2Azu_Hu04vOK#HM2ilIP?p+JhE zK#HM2ilIP?QG$IcM}bt10-Ef&|qB0qSrjXr<~~sdPA#*h;0t znOG~84rgMmR63l2)!|IgN~Ob@SgR`?&cs?>>2N02>Pm+*u~t_)oPpKhOwj5|hcmHO zS2~=DwYt*bOsv(F4rgF>I1{wG(&0?3)s+rsVy&)pI1_7irNfz6t1BJO!0K=&XmzE- znOLhU9nQpBUFmQp*6K=!Gq5_G30ht0a3?acbvP4L6C|iu5mXZ-SYf3m zNUTyjK{Y{wO6>r3I1^M8Bxt45;Y_TRN{2JCRw^CN#9FCzI0LK0nV^+QhcmHOS2~=D zwYt*bOsv(F4rgMmu5>s9tK*lT6+_1_u~rNnzr%)#nAB!td3uT)?_+%)b*1B%SgR`?zrG%a!$1g#vD;>YY zT3uD*cVcxlu~JQ}t|m$<>=t$G6I5alRLUW!#2~1YLr{r9P>DfMi9yhcp<^Fd9s2~W zR66#FwNmNWC)P@(W1m9lK_v!3r5u7v41!8I0JU-m zDt{)Zlta);rIkahl}amzSSyuQ4zX6MigI*f1hGzx1g%s$F%oN~(ut8+E0s=+#9FCz zVgy##IRve)be<&ET2SXnVyy*ro+Q>EvWM(u~t_)PZDc&rSl}QR#!St z5^Hs(^CYl3PZG4c(s`0tt1F!+iM6`Yd6HPGE1f5S)p?Sj)s@bZ#9CeHJV~t8mClnm z-jVb6eEUyO4Mb2)pP(9upqf5GH4s5HeS*p;1l9BjDx(0@!A{UhrGuSVE0qp*Vy#p< z*on1L>0l?;N~MDxSRL#Ht*&&i6Ki#)gPmBbD;?~_T3zX22UZ6=L8~hr?8I7K>0l?; z>PiPYu~t_)*on2e(!ma_4t9c8S31~itAm}O)s+r*Vy&)p zuoG)_rGuSVt1BJs#9CeHU-k6+tyYf=cZK z)dUGDwG&hm1gOKApi(2N02N~OaYSRKv;tyDUkiM6`Y;Y_U6 zl@4cOt*&%96FcEAeETCVO7T2Q)#eD;?0pT3zXYCf4do2Q;x(S301HwYt&)4Xh4m zf>u{LpouMYCHLXwj07zE3Ruoaz)Ih8MuIK%EMPe!0ZTm#Sk8!`ieLe)R4Rf6Yo$^V zELba*ieSN7sZ<0D)=H%!m{=9T0$N?E2o|i>m5N}&T3x9K7Od5kT9AoV@hhO!m5N`% zT3xC56|B{jieJH6U8(pLtkso@Ut(4K3TSnu;#aU%S1Nu5YjvgKSFl!BDt?Jo@hhO! zm5N`%T3xC56|B{jieJH6U8(pLtkso@Ut(4K3TSnu;#aU%S874-Bf8Zcpnz(=#464N z)qDvm&IHwb2`VcPRP!aMtUyrB7oa=^a+?53B~O7AXr+>;KniQ6lBYllYo(H>KniQ6 zlBYl=R&7lvm8xX~v{I>BMzB^YRm%w0N~LNU!CI+QEkmr%gaoYxbtWX%T2N;~Vyy*r zCM4EcP-jA7tp#-^1XgE4f>u{L6B286r86P1R#!R`5^Hs(Ga;}#6B4w#(wUH0t1F!e ziM6`YnUGkkE1e06wYt)o5LlfF30ht0Oh~NNmCl5`;a3wRs8|tH6C|iu5mXZ-sMJnS zO^~2cJ3%!;fI6HBTB+ozW*%k4TB+ozrovjOsP zYjvf=nOLhU9nQpBUFmQJR);e|t1BJO#9CeHa3_nT3zXI23ChN zL8~hr&cs?>Rl-?qO!_1)rIMG7<@5zC2NJNHzJTRG0+!Pkur!K*m4Qm52)3L)K^5!* zTB%g93)V`df?cpyDi!R4wNj~I7p#>^1v{}S*aft@Qo$}*t1A`kg0;F*!7f;PiK>V6CoHunX4eN(H-Mt*%tC3)bpN1v{}S*aft@Qo$}*t1A`kg0;F*!7f;< zD;4a-s$dt;>PiK>V6CoHunX4eN(H-Mt*%tC3)bpN1v{}S*aft@Qo$}*t1A`kg0;HR z!Oj=KYWf7#Km^tF395kzs_7F{0})iyC#Z}^TB&rf6Kkc?!A`7| zN(Vc!Rw^Cr!0KQpXmzE7omi_Y9qhzfUFl#a*6K0l?;>PiPYu}W8bO0VWiP;n-x=1Wj)=H(Ln^-HAj&5SDR64qewNmNm23AKmL8~hr-Nag5>F6fb z>Pkm9u~t_)x`EZvP0;E}M>nxnS30_hwYt*LO{~?Gj&5SDu5@$*tD~Es)s>EJVy&)p zbQ5cJrK6izt1BJd!0PBGXmzEdn^>zW9o@uQUFqm1*6K<}H?dY%I=X??(M{0mN=G-b zR#!T@iB-D7yCHSvHXx{`Pf!g+P)(np8i=5pKEcXBYWl<~qYzZn2dIOcpp{AoJF!+O z9qhzfsdTUtYo*e`POOzm2RpDj*a=!)>0l?;>PiPYu~t_)*on2e(!ma_4t9c8S31~< zwYt*5POR0H4t8R#u5_>yYjvfA9atUg1g)-guoG)_rGuSVt1BJs#9CeHU0l?;>PiPYu~t_)*on2e(!ma_4t9c8S31~yYjvfA9atUg1g)-gu;aCw4p@SUn4p>hL8VxNY6=9EVhO4#5LAjKsHOl=2P{FQ zSb|n69k9e&sdT^+Yo*cwORSYj2Q08UU3}8H>PiPJ zusUD~T3zXYCD!Un2Q0BxS2|#cwYt&)3#<-Uf>u{LV2QQ5(g91X)s+rdVy&)pz!Gb9 zr2`gN9k2wgu5`c>YjvdqmRPGR9k9e&UFm=YRtGFWt1BI_#9CeH)tOkUD_x2ct8|6O zYdY8os_7F{0})iyC#VJ@sHRV_GLV`+vC1d_b+8ju(PiPYu~t_)*on2e z(!oxw)s+r*V0Ew)w7Sy4POR0H4t8Rdu5dZ7!sPYjvf=nOLhU9nQpBUFmQJR);e|t1BJO#9CeHa3*yw^=1WjF6fbN~NQlSSyu| zZep!eI=X??(M`}wrK6izt1BJd#9CeH=qA?cN=G-bR#!T@fz{DX(CSJ@H?dY%I=YFq zy3)~2tkso{ZeVqE6STV0(M_z?m5y#=t*&%*6Ki#)qnlW(D;?dy>gXnDb)}=5SgR`? z-Nag5>F6fb>Pkm9usXU4T3zYrCf4doM>nxnSB&n@ULJME-SHsve;+Ppudg@PAKw3k zZ}ER~4Ak(~zNz~6==w5aWH%FFy1%OS^e{Q3Mqt2y?mJZf3WH9Dnf`4RTbvi7d5V zOwU=d{MUX8)xVt5i^cqSIbS4Z^df1Z7fBPnNSf$H(nQAxDa{@qq%?bckaCsdgOsZr zAEbio_y8+equU=JAaf=tkdYD;sjT<%DB%GA(8hP!uvTq!lYb@^m;6R5^6GF2PgAh~ zOjGe|Hxg95D@;lM4{cJVc>Ob}_-UNR5girOo}}vVE-^_pB-LLsG<*04Q~y`WrN!pD z4S$a#;p%nd&E@OsyyvH$o&S4u{Gg3a!FDJy*p8`6ou|bkp9#yPP!CQh*d7^~4ilt@ z!9pWWLImC(Zi=g z^xRJc+jGTM`Ewr>qGu5oY>$k~O;C_NGA_48L3+3h4OEpA6(1yuVBiE1OiWt1L1=W= zbHR4ZE;NFx&LWtIRIV0_^ofrHJ^nnP7b$eY2#g;_Kq+AaMh_z*gMa-pVs#%(RVy-R zLL*2m5Jp61AuE5lM?|LYA|Cx6MhMybyBME{=Q8lcs-4b60-t{w__BHB{&J!*9!Bgl zxi#V;VIv+AHR9pzl9D3hC)jg$+r*x!s}Y~-4}Wax&y?1Phj%vOk>Z;0OkIum1b?Qo z#{NiYthi$4cd0Ew0UISK5?bVDw@FH-zD9gP3oM12oD526Lc>PfNXK*}g~5N{K#(0y zudbJGrrE*y&Ejlzp6@Noq;X%>=M(GXc!nOaSj~CP)bRHMi_d z9KL>;5K@+bCg1Vf%9u5t+|0iell{jA3qPG+oi8>tucK`eS=N(gg2bF;eQD;9NE=)a z{)Y4EcG{Wxi|c{5Ul(wSh3{DrC#z6NuVVEG@zE6igt9u8z(?0p`F?SkO=uV)Kzue6 zAVPUM6dyujw2=oFx@H1zm6(|REH^3zFKQZx@F%2E4!kF6=HNpzCL|ZEMh^Z6H7bKY zLX8vnsE^6OTZl#(xN0>Mz#|$B?$)go2`ri-N$Jy{(?+%7k745kDQ$4|iiRQL!|e~7 zDAbA)u?Z-kj06wpB0&MmCnyq=Emx(8pmH?I%ZivjL9n@5pEf&?9G^CMn4F$A6C`F* zE?tqCluK8Xz-RFY0hg{O8OxO>!axo&n>i%>Uyd+kd5sKFt~A48CT3HAdFmra5ANJ( z(p5N5ThNs2NPvn*yJZHC5fm9bMo{FP7=bTTLy}U4BBMkYxL9>6kC2p$K#ZVB;W2{3 zXb}S5WH-uCE&>q_b zm~xef5u`j1E24|T2m_QzE;YySJl<@iICu=VNl-u$2@06qt+^37+**|)NyVAlA*Hx% zAq$j};sQ5pob%)7Db31S(a1vzDwo(?~46mj6*6Nf9H>UV(UE18eTBHjS0 zq2bU(~s*5lpB5rwiR`Jo|j;zvN-jUT1 zks-=EvRaRbMx-hTna~vjp$W>;97aU!Ax~k#JtFpyhcDqCaI7#Q;#bE92+~jrD6R)9 zx+<;*tL>OwkPlQFY>%WEuCzgV%q-X*NqJmOL-brl|LWyY7e7GB!vXhKHvGqYkAP*S z0qY#g_T@W`{J}>Z;e@WYLpZoqpgn)^QN!dba=jfQVVd=Jr^b3a)D;@JD=%{Kq`20D z7`*uicgioeYn}3Cyx#7X@p`-So?3gpjMv+p_te_+WxU?*ys+LL;}cO|zKqxT_~#fQ z3``W#9+v*dtn+2O#w%aO>+O-*@sWGTIk=1?OVs%I^|y|A1x}$k6w7R_3owy+1A}=- zxM3y{Ok4uDIMpQZi&G8Z7pDLs65xJus`bbhr&_yToC1i*5PoqA^oUqD&(O6Fd4{gH zN4zb6*iomCcu$_8>-3Ri_nphob$XYfYwgU?zo2(^dwi_t{?2)9%M6|8=OB(pp_0AB zSj@ix3oSQbp^FAAJg@-^y)BRTu$PhY`?c5Wy8I zjDW_%2&g%T;9?d=#OA^C>u?XBBdaRmf)>=T+n5HKaTy9DVoKqH6SS|aI1xxLu5Q{?bckEt|NcAq2_^&PA(~mRWzxbyg znuDca0>g1)0|6%1OaSvY6CfUNOdKDgxU-9s`O_9KJQX~l26bUSsB7xdcBq{SkFDd2vo3FU}4jw}*jRulT*(j^a zm?@H!fm}tO;*v5DxTFjO5*Vm)&i>{rt~Y=4)kJ|AH;y8ivN6Q-o3HpF{^qNRA|-}o z(ndl3%~yOBIpb=yojdGGks#0;CGmGwO_HP>+J9=Si3fbB(J)p$nEsqV*VQZoGEgG{m)u5z{9RvMhWtrKoFISF(Lj(=b^fHIfkR5w`NO{k z4oLWoo;~14{u30bNFMNu0UEWPzxs>InZM^~AV|3-&x;ymU>z?dZ?DfQ$S%HOvRhPN zd0&n4B%AW7l8-m~U(agaIe~d#BnNfn2kVRxhIize=L}rwOFU8^nJkW3S8SHam(G*E? zvOe3!Bq@S3O5lStN|18QlrmH?9vcHBDP@2J%4pOVNPMl=Fi+^xgHw^BqG1hA-+bHm3T~2 z|9ULWqo~AVEb^CM4IEN=nRgqFX3bxIH4Kp|7>Y_fI*ZiWkiYzj%fL#U7VY2*zq9IJ z-i*jcYB|p!1&_V>RdCG&`Dz^JfN9`!SMedbotBTHC=*{C#R>A=S)3p@d6d8xM{$DG zOnvnf=a5%VQ378*#R*cg@YPeCLuwYjdWv(%*Ukn4Up+OEz_GZzHjyMJn@32Lhp(RE z1bLjt2~z6f)`oR|ltW%4#PQsFG-?7BO=30!hk1AW0brBwNUmG7z}rA|=L){M)bMF z10Ir~NaZwNU`5671y-COmAZX_73Yu?GB2>=9FSrfOBa9C8Rw8%ulJUOqa`U!(BKR-t;j8}B#`?&$cbyMT;fFw-!`KdPv6^G_%07#sf=*Cb%g8AhN7j}dD<%10eFlz*a8M<8VfN8vGA5aFL_)L8MnI@|+> z2_pOxjT$R{CvLb0G#p0624^7`?g6QSYIJWmVklT8hJw(1FIbxm;wRYU!4rPJKnxY{ z#X2a`i}gh5 zFd{m5EO+tLB+M$dn(&k)*n^9=>@Pa<<&NEs{wt>=@@!PjE;NdXj<6?zI^t~dZ+y%v zkq{dc!tydxydg?}X*UyKmQg8W2>-P*cAkDRB=HZJj3NvHrrIb){Q>oJJ<< z7IN87M<}?SH{#*8jd(a|6P}BFBOWf>h=-*b@i0^qo|Qo(J|RC3fExQJb&T0}o;P*|rL+Ybuf<*R_YN?q6wAGX(QR=iFG%Eun2+*dff+FGGphy@N6bZwE zB4Joiz_3mFkV34<%O4*#Gmv_%X$1ehLD2<4s<$Q)Sj07rAhldGLBegMvTNo5TQm_! zo!8_Ns@#jLYI5?^JO*5*nII`89HyBAe7~6hpXX~PIBZUvtSOtU&C;?F4<$6>p@T+z zBCYcyN{#&!i#t!08v7>}|Dq)AcHD)X{ySf6$ZCczc#^y3ismni_j1S>!%*YU`#*9-y7qT+NDWHl31!j_JAkrc5_9Lgd!B12iEMhPH;Eb9@1qDYP4%OW*OkXY)<&kD4kHRFKYm_JDy?yanNYhzU6t!K9 zMe(jIO5k%(l)%?^F#=WF#Yl?UE=th(@UQ>od*A;a|L61?rG#UN;$s9wkryR^Yc+Bx zO0*b<;_+9MAUQ-z>-qPTTDQ@bS0!3hisI>f)PKMwrO%>7iw#qhXi);6GNS}3brp}l zVjO(5$MA^e#z-qZDjU_5s{-*Y({YoK#D7?!iBD5zVAz8Xj3T9VY(5}?Qd1;QYl;MZ zm?H6;g$7wtDFWic0*wQq3PQb>B1x&vRct9PDb;~XN_DPiYaHm&m+h45K;nz-n0Dpc z&l`Q$|1xCUG5s$?Hc>z)iBX^uxuc6qI-vJAaw%W4#klxywT;VKzGjQ@C| z|2A{TOOQAROq3;flps&WalHIUVWSYfFpTo>hkkK_+-IT$z8;JdoByyT1yP?Vfe3f7aZBx)i_>AS2Zo4Dk4U=vBoJunb-#?`EeOG+)pM>(TR ziq9G}P~_`f0|gwUQB*vvODP{DDdmF%qNE1eLKZ}KGneAC2GKbepEZb56xCS+1!l}j zqJbh6dcHb~vM8#v28xszMRnG|1A;bArKrxLJj&{EBmp(LsE5 z7AHupQNB8hb4UuAs!4ox79S$DbolBl%7N7xe)$m|KFX^z_1A6toY$ykPcBat`J&V< z)d7mf=lG@hwcAMrN7%@@-;f_xiw@&xkdK=wSR*DV3f~NfDx>hFVS-1Y@fZ&b64i$c zQe^8G2bPJ=Qm{@;P$WlTrP$1aA3#V@B(1_?v6%;}#RNriEa!UZHy zeToY-pCWS3Db*%x0VVo}w+5%sB> zH%bBhHb#7LA{m`gS@T8)Q8jOrA|-~Zd80g1=}pzV5gxkcjgq89RW)yvM_N?4V`E`a z*1VBH%9=MufVgQM0#Y^;B!xu8G;=`8YbHpoH)YKmnI>yq@$gPxzS6y`|336zU=pP` z@^{q<3SS#(?#u&(9S^@SHc&vH&BGLBZR4PDUx$3%GNlKV%fCN)ckzmd# z5?^mNh?{a1$dXbWNPN8+8>p-|;}of+ReZyW$=*64mGx$96clhN#|KHugdj3p%exqlqP&X{l;vHVA|*yy-o<&OGC^71#dxUlE>4mXwJh)A zJkp}V`cn7AcogMblmK!zbAX#R6F|ylf~1hXyo(Bn4AVS>FYlrpkX;%%u)OOq5p+9) z%>R`G&^F#CE~eLKi}lHJJppkT8*8@Pj>8)5)_vf?x9$VkZtFensPGQG;6HchbqCAxDdcT6 z!Se0aeK1bj$DIG$9DDqpm;b?&`oGOxpti23^nVjQ&|+unMd+Zz@&=k1*poo?@} z=yZE$MW;K>>GsZwk#3*%r5wMdm83wwb)VaNkQDK^OsXvFZz-A-`nT?L`{~GL;MU{Z z-g(@1;Fbf)$B%B^2Tpp+Wt_h^3Dw=ws@yi*w#ywxL3H1C6qx6>U7)nvc0pXk6@sw2nLFZU?5in1IZ#7=p=%HRw9`Ad?KDFMQX^8q?poZjf&qX7c zh&J8h&`6(%Hqj@dO;@q;>u#$a>EE1%W-29H$ep-p3w4lsEsTg{HmSTqL$JIGagrJ; zjED>&)lj%cB!$R9Xh`+0;0f`P&)I|#5pR(?DBL3wtgKB!s^Ud;upJ`@+apPWAFB@1 zN0JlYTL$S7gu!-%V5pr7b*=r{m2YxM)9a1oWK#bv7jik>)F^s6VP3NqABBk$KzYp^ zF#Bc#OjjQJ$A(Ca(1l$aN8noCOpxRNS7_wGHNKeu&e2Q&Z)hff`5OsX12hw)X5l}3 zE#~)b;Q!Jcxc)W|k+Qb`>~(yIQSm{Tm_witflowTTLdjWdmSGLe%Ck`775J+NCeFU zDRueJUPpz5Q#8f~d_tZU#8g$jb&OHCQl(LuAW7-l9S^3sKwl{mXe>nn7fX>qZ7C91 zKSh#KZh5gBQ*QZ?F;0P?Y&2ncu^i)p>I9+RI2(|pOb8N)lH!swA-JSW2ojjEanACk zJP8WSCqa?Y?BPqyrjbW^2OiUXc?TY+NJ(1Wfya2zzKxlNrfVihrJ`?A>(4i-^{2R~ zkIkaIsE<>mbX8u|$9bfzD)nijqq{=2(KU)shDUREc~Kt|wfG^q1|BK96&LlfL5g>n zQG%536rVkca!3l9DhrCw9z};pt=7dm%oqoj$^QYxOb_1?p4q>h?CZt($@#(^Z}Brm zNkV=}R3z*an2>u*PhAl;4-X5Wqw*4>Jb zrTlh;$e7y^!uz)(WQo5WA);YB!fmb1W52C9atp8>;kL8pmS8)M+s>L#NVnq%^=#$i z?qG6TQaJCnq+2U#TleLbVyn3iw^choF|{2>$oSuEkului>o$~b=ddLuw7w-Jl)fb; zbhITUl(Z!!oO4S`c;}XsTWTKq+%nE(XiLg1y~Ax$ zw&b~`ceoA9Ry^hBfVR=5Y+tq`+;SV>vlpW4?gj-HV_B;Q6i(JGV z#Wo|$#$r3dEk%@V#&#UH)VFLpwsAAJ_t<7^*@A3GxMg(9hGaXANU7VHklT~3=wO(w z=rEJ5=wOzu=(e2)7KW|(VOiLU4vWH8bXXF$p(}ScL%FT*wbkG7?nV(vECS96D|?X? zVX+rU67mVNbFTzxxfe+h76F|iEXvLlVNuK_2+O@lim<54Q-pACSDPjYZ?3k~WVvlg z@Z|R|Y-Jn1joyy1C}$Ewm)n*UVUfpDghf_P5pFx{a@&&PSZrI8guLn4%HHnAV_VX# zm9(v=m)n-al*(;Oif~)C^M=H&n#~;bwxyX;Z(EX-$S&KA?yf(!q=aj3NeLxwNm*=L zk~1o{ElJ8PHLtfV%{5Wj5 z=a&AaH$q9CTPjIygc2aqA*X;LEBsLgATW%D+=W1ak-b=W&wTi?8zf|&bFjm`i|P6HjDY< z`IZJ$JJb}%EdxRAP@6gG9cqel%h||X**5X7cBrYLw{)~}huX}L_h{QV2%dou04WF4ozr>3Y7n%uc44ud}PO zcbnyGdY*OLopA@Bxy>FLdb7H`b;sUYyq3Flub-SOFE1DK!*3ry zou02QUwwH0!?K0j1qBW*IEJ(eI|2C9&1}8Ay4tu0rJJMQeR%&P$L`7WM5`@^=TVHiF6h1JUxMr$zaRDcgUdA(RKp!S?{zzE!Tr3_@9PK8z6~ReAO21d zKmFp-!|cUs_WE?WkIcBZ;`$9zP5w`k zDzODZ|RSx z>sPC6arr8{oW5DY>jSdPhW(Rl(LFiI=CdB$BtSCnjG^7dLVb#sLi&3_iolIb9UNQ!_oJh+2ys7j~?-C7eQ^1Lu#p;8@v(`cfpJ}13R>r%3XhDa{`snN5Hlox(##NJc@DlMXV_u-%qS`MTX{(NXZrkHh2ku-|FT7w6M=3nX}jo^-lxp!OVoh!U;Fcx=5O&;S~Q)ZGAq1~2*>I((&kclaK@{*nHz%$<9${LZNc(Clsv z>7#%U&8)2aa%ZkwnLEEzg~Rm&nk6y(gZT3Ezj}Ig_gY`u@9yp{AMEcP?kzWd|Jn10 z7k9$Td%HV3ee0!p`Mvn^mA;!P>~QsfzrdTsmv@FyFh<~Zgj?dPeQEEn9_%kQU+5V} z;_kxLLEp8%-r>Z9{oR9wIgG}a`F*H&4)>Ut^=n2#d~r9=l`iOgQ;P3NJhbl~a3REZ zcJ_>WJNjXY!{Pldj9ly~gmCz7h^LWDclagU=Z=is<9DE6fGWqu_ny5RA=NK%-CYpU zJ)r-6#2GWb>)ru0-P>)9GL5B&*B847yZz;EJyS-n?&z63mFpE)yyO5fdL&-o6<>~n z5ZYn%?)vi4+-x)TKmY2@;m#91k3;M)9~>?YP~X3NLb~kz-B)ieqFk==5f?A^gua9T zXb)2MF$qc-c;$nf2Wehm{CjVpnTV@C-?=Anm+=FxZ$5ke`9p#zXXw2OIRD3w#`P~; z0{jzSIP9(tRQBm1%e=kgtN?!1G}y|?RJyo1jG=dI_ucn6=M z;J4d(2cIdvx7xXU2cIwB!RO0&@cHr`e7<@IpJ{M!J=fJc_Na4_i)L1 z@~c{de|)_x|HQ{@^EUvi{^B{rH1F`%`{qn4_)#LA3tP_{uMyzy3tW z{_ukje)v$+()ceOF=aYL{+C>j|I$C-HvWsR{!k*OZf|`QPMc{x`>*|E(MiJ6D`w{x^ZD|Gs12D@00ui{}cHrE_gQ zXwfv~_Py8k-0OPohd=ts59?Wlz-FoxO$E;w!`^)PmzqxLW;`0k@8FFDh%K36<`_WI?^ zTR;2hN96arKfm+((XG#)KmVNn{`6;uzq)mG`C9qB{@E`Mw|@1};bUgbAN@xkKK#=k zefST5^rsIW|MU~yO+0$~0;EW+3rX(9{~5OISJzkLfBf)=5AR-F=KuKnfBfSQ|LozP z{ount{{F)sJble3;Rh^%AAb0KE;3gSFLs|k|BPYnOO-x;^T{W_{^IUWKmYvY>-&H7 zM^9fpdGhGx?H3=te){U?k2FlazWwtT&mTX1@iD)K^u^<+k3PHo;?=XE_ea0}%m4Ua z_|A9Ef1P7+#=*G^{(ndXPyg^te!tt~_r<@m?Tyb~e{%crqtycc6XE{te|_Dd1Q%^p9(YybDE)!qhUtj#|_0Y$^c>L_er?(%y`1F$#p8pqm?ELGCf3v=8 zxcd6(XRlwpdVTx(ix;nNzj?jF`fGjP`LA;f&Nw)i!I=uqOn7F(-ytTbSqvf8`;yn|c=iIQNOM?!VF@&wrg` zaK^#849-+=X2LTQ9y1}E$}=#|z&HlR85ZZ3ab|{ZnHj$LcWP(-^3l^>D^r~JIf^XIppK6$ei*Z;N3_HXmA?cMq{ABK4G>QTR2|2OjTz5n{+_s1>v#p_QW zpIG+)x3YTTuY57Xy)Zto@Y&h^nK<9`q~ z&VQX_aK^#849-+=X2LTQ{uVId7yrh%;(h+)^=*Bw{+FQgL4_2so>0nXC^!|;h71~On7F(GZUVf z@XUl~COk9YnF-HKcxJ+Hhza>T;hAC140C3fa~XU?408_bIk4vzb8a!`7IS98GZUVf z@XUl~COk9YnF-HKcxJ*g6D}q^Z{p63aAt%vBP>QZ|JQj+I& zgl8r^GvS#D&rEn`!ZQnHu^-T!B)f9YTIXY4=v^pn^8GPK7}9{v1z{CNF+{t?dI`dxDWi%j*u z)=%BPdHIW{pL}xDKTGq!>RbOd|62cs4*yo*tEZpee);KB`v+q5zs5m-{g?lnoIU^b zb;jU}f31Fr)5{m1JbIP?gwgT8Ui7~!^1s!8Eu8WDCtkjI^*R5H&@+nZ^>hBgrYG&U z96es#y!kbo|BsLz|6JJmw>O@C z`ufG~r*Af`=l_*k^RF+yr+)Y`$o;MT#e>~J z4({%r6dx{^`100%|6qT(e|3HT!n93%W!iUc$rEhv?;oz05ffjS`1;oF&V${(`&Wni zmlY~vV&bc%y~l3?d$@nNyl=-@Vxm<>W*Y9`^zx*OuU5QyJNI|XNE0`0{3e2z z_khZbH`-HtFe4E`w28?@g^EX-_|oD{v<|Y3Glx1n+9tkS$3ZOE@9tla&Za%YgsPya zBi_2$KM(-Pd}+J*VnLIC*q$I>$&>xX{TZq*zN(mnSn&p~_wFC+kzG7fj2Ix3%e%5Y zBiO}m%KV;?4-DQczPLs0D16ro zCurXwzPxpaQwmje9JHqxj;+HZzKSY_Od$z7j)|}8@Mz!Vpo*YSWyhJ~%XWCm6{3dO zC{26h6gU1Bg=M@kVxF89lS|^Q?CkDe6{?c$Qw*6d2UXlunw-ABTk&@BWFL&|74Kxt zNxd$HHLG?I6BZD=6HeTdDegQ-=FwK#7bAy}A>K9^dIP7tGLEIPaWKVzt+Io-_=JOA zo)TMj(B=;@;VjT>;e@DCY1qCC$J{>@kh}P@#9&^|$U(?-Uuo##iIWiTuhj&2>TE|Y zhByl+h@lx8Ou*-&j?={xnuxEWxMgAW`4Yn?IOv|-i5WsY^!}k}9c>d&Kp+OOLF=@m z*#TW_M2(mT0-q?U+5WqDcJ3f05yv$%3%oR_pu__A#eF-a`cBxsfN55|U2K6BG>PEu z{v~~PMX-s@NJ5i1wd0^IXr{Qd1@7pVs9v;T!NfCEXp_rqi~y^^*2Pw7%4JXiP;n|S z@jMPjNE&2{8`QTsIK>!QRG?f2DP0osiZ@0|d_~??ag$563?Rk%Pl-9d9j8VjLEIi` z;#oV?Jfy_nhtoTE(8U*3X~{l}w}NY%tB7}rEhZ#QF`>+u=9b?sp1mQ6gRzD1T`__e z^>*>JjhKN3+a!|1*D1UBP>)1>b?YLy>Vk%Dwx{@Fg^D6!DmV<=bGF}zjUnh#fhwKy zgqU1TqQ(e-hye;u+_sC&2tAFFNK@ZRF-BZmrwp;0F6^^k9dIMAP$7mPIAx6G?x2ec znrH(baI%Lo7p-r^6N{f zN`@S3x-Opdh&F-EO5>o#RVF^r&@0{{RuzkmDW5e!Wfh0mu0h$QG;T5Bm61Sfc5cKI z5Qv$SlI=-Q4GUd7ITmsH&B^J-mEta*ej|oYa=hgmimSSKwj;!3K6wyenYM{dTTKAA zr;5=oK;%`W#FHN5PO|5MK$E98teA))N<8@+PY_4nq0%&0{mtL~&hLFk{})&F{`CnM z#ChcvS{4|)_^NP(IIg?`qd0Ni%v?Ns2ikGvRarnoEjZL|isuBFQHbJalJY1JvlLtQ z=Cq?xevOe`JnwPT8`T0})Y%qvT@3!qLBu$dLy+CcUCcyQ*+ZN|5c47!tu%G<%pT$z zf;84u1iN^~1ToAPtx(ftrC}p3{3EU*C@yDnP+4LSy&g#y%dv)G!W?w*EKqVlMMH?1 zPgj$0G1uu8LA2*YvR|Qcu`@_cB#fvGffYfX=i>4kRPmK)oa&ur+r@?x#N?6)ikj9A z#KrWE@*6R^%;C-2RTs}u4>7F}Z8(TQ#XKporiMydXytZ*Ovk~L3WghJ* z=9CtbySimVEIXVrPfR?k0VDUq?|vV0G54Wr5+TmD%N63vP8T}|bFq(`Fhh_Z-o%p- zfe!-~+FZ-fE+CWNBqcg~yP4f2Cf+dzXkAo(W8?<$9o>f%DqCC$QYNnKgcu-mmV>Ta ztBb*dDaMG2p?!)3q>18}_7qbjt8r#Gzzr@CGdnRxYLkhWVyk!~<`1wJ$E?6^#ATc8 zTn=agALs8W27?tUv@eihUGTdcyje_4YT4np5ED$x*C!2xs>pPT)#n;w^HRk$+ktH2i4%;_)?$63D{l>NT|Bix zm0&oIGxrokFn8~iuqGF;%RwC2u4+iX8OJoUEW~caMZFSFmFaoJafs(u^sm~9y!-sF6KQ-8HrGdPpBuFR~@H|rzeOR zTOzO=v=he^&mut^ASZmN276?QS(?o3fGP$N;1jo1Ga@nN%E=ALXmj{vd%j|bHSsJ! zu#lF5(DrF7S73ks6SPm>y&B z;W+RhTxGpD0a0R`l++ujV(mp*Cz)cpYY|@Las;tj1+5DVWoiJ94`2K9?|kp#szh?zLJ#DX*!q7ILCiLo;y zsLGBjZ_FnX5F7ET9dfDbn+E$fv)v%(z8|mQ(DtzfbQV2M_)rZdp3CZ}9i;&ZW3DVu z5GUbjRA0@ji>;(44_;9u74N7W5uS>2g(_+Xv1$i~Fl~iph+`x8&mDGqY86i?DN7CP z3g#h`?9ao3RP%Pg1Zx098}Y>hm|L5?dS0NIJCH6{+?A^o@FBM-jC@*~kB*BG?uBum z)#x}#P>o`ouoCwyC>enk)_~KHG-}L^8dC)+pSRvsCD}-^JJG8BXUM6#sH&0|le;%L; z^<+`*uW!;81IBTvcFYf4?gN0@^|w>*IXneVDRgl-s8{B{iTJ&2i!x$gLtka@QQ6UW z6JomJMP;58gDNlqkOAA$7OLnMFe&8$H;#Ux4$q)TV0B5Ew#Ao(iZp2bIJY~B3E2U$ zH2#H?WjijeF%pb2Bjh|1@@oA_70G;!?SZttR+2$5y4^Q%o}5{70ZKCYkS9Qj;|Mr2RPrR&0TI3?CWvH5H}EB{U^@*l(}(3va!NXYE&$DTh_TIP+#i`@ESxYx(qCaNl_dL)5`)}}ZgNx4$1 zAgHvbn6ZomRcoDMc4lU~#7Y`9cw~eQZ?^FS?f`?(4A;D(uqlRM?ITttCb0DWeNEm| ztZU`k;Y@KX^(wI9LD7{^CGMz^V2U9ne5`nv7#VM@YVux2zzJd58d2ugI(KMuO5QO- zrj@j`9fwD|7PM0vRcs%+?I>4>`pAeLsrnv-m$pF_F!^_CfhN!t}uTw6uP&^;G#1wbOw}KdC z$|DD2r?%?ygpmzS(r-pEz_uzajX)d<)q3O<6Dkn9i3x3#N|TQsSg}vM3fX9Lxr*iQ ztcLW2b_63Cs-{@G^ZCee%4lB7M9*cm|HTkfo8w@9qs^EUSN1NZ{oim(jA)0`GB0f{ zZKv&#c^r%g)?19>NsM5SQh%g6Ag_#$97L??_*h%eJc3W$CHTt5HWMXN_HuCMlFVxg zYZ1(el4-TX<2W%+(|79DI*i18;&qutLWAK}114%xVgzFZeOnG0cec5;>5}Rue%vV%sI|MxdWP_r# zb@vhq?e3wL&RhUefW$I_Hb%5Q0JBT1!4xBuiB7&ANpjE*mW3nAlYHdSt@GqvkHF?} zKuWZMGU8%;ByMnX7`9g$Wc$Qrv}x-^13+(oq|fUyvg(n7;4*?(c@uBas;2D-mF8Y@ z32dv=6K}R=T&2QD?Y@-;f{3`qJH=UomK}-f3TP?Tjc3MWIe0@ZZxG9NT~_RrH)!7= zR?>7(9sbhr4T=M?;-8hY8;pEC;;j0ZIV?Lj*j5BdLjc(?wNnh=trTNKb-BGwNem1r zz?RD!9y!Ho(kp3^$gpi!;KNR0!BF>6JB|uI_@uLsJi+x-4zdu5ZfuX7p6s@M^HjaW zX*Dm~U!z#pomo3?wfzk^NCZ#Ao>PkLn}b{qwOC;-AT&(BM-?;7wdIzslBz2Gn22es zPrb(@qb~C^1!iPClI*;n?e2H%r9|sZto*W4Vj^tqXk{lJX$!woErU}kRLpqW=5WMbih`CvW<^8cqFFg#P7FE1Ac&0=b79`q z$Qtq1s}o+Nf&9AKV3+}l&fOf$x*R{`upA`C;*)-ySYc{X#C9`sQky1l%E;FuzQL0l z#F>T@5ma_giSauLuMJSbHv|OiJB7V(6`y=$6ySIdt*$W!KTtKPV2RUj-F3MOtfVP5 zr~G!XX^oz?Z#w)9$C>olV=~2^HQ!4t%u}wQidzQDh=JH9<{mxp-Nf8&#=t5uBR}_O zV!|{xBG@WTpq+;&R18qbn)@M+0hu6f$&?6Un>N~EAMA6ieFLfpEZL#BVN(03?+r;q zJE=ggPKMv$8%B;#VllHt4eB^0=5-q4x$1T?TdW#yU5w$aZ5fGmU53iF$w6^d7u$VQ zHJ=w7uJeUh*Cu199!cg4$ga&T|HueaFQ*g?{qUN7i0UbAuGdGlF@hVWO_@>LWQS9# zz7r>+N5t?TtKL&a+ITw-A1lmx|DVUS`TGYyBipe~S+9M+&o{wai5fk-zCs~JgF|x94Vj=bj zCro%u9HpI}kW0i`+qYb1VB_a+s?tfvDxU85k62*IXeO!@876x4$pSZ5T`CgpG_%gD@tX_}AQ4JcM2ivPZGd;)KXw!DFopOoUfLpw$5#Y08 zvb4eAktf_;sRk2gUD7h*?NK>6$~DBZ0B2ot2L$%Z6IR`fgt{8CabGER@nlVmOl{)5 zlD5Pg$KpM;d8K`%4N*e{M~_6z3#(J&mg4b9wBrrtJbd=zBk}YEH;!y`crt(FAmWab zX+*C98=pW*#GA3jj3n5&zUfuQ32mTRSiiTdM!0!zr@f?7iUR)rL##uKy;N80cp6+2$##MU)_ zcSLBvWdlX#b95H$Ehe0j>r}kHH8RcB^?2WDhv(j)JA%Mw+Pb@Pm)vex^Y*U~>o8F_ zBR5@A**P$As6u8MMqsJS_~=7^f)4)X8l**$s+gg2U$;8E)1P>^r+0*7(8fVd$>8@p z@m7Ut=G2Nz_sjgyOG~ku4!fD)Dhuq=rZE&L(a@)n_GWL1^%i+%XNdXuAjDzqD7HlU zz?c%b)eb;dxh^9%-kK*Ep7(|+X7B^W=661l-Q%f8qK(rF_VbZYuhv-AqVw>v`q*fn zdf}J1=y!U*!^in5Ch}y(M0I&$3#t$3K^)uT=rbjv**K;3;?vjs%`)R1Rv)K!9O=ms zL*RE@#W#EsF*za*orUvLuC2InkSf+Y7-46oL2M6@5y$6jDm$na`fq zJOQzy-nh8iq;!**m?*Z&JmYPB)+-;W2y#g!w&PP!L(DSzUBrS9FD+;SM9^lo6w_eZ zDOG^9`E#x;ms5A5nDbomsxxUut--3OF6N&`x7`8QqaZnH&Kb}>G*C4{}ADZD6wJy@>x5NOM z%*R+>A4AL!K}!q1r=i68mi{e zE+Z-&&1_^xGgNKM5mWORp%mCN)=&B*ad1ik%j8m-58J#dK&;<~w9+6WBrO-1=E-bc z3vOeReczUNK>`&_~Ip_VOD~>XC#h zYKODf2T&Cg6>@x57uU;g#H1lt2w=I=P(`AEP-!K`HZ>R#k@FV=f~B`!R8FH7=aEm^75% zh~sTO6vnn?<}&atD&TpmUy3#HJAq8nR$zs}5aVMpo06742ub+BvL&s=V9=75)j$Wp z$lgdPid$lR9DNjbW+xDDCs z(|7PY3y@i)P^D0TWyW&I8`~8sW(W=se=7&92p3{;F!qBy@@l16JQyE3rvQsj20fP8 zT1Mgo3^G6+7MV`5KE+xw;gnIu)FmTPrD6EZ>=Q4bENMC=w>r|WE={C(hye-ksq6q` zeqj?d1LlRGkp>eJs=b{OsD!pnGdiV-XQgF!@FX0(tlnVaVD|Ay#5FpDlgY6pjXw}a zydm?$6BBHsy1+J8WWllcUHH~WRN0{e&KBLpmYuvHa73!Om`$e)Q~_>Xd5j^bOK^gN zj4gFaw5OP1!AdIOL&t^O3T%-bh*~IKJEct85W}&>5VLkSnXAJO+ZZXj7b7HHw(;u6{;-2{AtqG z{z0s+%W`^hY~Hyw$`KGUvDinajJnj%T8vO-I~s(iJ>$YRxr`RAG#I{1Ocl@GFb|J+ zXdlId@s83o+gT0y+NVy5krLDA%WnVoz*bK;G3A(;S+2O zIh@GgGsS?-wBuGM>IL6MN>fZvTk*zkZb!liepitY6LJ|00ZyiE6Kiy~2qyao^NYVH z`#_J}mwvBJB*B)mkM^1tK{b>3fI35mQNa|`GRk%qcg)|M-vgV|3_Z>2 zlH(+Nn0*jeU=dTUao?du?<^)$OwHFLIZg}myc6ofwomK9T2~{=^A_{QBx46om{00 z_r&+&D#UAlqPh$tq8YwYp14@^!tjI$avWm9yw4*GRjMb&gi!HnX5L_2%us36OB!NE zW|XTzL=H|dhp)baCx~-ehiS?awD|#E9?8JQDa-FEM%69|7^%^MZmW-5@s4Xg8>lK0j-x?@Qvwpbs2vf+lOQ}@8t`P1635XL26oiy zQ(KkB6^ktq(`vt5V}wt7F~@3AG_-YnQA{WW5>%w5VL|7YC(^EQ3k;G@dYVdjdLqJe zv1vzkaw?cfL)*o5N&*X4Q4QHLEP^JUw2n5X#1kcQd6L9i>sh8z=q$D35Xp$sKb*> z_#0FK`|_j!!9>YhmDzVT;;IJ3;0>@*m&}#Lv0XfOc$_i;L4{Bd^+*>(vxX{s(e9nG=8RWO|KR$VfmK$)DfJRz`2N@`JlJ6d8xRn}!( z-!xP%BdW_1&v--YJTi!berY|;#dS$dQevkhG(f!uHr~OM*x{3GPbrw~NgRxcI_Lz% zAdV2vm{=2_7gtQYxHZiTBZvpH^&cFu2&#=51}m_LC&wD9Xz0bU!byQm;tK2p1oS}D zt*KxmwkobriF(aQiB%^(urb?ff^T zi8xu4c}V0oYp00|Re79P!q8*(7T7$zKJT(pjDv9#zzy&{ae|S2B-0Fir$U7%q#>>< zig(#g2bp7O3}mMOftUz#JE9SD%B8Jc0fQgqs=e1d4pfjGkW)_fL6-E03}_aRr5f*G zXgU;$i76?%D;Z;KtGYxR48|KW4(}6(UPsFl&R=|@q|r(6n|Z%CU2b(8o~DEAbxL^` z;%NWY1g2Oc%FrGZRv6rmmLV~Ljfn#oPI_dB#qVp4&KG398jOkg%A6h%=Uj!~wkI%fNt3bd)5Vr^|kb`S#yND13|?|X?WiZ}y zM9WUxT~o~EW7bZTl-@|@Ck0j-WE(NmgWrYN)F$5Ggus?Io&cY?d7(Y|1TpZ5CCnAt zJ>G#>`1F*RYyNDyGgRW;wG=>{fdxL=eyj*)Oc+ieAbVtqwS+0Z^Elvy_Gfb}VyZZ{ z7F@9oOIv}B;}F;a8~9e!jd;tGO0kLgP~4oW@Eh9!O{KVK#>Hkt+j(6+C@Dq@hvqc0 zv_~~CpAaX?wcta!QfcIplT(-DkwZJ*lb~IE!r|+uk*Uig#9~_)$py9qvc%wI5XUM& zkhTU^#H!+m_a*JWvLpVATQtGOcEtq0IXp#z-_(3*Bc{G%!s9AF`+S6IT*Wa`6n29c zBXp9WUWSFqY|g}*r5&NtOClWHuThRu-ivJuQy=A13=y`qb&k(N)Cj5;4dI2@Dor@iASOn}wjD>* z%W=RZJ{C016E&Cu1W7AxI$&Wi`_A|%1KcrkIUX7JG%z?}KW)d@GQsAyN&Z6BIy}TN z4zCER^~BPPEDs0uNRSUb5)+zt`5lkcjze8>8X0#f(f~*ZdGSdsk7OGoe8Y&zm}A*P z#OsqeItSacJfi*4V9FE41S*JWMp-V~T|9rw6vqK4;F}@GFc|n&rQr!_sKdu8wTuQN z#%xd~$>)?JlX*`A5K9bQ)p4c~Zesw#9AxF5sM0!YuswcLuCXFx+&WZtGO&SfA*i$w z!92650!BoIY4U-e2FIlX>J#EQTGs zBLsIS%Nn#7`=Xs6luVMS8pM2^A0Ov@ma)wsE@mIa#`)E}7Tz-XJQC0{h!)LaB*sng zAYoYtMXXP~gpnC?wDS_fc8mLmWqFE8Q1Ma(QR_zmxrLm(5pqUnl5a*#Jm36qcrbyH zn2P4h>qx#{AK^6gVW9%fDF*yyo512AX^6phUkr`jb;(&YsUUg1S4n@)js5*9b<&B+(4_n7ctSqIZ6{x(r>CtNKA18 zLY`n)x3yWwU|I8UFwHD`Vp4M@ZEe~Pa$}UGVj00b-jR9YL_79^C^28Tx^sKZGzmlO zpiSPY#6zscLGxbxmb|Rw>%O-}%NbkB$5u#*i6BXwnYL>xRR6~NiWUcD2S8X5Tcbuy z5CfeKTKE)kR273!)wg2HQxk8vJ|+o?Ie!uvFJngD5G&-t2AY8C@Z^oMk4NH3MF1g!uL`{8;mjnK!>-pb|TbIEUMJt%j+EY$ec7jdy>N$ykiqAq|<1i18b`lt8A+VMPQAA84OvC0Njh<>^zM~}TIPpmJ5n2G9vEq#d z+6&r1MR^;ZAg0mfyhYM#F1H9`r!G_Zp)(ElumJDY&Gs~cc6A0bqU=-zL!6xf&YT_1 z9Tb}m2T4s9j9z}PzKuACHaxKjYH}TMLR`nGV$2OsjbSPks+TJ|s$|}BDJ%=fdb3cT z;2@lluT^knhzIe65l*=ur(DECGqO=h6;kh!ZR=HH#u=u{L!}roJt|NIPKpA@emTXx zEz-9m#j5WDL>yj#Kow6a4OwZ_j*hrCB~u(EF>9VsF((6L#OB}>W5fzDhON=)2y78Y ziMi)9%hX7n+avKmGZ_7^l199l;t|K1|4>GN4_S_K)eKspDlriR_9j-m9!}w zPTRzrbaHs+JN}fBfRC6B*yBujg3|?LjZaIgO-WKOp(=4?UMZ%LGi;U^Rq8SjtBcwa zi@yUWT;BaS$=}dAAunxg*RaLSW*SNOz=I@>j$OyeQ$lzcF;e1`awb+#{giQ;;)t3m z+9S~(6PwvCAj4Ht8{1rXViZ=FDkD6P>pz|VK+31Y9EYz&Ote5TaZ(s*u$@g95qvm# zOT(CAb-{2WIwhWPc%^d`Ng_7WVA`n48ENZ{U!4*$_|7V}P=((bGZ~zicFZaFk7@_?g>fLDG61>pi)fj0DCiXGX`^*?v)lm<_0Jp>`9}I!r!XZ6>l5_ zZ-H;9*FvSkBgPF&Lxc*y;YMyGGimY2yfS%l8&2rlGq91gyrN>q9+~@PoR)b@Lp1@d zv@4fUB!jCuvk^f^3B%1npg90x+L2;uQ>*4+7GUuArby@wN$Zw063I7^c}lp~Jf0-8 z87UEygeKP?!yqxypO{RoxYKqrTTesogJ_HlP!$uj;S-F2;s&32cy2&5f{`?JDH@FR zop2C_;5Z$Fnv_5+z2AzP2*y7qLHIV+z;G6w#Ct=+r|NS0P55w~_dXh88%}6m9Ebkg zdqa7m`^UlwMpQfSfVg^b)t#}vg$G@noh0tibB;|^WzB=ZYUo6jKhzE*FBMzjqyl1s zDwo9)$H1xr#5?>pG3MDqfJ;GTjkk3rMm%RWi~tBC$XOWJYa|M>nl5k^&Hlx&^EWbZKBRtmzMeJZZ?zkof%5-|PH9Q|h zoI2JmVJ1T4i;<|ci<+!tI6Tp&Ze6kvlb@(e#>zPk1C#OuqMf$G@0`Q>ysk$=Vp^rH zh@*||_+&V6n?oq7%mqR0B-zDOJ-s_(a@qXmW(;QO^nO!IC^K+yU#~RqNUENlG33jg zqGG~Xh&ML})%H3(Ne;ge^Af?{u4e=_T*&+gEJhR-y<5;sZDOh?KRL@&3qW|nDJd$3 z0)rdRqdQ=P`XfPh%J`@$hu1_HfY@K(jpN9+xODQ52m(7$o@7&;|3ZtX8l)BF?eAUU z9omT1T!*%aLpF`58!=fia79-uu*KY`6zhV%03mU3#E!EFZyBl~rZVNmj7daQAK4WD zV5BZ^>gVG%dK`2ZA>K5kc$Y(hs&;e>#K*V=GPP~Q-~^&M5~Hm(%+wz5MCc{rjY-ua zA0|SoL2;Tf(K`{5czhn)#5gUQPEBSF0`7E5c2 z*l4RLqw}b74`%YddH33)3)LM&oD;SbDahkxHR&_;9|4i6PT zO0xYg<*!3v%n3f>Hg$PCk^slkU8Nb#LDgZE*Xq3 zsZ-wYC2{@HmsGIv>EnPzGx!z11Qcj|S~D~cl@y=`A1O*-&zDpyF)uO)c{KFy^DBIb z$b;5s7n)5r*!Yq!Q7bW{MCq>>DwSX9ONx9<3EOjVsITxPGC~2x#1O$Z55Mx4@=~L5 zw?`g>U+qhbI&qWPVgrL;`Nhp||8*F&i*Zw87${0Y7pY@f#lwI(cZJ5Kq%9m(D z0qh8SkH%O25-b{&zv07NTE6d>#BA_kTz)k@80o3ZnNDKfVB^=mL^MP=8USK;G0bx= zvK;lrH0$5>Z9ePkcOE!#E*b|@dJmM&6_;gT!=1s8oRgC1OWWoCCCWj=Sj_jEFA+l? z$4Ey{>CYOgX_CU1w0^M2f87ShXLH{7$Y0rcePe9Sj?eYhFL8;{@Y17^-*wZM7y?oa(IZzIozPN2~Xqk+F`54SL`TCu8p7SyuQnijZrDwwT`}|d_fM} z^ib=$e5ZhP&P3nyg_<`?j|Y3Fqfo!X;VaeDF^BJz)~x{o4=%nn0*-!dwnH~?zx(A zZSPmJul`-}ew)%eNwDgbybtKLJkbj+Z|999bHdAhxg$zFg{ovJq)+HIuqpDifUodf zOqDSN68S4WZZ%f~Jd4P)UB(C6ihn61A4R14x?|sk8*yz%PUARS^)G=O`WNq4uz6u$ z%4fv{OEfM|J&W(clf4;KzJd>l;ik-Ug3Y%jDsyM-AO~19zU3%}*%0-Kp#CL1Vu@Hg1Yl0 zg>#*pMQ0I#-d-s}sXUhm(&^tSrZq>gblbCI$6Pjz z@JKC{II6<8#Ka-qas*n2nA<0C4y3sD6vH42+0qU!4Ssm57*z%l{O+FU!W(PqF&Q@7 z8NvQYk`!Iv-t=q9I>jvwI(+QW1E=fok%k>x!XA^UeL`H!>JBQG@shsBAzwXka>ww*|4LA2BKM27@Jz_P7oowsqy^iM-U7`+bft zgZShlrxAUuVrvAh!uFAPE&j)GNMueb9p7PF3ln_;eA%Y|$F@w*Yp5FH&L^oIFKRtI zDF(5OIp!b*2(9Ouz4p>nK(mbPrS2d{M&ctYkX9@?O>M&n!)x4a^f3wMg%aZl7$iHf=-Zb#wTX9proTS)BfsBIo0oer z?vb=<1lyo9wz|aRvK|>RQ8nlj_e(sr$E9K7L_;Ck9FY$ql#!dYDOcJ*S2Rkqw0UHT z$$^P6!dK{N{YC9Jsr_Y-gs9<@80pvHRo^EZ1XVGdLDZg01}IW2q%A;1yx&uMZ7i23 z0pu{ewM~jinw2Z3#FO}?T<*!_s#s82b|w`F6P2|0)9!pSG5Als`29}#e%fDlc(wod z+|Wz|wqfLWOQ8A8(tsGS0VxwFs;C{(&dsZ|qjq$!;=ZK~N`ns+7JG!L4Nh2{h3!ig zQ>BeKuKOCDJF4(8=n-v)eTnsXr!s_U!gbXWBW6gGJ-Sls_}wX+snaI!%`J>jpEl-%+fO4Rb+=1*Se>U8hVjqXiSS zu2b3Phiw{qR73f#Mf{0DPlVyaHi>};3C=8h&hkA-( z0dXwAhc?_uJEAVz?I_=G9g9`jahGabHMGf2^Ca(p%sxbrt@8{l$I1I8H$CR~ig!>i z1JnWW8lZGavJ-nBTOMUY=To_W4ThM|xgAIXm6+d1Wmck2x*682t+lU1$~*AUOg{|bW(RjjV{6GdJPV}HW_sEPOS zF4YO|=0~0y`M*I=6chF*;UG)&I!-Q+#P)n}v&RH&Mxyw5SYc2`2o;x)*vh#PN(!Qe z)A`WYLhPvGK5kVNcPbe1j-MdV4>nm~`Pt*ROF7|X6@QzL9H@%BlsajhGCj$cs5TNs z=Gm%frXYrl2`k^V@vnI=n8I+r!5@7+-fz*n_J2nE*DG zh--((O?Ms#aWux`t2lk0awQ;b?zTf!*bNlK9S8WTsn<0b%~6i%`UXold@U{#!T$*`aw9GTD@b;%tNsy|Ve zcmh_#E|Oc#vu^oQ%N6t6r;}89`o!>8W*`nAW+$ zFeY)!nBvT3Y+HCi;bKl1@Hu)U;}*S$4{O;4K@&$TM=#s`Qn?JA9LGD~0Nc(KPgr2G z!)tzzz=V$?ZNCQ8i{_Q<7v!nYC z*B3huo{+TQ697>(BZkORZks^D=cZHkPGYBI+j1Pi-@vvX$KtKJ%ojP`lRQr3Qspz! zkkz1{Jm%!R=7VE3$E}@GCXL#G@HRc|)Fb2Y$J$?qC*$z+d0NIQZXKT8OuS};*=D>W z#Tswh5@s|3Ceyx^%T^cnV!OMl3Cu0%+B)NjMrUSZY_B!#a1e3tJKwy6!N~6SX$OBR zLItX5bw}k2e{UDvnakXNgYTL71RH5+Mg)6>Wz+tZ%lgG$8&v(1;fYX{|CUyt*0bg# zRLoVAzq0^OjJHB;MDT`C8J~Elps=$24xxHCPvF?d&R2fqib=nUbA`?|EuTE%(>m36 z07Pzv(dM=?ehY};!(9qKIY@gyetE(W2W#qrG=4FR#F$4L;?Pe>jh>cbwBu*HFUGI? zNNsKTH|i`6FK9yHHG1Ze*R~PNq$TmT*a^Iw`t%B;uy4<2QSud zj?nEt=MxTZo*<65SUk0UJ)it$ERXdv_sjZs0*06|kqZI`ZASDfXBaezt%v#iNRM>VifJ}=9#e{st zTli)Kh3#}>UdI8*XpazJ4Wj zVo;t?mn46sSU^S_3((Api4cpn274cdB}QALqgNW@ta(*hgXXAt`mWgq-%-WdSFKZO z{;n$am;hux-I;rcr9FVmKJtjafhPO~51MwYQWXjz32YbKEODXRJVNR>3i z*k)QM-GKeL%hN=Rxe$2!Gkw7Lj_-zF^fsA=OB}5%ShB$f? z&^-+|IMK?ysF!v`B3p_jCdDkKC?9jMfJ`;?+mYZy!INV1JAtg{wYo%%wp!HuHwY4% z0&=ubqZv>oPjpFJzX~ewEg(~r7+EnvTb@9fm|va#(F^G+w5`nd(39)g@;P8i)h5=+wE>fP49HRyFz#VXTA~C~)8d~G394)w9clJS? zFI!qk37Ro1XfUv(Ax0a+YE;V;pvg@)-Y$D@K+I@C+F=?q0yHDu;M>~K7%ezC?P1mY z7%gZF*y&>8oussqrqKf1B#o--;>ab{U}->G*@42S@0DU9mh1?w8?mxO?TFde;XzRB z*=Y5i2B4XH2#(XV^_h4qP-zyE>#?=ql-BBik35N1XE8yXIH4Mhlq5!*jOim0(?N-$ zNA>kvK@eQg}*+6_ANBBlNIo47PkkRH|jGYEe{a_=ohYgk|!Z+G9U3hREM`D;w z+j&1cV)0n+S}zE$vEJ3=hA6CYyn_MiBUh4Eq4ju4BsrjQ0r#MlOxT8B;epsoEN zh114F0h!M!5kZVBR7re2YTl|CF{1@kpw`p0sWecmDa=9zzR~9JogomT9fP0e5_~iA zQ}Y~j`7PLA3xj~o8zZnsTWy5Pz&s_0#cvX+-?OnoC48d|G&#RHh!}0+-3bqT=j8*? znkR_S764l>2KG_&C8_kq;hzwF|;p_4T8TVSJ&a(M7&@kUJ3&1zVF3xjB@MZq-F z6N#fmD<&&~h}F>X4nSDE5u;5^`t%sTZHZjcqJ2IAnoxnJkoBrSXb76YHrKa~LA2r6 zZW|0j9JFm1!aPBYb`HZUu-FEg!uNXnmhj0oO7blYnmDpCs*qPq0-E$9a@qM?fB=KU z+dKh-0D{cpOfw=tK(KA%5C+kv{ZW@I-Vz7cz=>UHg~5O(fi)_S7;WOjDVq^_!r@y( zM_ZoIj_`XqIG~APnxFwWpsA8tpHtFo5A{ap<}T&cfH?X*4w`L^7CbU1(+*@D#1r-1 z6>ngVHkrqW(@gPG0XBaTIzBlf@|jv;-)S3(EtJAySCVeO55UF*9qERAG8573_)w9xXm_*jj=_e z+)A489bCmDck7fy5I)gyfc^3$#cDbl#HNFY8FDx!uG>7Qm|&ad9mNDsC^NES4ib~l zCYLsrV?;a{q3RKY2lYt!o51F8DbLGz`l9Bu_+C}daG`}rBi|q~Il^pe2uBXb44V8kM* zY$`eQQQe zXUy-&yy~(s_{cm}kL}eoBqnK$B8{y^=7ChZ9OmK4Jhfwkq8!Z519db{29P^^BE>ij z6V@-ePnsEn3q7#KM5iRb{AspxaOsm(o|3>q1=bq#lxi^~&5Q)TIr)YmGR3qQ9kiu5 zh+Rorl}3tnAEj1>iK(rapiM8?9$rlYqyfWa8|}QKQ$Cx!K;Gz?7@D@I8rfDXqUP{q zc{!-0!E6wot{T%pL6iPU=5-fpVv3uykm9Xa;NG@fWjd`3b5^qm4v+j=<(JmW99%@ zdrMltK04P15SmbklX%JFEeFX#@5Q+gBJJ(|pRk8D#B2*yc}h;+Yd%xVBl%;@mSWe; z^PC*l4JZ758pt$eALo<&?VRu~#cijIUpAmhYcbKUCZJ#931Dm5B5FE-(7F7MUvh(k zM9?Y?Bk}~Wk;`U8y%-Xdk7-1ou;MszXQc034DBI?tAfI=MoFbuH%#@=S%55$t0?ESDaB%+AkzZ!5Xbud*%_N-I`ZwLrU@vnza=3BQI#{ z{yVE7wMQ@Jk)w(w=A(j8FAauJ*>MnGN9_=;K^&>A8%(6QN@|GFrr>#`;UxCXy4S6K znc7@D5d&HWGCPsHkgbtl+KADnLNrvbG_d?Yo63eyEwG3~n>T?TL6#q(O*#+eAY!yN zmd-1d9vORQ#30sx zq}d*~Xb8xL9M~T1g9y)w16rpE(7Y%T%MRjb0`#=K<&wjbOYp7PZ$%I>xzyclV_TWm zs6N|~vJ329Y>UXM43ev2=?!Y)|vTFqC3d41c4|zJ>_4N2=AapVvUMQVf5i ztqEritnwsiox@Xrp39(hiUeA}G}}q*sL}_F+2C(zUBmYr&eFDMJ^bEVysu&}2MKnD zC|cKOVW>)47j|Y9%XYm^)MC8#29YVyBol`3q;)E-6E$MAkOJ8f87B!#D{HwytjBKt#it? zvQem#)*%zBs%h)qKpQ3AhLfOmi3zL$B5yD-1bH*~%2T+W5(npmoGD zZ;uRG7qe+*T}caC7h;uV7ptKYKK^tuh~+Fm#TT5u?I{vY)E_B6;gmRI802Rb;^Ww2AFCb2`L2oXYT3!3Z~zc^(jJ)$hhUl& zll%b!u+s~$Mt+#a1B*C*tdO2|WuC;yPc?uypL%2D=Xvm;AE$bQMt;jBVme8T&OUL_ z1mcRNw=i}}#L;&EgtHI50quaMPrdO|?!=qqJD<=SqNlN0sLQp$MiYpwh1SbPGcPkw5rb_sapz!S;O42I|4~V2B~6p~pzHA2gFh4b31XEL9{! z49x&nn#u4a#iAK_00fzB2oG(wzsa$wt(8smwCaFEjJ9gEaTRP&`;WCspVssB3G`T= zC_At{+ObD=QbNpRN+)6PGctwk(FT_a`HDAUw4nz=W!kWPtlv1OQvqV;SPGuzW!1pp z(Wa9qEXy|HSicFHmPIu6 zk2r>5da-w@xTlE+DQ-h-+|$G{*s&s^=|)deX*O+jKr)6Ab1?5|fhsQ&#L->(27hGr zVh+Ez!{BfRbjmjd380}aDT9J(P8-_*7vx+4~8yR02Vv#A##wl}P9Z4JFIHj#SQ>-=` zm(;@G5JSDe$oo+Z64RwJJ6rx9_XhZ696q(x(8Ea8O&XlS zvI*!8G#|N|0MMj%EU?)G;=1hAn@vEQj5a-H6QHElang1!rf7@~wruFJ#&RmihA!%9 zV2dUIafoAAF7<1$;#~%t1?Sjk=wj)kCP3y%S|4xoR;Nw$Y`XG0Zgo-x_Qq_mJvb4# z=c};PR_%a6{5EET?a|iz(#GG2(U#%XNnrbEFye1}Bx3xgaNs=44o!doO7zf32{8?w zTyk$PPhfkr;csByZ0EQ|0eZ`T?PEAQqIC@m^dgweJb~@eW?0ZcXQk=Y4BA8$R2dJ# z_Hjv-Ge*6L^W&3YS+%}P_FI?Y>zfm!Qv`` z4O(Yl1@qXpR)?4&=LAt}7=|90!puR~K59qDvA{y>oRT7;_1Gy9M+7yq+Hs)uyj(-n z7FfiL7Hkvgjb=nNJ6=HfWQrJVYLyAkpb4$V5Fa(TLWMZTL}If17OkTV8nok?+7hEp zJ6fk4M9nF68=Eb9h&d%G2Hzt)NxjNEw#m+LaEQ^SaDd8)Ns5I*p<&YF5ThLhSQM6G z#amIGgZ2=kO%B%OBgs_prZ-^TG7qiCj|8CY@PVk~2MAzIFF?d->z>jEKlmGMKtdW; z1og6o6$0>KnzPLBV~H-xY@;0f9oJ?0ywAvp8C!rW=8X#AZ?p+4gl~^T9K#vp=BI?# z(WWQ~Vl$$Vh}3Ahn3)%U<2O^7#-G3V_22y7cYg0X`oAx}ci0WaW(UHdIDlake&^eA zz%u%Tv150`Lc&K6#JTC|G!(yS1bB%PtjZyBu8wgf@Fs!yTJT~?v$ID+O=R zXyXQev3$VqXls;j;}~MJmAWQ|-{TSsk$dAroR?TKwQ5U5&P7u-(S`}caV^!-*T4vo z$Fsn5JZkP@x~eR8!_6Qv`pj zWuR@I1b)AjiUaZG^f+~x`VjdmPoBSstYhLP=&IiKee(hi^VISr<_=$Ow{fcl1Y zoS4rk68?CliBF?n_K^rNGc^1cH6`2A^yKfV(#s*gj}o4w~(30%&ubCe9`x7BdG4 zRWt#TRuRl;U4)mn5Ua~v(je|_G?z4pbN091K)E6V$QG(-0$mXbvI{ZGGg+#ISvipnYS4I7Uz{Pc3P%J=ze* z8s+jPpn)|`=^YTZ4{bWP6E)({X2<6^f$h;I-s-z6JBZOnOv|t|!1kf7Lbenm4sGaa z*Nn&$4VrUIl;1Rg(AG#~r_7&%53uhZt=}uys$9 z7z#sM)6;xOI>czl#irVSigW49DXY&9G1`nRi#Sp&PiPE+VPbHI(GEtgQwlyDK0nmY zHy8#H$AVJ@VSs?vV;xH8u9&0|5G%NnVgm%Ujy8$Zy=hegVj4OFE1@z9<90;*CxXP= zGEb;L6%pJ{>q0Ep;qYbzwnrOP0&6&d*3s4)bEa5+BSssdf=}%5(0Z)?bV;?tBgSvy z#3Ri?*dA>TuVwu@CE}<{I*HRGv>tpyF1u}2vB2FBoBt*W6J;N7VS8?jptxVfp>=MI zgpcC3m>`bZC?in~B04;@9v5J}O0eu8j@u}F;+1w8Kca|?PGYB|3B+yGuC%g^nENGN zaoaMeVohP3$R0^=KpV;=Y34Uj|-RbiQY>zg2*on{^{R z#AuT-4F+yRo-oQBZF10#Io9hkZUTtW-iWyub3{thT1MOi@Qz%1(?uM&XldIi<0hb) zjd)wq;wFF?^LqbcfZ74}-lF3s zppv34m*064K+KVsU+Bu(G>JFSqOX}66#3QMl z5vn1^Ht^ZVSFmk7LY{P8g4u7OP0Vil%r3Kp~CYR-R^0(#_sE4Fk zyo2pECNZ{jG1}QiE%U+lP(4OG#liMGPqkx73${nB@-ZW@eeenMU^TBKYViqv^T&+9 z_OacfzMYW~$94<&RJ_xOc43qmPi>EcPsBd>Z7l<~r#IvPwcx{EUwsE4_jZIBZQLM1 zR@|^X+M3|oBQ9wcG8Otwd?I$30zY#;RK)sSpYuytd0ZLvL3rRFWg$@a0J z-&+Ke?HLweO-pgIJsCS{0@$W8(lzWj%=WN7h}HPBJc+#z9DCJUbh15_MjFiT*!zg6 zsbcda*&f&fEVG?#AN=jZLa@DtVZve#2HR`u>jfBWFTWu?OGB{z5E~$Z?R6ZY)y0fk zWJh^hhYz+_VVtQTh!ARyRYq0&tNTBqq?q-m=cN8fR1(i@^>s2v&DvI&qes<;`^c#Gk!ZGGGw zobU}+mof6g(tO3q6fr~{f%T0@H35NbrC1-%K^s)j1PoQV3yWKw&uoYxJO&Xc#ZZ+^ zK>gX_GnxP-*o!-x0A)tBnh`Yt^^3+n*#tCB&!majvI!6;dW@B8Hi3vq;Y8Ze1h7Cg zTv-~T2`HCpYZLZp6BBwU^Pr7Hx(V<)77HZJ$~BsR($H^puzkFay&$#*AH=+lg=ToF z#T&MV!k`BrZmfwI!sF!7mH7?ZqfG%4asvcnv?)L$Xpe;LDH3r^8~hMQ0Rk1@TEO;E zt{lfbL5wz(Ne46sX#!|N58{p$LBvsj>K5@9mHtUxwcy(O?YbZ?UeKe zw8?zOAZ(AekhZZ+NzrjRzZXgDeKgG|`OELz`^0GBfPn3RW>7&5mGT=g^GWO>{NfJV zqYZ12G^;ekXp?!qVzB4sE%!@pqT9ql698;HvS0QP15M6Comjl-4QOlXYcm95wCMo4 z!L3u$8-Qlu+u?&4XwtcGaM%_-=ExtOl#wCMq^&_D#Y#iIt{SHtVzlF)R(v9Hu)Pw= zH;e)t;z+TOZ=D3L!nPV(>m-QLrWd2#jA*UGNTjJK51+OZ5W3RZDGyq!sG%__S*5}D z@u6qpUE0b#F(Jj!BPllGKun6oq-`vR?a|g1qh$v%+N6fkG(hBMcJ%74RWYGrOoTQ2 zBZKY5nqb+eAlP0tkKg8Cu)UhDrlJLiWP3^qXAH5)_VgV!lck+(AC=~_PmKIJxyF0f z)>?(b6YnM_COi-7^~p5Y9@wi$4Bz=tooKq=GJ@?@4aB4|au$i0-5!~257;1TJAAS| ztO2U*@RRLzEm_AYwx`uO6(rk7N%<+0?R6n(eJ9vnV57LLE`#mWiwU_MKG|N~rSVC! zJy9hSmic6R(jY!veka?*Yz$ClJK3J>z~4<I4LQbC1Ek!@ON|)t%EGEh@${i^LCv4sE+QlbI3`e7RPG+1Oa6lh8T{eyO7Iq z$`p(3fz*QL5Tgx+t%+LVWP2zKd=H!qG1`Q0jTR{$?Vp>#2-Ogy4U;N}%R#s*dIR%G zF>-2a5CO#$#DGtV#rEU?*DYzu_N1Lo(!``eT~Ygt1s6CSK-h)uSS za&`7ewkJ-y)h^q~_MAnTXkzB?=namOWP3_#g-Ts2*tu&Gu;fz?y7N#`-cN*`ASKoVPrI*5f7sLlg$}NW_d=qT|L8$@b)+ z4`<2t!xoHP%eF53p@$9gd|G)YI2-a<&(zH+sz3 z9t;v#JABOcY64V)87a1Bi1(I}Y_H3Fvt4XYV0VV^WPA0Z2F+x9AVqczC&~60#u*bA z+k>iu^_^sUaeBjdvAqVrrY*LQ?DzmxY|mKkfkhm>LABG2=v^I2BPN#O$@ZMm0t-XJ z-*M;mDa_d38KT&pc<(Lq#rE)t-(8FCiFd(AJP6^zC!+c}CZ>2SN5QgDFNBA-&@jQ4 z+T#V3rsqV}5XWYLco&699Lxs3={uFnAx4|ZW|VEc0Z$-my_y*~No}<{0t*3+zz%V~ zlta52(G^Q1*sl2;J}ylX8;~O=*^WHk96l~&Ty}kh5HX?P!M9@&wnrOUSH;$^cos+S z1vo-AGGiz)QQ=09GM21qAdZEn_KAioh#hV9mj-3TasTHl7fn021@w(>d%Tw8k%mI} zK33fnRSf`g5OL(*UYDm>`2i-qsAvOZ6B1*rHgLlC@ghP=ZY_qGWRjf;lkcN<`(%}T zPZs!!8A-k;$#h4{X7atbw9R43_jzqH2b1p=r`CCr?}-z6vxby>Pm-Y^;~$8f+|%q< zQ7Kf2i6BE5Vj}~Hop|#+d^Eoiqn*IFQ$p;q`BCQWk%-AWhM`U~0-J?^+(drENV$$siB91v*3ra?S!pC~P<6a^#{6NNa){BUNEUIV zSc`F>x$eTOAa=Nl!|yD`LF=#vY49ozT31Q+6bG%tnuwiGlGf?x%m8+r zq;<`!Gih>=c^zm{4a)K=DZ~j)7{aI^X`Sa$BxXBl9q;h5H37;M*z>1QrAG#>QzRVJ z86s$1mCYlYZBZChK)fwf@Hc+L8u)FGL>%Rc`I=DlNccO7n-upI59O-nZn;_Lp?C0`HdKDLWS6j#2Akly!nM9#(1C!?41f?j7OCM^jyXmk63eo z*^V(@MX6USE0;0GBgVFO?pWFg$S|^HKF0W@0w=r};|Vs$sXeFyi#R^IrU|?;a(>WF z7&O*|?PHBj)Agjm-`u0M$Y~P?;`pE&#uRX$w3A7$N zRz@QC8~%=sEJd<6zY*s~7Hta^{2d!vI!Pb;^8*J&%ZVda^r|#MZbqQ>*vN`cESHFZ zecX7w(%@6H)w$aJ2r=5Aig?>8q4g-hO&djwHf%>Om$u&1qOFcQaUyyQ!b4l{^N02j z6BCT^)X}+9teC)T`ii#<#UxT(flclFxGK4;s|}MXZo4{76hB*3sG}wi2*gmHMtwowRW(Wq6o#C69Y~hXr5?WAOJSM zX#$iK_$Ct;6WE?|B@JqV>y(J2T**!iehL+Ak2cWk$3Ywg2vj`t^;_)#nT zAKHz2^RmY&cjJ^Yl5;GTz3x&ehB(w1h_`i;m}38cs$jM1X@R1)6=}zq!GQ|BEPD^RXfl++A$1QgGp_XDGVV5Eo}}@xdKgU z$BZD3#o=bI;_ztW9o1m0i8wA~nths)ypS;u`k)Q1a}CnMudxsO9rVa?ywxENdSuA) zQ^MatkBo9VqesL+k5pRk4I()}^6!sr&_L;;&{KT8F}DUcE&lj_Hw+=*qGKt)mUctQ~98 zIus`Ar2wtzLhER2dfGga;!Z~H94k-gMO?-0k+415FfxBE#n3w10eio}AVxc;$9>b5 zCsZHtwp_+02Qkk06b66C)le_mtT!Nr3dHHnLHHZ(m^F*S6cfZ~3*3!N;qSOe0=6Qh z)YjE7a_Ja^zq6#ED~n0cIui%9-nCUyZ#Payi6k$KbagflaYIiN52xgx2X&IZ+$F5wnt{aQZTXm_*+p z4Ht$%#As8LtJMu!kG`XVXxbWB0pRjm+A+k(nA9dE#PkL--@!(x=p-5-W~kDL`VI|7 z3$8_YImE|y%cp`I;-jRTlyZnCzw~*7W)AU8@I18<^(YegxE>ipJmCW;UVt&g>v9QH zns)9_;8UO3Vu%OGI=>w!hIrt^RN(zGhj==P%4d0!L%iBwo4<32=Xpf1vpq$^DKTP? zgw`oQmD#*VD&B~5EY~J$JrY`vJ%r{#J7o^>V347*iF1g@yc0(a@jTL7bo^>+;bc{V zJjo#*r{((cB!_sA2A>!PbBKo_I*@aS2R@W*GeU8TzcnekZQalzZ){tu=?x%uF|u+AtnOwC?~#$7(NMTR-YeYj-z>h9>>K@N(K96B>Mbr zz-NeYka&~g>O1KPV%<|tim9Dq&1ppKA08Y@8{)WShz+Wfq;14Gwp4GJVjfBDbaA9X zP#J+8wh@zJg4iF480xWAQ`(NHK=imZqCsTcMyG8JIW)oUck~_oq(Bc9X&^he-u*_L zwvV(42r#UzTsnBI0Sd5H70(C)Zispl@0i&P$V*%NHF8}Hc1%99>g z#9DA{Jqa<7EJhxWOzK_Z?GV%c$qo_hp$akStPAkcrr;_2nr1RoXzKzv8F^`gZ_=>U zCdFjF-XIL^*lwY{c_d=ofUA3U5Cali?=gvGowjm=IF@aQgLDph9O9@3)lM%!jw2p` zeUrb}aX2FUy*-XPAk}arCS$Nc4=ndf&4`oMhi$~cY}JdG81J~mbWhNZd)ltUCvKyc z;H{Sw+K`E|+>V2oU~5v`ig6mQ>PG1EYOPx%q=8bP=DQK?<_sXaT~MuFz)J2Ue{P&nye%iCz@ zSZ2+j0uEnoR7MapYX%^^c2Zj;IImbsJ2LOoi+03>UVJQu3V@*nHnp>-9f<)OgSMqO zwW$!2WHe!una~S4gBO}*hO(J-x%!fEX83qPxI7@AbW9qHZd5I}A@K(o}MtI&D z%a^t;J9C;@;v~}}BZ4a-A9Xox#~eGUz{K8QrWksJX|_hPE@uIjHZdXIM==p)GW%3X zp&ffR3Z4kg6i;#7FE0yKX*({d(E22$Db_@}3ed#VV9kRgRB?BexQ8k(slcZLLW4Ho zwk}n+K^2|b{mu{k#`IXD^L!*g)|RNCSw@HneowX!F{pxi(C+X-%rJ;29zigeS6ZM_ ztXZ~EWki|9ZDJwT(hz>DF{o=aoDdVD3N*KViv-Er)(B$SQBCXf@Zf~$`RI|V9gb5x zScj+mQ)zy9Zj8i)2(H&`vYo$?1M#}%FR}95YCg4LQovSCU>bo;I%4yYSb&kOxYGzD zfoAO$s$5B`U#vj{+gws}XUbEJW>PGcZgm+qT{Ru!!88)9Yg&fGKDAZZ4agxD58}F& zYl>sS+ne7d)&;@RP-3ch_TutHg=0g`6yvwhxnhD5ZW(lLl4j6MF{3k>IMT)fG<&2? z4peMg+YAsL_L-e{qyxFcB<;{L52`3Y>f0F^2jk5i;yKM!F4c4?&2278B#gXqkj&$t zzS8_=nZb|)*o@gC-qe#0Z(vKY_6NtPLgsT-IjEB2sh0UTJZBM3Eb}F1sB}_FF`Wxi zYTASW^E21`xAd8+5sPi9B&!95dqvZSj%OJ>GN|W3J0|u4Gem#OYOMW z9NX4abgr62c&QEbfLOzKh{1`5Gs`7nph*D|TPwg6Q-JWP6(B1cw0R`CG*qP+q5?i! zZ758|ZLkk*o(CYjlcZR4#R=`0**ur2jVCt5bNCeF2K0FJNE}rES_K%|6p7l})^EI{ z8oZ67O}P?mD5cv*OsGJ<#XGe*4iPkHW_Iv|Ol;$=+Tl1|8`x9xVA&kZ>|lgk8vCS} z!xOUrO)ImW1( z^IzRf-}avCxu>7?)YDI`v1-<+`s%A1WBzOH8o^lY(U81#2brtl7<9fb5?0&lO42YA zukhr-rcP2K-gUIdM^fC}L+m5SgoEF8fXdZ?jk+w1oNC&3ADzP!@eQArz;ZtbL*zYM z$t4$o>@udXng-O|6$sZxVX3B#(51>QQ!Saakw4W$Rc98yQO7Bordwejt3j2WyHG)> ziK-t4DL_Wetp!W_%$8~Zh$nrQjG&AbWVzc$jS+13?VyIJuv5T>ZPc7y$>qVe6|#%B ztJyqt**70*i~FFa9rXz>9tpnPPTzdIQlhvo7ii{cIyVsC`%MJd&UrU-HLif|8ZA4h z-TD5JahahrrAT-rI7tV4Oya6ZPx>RdvZ4J0@opsFxMQcsBwnri!H1qS?jfS@j88S$ zVDJPrw1)W}lTfpr!)kJH9l7kGii<$s7x$QO4*~U1m;2SxFB&~YOhlSPUJGp8%}}m& z3X9b&wMDmbwMcNIpGI?+EM>g!4zf$Q3U!Y+YMdsp-8O1c(`QX=$A>CN(9RRotj2cF z4i`M(_j!*AYSO^|yCu~b^Bfe#xk41wCW`HV!EU$EcQ;YlI9O&w!--=!tRu)tlx0)(qk zvll#RF;Pv%=(`6sV8eXdj;qO-6K;)3s)1&y%k7assv&l&uXudj8IeqA^^4hZHT6VH z4%nWtrs?*0%ijQk8KV1*I@*6B4j+jc9;8lMOauf;!|z2itWGsR?w+WIzX@!A zBtty9M!h~V)D%Ri;!Ta;=d~JCGtC6p3e8Nl%+`|@vk%eQ*^a@_jrKI42HfPb!v}Sw zp^S1qlA8rqp8y1E;@xYFjK$nnAnt%Wbu7 zr1rE;4PvRw_Q?79!CjGXoFG)7YPBPckOrQI>kZ$kL2MgAx7955HB2j4Y!g_9oP&{o z&u%rgi7JeI@C2QA4$U^JW3(vat)7rHW_w)kMo`BLQCeND7FA@YS3{iY@OxJcr~!l| z(L6y-1Sz(C6{Dt#OFP;g8SQAtJ{Tb;Z5U>?VDpI43NT-`Ks}VyRwRBNf=^@7FCh-9 zVXMojhSr(C$27C485Y>Q2aViLRogGOT`o1yq{nR3yVTgGAi5{m_7Y;YjI|mPq>8(P zF}AS(k;}Q-4k&l*95fB!dqdS)%@z;ai5F*{qPyRyNdr`HP|Gnh#cA6Q+)*JswfXHQ z0@2}Pi=b*S4;!=yqNdUctxwyiu{|)j)E;(ryVQtFcPUmKBj~94X@t=kOpKGjQo}K; z7jJ5cg!T{N_3fYrY}EXQ@3k5L+Nf%F{3tQD*EwyirT~prU42FegumAGn5$Kz18gmV ze*6^g*nfMZYT0g=G}SL8_EUGiEJ)+7xb-|?vrH@cD1^u)}=>@7R&5;d$jE~D3KdIR-+SRJjd=hAqSU+i?h zVIMZXhK0>GYWxN&y#PaPV0*k#gYUz3P-6jfb_YXEFWzkjwYMbmI%s)9iq{CbspE*n zW!+$V)x3)jK!D{+1*low#;t8NYN&um7O>@N9!XdVG^ZM{l_E)XydkTIO*H}OC50LX z$pHu|MUrY~+c_!K?FfkOVC>RrC}~I|`0WvM6(DLdPp$HuZUl9V7UzAJQI|seu$oXo zrU%^qtz%;IcZG=a*47@_A^JUv#faXGtEmDJPm#SkjrJ)xr{|x3Wq7IFmkGKP%3DC=dY8J&QcAVZI_-|6Q5O}LaqMFS^)GfuT;V){ZWk+?ydt5JX7(@+MvH4Q2d3kKtn#K~$ns9_%))k0OShP)|=mP=yd&e>%T6}^F7I)XPN(K0BA zI*4GKF6B+#E)Ajz+xD+&#F8Sv#H0fv%9Zb2ZlQ8DMM?5oU{%Mp%Fzg93YJUl00>qy znPR(zO11p8OPXrf4otK(s3to+wZ%mKCOg3Jpl0XZ3$)EgZ`chvfmnBm`GzWi4CYTf z5;gnp*>Sb)uQ5bcgCJ?_lWL|AR`*A8%a13}%wapY!Rj7Z-cH#5_T?ICH{Vl?I@)N5 zkH3iKjMx|%2jLSMOrK9ORFo9x?0_J!@Bk1$sKw6SK~~4;TzdnygTMO`OJ)l-gUAk= za4hYJ_Rva7M#gErI*?K0hOX}bfp@f{9pS|p5K^w^hVX<(;>iw!agZdJoo4Wx0wfIw zAft9t>d<60QH2Wj<*FOB%$`eD(|6kaNj3r10C~WNi**3-N~9$&9qJ?hJ&eQ;)s_Pvp1v~R3%r9Gz>KjolCFD5JOEhP*Sr4PBqgE zG&3SN)kKie9DpclTju_eB9=7t%|~~&szw@y5u3n?)iMNO8C5)2vlnk_H?S2oNt>ve zYVRgatfoa_d+#@ZkT?zwvcFdLcZn`bp3A#Xit)Fn(>4jYJjvgbBl$g-tOmuTp%)42#K{4% zaQdNkuuVYlyT=;`L2)^_k6mV^3FHUfJN|9)@eN@@!R~Xfb;`SMDE^g2h~{!nMEr$h zoZk^7YLFtMwy1=fuC_}uz=u&V(pQsvo<~WPee&1#X)%x{s}E`tQC?fH%lP9CL`6>u zQcy#_am!I3i5e)AN_excMvY<6TtbzrX=z-rmpTr0Mtq(e(i8GS&n2)W$+;T8rR5c> zRMU;w=-v}Z%+qU01FMuYje2B)lBy=SWg410VmnP$L=6% z;#7`gX(X7?)dl!rgdCu*Ej`sNg$#NGG2;1m9~0E%03ZA213uJ4?L29l(xGMxkcYYs z=F@MM+NXDEAP2yHzWB-2343Uw#{@Orm2o&%lLi>P7YUxkubdO_+DnF-Xzl!_8cciZ zYOF>b-QldqBx^^aZQDT|5j-#alSZIZ=ZpPn0s`K8E-}I`$z@k_+ewP3t~yWW5r_<*W|gU&d6zoA}2 zMC5?^-0Ow#?etGSr0X z>|lgo_cY{c8e?bVp_VoGn+M<4PLFp?n}n*)K54|g>~k6KY?!tW+i^JIs|PmNhk3oy zI<`?CdNJy_`GIC`VvQtlixtdP~>q#dyB(|`qR?^4WmU}Un>s{u7=u)*$gDP^{)7r*0=@YVMdnael= zL&`fNtY&86kv)Q_1A|AkY}XoNM36*UX$RQHO~hI0uHhhVoLo)DV7C1(rF9{`+q@a0 zcDn7j;$hI<6(H)Mg4!6v6AWJ=K|RHBHw+`6_cWj;CWp<3+UvT`Y^Y7mp4sxQveRSy zQZvwG5UK4y)zNnDA4r+ANU`cVTCYO#8eKoMR`dS)T9W@WW&$}mi2J9mdtK$sF z+oRfGQcZTeL|Ldxwa0*VxK1^F4oWG2NHta5ZS_TKZ9usH=q`?M# zJE-j!`@o{6;F;rl8c<`Hjdp0FCTR>%g$nQlHGb2JJ0MUK6NA`Nj2f2iQ$ZSmX0THz z40YTM`x_-af;2{S%xB#;>R`4V*iZu!zO%P&;Sk%t`Cxlo-{Ax`U?VIY5U69KK0K1Z zI$HD;$E+#X`gY(dl18+8U_>>?6o*E2@g^T+K<3`J^W;M>*irp&4zI+S%oj z)p2~gvX6JhWXC70hBX|28e&mL8{OGv+ycn#au0iV30-vuS@#0u4>j$D>r ztQy!$ne|QJrY6|!J~q{OLa55-x7E;kgXXpxPuiHMI*t>Br5u1aHNm#^%oK0xIH8va zs=gW*Q|&T(Q{#!ZAI->B0deIJD%7+Q9PFV&9kgD+mbOvb7#B`9H4y}C3sqC?$bVQ3 zPN>*bY1?W7LTN7I*wjR|9mP}4Qg&IOxv5!7Cuy7a0|#u8qMhSdU8l#?| zcIvBKm1-)D%$HWTsUhzJV!6h0IH}XjwmL2xN&%|o@(83+I~_iuCOc;bHM@kadWu=i ztO-sQS8cXq@VnF_2<(Mx?NYAhPDwgGra{=#U^_Iq2&9BT&^`^=Cf=nNrzd0wGA-lQ zrjE>?@3)f_R@%|Fnn$+tyy_VIp!L!+QcW%;j_x3r8RVCW?b}J#^m@IaYFzE@HXmxX zbKN1{oDN7sk2kBM0C%tl$bPzGA1c(a&jApqK?B6u>e6b!4FJ)1iJCZh7--u;O(IEJ zr$=&0Q91#%)u`!nAiu{1wKt4)nlav}=~A|yy%8oec62a;Ver-?8288&ce#g1+Ze`~ z^S&KcXK(050w7q*4-7uRyZjYsN3fNhR5OLqGT2UE9p_6w7B{vtR@=M?`3TielQheI z0C_%=MB>Sa_gJmpg{V`_=u8uUW4kA)i6G5nY<{f96JS64PO2kQ zP{ysP=6U6|WvZdf!!CJbT-Hqt&ecGQX!V$|I#_eg$a8f}Gc)r=%_Ap}hnnJM{ywU` zXIgXYTy2wI_)ay|5DYOfIMt96^f;h7)f6BN_MnF91=a@pxtf@qLX~c;gH5gmY&_B- zuNgrN+q1f>nSIC({jxt2b?<;_J0~SF-{BKHC{7M)B3P&(jl|nG=c+Ml4mHe15a*$3 zsBw@2++~NU0KyabZI`H{ijPL(=4_sh(l(PR0OXdaryMu-Xn;b>azyhBjcVe27{)Kx69nk>`E$M zI+tl?gvvIG`F*Hp@}ziIY2XBI6j<$%FQrD;^1 z9svYpCe60hr~%u-NT_{e-z7~zT<)tFwT)r5(UD8k(9F(3R>w`wj*(G2BOXhNjDf0M zyyK8ctDD0xkIaA1MBZIfSgJXS<1|1nn~#6%Djl3dPOj#ZfrBtjK`g78@Bj%-umm>M z;M=?I71&hsNJ_ImGR8!V99Kg>TtzluR zIf|0`zDr=Ab=hr4H88Eu=`oE^+)Nx~zI0bS3AMRAsN+s)w;fiS-^PP!gb0G59@yX$ zDs7jvPy@|cJ81+!&;$=g*dJ2R~pPvJ8|_Q2?~Q|b|n>r2c_%~i`vxeb4eAS zqA*A)*ylhTv_EO4XP(vc9TU`I!Y+9v+|m8!kV+!qj=szMI1Tac*+ET_Ft&BX@<^UX zI{RvN=`pwU`HUbV7|gzRP(V=gJ(n1PX2?!|WXup0$u1_S>1kAP&tZ!ie;fbYH?)HdS%BSQ_%?AQl2w#%_|)Q+iPM?J8t=6QswCym+x z_TEai%!k@u+%u0l?>Ks;k>cni*Of=|0U6!{#vyfHtKeX$d8AJ*q!emO3gW0kPO70^ zwp08bY5-BQgL=F;tL;D4Hu(mKRD&vfESn$dT})8N0YL{#Oi~TO_8B787JNf2Y9i?1 z(`qNxvmp=za&8(sa-EtEpoAKJR{mSkg`ePpI*6w>sFKYN%8Y zo*0nMnyF?GAuI>mR3EOFa%FXv)FH)DQt)>@dF5&_&vpt1Lk*-Di7xk;aMA_yWci>L zX?qOvR>e|iEgIV~5^)BcSJw$-)EHsh>hVU6gM3S59iaD1R>xe$BX_$* z9f7@6_#{^YKu#1r-Z6!dhFbHn8VUoNyEHI};70GRxtanbEPLDZ3rni2Yw+_)P>EhI@+1C6Mx~tq!$h+WkI!sA6&z0Re2? zb{r%P;@)rEpo;6TKm_B(8Ll5!lS_s<;X0c2Wqt%g)XJ>Kg!+pLBjsFUtDYT!x%_D6==y!Gv%Cfz}2X!`q zy(eVHk*J3XBT)^N@WMfo1|!#_csd9!L1%v?I0^QtJ&o0dU+&04FHmcj+1CGwEBZu z*n_G)Vo|fBN~YL`9-~O=RFG<>FdA%kFv!%*_n4rj;18aJnq3|rNwCR$k07h*X*8(xIk?%5Ikuc&w$;I!g*Y}fh0{)qsV2VyYtanqe49`06bx=^Iv_z@nODu3Bq;2B z#XHsXV&;>=RZ|Uo%FV*2CS%k|+ogXHAjYk;1g{FVVfO7TduvgQ$07Q3?)$D}=Z1~>(c0ywx9~pmA zL5Aq?K^>=~(p|UJ*lyi5)si6J>1l`$uCbjftpNRN2xK1D`*z~b>Vfa`?g{GPsxr#? zNYv2*3)`ofn&)MC;i{>oigy^~uTQWSSgeOCdV|^7d*Vb*-uiZ^G>j0feYraF0{e~= z9vSC`9oPs}(qpp?V!^x&(Tt>;T^814m#QtZ+KW}ggVECtyR@EQ`wkx*Bp@f!Ah?+> znkS^e#z4R95d?#zotW&^#2dfM)N6KFO_L|EJ%XsQO%VGdQL}SOs)b4;5Eaqt>bPoR zl-toGYC%%Z4SIr_@Hs=ZN(=QB76)Nvz1Yci-dd%FZLcgGBlfmqEU&#dS5xqG?o!;TW{b=V-NCCdhzP7^8?|#> zV|$E*8bFl6&%km(u%23jNi}KrOxA3(nxv7-4$U}a(2gn(rV+>l2YcpOO~)nP2Q{f7 zi6KW@5 zzXL?5g=Y5~H4$_K-#yaNk*}_fH%$&X9X{MzKvd39%}Czf;$!za)OvC-Vrq`Nv`Yb> z9;!Iz+cLTl)YPhV(mX*;im}~s5;r0uXzySe*>NnZu>jK?jIc!<>^NaHQ6&?7HMH({ zw|9^yWYGZL>%oeDat;vRye9qJMXf&GrFI9%h&0T7|)@KGnFtjnOV9R^vA zh4ywL*#|W-DHjf#nlmR)?F<2`eBR>k%YMMoLldhhhyl$|LwMfn!E6J_xf+}>QIm!N zpP`1RAnKXosit|IS{)oaLp4`>d9sRos);Ii8}LbW&L`~Xpr$vldTc&dGle-IuN0>` zQ%v3ls-_w;WlS8IPjw{ClR&o}*?|XVNzK(flI-*dvKrzbS_d_8DhGsV1jDky2K%AL zJJNZuO#xcm2fs-gUxPS?5ei3A8nrXk7{>4YYG{pJ&e3_ShJEU2G1X+AF16n!PW#A% zni7_jce@0Go?trIqPW4}dG{MY5LN8-)r=NgenZMVf~d((ISHiSs14t)8azc?Ppfn1 zYQ|e2#Us0I)MSUSbZDZ69@&2fTVAL^ZU=RA*Lmj7M`mNhPJd)HM){;iFw~Mnk2h*~ zkWSJagpp&e+Jy>rAa;k7P&3|6wjT~s@brfB#wUC%1v2rd(ovPCBaC!4XIH{kC~U+V zwYAfC$!h#2%YB!qAybNbze_s_M*1VUSs*5Un6Y6n)Ldrll7`=r;$3#2$2jKiGEcmt z0C$KDwTF*huBa(MYNziql15;6YIaGjLg5|upo$!@`JM(=gDUH!?GiPQB)0q2Sg?G$ zgV<)5^oCx5ampaDJ2FKb{JjH2990;GcR)t%W!0X-P?H)9x%rJcPIWsVqlVeMvf8Z{ z4X{|pNu25c?T$6!leiJ7xfF(Rvrw8YI=~uA7H`xrn`7yk?X?gmMyiiTmQYP~IgO6hVvtOfN{iK$ zD?qMAl4=0K(XgOus7di|J3+nBOa*eT#zC;$9gGVHiew)4Sn5}N=o7#9@uub(TjsUO zTusM4wVD&t!IPwQLSD)>9vS_)p(@pYo7Qt!9Y@1msHilU&6ko3$Z3SW)4NovAtf+a zC=4|hB_xs`=%I>(B#c~%gVm_15T>v~1*yhqrrz#1t08ZStviU?X4yJm8UbmHi3cMd zp--%4=K$;A3F94|yFZdD#xP%fm!Z~32ODHcOxRHmRd6g!Q)vdjQInlMf~J~Xvbx(2 zu445ru%VVx_C;d9#P9uf2rMJf4iFe2s#I~|Z#<#6Wzs!EaA@Lrhcuujk$r5zNT>Z z5bMlxq({`guIjbJYF}QS05WQ5wv36HVlqa8dK#Fh)g6<@7R_6a34W6X3%SJ`HBNh7 zuvdcy@ZDoVyd7oQ2#SNK)Ak`d^vgr$Sq-h>`XTcGqTKajIBnB1oD`db7$M$${*KjF zNS|g>?F7H4M-WS`YQEV95YaL+-se}Z^4f#H{KLIHB@9tVE>ZKr+kD^9)u&cpIy=9g z+qrag8*;|P!9P#V>7VxvV9=*-NjqcpmH4MFfvYz{=^&qL^^r6f$QuIM*oQwbr5fA0 zoegZP#t5H}6`IsZ%MKq<#{%qIVb5hoRs+sNyw9)RZ*Iq(S0M99|2(U&4`xhmbTx%D zj9g%wz_NKzRK$R#hdG5gf#HU1Z)#3EiAtQN&NLC z>T;?tow+nJZ+{-EF~U+p4y{w!6iEW&{#Q`58g;e3)O9-;A!BFp?@M>vep-X?#9?ne zl79ds|GB;h_V&n2XP5Y+i3!bSU8lFuyj>&f`l@Ak(~{zhL$GiuX-QgN99~ z#m%+hbdVhIi^Oc6QYd~C6N@dHz*2{W_~Sn-;P8C(NI*X2gUk0 z4a*MZK6hg(^AD6xNBjfRxIvjfKFdGVh6Fdlu%piiNvb(Bc|A7O=hPpMgp+8OE3VqU zdf&^0n?|zKvg6hGkUJPD>P#iWOv@Qd4R>Iz81a#mH;IpdV>$@!Lda|VV- zGp8or{2eyl@fUW)@5ua)kW+oZYSc8qW<+S>V1T=B$MzhAZ1K(Qu-X#Dh{bn8Eu?O) z8n6LzaMB&TCDfT>f8Ry#rh^x$+4=Rxd$$@j}@mSpiU|% zwv)f4*wz|cO5UPe%WA8b?f?ck|1HuCMv8dDUyEW>?eEf1+)KSNFNc4I-ep8JO^Vgb zPfIO5fGQkh&Rp>pJ}^YgPvzz#Cpk~zan?KEMz(Erv`g4$oNMN4`}sNoPBmk*cZ_4e zv$Dg%<~QD@8rH0S54EHH+Ri1MrlrAbP#6cejgb>RPAzeNIWC)?rKpm^SMvm>w8=Io`4aYY0iW3Xjcw=Oq-V(?$tmET6Hk3zt z5E#duvf2xgErOeEvIE#Wz-v;U?POyFK5N>#XzmLK842iVPR{1?4sdKy+wHEu zc6{_f^F#(`zzL_aaXun%G0%|BGXgf$a7X^p6}nwNN3)u+aPR_#W4gdF2cf7zhN5}f zi<*fr#s~>vjFtEpzm}3PygU-bBY`s~dV)E^fRw9*+z)QIt~&S6iLGjs`-< zSSTn66?Dke&!Ux76I^JFuW?RKwd@|8I=6!nTTRT>eKiwz%zx5TaS*Ja_J(3r7Di$c z1zFD3&2R7e0mUMrOq#U9iMjYq1Su}m*5-DoV4MxLJq)bCz{3;NGFQ zp0^GInvR7-EwDD*Rb6W57FS>3$u0883%2uru39D)DyBHT5}NjUs+j&Dif4*dQ)#TG zIWD!;$I%RGk1=Hcf@#rtWPcipx$XE!c^5nJCjpBmGAV6?S%+S?rbWF=Px__MX*I;* z5E(VU^BXM3{cw3??$VlIa2dQt%G#f{V{Wes@y|VkT}!SRX05nadKYe54n_c%m~a#iwm+grlI9y<2?}Cz*!kx1{70Ap2N5!6#fE z!Wx09x*gQ`&9R5=6eCkj2P|qXFYI&n1{|EZOxv7J4qyvZZjKA5!kR@rw}X+QzF>7xn__+- zr zxYsT*IgjHS6J$rMH(X&G2g^kit7QXHTu%FB#{*wX1#umiZ4@=T#Bb6-2jmPA_|6oQ zx0roAnv4#Zk0eyRr^V(8mDz!5M$-*X?8S{{l206;32Ye?166ub{3hPGF>1b~xT;HC znn=>gK+FhMa%sU+-@9r6gF!$yq~=3RqoHFY{-Ct{O_s+&W~v!Cm>0$%PpuMI4tK-^ zN*PCrU}SbFAjbW0oLF#OH8-c_lOnO&Yhwl1n>BNgj0dP!sa1=1v3lVW?sXEuKs@4vwRD zrUAd>I5Fm`EjzIt0((AI&v^661!6mFPc?BO`Qsd%@#Yvrt(HUCR0pk}x9r%CIFmT| zZo7=tsTOR*wvdXNCkN%MI@P}FhGu7|OfkKI(Yf*9rX~%ZRo7~&81?~D9Bu~>5~`sl zZa22^X|}hkjpkZioiPF7TZHjCT6^&y9#7<(A8Ky)fhGtn{Bp; zgH$n|a2Obf9cps`2FGfso?{TZ^cb+-*iAM0WzZh+Mh%6(c+{nVz;N*nk_%@^4TKor}lhJ6U^q#2fyG!P4_$nx@gs;$f6iD-yhX0k&X27HE^ z6C(^UKP8Kr?0{HO48%toirPLf_yl##v2iqN*H)?a{nk7*c}0`AwR9J37f({niP2Aj zZ4qQOWD1{%hLdUuZ=`|M+!TUA(heZX=7*Y2GBeL=syNQYfUWXLs_6hYI0DORC=4Eq zUr?CWHbqUJKOapXi6c1{XO<^q-ibPhy0Q=Hyc$=KV0pzmONuRWVOiphnn8q0!@)_t zJTlbQyah2MC?L3=fV}Z!z#d(yrOZ{_P#B&>=D}Mbj#OjBo;J3_YW5$ygzcy8RL20t z#r8O%+cKal_yh|)b)>kcF){-iY7g$fl>!_wp`J)Xkf|58BlA-oCDmyrdofitjZm)P z37k%MofH;oFL-Fgve>L*s{wVq+^p(AtZ65(11CWo)+KGk%Y|hGAQLLClc|QW9ae|h zz*-P%HQg2VfeOfcF%oL8Coo@Db7Ew!qPy?|1B2KOHSm!N%4%LUMvA2ZJbCyv*WBtF z{~Q0jZu$P~G{PdHAnmPIIMtL2dsxo~UUIMiU6T~6hgz~-5k{>`R5|>9P{-TPNpV=f zPV^2^ay|k-)HG8El@T+a7pwDFI-)SuLI}O$jW$tZPXwmuCiyRK|R<>JdOr5)p5r+A%L0&6jcsjCXS}sH!r7W zBUo;LkvP$=GilV(sB+Xm33kE=oKRK|H3d2|&uV>i^L$PCOf~aTVO6SJ1Q~BbKGHDN zdN*(FWRN_Wk;}e%s_}8O6jn2 zR^8?>;Q_JYTiZce6v=$Clf^&O^TTkc0R%k{_>@oo7BzsV6bC23H_2rqg0Wh)NLztL z4XVINp5uz&sN<^D8XPfUb&xGFxlC0Z)VNWm`Je*l7q(d7Gt}VH*pBP~k};8ROsqf- zHRR6zXE$Iq91I~+3Nq*x@2RGr60Kr;&KR_m!6&R9GX^v>*$4HYX7F7b{!kOaIf%15 z4nBCo=C2f*Nwrf-8?d}Zv*B~|aA}|lBU9bGFMSCr0QS_*h&LES4dH=HP&HaOY6jYv zMICEKT~4)UjpZO}93=Ar&9f1zsTNXe^Qe`e6m*0 zX~yQYHovLchZQ`q#e4#Gm@ekfIn-YLc}8BO#CIrHyd#1G5ac)16eaMPodh+#kuxHz z!Q1eps&Quc4cPD`vO{3&3>|7(6r=U|NE)k28dt9JazJ5tVSKpk}kbglX+r7oQT%QJgbM=u#C;4rUNo@NIffQMGXcgzEMM_ z>=MK5zid9$lq+4M_?@p;Se@fmw=PaNYk)#c2ZX=rmvp3(hN0#MCVXPG$2&@x zud@00a34;?RTC$m0np}aA&iW=B=e+!;|7~2-UU^uj-*XKiPhW)ngf4eVKB0znsg4X zVs(5bieNj+olr}?!*5nc8Xyx6nls*M1PAF{bd9xon;zZb+9lx5p)!cNbZ*%mAd^Ts zQZbThDvc^G@g`cN*u6B^54B`EjF1L~cydX`Je(~IrW*35q{il1JwjzqFRN2c?UWM? ztBFZm14!$|!J#%R#Rzj16z1`LO*0rtHQv$c2SWtgQzZBed?rq&I@-}p!+;Ojq5aRz zPc=@n|KSO0@L0acrufgutyEPCFNO{tj-I3PZ{Hpv061dha?si;Gi!| z05|C@t5Z!W_|%1OW@K(msBHW$X&_V>iNSBS(F`nVatV9}AZEE*A=St#ZnC^=qxRqq zd_1bvU8b7-PkM|rcKR_D5AiFFPOf{!Sd>oIYq}UM{)ag2I zspdU+;Clj@)!a=+ys69c5$~y{vOT1)z{clJrS)w+!wzRr4YP`;8pCBC1oLE`LEEGMLRC@Y;A9`47YsoJ z%V;sw_Bl$bq#=_=U_s}JTwa1WS}wg5U^{fFu}cz3cH*|hT#lH8+RTFn>T;x^s727Q zO}z0NhJe5L8b*p5j;-05Y)^^@L$G?XeVf*eU|bP1_?;KqsgAj7W+#(INs)twldX!m zm36wTE4rrL0ah zhWk+kQUc$0fOW*88j>Dq(Z!RgCa_GVqvlZ$9@LW&D%5#b;7M=cWU67i-d)YxHbczQ z=-@$5zXW!`XAqv$OVb@xFxAv0@G*k?Mv$Ke=Q9RZv(>HYi}2AH*!sGh)(&CVl91m<9hq)qhl4fq zQ_b^wE~D?TMesHcTVpj&*CLr}&eMm@6L0$TK~2&KRXMJvk$@&pxjd>N)l4OX55)Ee zCcaD3rV(a}vZ08FglHdIv^f*ru4ugJB zZynCU6Wqr6T1{_Cjtv8$%7?=nKb92qncA}90qn* z7^qLKj?2kun~V|IIB7dn?jPw1`NSg$>;>vmp0G=qt=NvM0CstDwa=TY&AjN06AYbX z7{PDuTH|`;q$h@Ntsc3&ASO6?0NsyYB1={WK(lUrKAi~pa?9vM+>4yKweRoEwuFone%!MPn8FQ-NaN|TZ$o41HY^Nf2Zl2YU+hF_1B_|kr zgPgaU2c5!B**+X>7+Yx3ho*ahI<|9cFk?O;g4eCns0Rcp?Q}1u1Js@dlX6D5>b<5n z3u8M&4G-|a-=mtOl@!m_9O(+GraJC8jz+jVvNx`?Yj}d;3e9PRJB||AsRlcz{O;K) ztGyrWk7TIi2I_?0sB14yBe6O%k$(HC;EJ!})Ri_mSCg89?U-Y|@!NaCtp)GikLrHd z8@5?}%nl_L9~|2mi4;rg`$tj=UZ{07cN}Er;0bD&?XXMKcyh3f8ov*l4|P2T<#yt3 zJqn@$0wCkv0fYJaR+iU55H-B(BBlDP#C851z2?UJee%cH$7z zb_o^W_aO~Dl3DX$B-CCq_N0Y6jy%maYEX5`c6{XIXoLoHBHl9FA+Xr)Z=h#P*v_e# z#HSaIkL09#Vm0Bbj67^(_y{&42x1Qy4E3q(h}Z)(c`?oP+bK^@hl<9O$2Ck=!cvH6r1jh-Mp2)oY;*d*L)1?lX5A~5DQ0EP6$6&rjKG=>6 z<722$pQ7G)$9M!AYO46Kc}5Eg@ZdLUKkc@U3F>}u&%mN)J16{hI60`}cIy~#)O4u> zs`B>s(05QXmLD8Moo||YU{POSo0;v9VqV(=wnKxV8cqQMH6?ZMJJd}5qg-uu@wYhO zuacdmZe&{3C4y6pCr1ntLAJ9V>76N4L5_)s%%g^sPHdhC9*Kk1{UDjP*(KXK*e2fj zQtprj7&$8~|8Vl=BI|+Mp_ib}w=mrdWkPu$B90n795xiIkHJC>(Hz(cH5N`8Ikh3` z7zYms5A{hp1;>X+^42Rp!8eey#RN5O91tGrV?#oXgQr&eUSXne+2#i25O3-j2M+)W zb-f#&RZmeJwgXalWKoZ^z(zFVEHKo&2%_c`Os9{zV7?L=YDtWCGS1Oc4GMjAxb^P1 zxp%CL>;L&uX{tducTmL$$0opLB4?<4ZNWzK!&zlJ=uREoIiq`%F3VQwzI^SUG^z_?HV7}rt5pOW(XHM0{v5DJtIdY9TH|M)i_=7J=8pMce9yB zcwXWAxjIlaDD1{w`4R6*9NzETz#AU6=&SgF*qKXrepE;G9o1~Uo{VqM2sPh#nX7M5 z4aW}lVKp}q6ksdvi}>V5h(q}FUGl0DdNd$wm%KD2h&U+KFZJA|&GN?74i|hhH0FXE zUri^G9$788mu&#S7n>*Eg&|_KAJFUXn$k$jkJU)AedC_!w;_*trg(x8*&wF2qQ<+p zY1`q1@Lh04KZv7xLelsF&bl_sws~%q7>YO|P$cE;|0y-$qlyU?MoOq~Fc{f3T5Ok4 zF`mueFv!=p{Cb5;so0Iyr@A|Mv6>HZ2EJ?3SbbV8z8P}B_wqYu(=#^T!4^j3SlV{k zPIv-hE$(h4Xy&95z}BlFZSU0^kO2gJj!!vmck!DV2Vpiw-;GZ;zd2!In;B|LT3yXF zb3WLIN+W3jHU`$3h71+ez*%Vf$c9EpXZ)TJXY|YClN=bKWdcoZ2)&)kq}A2D%9+1l zI9KOjKE{@+E^pN0Wq}3AWJ=2zs{vbHcrx|UOa@m4*h~W#%sg_eM$Ov{9Hhbc(bNr9 z0sH*af&+WOH$}n-3SyZ!#${?w1r#?!KdzTFFmA=5EkkaI&3JQ}%4|OC=5b9WCz8P!pD-W|WKekDW`K-*_VI^EZ=8+7=Vl zQc5rzo{TpvmAOp5JRHCLxAnJZ|kD9>7cDTaq@bQzT46!Rz`A0Xs=f^hR8S&1T zupQ&XA!cO<^Kk)3iqBW5;3`gmq?ikenM=t#{^VHH<)vXe0TIUuCXVwmL+~B46Dh9n zVStJP#FJ^8rSacP%{54Pi1c{w*=`??W9)YLqW ztH)nZw{K~POYswo`cvkK5bn+Ot+W_we^G59#*9Wn7Y92i8r zjM!q*)$>3GQL}&egbE>ut9DY2j(#~~Leg-Zm}E7Sc)KHsS|ATkG%O?AEEn5*(k<#s zW9p{sH+3P*Tss`23i#^yBHDQVCXn=fa+0H>Eo`?Be8h9iPX8Jv{BY8VrY^yOG z%tizW%UnIx)GApXwh0vj6b=GS=lB)Dp{8F>BgDjl5LF~?1{O7lg=U~fuYS@S zRG*h*TU{DKnipvR+{F_EV$uMFO?P3EPqnrO25}I=V>O<5pRv-AYOqtN7sK=5?z}KpH}$X`_?8E; zP!K!S0D?*zexruj$Yp#0b#fKi;fs-oa-}`2&1bpVcZlG?AZ;XOAD(xaIvF?_@KFt7 zm){d?JoT&;H#`^}P=@U4xY-nM#WqjHZ*Wq21CLBKTm@8yg8?7o&8!7?jLb*Ud?eKe zszwK#YP_S6$0Kvr1hMXAwYs5Zdh+^htWFH#AglT8?1^GTF3V2fD#@*z#~~*ZWe$hNrQbXv&QzR_9OALWjOnwzUpenp9W3U z^m%+NYI<5y0qHEH6lx*m6gsm5PPk#UW$>Mm9b!Ti1LUBB+8c_xHeGw8MFLJ{^Gf!K zw=gix{MB02pbEbMvbP8uG_k;}84Q8?e9Jr$w2k5khP@P-tCyOR8rvbTBrUF0u28Wf z^HWU;3zcp2>@xmd$+;Y}jO6A?F;3F~N6n9zz+YaX4WS5slH8_QUAP*muYsow*&I@`R zoVx^Up$}bZD)mg65bmz$5)e|RplKql^u$|!`tASw*3p9aI#THr zwjHN1R>M9qf6pesUVtI-CVbZ5EGY|+az)3?wt139{L4V7*I6o=&FhKimvcKfjVHmH zRKrX|SI`p#7I$f5>=5QmL;@i&1b`N3=+X$J<2 znimT_uuNgZ#G~O@jfFU*s$PxJm~e`Yy8=T#nr={-%x3uJt%c`e23CeM(hh|URH2S` z1pAnvk@=z~#gk)+39j?Vm~$am*)#3b0Le3zY{OoMwh9s|gF` z3LvnvZGM9f@s5dOq(L=BLPKXHAUkU{etR7RNXl#vPDWs*u<^*LCfJ3m=nWZI0Emx+ z2d6sD4dr4gX&ncF&s>d#a1gbKU4h-yG|P6J*a}eIo!cR4RXs1JBCsCwIa~s)k;|c$ zzj}74%Zwn?_f=Mb|O?334GFLdptpn-&8|cO}WOo0rd_iI0#}3 z^(K6VdK^0wK4yohch%0UVrL)c$}QgPGHzJKiP2hWh%-;=RI}R4oXs{d39x~kT06j%9|%AY!7GE- zck1F`o&<;!RInbo9S{KWeo_*#pn)t8+deNY0^`_OkIRJRY8-5+%TdL{6R8IW$9Bk0 z3?je>9y}YBwo?zkp+_D`=3xzHh-IXzN0BTb6IeVcyG(qidSre$NX8f{r{C-)UTa#b z)cks+p~{a6nzw~2DwelFo`KeE&vxQpxV2n?&%&U7$H%d0(FK||MmjeE!S>iZo^Yhi z6x*m4*m9_}7p+?hRs;LE%wRibqZ&|ikYo_yd43*kp$awB3wc8`BUAylRC~SL2rma# z+UTquBFGmX8Zu4`RZ|TQ!VrbRp!GOq@W_#!t?8nMeW;xQAC4-JY2I<59x<6}x(kRM zxkNpR1e{DjboJm9-ylRa*wFED>~gB9G``9sgCX#aADFObHH;i*62CJ7YsMTC39Pfo zNJCf8az$;~J8qH7^MR_WrqvHM+2Nn1V>SH(3LDTg2V}zDz>A#u$W&jAD`2X)gbHRO z-c&J&T@Kp0^X+mOpk@SFO0>)YY7jKDL*_|C@VE0| z*(FT?2eAMnkIa*H_#4}hDRnte6-kr7S=@svQY-VTs>+&V-jpnyyvACtK$j*Pr%@Gu&P_Uw_%vkne2>s^E}Lx z9S+|kof{O9!Y{C4c6s|Nf_~}3I1X`1%uQHtAl!H1fylR zn%XI(L}2kTYlj~wwqdpa8=2^jRL$7Jj!LM;BjM_KXkt5j;R&fhZ57`k{zXumE|0X# z7!$7@Fx)=m5dDip&jcm80W9j9{0{_0`N&Jb2J>cx?cfZzk{+(t6iT$X_sWejcWlWQ zop2sTyoq0I5S-`j9_^@alynA*S!`whF-G8teRnt*2=b4UdhfGHd8*kwm}pg%39^4J zwH3=FSuNRYqwItVYHSa#X7h1ZLK=E|5J4F6^~tJ}3>Cu?MFO*rf*`Q`3Q7c)^Hw-!X5LlruU><#<8CoyUWVua91n|^g zoas!2EGGeGsfm{;e-S_=h0F#c)XXFSQQ==A$zFj!LlgW|_D`x=ts85wNe6?7MAw!) zOAGUmoCH#PjU#O|aSLPhb_X(yKu+XzQKADGe#-}0T5<+5fe(M6tFJq|wjjq?;B54Ppo08?spc$s<@#%{4&<0D>l;2XP$PJ$j$;|%88w(4 zISH74QZFe)a@2_^*&qV@3^nkZScoVvV2~9Es2s~2USbHKzNe8as06DM$!0q$XJcPH z!S4s%=FankcwEY0`iMdx9=n&{k4;FwF?UOXVyqP}vR^fYFG_uq}y~;>I>HA)&-+ zD?mK~6+Du7Gvnjn*nEsCj&ITOW^W6Ia2k!x*HI--x3pLaW7iBw8frLigo>Rzr^Z>> zhBYx{8px$fCz`XdC(Yo@h&O6C4-j#h>T-HM{hw8x>47I;eo8;b8GQJsCAWSM$hOu8b|i z6KvDL!Z!OK^Q@u5PL3_ierxlj*i$*F0c^tvwi!2gBq?TCT59(N;2_q3{$H=rD3}L0g17$lI6Fi|-n_5pYu(Z*!orsCKWMD1Z3B)==dvaQA zZ+^!qk&q7~ZqY8qY6x%IMxCFX#=%kzksa>`*m+4Bp76!yS>3Av#G)pGMU5wz2gq?L zUp-;g#*>(1t0#09CFj0pQxoX5@ z02#yHe+@uH1Vt>{Da3&%@LbzTXzkEB)!)yO<*^A<$SWlTAI(2l6$xSBm54q`ZB!gUTs zQb!^@iO=D94jsFUTpE+8`FbW{qf{D0B{VZ^M_@_unXJ(U*1Y0O^;#`7;S*3?xC$Mp zLQNHe*fE?%6-zUqsx&Vg>+i8+?Zvyv>0XdW@to*n8d?wquuG6o4wZ zdV6GK-rAvamCXZ9or%wALL6h4ctVO}HKDpRfQ*_UhrR=l!S_0OWdQ;R9K15r7|u&O z!iVkQ2}W}8!*4J_1m{0aGyVk{YAfHG^}#S^Bc=vg_$W}%LwrCRPvf@upia`7U?gVa z@7UAA&xfZGO2EinfW^N8k8P^O`Lx^xWM7Iaex5q3rP_8BSPX*S@H=ND*m;04c+!Jr z)YddYn&SR5p0|o9)HEPk7@vilp+wEQ6EI5t%N0XJnCwyf98T&k^)aT)9$1WkXeo6C z)`P7DD&NrDwwQP<4KVUZ5j~K>(){2S0|tQ|xekisk*s#3Bd{QY{qrXoVgjt{JRnoF z%M+(dP!}(``GE;^_CojFXWl;x66#~-2db*=2rT&bjM!ts>Ucc{Zw*v!e|P$zP9jGQ zU6=C^o(v;9+prVy7R4uR|2L@#l|#UKByKS3#ngb`Gq4eF)l@^9=7nacxwIZJdFBg{ zM^X(=ZfWF>c^d;DpidavE`IG<*!Nq36&@?I5V7AH6qtbG~KEiRRDioSnfN{uYRh!%(2OM4q3zS>H19804hr z{N4=SoNtkl7{&-xkW4Xnv%f`M#F=5gWencvx9AoYS$Bhh1oScn+*03y6{uX9;_$2+ z`<4yhf}cA5Eelm{t*f@##8~c{8`i{|vpE~g^vdkfk0oWfo#1Iw*hnC6V zTNsQHasRDb++aq7Vaf_R?Z)w2+pl%Rhg9NrbCtP?gEwNR*c*%v>opZU#jCsZQ@&58 z`uNrUwfx`$wzS`mfxEZ|JKSg~J zaK?CU*Xp4dgS;E!6Un@#!TIf54Vn1@mr0MIf>fUG&ahz_&hb^=(Q@3{Fc_R&SHhC{ zicc9cvt2F`GZ(-k;=IQO<;f2Q|1jHJsRoI2HV!IxHy^S=zL?Ct>pujO!Hhfd<6#6J zsOva8oEVn4p^F=a{fLEo@jjmi?YPB#Q7PfZ?pt{eaN3RBSMSrQ4VEH+o0>3yUk0dc#Jfp>@rq+9bnqmBT?t-9;&InAh6r{YM;w)MB>?A+;G`D zcX^?DyBymN)SGSE3sl5#bb)%~n*Hj%dZQmd*0uKpR@$q5Bpr>W;I!6kqwckn4x;Xe z&0WUfYxl7TVsb+5Bgqbpq$DkEqdxV>P*;3UPq0u*>S8rKhY^4fH^Id3*$* zzJWoV?-y{ectRRL6+qt3VOw#tI^w-k&!iE)LIqV_Jeg{yiVId3Pnd4pk=d#3Xd2<1 zc?v$fR`7(o`CV4mz!r7+G!TJhw#hqT-yCg5W{Q1H>3Jn>n+C?pcwy?B`k_voaLA39 z`j>~A)!gO8B_(gzhl3hn%4BAWkB1E-+b4>#-SAykLxt5gV-B$A(qw_{nP1H{AEZRQ z8Q_ZF0D^L5ax2V6obq302@FVo7neAZYlsX-}Feb9*g3kpJ#BbYZ{6Pj< z{Q!j9$q%i>=aOoGS=vgV0LCYkO4K~IZU{G8w`?6DJvZMb73O;1?OFbq*IRBaff z=6MazAXWl-A2pqE_=p$LpBjZ;Xjmd-VbC>)D6}_aw_b06k zqnFz-Q+t4yBJsO8Y^wyFTu{o?6`xEQ>g}z4{NWAy#)wzirZ~@N8jY4W+kA+vt-e9q z=e)FEMto$v^n!nB5W|!IP20JlnA|kK!4*4#44L~EkL7j}`;0FIL$<+aCjhZve~Tc2 zUH#5bQ4%?gtUr-px&7Zq(%Al+0!vQ{X!dIGyh0BAb)Gq-n9DdkbW)kQw0y?uOd6{h zt{}dlPHvC)P}r`WfWsP9Ob6pOXsteFTb$$vgyQTuSO0H&B#31;?ac=u(~!BvcXSTftm)odOkblx(GVLMI85t|=sV8OblyT?EajgX@<0$mLCS z&~_9bg#bRxxD!4X8-Y)VAg4fX?>nkuNGYw3T}ny}%8b?J*m$8jxr%B4odXcw#glnZ zMWwA#OuxM$7FE7LS?~daj6@`@ex{nt`&4hqch!LTt2-lR2b{1SVglZlZ4V}lzF}l! z2T!&~qAn54N5*em6eHRmNyC$2WIYlK3-)e){OQ-Sx^AAAD~0fGZ1etxK}p)!d@-^- zk)`KqA4%UKCjE#sH_y=>njN-t^HKBlHy&i%;#9MY z=pccOgH7##sCi@{wqP&=Doym>_aM;AmJ#t;BGQe68^+(<)V zd}neM8B0e&3i_l&oNQz96d&wELn8LNF{eiVm((W?Om=Jyt%W~4?kqjc^^U&3kxJ`8R+WfZ5@PuJu0AkxEeV!`zu4FwD{*DF%*sAT=B}>b8 zveMWk)Z4zC)KAaM%*YxlAF&H zOpl4@G{8pTteE&n8Y9poJF81+BtKR}RGa#lFp})!hp%X(>yiIc90Zz#YJIpszhnMp z$SFf*&JYwJ!3N89Du~_y^-``AY|;MnO=uanwwPS}$d17nTW;Wy!4RcOIpn|)Flnjc zVC4Mhhb^-K*=nG*t~0m0vyW6V%-(Yp?ND^!g*Ho_x<)YB@d z6{@~^I@r|DoF}))BUelsAf%c2Scx$qm;CDggFgPQ*Ie_U2P-~7@rjC0Qhc)FQxu=7 z_%y|*D?UT<5XEOIK1=aX#b+x%NAbCe&r^K9;tLdCsCby-;fhBn9;tYg;)@httoRbe zmnyzY@#TuIP<*B0s}x_Y_!`C6D!xwf^@?v$e52ygipMCvN%75!Z&7@!;@cG8uJ{hc zcPhS1@!g8=QGBoB`xM`=_yNTaDt<`u!-^kK{HWr`6hE%`3B^w;eoFDvil0&Ztm3hX z$0;7K_&LSTD}F)oi;7=T{IcR#6u+wYHN~$ho}hT5;x`n(srW6$lN7(L_#MUXDt=G# z`-(qM{GsB>ia%2PvEok@f2#O1#h)wwLh+Z1zf%0Q;%^jBQ9M=gG{xU4{!a1tihof2 zqvD?w|E%~I#nTo4s`xj>zbl@h_z%T@D*j7x&D{{UQap>|SryNwxV7Th70;o#jp8{K z&!xDn;<**iqj+A$^C_NRaXZBeC|*!;d&LVWURZGl#T^wdqIgloofLOgyqMxHin}WA zrntM}9*TP^?xlEf#Y-q&QgLs^ODSGjaUaFYDDJDcR`IfmGsU^$lH#)BisCxO^@{r` z?ytD2csa$(D_%kIii!s)UPPVw=I2P-~7@rjC0Qhc)FQxu=7_%y|*D?UT<5XEOIK1=aX#b+x%NAbCe z&r^K9;tLdCsCby-;fhBn9;tYg;)@httoRbemnyzY@#TuIP<*B0s}x_Y_!`C6D!xwf z^@?v$e52ygipMCvN%75!Z&7@!;@cG8uJ{hccPhS1@!g8=QGBoB`xM`=_yNTaDt<`u z!-^kK{HWr`6hE%`3B^w;eoFDvil0&Ztm3hX$0;7K_&LSTD}F)oi;7=T{IcR#6u+wY zHN~$ho}hT5;x`n(srW6$lN7(L_#MUXDt=G#`-(qM{GsB>ia%2PvEok@f2#O1#h)ww zLh+Z1zf%0Q;%^jBQ9M=gG{xU4{!a1tihof2qvD?w|E%~I#nTo4s`xj>zbl@h_z%T@ zD*j7x&D{~VQap>|SryNwxV7Th70;o#jp8{K&!xDn;<**iqj+A$^C_NRaXZBeC|*!; zd&LVWURZGl#T^wdqIgloofLOgyqMxHin}WArntM}9*TP^?xlEf#Y-q&QgLs^ODSGj zaUaFYDDJDcR`IfmGsU^$lH#)BisCxO^@{r`?ytD2csa$(D_%kIii!s)UPPVw=I2O}PM?+1N?|Nn`K zPf~oc;!_l#s`xa;rz<`~@esvlDn3i`P{n5}K1cDniqBJgzTyiMU#NJP;^B%%C?2VJ zl;VpNU#$2N#g{6+O!4K4uTXrY;;R&2t@s+n*DAhF@%4&tP<*4}(Tc|?zDe=Tif>VT ztK!=f->&!$#dj*cOYz-`?@@fO;`9SPfU>A&!c!=#q%kiUvWFd3n*StaeKuJDPCA{2gMx~FQRx+#hny) zR=k+vE{eM!r#r2B&DekYhs(3lY%PU?%@rsHEC|*hN%8FM}ysF~W6tAv$4aI9JUQ6-Xiq}!R zuHy9+udjFm#TzQ#Nb$ysH&MK);>{Fqu6PT@TPog4@z#pBQM|3VTtK!=f->&!$#dj*cOYz-`?@@fO;`9SPfU>A&!c!=#q%ki zUvWFd3n*StaeKuJDPCA{2gMx~FQRx+#hny)R=k+vE{eM!r#r2B&DekYhs(3lY%PU?%@rsHE zC|*hN%8FM}ysF~W6tAv$4aI9JUQ6-Xiq}!RuHy9+udjFm#TzQ#Nb$ysH&MK);>{Fq zu6PT@TPog4@z#pBQM|3VTtK!=f->&!$#dj*cOYz-`?@@fO;`9SPfU>A&!c!=#q%kiUvWFd3n*StaeKuJDPCA{2gMx~FQRx+ z#hny)R=k+vE{eM!r#r2B&DekYhs(3lY%PU?%@rsHEC|*hN%8FM}ysF~W6tAv$4aI9J{ug`i z0Ipeb^>0rwjhRVix??+;U^a7p1(!li}F2$vNuCtO~*f^bFQO2UW72YSjU-*FVLE%HfhlP&_9~C|(d|dd1@JZoQ!l#AL2%i-` zCwyM`g78J*OTw3huLxfiz9xKK_=fOJ;akGDh3^R86}~5YU-*IWL*YllkAM-z@N978y! zu)nZP*e>i4b_xdw2MPxX#}bY$94s6n>=Jeh#}SSz98WmDa020k!ij_v3nvjyDx6F> zxo`^Ml)|ZmQwygNPAi;FIK6NN;ZWg>!kL6K3uh4y6ZQya6-L5XmSMqHHB*l*A}iLTvxcBaDCwh!VQHR2{#7F#NEX5 zO@*5YHy3Up+)}ueaBJZ9w9tZc$DyH;W5Hvg~tg;2#*(@AUsiclJI2V zDZ*2QrwLCNo*_I_c$V;N;W@%{h35&+7hWK|PV&NsiONEySFBe`Ryi$0T@M_^T z!fS=s39lF4AiPm{lkjHYEy7!cw+U|--XXkGc$e^Q;XT58h4%^X7d{|-Q23DWVc{df zM}?0G9~V9$d{X$7@M+;Q!e@og37;3fAbe5ylJI5WE5cWWuL)llz9D>5_?GZ(;XA^2 zh3^U97k(i8Q23GXW8o*lPlcZeKNo%>{8IRp@N3~W!f%D&3BMQqApBAIlkjKZFT!7i zzX^XA{vrHR*zfef(S)N5#}JMw>@RE+whKFiox%aafxJa3+UATsDP2pO?wT0^l z*A=cOTwl0>a6{on!i|NS2sagOCfr=Og>XyZR>G}?+X%N6ZYSJcxPx#<;ZDMxg}VrM z749b7UATvEPvKs|y@mS-_Z99Z++TQr@Ic`~!h?l}2oDt=COlj?TzG`=Na0b!qlL!^ zj};y#93ebjc!Kam;Yq@ig{KHl6`m$MU3iA@OyOC=vxVmf&lR30JYRT$@Iv85!i$BM z2rm_0CcIpDh44z@Rl=)<*9fl_UMIX>c!Tgp;Z4Gug|`TA72YPiU3iD^PT^g`yM^}% z?-kxBykGc$@Im22!iR;A2p<(bCVX7@gz!n>Q^Kc(&j_CtJ|}!$_=507;Y-4og|7%- z6}~2XUHFFZP2pR@w}tNr-xa!df_+aCYGw!a0R=3Fj8h zBb-+_pKyNR0>TA_3keq%E+Sl1xR`Kp;S$0ng-Z#S7A_-PR=AvSdEpAe6@@DaR~D`! zTvfQ5aCPAt!Zn3!3D*{`BV1Rwo^XBP2Eq-68wocSZX(=NxS4Qs;TFOzg=uqA99KA=aD3qe!U=^F2`3g#BAiq> znQ(I96v8QmQwgUQP9vOFIGu2M;S9o|!Wo4#31=40A{-{{5zZ=%gt0IYrov2^3kzW> ztc102HsS2TIfQcx=Mv5>oJTmXa6aMu!Ucp23KtSCEL=pmsBkgi;=(0_OA40~E-hR} zxU6tF;qt;2gewYH60R&t za6jSx!UKc{3J($BZUM;*v zc&+d{;q}5Bgf|Lr65cGlMR=?5HsS5UJA`)%?-JfEyhnJi@IK-F!Uu#83Lg?aEPO=x zsPHl2RH-v8r-x9tpd`I}M z@IB%C!ViQW3O^ElEc`_Hsqi!5=fW?9Ukbkxel7e)_^t3e;rGHHgg**@684h^0hYDvD&Lo^!IE!$Y zutzwnFcQYXM3@RQVJ<9$rLYp#!r6qg3+E8dDV$3Za0B6n!i|I*3pWvND%?!Cxo`{Nmcp%sTMM@lZY$hQxV>-(;f}(cggXm& z5$-D7O}M*o58$0JWqJO@B-n5!i$6# z3oj8~D!fd1x$p|%mBOopR|~HZUMsv#c)joj;f=zZgf|Os5#B1iO?bQT4&j}`yM%WO z?-AZByia()@B!h2!iR(p3m*|aDtt`%xbO+#lftKjPYa(BJ}Z1q_`L81;funTgf9zU z5xy#XP58R-4dI)@w}fvC-x0nmd{6kk@B`t8!jFU>3qKKlD*R0Nx$q0&m%^`vUkkqx zek=S=_`UE4;g7=Di?jD)c;5vIaSmloLV@Ia9ZJX!s&%G2!{%16wV}^SvZSun6O7Ut1uGA!bF$~Ghr?) zgr%?&*239@vkT`C&MBNrIJa;f;k?56g!2m*5H2WONVu?Y5#gf3#e|Csmk=%~TuQjK za2esU!sUd^3s(@XC|pUnvTzmQs>0QTs|(iB*5FRKzNO-XD5aFT1!-R(mhYODo9w|IZc(m{s;jzNwgd>E<3r`T9C_G7c zvhWn)slwBQrwh*zo+&&_c((8y;km-|gy#z{5MC&}NO-aE65*x7%Y>H;uMl1-yh?br z@EYN@!s~?B3vUqKD7;B{v+x$-t-{-cw+rtO-YL9GcsKC){q{TBe*WC-JyyL}c%Sfo z;RC`4g%1fI7Cs_;RQQY4gE#SU+}X6gN8nee;;$OSceUErP_ngO`{7&Ve7#`Rx6V%n@rgM;7_k^u=SL0r zP*3|tgPjce9B=irM|%f8yrdHAuYnSVU3tM-#BeCvQO>GWUZq3{2>nh$yG ztMz6zUoY_cF7eT&{(~TX>wy2oC$aq2L;G|Cb^OtQ__S2~oxGahzN_=|3Ve?@dgwdh z+aY{Fi|?}VnS$)Q|3hi)b^bXrKVT6bI_bvtgD~;Q6}}U*@kNvTMoHgWF-(2Bgb%bp z;YN5marpQg*I->arTkjTpqh30;gR@z0CHF@m)3m3iQS7&eGRKwSN<8%{*O3x%i+T+ zgTL)i)qLRAJ?i^r|LG(?cIij38rM+`D>cH8TXoFa&nfzuidf|)DOo^#t&>59pU%wX z@}(BO;o%3D`)%ZNi@5-n+gO{i`PL0zWJ7HHNZ61H$-~111abV>)F$DX37P z<1;M^N9d?-iLw8FQF5>G_)_4$X2&;Y*|E*mG3oqHQk$LfhWzuLr1%clX0L$y86xGo zm!Oz2TFMy|gux z!Gdgb;umcgH9na(+_bEQeKtDjTEkL<*7WTJp~>bJ2gmv~zs(_|dT$D5>rlXhzExDo zKAW9{#a3ML5C$BZhMakCOt9>GcmwnPGeo5_`R?(?DkT*wLN2Ku$PP0J{WZ`?N*d%# zdT&UYoy2$Rw}>m9Fh}@g>*w!k=Qo8r``%Y;Y*C2RP`Hx^p~+q|;WvC~ijRO{2b+mv zi-rgJcN5k=TFxPo>0n*RWiC z&~8wjY9?laX&p*huqI2CRp`jlyF{J`=dHN@o&ggb$LA+u~E< zF%y=dCwS4bufLq^Zbbh%ci9|vx!E%f@17+*TX>G}T;X}b z^Mw}(FBD!RyjXaN@KWJr!pntM2(J`gCA?aAjqqCGb;9d~HwbSO-Xy$Pc#H5>;cdd( zg?9+=6y7DgTX>J~Ug3Q}@Dgl*lLhDb71v$?4629BKBzvD*8f?x-_&c$49# ze1O(yabH8yH?|2E;Yeo^-PfiuBz|-_S;OiaG8~~{b!@SAZ*zkCuEvt#O&Ka{YWh{~ zyLI_T4B4dsdXd^|NUbD_D^%Z*RH!GNo+}Vl4GnWgDsn5EGwF6`vl<;o-x$x$>THcV z92ou9H`LMorGW0way%b(b?vZt?$rZeQRctUI~QlhqROMVNwrv7MR_^9N>?tsQOMi zUl%`v>gG8}C&=P*G@b*^)@|CLleP`84}XquU#*X%dN`9`1qqQ5SH~%dK+%CEexuEO}H8B=p-|Zkz*-w?W)xp{VKCM z;w`@YJ#9nA7V8HLL;XHRIea1eSRv|~Y4bZmBRltB|TICb{y0&R_ z!tSueYy(EH`A1RBD$RBbL@I{Vo6sM_AJ0|Fv8)KfZp1`KQmx`3*hHCb@?fhDI`yOq z*3^|uW@|JVRO6}4_0)FHS9`|m^>VUakJq#5biSS)arlm`T+NR-eE<1;&xHT(=D+jl zWIXMDXtygXC*wu?sk+&CHmr+>XS4Zi-F|p@JA+K-qv^1;d%oPWUJpl!q4!a_%PGzm z^HKX5JM_Nmrp&udaIwsG*0ss3*Ve5Wc`;aDt6MHtZOyS{=`~p{W|P%qGFi+QjfT{9 zKQug+gquyri`i%)0j1SsK3}%JrYzhEPe=3Ra&p@H;l*M)UCvkY z*=#)-*0nCJ!_6K|XXE8$G+&KJ^CDl=bv-i5v1z!Rj@NEDeI9YcL*v=3s{Uwp2+bCg z<$N)nEm>+ZLRGcymN986W6Njb$#g!QkAp0&vNesBFz{+gAikI`){Dt1XdiX!ev@)_ zv*lQpSuL0A$(ntWjb?J{V!nj>)5(gVgETW3fnAv_M#~wbIV5P!9?hrxVk#f|>|_du zFUOj8F#jIn4m($5?PS2D1 zsydv}&j@M|jLk+d!{wgwVlo|%=kw`$J|EH0jT$c@{$jPBFP7tJurD1>7EF7wq&C{^ zaN0Be;UlX(qdC8WAfp8(=B1!oYSW&xqs!G|F&U4P<6@h2$H2jJjYYxmeGs zi%}-4Dc!i^tL19M^5@Idxa~Mq<6hQir=-rA#%wWJv)hZ2JHDeTyXj0=BBQJ!d_2R@ z?C6FXkP`FpYzl#&7{;*>bvCk0GquPulb>61-$3q=zWe$znZ2fV3VXG){FrTTGWw0ntILx8cU) z1)Z*n39{=Y5;mD5AxLq}b%cgTxsA}6Vf}Kh^EEuQK-AXDHvgp>Vu9*`WkSC(h2?ZH zWsFYbVw5$Sb+KBkR_n%A7!7E@nop-F26o6PA`H{TXh@Ne!}%z+ke#D>+fOJB=`ii< z+Qe2-oPm|#p>Y?=R2Zr?o@Tx2m>Lvk}ZxKkZr7Ui+agh=h~Vsuqhz%^6(T)t0uMLGc=IHtkp1`k7Bq zhwZ0Z)THl+hTGj0wysTky4rim^M1))FZ-yQVsYANZPvrOZmOe6w~$5#9GAW7rZ^H9 zJd7JAxaMaa%3JqECoF8VUd3oM)emURW~lS|WVRe>yW7$RyWXaUt>}nKcWEe*u-b?@ zMjC}TV-^_Mk_i^sF-4Le{$Ec=>(O{hL-ww1BNn{-8B}h0TKcbhW@%HyBz9A4RL4$s z6z-Oam)3ro{huRIjhx*cck^OZ-EVv9z)RgvE?`D4Z9h>tNk%GhCE8CTEe5G;`9IW+ z(PizY?Yv5EuV)7nZ0+Xgj`q`NwC}oQo1IEL`Fq||q3dr`J2j2frYCoWFwO@WYs$b? z+0S_rTZ^?q*m}wYxvU%zJGxx5-2<}fE@@o%s?>{E>oK&SnE1ZxFbnBERZBNu@45)b zFdK|FD5~Z0wHH0fg0@u7X4;+=Qw{ezoJ0(FNRtYmB9>^inzE@mB8IMCf2+g$n~f3K zSN)z{lUaE_z&ILG^;y#Ehf9NBmeqtT~QS zI=4Kn1mS*!tqljx9&sF}gio{1@d}yL&&nT2zb&j+5r?K5zf5CKq|qK=3PCX3oQ_~U z$H+#(Z?l2V)8rYAHS9(!$tiz1sTr zRk>Jpo_pVt%BECs3TxhI{jM^$g+=dG2a6Cgv1XiRoZyJt5F5f)@*ueSlZ*~!4G7lv zR|_ORK`;QKUNZ!ltp$UDNgW}Gom=r{~P)b-S9b%>)8 zkQP%>30*;5x6k1UIBBDm(P(Da#TcO}=JUS4j7p;+;=}Bw^9U!aVejW@Ix3h(Y|tjd zTn1^2_7ma=S(z8Y7%Yl6S)zh@?`c?dm^qXN1GOB5V!IfKPb@Dg2^jHtD>6(Ed6Dt3 zzlLBlLhYbQ>zld(Kc{C9AxugxVLdcNpH2z+M3ox%FXQ(}h}(W0zKv2~+_U{E*X>Fy`DbTprA5h`}doIp2nwwn;Lc2ylK zNyhrAF>t5$szWpP-L+>I$W=GH8uvW{S-IN$;Wk*jDRXwXw(R% zS_`jZF=4zYVPA@^*s1Q>S|A<*;di69v(?m)84PV^-^91w50%Njg!T5RLof*NN>%Q& zZi#hmKds%Cy6_ATz!*gzqKYVKBGed=+L;;2_LG`n1OxWACsqbuZmkSrz;Q(ktaGDn zOJt6S^*f4(?91{q;_CW=eS!fdEj5L`957P$OyJfhbsNKtP`B-;#i+!N1J|dx2gYoR zD^CQ5BLUd0If!T7(0=E>p#2S2-J&X{V>v^D`xWe~F0{bbNH`nLdkzmNBgu@C@5t2Z zaDTda*A&^mF?kT0W?Y_wpt^8X&9st8sJ+00B+*6I5qiM38CaQ}GUYItK*Xw=jOV7E zBB__tGejCuiy-#H+GsIeVqe>C!yXWatT!67wL{)lxQ(kw4A)H9JdztL^kJmu(qkmO zNe*>v?xYzlaw=oeX=JX*>C`5hmKl@EB6UrEr3qbBqIt$-u)EnHiK7u-ZtGB)L#uQ@ zH5*uu+><;RHa=ENSDVB)fe7D{B_ay16<6J$zsQ4+kyd72d2r>IWYZSbvJQKPnZV5+ zX{NSkyV$JwE!pChdUc{vH?Tf(G8s{3)K9dNUJN82<$O#MY*^QLC-#PbgtQwe>CEnj zV%49(&=adp*y`SSAbQwj?$8!!a?Wq2^T?&gCh8D%Rx0);JQUn0Cds~avmqVPH$<3b zb94@#D0G<3_AmoDe*0{J-7_z1iM%^g+(wB_%qr4Z{Bj3XD>jA7ol(RxV1{>0CoBf; zxps;;5qU#wfd;mvzd+@Pv;*L1{!12@^yV(y`ejwB2aBYGyjNkDuyv!B3 z+xp$$Uq}AjcBf9T4vD(bPX5F#tb!$=R=S{1DN%{{&V+YZG7|OIIuSwsuHnwvcu&fW zBwi6*a7@AOZlB;a!zXkw3D;vB9ZdJ&DKh8%CzCxAcH4NgCr+YvN(Dr10{!eW(|S&1 zy@$w-MQ@)>x&EbD+|I*z*qYbLcn^}oZ+A|owBtk~=)Y!r`L!E?<4A$t(QHX|So4U( zk2#y};Xm8ps95?o{vGb-wiz^Vlx@rc>RVtbIxhQDa79+26tjT0${N{K{9k2tXB0Wl zap{(4F>q8PJWFVkW%OAzfjVOjBdoTFH%iYtEbHvGY7`o+qlp>iU}6sWNJZ1yYV05$ zZYy&F6a!gLTut+AgAZ11aOlWcXFb{kdbjcfF$lg_% zw1B5jS&wzEeio2Gv!C?@;88|gps%5m1R*NtM5&c0%O(9tKlUQ0U=amg^dls~Y-Dpz zJy(tN9O0qqTfOIRRgRM~%ZMyNg45p-Wprt)M!sVoY{E%EbVHe_N3r%%!j)h=%L_bn zGpAYRe5%@`577zMBUprGN^_RS2fC-I{6j~;S%_J$0kbWuq?~S7P*uxYwwajSw6hf z%5V}|q?X3nW?LFbXI+oz5_e9Ib^n-0*0J)?8nQU4z&L*iA=bsTiNfkhrafE6CCloe z@ZtM#B%SphzS~?DA?(IW$}$Frz%$GA!l7p?v!3Wvw$q(sC~hPWK88X@K^nE9G`o^2 z4&J5;{m7*KW$4~uwaI!90cfWrJkpc`+tBQDAKFO+JOmO}_Sp>FcJ_=!8sxF}a9?7< zV^Vvz(=@sV$~OI}ogICNPhurvg~vsutYuctT5SU-tTtU@8sLMj6br^MaC1U7ar)d5 ziHF882|2x-F&RQ;%x~EO9O5eD#!9kn(-HS2?23_4H@Rk(=RPVsu{=~uE9vChnfab{ zE-14Z$#nQNs5?!E{dq7UiFRT$O*c(~0cpe9RF>P>Bc1G4GW)rGvS1l{8+}P~v%zU( z=oiNq1;ONb9-kL7MS-)3RwUn%(?sDC9@tcxp6Fk_^nixOQ8hA`Lrgp^^ zR9Sc1VYX9`(W~y(nz3pznQ#tLWfTM%h-^&`OUm)w1mSm0_*_}nm3G2ah-$8mGHQ^7 z7Auk4rm0J*s@1`WU^gti`5734R(+ zN0=;!%HM_rcC8$tFXg5rTrP+_rR1h(6Ho3ezvUn(t{_Ai|5hhW4gI!}3zz29Q;N(my(yhi$%`7PnwVesXX;r*p1`jbkRfMO<1V>}u^2q!ni(9|isWP|+7{K9 z+hUn(K)FSz6Wqe!83hzCK~Ko2Ku?7^4T_->H(8w0IOO?>x4fQ6h=^7nDfr! z&Jbem2*_ip6>%z(3h48WN*HrzE8|S2k=feelQ>oqog%K9-jhXqi-mR7Wo$i@;f;TDd=pHlK!_A^*7O-R3&>wZ+R~?R;qoa|PZjbh#*{|33H$Gg6-DB<}V(1 zr(Hy{9sf;^)a{D7n>8w0pvHWNn&f$ZRaCBmTUA0tJW;dI!0#^wi|nKJGzVxo3F5vg zv{{g1%o^?tRY8x}iKZSwT*E2pRF}Rpxt?&ALMP3MbXb3tGYnK$Q7@ln{VLqGY7=MJ zmhmJaO6dJn&3Wh|y;P5e?SaXV@gt?TSq|qocp)4+t_P-7n5rwnhS)C&GM5+@2Qu_S z{lDxQ_uhd7!*ZtAX__ZZAwT#Fh+K{4Cp-bO|3=~Ffoo+*v2{u%#S&L zRU2_~5Ia=A87#vA2mn4_BFK=r?J=270VS*Dyg}G8;*fSB~Fq3JJ$6OH0BEXi1&7>*5*A zF|KR=8qtuM_%(4IjvE|rng5!38h6bIR_$fxT|c#tMYblxBvMo%P>zfnQgh&J21#<{ z8NnQtJD4{))X*b`@x-1{n}gcbhe-}7e3l$9s)((96luWOj78y>g=-RQ-#ICyKqB3$ zIJI&-Mt(HrK@WYA6>P;4!uCnIo;v9s)qP*X^`C8Cs?IL-!SlqfKiYHSy~ z&1nX?Rn9q9@L$v|VQ7*<9L|%k#XEJ^YAjqF z@=rAmLc_egWkA=e;#~~BAlM{5Y0d)z)htQZa2+A);!3=;H042VjWe6LGUL+(>fF7H z_ZF7EZjeuNgN8&K8j~xm;hM+OWG_&VL`XcLZH!9J>p2EsLrr^hl}woR5hi=goGqE| znDEqVIho!+1ZicH7{QxDT;aDJRh~-VhIw~CvVgm+By8u3J_?%5APu8#fs&iY97*fs zV%QTSd}1ns8Mq|KgT*7q$L@P}U(;qdZq<`VBLk^RVTW8hh7kyO*dsFBGZ9Q+#KBF3N73UFQISL8$w(YjC0d%-Q3#;9U0%bGARLh} zAUC+;dAc-;B}Tz<$e&h+*<5nu$4xXs{A|ZPYH|Q9-Giy1BkYW^W+q&*WTI-$-P1^Z zkjY>N*#nq@O2iv(<|*E@ATUI=+NGZTlEXK4f^!kGP`koK#FclPFfwCPyKb#d6y z1?IGo6o?30!h(Gr)8m_2S$3B^pRJ7|%f+fV*JBGcZ9zg04PbDFQBCBe$;hsk z-iko5RgTWZ`#2~U)DV1UGdx4sl}k#p7$y75y5))!T-Os9g|HM{yXMH0-n`+?1P{qN zj#Z3PBX?ncsBz>o4p~FJACh%YiLGb+U~BiyL>?It6qpMC5R5-NtwQ!>!3nz?FbewI zSQ<%hlwY&4BlN4cGh!7`3f6$6P!6Gt-OW1KUapGRC;D42x%$Y?E>N|xTEyK5rqYphHgZesze&2QK!yg(&mQT3?@b1 zkhqMST%G{L%G`VfP`|0_;zXP)r<_2uz1a?1=K1^#GRI*?42zydd3z=V8EVQTAYfGH zf{iJXqT+D_%+;aG3=elf0u#4bayS7#D9KU-t0U0CwQn*h>)=&9k}Gljz-LL7AmVT% znYkvFoQ|_cngbd)-oX1pJ;4{;iw!=2BYBEI6xB=kFs#E}(K?1Xkk^oBNT9fpaE3C9 zmX+`shj?tKk$;lVyb&51C*Sj&t`7bkV{F|y85((H6?8g6E^QW7@CyuS_A{szA`?!L zchzwdN~S$f!9aUICNI=68-$USFedC~*db|fDLE&E!{NGc+nhDhhTTA*89J6M30D}G znGOXeIR)Jf$BZ!}uDB#eOD`{ZGK2>pF-1D`>Im=eaibackL3kzP~zwt43GAxXD{c0 zo60I%L;WEonEj6vD(B58c#s?gqJKM{Q*m;v$5|9{RgOZagYjPAOb69*QOTb|@aEwq#G+~rQ8IXT|<7czLfTM5Z9SBjliP1v0r+KbwV ztoMcq#A@>mb7gCEQn-z=`IsgAT&9h^Y=l5_u>b0TV6m7sPBJ=QtrpjORJN>?lTYl! za-p}BbHw!Gov{0~Z@SR8Uvb4S=GdW6HvUU zv~&)PR|;=y@0ub&Uocyek$P{zB=pCF=p)>Up?+jY^0_()>~&3=TmW0|_02fiabVbk zI=e#`)&{@`PzH%&r^Z2QWkAz{{l{O73ov1au;M82xQ>Jk%~9|v@xr~ouM^wqSg&Vj z@V%ZvEE(3+Gr-A4T^GOeA{w@Z%bIH4#+~@ryp)GUgjMEL`ZU|9JBshcrHY!jZ#PX4 z9*(2gifZQ_DaaRGSDQD-;pM`GX^W7^)FT9)9Au-IFb+)7N<0We0(Lh`uF|MVd<|SU z*tCS4R4}KSkO(&8?dzCg)UnAN(V!q)OXx}6H*R;4IAG%0AyP|v-XK6z+xCh|PidI} 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 PR}C9ed(fD1{oDT^lZxFF literal 0 HcmV?d00001 diff --git a/icesat2_kdph-main/results/glider_matches.pkl b/icesat2_kdph-main/results/glider_matches.pkl new file mode 100644 index 0000000000000000000000000000000000000000..49b7cbf89c5e51649d9bcccd4fe2dc29499d9f0b GIT binary patch literal 170527 zcmb@vbwE|k+W(ChfZa(Wihu!o)1b3UN))gI6$M2x0I@~vL@^Mt#qRDLyAwOGySw!r zaDO@Hy?Ex?_c_ncKm2&Dy=LaBi8U)6R(M9gOrzXCDP`g!dqqX|snfZ4LUf%j36VXc z(^AZ|k%^HFbN@X(t=90gq%?<=LLGW`O-M_z{P)wl^-7FR=oQ(cPo18Ty&}6tC-g~6 zDX#9(yK`*FUpZ~MC|OZoq(hHxo%+IaQ_yEc~l|@z8F$|2WkP8p*w zXNYn7`huGLt+$K592l?vJyicY<%Q;d%Ta!8{P#HY2T}eaDTnhx)OS{IAIcTd>xbXl zj`PX&&*}+(iQ{YZGB`wUhm76z^@8v><+hN&cCFRxMVX*)hZ5}$Ht;*n1NZ3L192QI zsn?rwzrGwL${`-qKEwrn2My&Bend=ILg>x?dHKV(Gz+^6?H*hJrdC~15k!%h(WliF!WMtMrA2kI%I&nK{>-XBg9 z%KU)*Lc16Aeh1+vO7v&M3xs|k^34#bom7VY$W!z)#2cjj3wnaE6Qu2|)sIKeA9kbu zS^E3{G0qqwZHLNe&r3f}QlkGM-q0W80{j7e>39b@OCR64dOJY0PkCN{K8XH?c+m5U z=<^bKfzS)wu5aHE{fWQfcM$oGyg)yOe`LI*w+ndzqCbGJ8>H=_T}tQ&(s=gO_frsh zBEDdv{yg*_j4$v%@*VBNeoC~Deof;B8RIPo|AVj}^`Kq+4nltr?SmLUi|F$O{zrMV zPq|9pKWW~;FVt=-Lm%iZBjU1B-yR5ku#UmJ2fb;1w0+3vNALsYZxFwuzhGQK9wJ^K zZ5Mt95ii&e`zUc9rMG@u0+9!l(3k21yD4EmCFV2aKgK_h`W=2iKY|SVDWNAN{DFL= zM1Q74UQp6Jh5wK*@CWrbWcUT+73`zL_)dv+6bS#pPWTCaz&JyRIKyr_-=RK``WrIx zn(7Z3`3VlxkAE`1!hbTtk0A7bKjB{)5hvJ1iE)AE31sLE`zTRASV})0%82}de?aJk zctS4__0#yH9P|Vcf3ydp9+38P#LE!TF7$&PAo7F~^BqX_h2F?lkm`v%2H_V<=t&7b zW8I7K2!vjUH}s-}9hA@)d5!f5CDvD15sW^Y8UbpL_MIa9;^eA7svyY17+p$ zJ0;?ea_|fC9eG4a>!I@>Wb_|O>KB=e@d$+9Fn-90_*1=UT&axloH9wDkCa%i<>fco zN2BMT)Blcs0zXncAk*@Y5g!@pI74NOTOjm6++^{;PdurOY0*hyF;3{)xP&;~ne)>HG&7@r6GO5!X$y1NKp3oJ9N#5$A)L z|3E|jhCe_<`axgxdrJ5L`2jyuqMy0^@_sPC8zoJwwEO3XsML;|BT}DDw}FBW{#5ju`hb{}>|ThH)2u0^x5N;ZM*| z{-Ivbkp0*f!T4mz9@I(l!!Ma`X?o= z7vr8G8p`|a`hEsd|3jwsV_XMme}`-+?)aVBCzGKk){oFnMw&OscS`Ct+|5F+L68ccT()^?{^#}Do^$+4` zh_wGgrv8-4vhm4KyZHUT^*j8CdO%s;p&wB{QknV@>p`>!()dxC`U~YitRrb0A!D5Y z_ScVdGGgARexUYI8GZq&{Zyvo&T;*IHXUbZ{>o%J9#EOCW2g*&VLSz8e!@71xPr)g z89nvSMbLalzR~^;8TuHa%s)5|J7t7k$QSA-*i8vNK^jLY!w)pysZ85hcPc3Nxlb99 zx70pb50z44Nc$y~seV`oQqq0^8Gb|@sJ>K2{(y9U0Q+Ph{EWPi5$j9pPpo&~ zZ|W!7Z!k~deCS7s@dJLKgkMk(%`3>TPsZ)~agf>t8S7z?+CycGH?+UN9+2L@flT`~ z;)}e5z3@Br3uK%J!v4JVx&HYy=mR3(DG^tCJqa1@g1F9?5qiO2Anc|23H>Qi4@mnT zm2o{p?W6lSREAz4@#ajrkel zDfEZEh&RSqp*zbex1t>!Y&Fe>hJ23-mNZ#8XC^XUKc_ z8~%cQAoT;4X}mFx!jB-u{zknZ%F}uwqdev# z)Qdbtd#DG*aZ3CSqCR>a?k|IA55)aMVeV?15gCCXIOvhP_ zt045j_(6%h2GKta`2qFP_(I0`BI92Ddx0S0j(h{52mC-u`!C9Y@H_HipuV3`;(SWl z9{dEtzW4fiLHtgM^C{ssO6*@kf2^0`FT?@AgH&&{2m4SC>j+BZBZ&5pA2QN*A=7>f z8Tz8Xg4Az@@&IZf+gWaI%QwF@%V zL6m5hQf4RYru_#p;sDZmseh>qf1@2rjEj`86aJ^fdbg}v}6`Wx~J=YiA?v_lCy zK=>JiA7LlPd0Ib}slPCOBEO&~C9Q|bn7;;+^#JOp=TjMe1Ys8ld*NSMo*>>JjXUb2 zL_SbbJ!zb&pNw1neSXdmk#``~hsub%j9B-A=L*5`B$a_la zCzPk8{ea5wKPB`qMC1`|7c%@ti99kCSDD}Fx*B;#{UR%mI8wsT@CU{(5dK3uvi=48 zF^=GTx*mmJ#iNu#46Ynfi~)XqOV@sUB#L z`kTrq55ljM&%H|E(acZ}0T&3eAWcUO93HE{1KG;Et^@B`L*>Ra4 zFn@tG?o>v6s6S-&<2dY>5qU(3aRa3G)A0uFQPMnvjP-$xuopy}5Lb}K2{NviWTbwS z$uhs;IP9UMexNe!!oD5!rg5OP(NJFEcjOnP%#Sz@KY`T0kg*O0slETNWa>96Q~NNkzSs9- z!st076AMk@Le(;Zs@Ehs}Q7=gKhm7-OcF6Ri{-buG ze}iZTL|kzF1>$!~YCr5oeo`XuK==Wa*+q|2Js_hVkhTwh;(SWzPmjxF%unzWh&akf z?STya3=wffzRM`n8^;j`5c3KMe?UJ<Q_umk6T$P=vR&>s2|WEs&8{BGzxoDbsp_4j1`fb}lw!}*9aCE5pJFY*bb z>nF%)2Sj@y);FLb|G=*x+J|0fM@F=Zc2ExX(Q>FC_R#);dO%tpGHnO#z1PPF{RVb{ zC~v4;%+Hi4FC+AzgubvFenWo9>ce#bNcEPL!*PsDl+Xus)9)|H2t7g655gWwS$#MT zKfyi_{TzCuUi3GNKhOuH^9R}ip)ZJdATL3jkGz4Ou&#nWXjevz8JyRZxA;W%x7Aek?ypV2>2-VmvtRHp4iMm#8G z{(yZT?4;$9=Q6!%{g7qn<2dX>`^aJL;!IeK-$9JDk`>38&Mt`8|Sxdb=lo($rkykRpFYqJcLj3`m z>M4`q2h@-FgE(%8)NjxaG*sTu@6^AL4V8mlum`06hYbHxf6+Xl^C0F!WD&J;Tcf(0@Q`CuFJ*`Wq$k zQAS*!$n?j$1VsCk$aDBrM%YQqQ(2aG&{sypO-A?|_M%;kXCVAf`-{wvG#-$t9vDa9 zAG8NTA47y6Y5g+&;Lm@`O8R|x88L5AJ>gdnc2Ygz2kKwwhx29aqdZtmudmE6sE_&w z?a7G#O^NzI*h>jNQPOxLU;e3n7-uP=4@mW)@q(<>&u<{g%ZT|BgguCdjEFbdrIf`% zb{yjXu4iTX;yC<){*84d@)U6ZVHb$mT$u)dzaZ zi27xud5Zo++mV&WajK_Gru9OmdQchthW2YZ4x>I9X}pks=tq>)udo-S^-&rA#Q7kt zmzJY4^u)LX%Ic%_Q@bETKal3D%#X5p_&+@kyFglgvHt(br1^w#3gu*^exx$&rljXV zrvAWjjH4iqQ(~T>#~~x{VGrgx=!bYyQvX1v`a(wiAjV0omrx!=IgrNbzm=&SR7QI; zLVp=)eaL%ReK?NwBPFd5{Sbt|C{ZsZtq(FSPi0yUWW*6feIVvFjHk#e+V63`jQ?%C zX*n7<=uJt_)3o}#{{kX!>AD*CCuDX|ze1LskK@!1nT+dX<49WMtvBUsC_c|KkX+}KghCp z(BnAY5Md|!g-n0+H=Kt&fgeDs2kJAVhwOLs9}xL~xT9SV{RouRYv?%i2I=`&H^C1W zw=oaEue6*@#(V(#WJG(=OU5?(eR~;c{j&39$B_@Phn|P{AP$uDd@93_XvdJg*!RJB z4x&8rhqi;ff&cSSzptdz&)=|%QWggshoAnhgdQOED`eOW!cG}sH|jN{=P&*I2%SU*6fqLsaRd6GKFZem@fPKA zJ|&$WA=COGBaa}%F0=#t@jHmT0IA(5hx#a~-l!MlK1Z?04FKsZ9MQs|UwnAJ|W?|34-20Yv;k#1r*{@CS_}m1$g|H;8!@ z@qqmx&I4(Ekl}X_>v<66DPboFzxCJq(U3i8pVo_YEBpleC{b>JEN=SiG@M6?c3?N+ zh3h}GFDr-gup9c}eAElVA9NhY`5>;#AX6fbK*R}thhC_MGQ_4$?swwh|0a4FMENcH zG_al=hNe`lOBh>NS|+%@C)ptL>y3$ zjPNUd$8|33K>mO@kB)~p4x(Pfof79!BAznBPV^UyKQdB1A;W(l?1SCtXCU%MM$`jR zdr>b4yU~v+FJAmRpMkVK$cPu}qojEQ8RIBO%TXDAGer0Y;~UxoVdsBaKk{OOzF+*e z#JGe!g1#7!(SQD1Qu{D(BhL&G{YU0+_yI(F$Ul_F?;!dQi266`{RtvZkzdFYO85;# zUN+QU7o&bk@4vwhGM+s9x8H$OKj;B}%ZParex#)O zL5AH;QU~PDn;^=g-hY~xGJl{w5OyJNK=_~9N&VhJf1N}5PyGykgU$8z$q2hJK0{xO zmk#=Q9)ukr{0P5-HTC5XclZZ1v|o$(p&jt8WPM2e1HZyPv`7698TCU3Tj~7=yC`8F zh<*?KDN!%ROR9HEeS4JD9@qsUzd^)NMvU7a^a81!kf8?%Jz+N`{EG9DXBg+uUqI>) znGAhE#Hq4A@2KA)WBj6oo~RG{Vtk4Qdp@jaFXb8`y#yJ_O9foB14|W(L`~o7M!6%KKbNj1|CGKnD0WpuR(2rX((snSvz%S_UU;$H$T)$G%df+#D zyp+B_4kFi`vb=^rVHb$<@E_Jah(G)eJwUVrd$7)?dO}9~nCH+w+DS_(+^cWTxPgLE zi38)J)264T7Ez(@uT6^+@d2tB_Ag7vOd>A&lQ!Qbk*ds>D3PzTL*=8RV;BFD6t8 z2xEhN4=#TBJb;fq?3Z5OTFt=TH%m8MSS5@(KfIGU_JW2}#wYC8giY2k%D&DvkB%=@ z^BDzK^!7GZGw|ZI6U%tFPnp zzfXNy#3YE992HfdTv;vexAC{xq@9d)9p8DT$y^QF?mPG1h%jg7>+<4AXnk|`_^Z1| z;dvUSe1Gdr$qot*`aho9pz;7)4o?03rpMM%wj9(r*PFlaw2p!69!x6IWS5#zZtc6O z?SX-{SwwHo-OtRe zLsD%y*y3*1jxw`s`Sh75EBGxAVBliQMHejQ+H!F4xy@E5(=?2-!Rl_^t9g1cN}DBr zP83eD<#A08mfcW9%?8hSGIrDaf00+LQRT)}E&HyWUp-<$5C^+X9&|9ihK?CxHM{O( z1}(7V4H8vJr?hHD`L^cnq#@$>gQ~T4H@|00#);aj1@mWV7BT7De@@Nx%e3WSN(Hx!F}nl#vq=s$y{uG>a_W(o2em4z80CADg6H;b z7xfUHm^_K?Q3rEy*^X5&cUM%gtn9nRruSia9JZZ}xZgC0uQ823oSj}hAGaU97*cS% zj!~Y88Q99iUd?)%Z>+drmo2{-vHaA5bHRBmccfy#yCND!x#f4e<_TGjOsm{A@|uVn z7&&MExz=_n2A@fKA6kc@l%CtE!VNn-}a7O6{%(~pN1qiZyLbt z`x?(S-KyoF$=iwnp$9b#bkc@YFwJmeVA7&C9lIT}<>0IE9j!J5HR9l!Y0>3N^jGqn zZZS7V#pdeTyw$u_v)kiZe`>Q)%dgsc{PJ9^VPN|v>r6*HcV>q8{a3vqiw8F1GS(}5 zBcYC;ij5nlSrJ~4amsHCyKa8|g0cA%n}v_*$(XHEXzw1oZTZp-)+VFosoA+FB^`W2 z0@%xS!=Ly)P_rJsK9dp#yK%}!zxJ#Q_|}L&EjMsl;sr$>`<4&a)@-9CcdnBrVOr^;iA%43&TNNT`Jv+m_;ZdB*7OU|DgY6i}H zrfmPSq>>wA;lh3DRB!3e%T^yXyx}$tqwJ!aJ*&bWdv00GckhQ3HR~TXHNAMGl6Cyt z=H>Z0wp>Pw&Eu_>1}k~#ImQE0Egcy+VE=+Gc=}}v&BC2t ztjL#zAKJ}rz`iBVc|6Ov7ArUYYF&>~{`{iC`c1hmihOKQ_uJ6d={4EKo-fBZl~r=^ z*y*?vWv2x4K9MHsxCKfkWAGWvn8FE+txLJN$Vud*jKA+y`F?z^j@fKTh?#oClY@Py zE*-g9t>6LL@q?a}ux1_Z?A)uHFXq3y$xhc>`}4ZzM}Eq_sb=7znJ*i4IICoocP<>Mj8 z?Bl-TJj&>%>)zJM(sHoH?6eWRD%Iqao~f;l4637MUzZNeZg%BgjA{`+=W{VPMtQzg z^wNn#y%?qa*j<;)FAw6^TE6V|I6=jB)z6N1D)29!o%GBsc#($HHCc1N&TxNzF7QpY z4yPEq_AKM7$0u9X5R|zIppibEMr&JOPsFYCp%iK-nGXz9}DL!0L|PuWz()B$3#?V z#KC6Xt^PbQRGE;dr5cT2AFIJz zhK{WJO4y$~WkHX|Q)=gN@2AtPF89?jaNUK=C)Gn6aLTeb#-H@wX~n<4H-5Qzvu!?3 zUpXQya1LXj^NAiUEHy#guS{fCUQEW_N9t6XHpZWSR!p!u*iEcI2!9>mecs&jQSh&`Y;V;cW1EkvNu^t5B>QvlxlPsEs%9!C;|G@st7D_J{Bh95 z-uqTC22QKp(f58^9s6)C>e$l7j7=Nda>|MWo*dj#{>RiqasK@Mo!1GQ3ai-k3+Zc{ zh3WFBHdFNcb5_B@Kh92L`M9Ndx`7@^9?f*>ZoYdKv~EEL+N9PEjSF zGlDIDIU55Ly%@Og<>dz%y=^(@Gh)o)?6Sd}^2Ltzer1d5 z7+BocX>7&uwwyBOGVV!f6}$HKV^Hf`nta?`tL1>1E{%AVp@kQ}dlbM*_q7^!N%Y5$ z%3sl5-pV{CUp@JC>l6>}v9bA{w?$Pfd!a-6PY0cp=jZ*pv@1cuyQJU{Zu|;Ox8-1gh!e+mhG4cD;y&t_~YF7_qB@Vl<}K8x~{W4bhK+gr3l`N?lb-}F`i zd{c0<-X(+`iPdNRnKIOae>MtGY`?8zlO~)gaBqbwA5-t#{MdD-EeG#Cv32c!M!_ko zw0PI>@oL5>KQ6PaaI}by8KNezV)r$ZwHzF7aiq=HnKgNWVF|H@t2C4~{xUxzDP` zubJCyIHi-@;Dr^g=$MSds-=BiF81AIY}R^XaJs3IgX4Se%x?G0me;I1!)ee-1z&x5 z`O%mAwM<6emv85JsT(pdzGRPc6TQ_;#vfB{UDqge?9lvvUt>Ed^7wM*-5r}w*l@}+ zBlwhlH#Drj%@Ol#(SM6stCRfSJ2Ky>+MC+8Q1Gw;KI7`oRWZsV@5;o6ihT$}bS*gJ z-J47;19OIz>?~VO8Sz{5{gscJQPwHsvE>2h4qnR?c2ZitZvO5`mqxrpw{;~FSwm)sI3H}a!tIRD77YW}{OOZX zSIh@8u6z~{<9JTPz-nc`wEE6%`MLOl1G*<`nT)0CkD=+bnK$T z9Ua^DDXw|7+X@cm?qe-s%)H+1_AWtzQr7Be{I;(cAHb>&*GwFerDBw2Rz&u=W31$D zw_T}ZHrkdKX#d6g+-PfF(BVOBnF*eJ`fl$@%}un--=uxYnmhf(e>c;?htvHuHNT^%za zev2rt=RTJGX!uGElhHV!=lzH4Jh@|uuG*p-7^56s=t!!|9|Z@m`weWhqJ%x0wL0wb z(t?e+V$i~yFB7#a+0rw!_XxE?KKL2ppdAp%WbB>TdCM!|4@yf#Xq7)ZG)ytibVZqM zIu_Mn;?e-Y8`jfP<`z)$L8~;q#w=Db@LhC+>{nkD99&`Xd-fU^J5Cv%voH?yVOD*Y zr8j=8V~MualV6LtQ^t)9EaBhXjyH_|c6sk?6$?C)HsZ`8Z9baED;70BtYI<^IaD^V zX$v(o#0I<9*^ds_u;4B=0|(4h<>OtGwJZFdJ25b4`?OA=mdV&^{HI{62XidZy8mB&q^txfEO9x`UUF0!@oPHVpMfU>yNRt>x4S;TSFH8H-3ZI0=; z8RM0I9`abDW95pLi8CFp%H!;1-m84p3;iUt6zLl_vla)#t+f?XH`s9*M_HtG|J_8z zMij7l)NP-Vzv=p*@r1!DcD3%c5;q%aSyCk%6uhdPI>0pri^PB83S$S z4sY3Gg^qzG`@GAV=3>h?n*Dya_da7_MFT!~5#bW_QrBw}a*!K5&EOvFeJHNA0011_n2JR8u)y%NkW(+_%{z zI}VQ36l&44qqsjzXkFa*i{+kB2Ch059KR(&T;EFA!B!Q$tBofI9~}Nz`dl$3AHL|} zoRaC{e$wm5D@$Hx>}jh$yCyEyN?D@n_nJGn6A#Mh_M_z4wiMq-HYC_9|96 zZbTTP?Cf^@`Iq%-mYY8ZlpHKrP2IM)k&3;!H|;^=Ls~Ym$CDo`&73({@64T`N;9<# zG_N|mzH4_ClX1=7U2m&T6zelRGiQIgGSttLQ`YR@lRbL4j)8?jTuZGH&oA7YG4|UA zvA;$6CFC?Ka$U;|@o~#O!#W<pTCsi@BMy3msXc9#btOiQ1x?ayNI!3UXt+sN#8E*YkBhP9-Tgv?V)0Z*yY|h z)uOXXp80)Am#}#XZW|f&e5ttpjI25)b=-0lyZt7#{8RD#09fKhTkD0rbPUYhH@dE3 z83|uU7B1?<&e`1D-?Wk{AE&MuQOUAMLk8X%`*__0vA<-9^E$K7gHo*-xaf7kDL1w# zI2f}(qO9twEuVX?F-s8pzu?lZH-W^yz(R`oS-_o;E z>fR+6%j%enXAg=C&uAS3+d1_f-ua`7#ntO}w1Bw&pxjoitjj2i0KTmX-#6iEINKX> zc;lqC8YzD|I+e5PB%W8Pv)EEo@n2L~?LG4Boh=8CcYW#T;P1r2q)~OpToCeImlJO(xbY(!_N(p}k$#$R-vlM)`4bjZnLIv9CjTqC_*J7p-&*?46_NKn*j* zcB|Y}(|RbljD8`>txI+YW8i|}HGXc?is!5dKRdKbJvdd%z~66PD5vyPGVs@WQ_lyP zDn>cavfGMp{ zFAdS-@)3pE0~G_;n*2`c`j#3uY54+v|aKP4U_SDhki{g#lBk5cKd__p<%4L=OKT)=c+t*ITJDZ!xk-*v2d^3 zXPS1^G4Oj>1Ghh$R1C~2mp*_MR5Q?Z(VW?pg#Cs%uT`7p|wojd=y6&A(}@m%FUnIXl(*ni6CvyG+~(T1_WOy?oLL_1)is^`jo?W^FF zGXfUP3={WLbDvuj^RkRP%C&48UR=$<=0nyE@o*1f<{7sfTv=Eii%h-o`{QF3lhGwo z>2$M=j)4h&c8Q}JgfVdAt&80QPAhoUlJbdzw~Obz2utQHp#5txuvE40kq^Xmos4^K z?O3^7Yt4?g7`n}-aTrTK9y4`ytb$j0KkuUT03DO@M8ACtsxG(Xpyr5Yayjw5sf@Q; z1StBBQ!()7h3+Lc))Vtx&T}H-c{MQid6|pazt7G5FPxg%E9UJj@!Y3`GyBw9=U7w0 zWmMOw;#F+FiXAwasoN%=lLYH3uXbCqTRb;F7~(m8@WhTf)+#3a{Nyn~c@$U0&AUGp z`vnrJqJREKv2){V?u(Az--m%qmq&l8;iTY|MwqA7i`Fp8K8qqor{&zQG{EdHH@;b2 z&@vhO6|Md{{FI8xxTeT&jqg|=R;_31-cAAHd4_Sn-Yu-J;Nb7np$AHd>sCts<@9N% zI1K|29GOtHQC;Cr3736*R;XV^H=gu##P{?cDkfucM75}QV!j6>T(w`)BO2O`KGVA8-HW_kf!!1_mwouq?`0$tLc2lHScGjFq|6_C(#PsyrU6 z6SmilYZ%yL)GN)7^0wT;`qKRc)xy~1Lp7QXkF(Fm+Vu@Qj#Yo=qgAsbaea*ri}~$~Px->%hbfrHThHVKv0qGiy8qRF zHHwBY@K}rJDk^b(^0=BZX4x1w9zLkY%gN8}*~bAVs(C*Z_p|kMKez5|pXLfq=^v1w z@KLJRoHpV{f_QG1vV!;ejlqjl4BU6*R^>OX!e25(f-@Lmz ze}`E24vkt`>i4E#zNxca>GhvfOvY(}9by+7g)#7+a{Y$kO?6DhK{+>gI=k}tpPQ#A zS6Ae*Va^2FP|alArw;2}pFUTN z4~BTs)bH}JHfq*u;GjD#)vA2V+8TM|S`+cyi=O7&YM<=!RqW3YTIx)j7u&04GM4N* z)XjuBGRn#oO9pwFs~P2n$3_RtTZOUt<2EecC+q+RH!|taLcD(waVuiMtHzdp@4rq7 z=A)Y|b$+-(!(_Dn+;;x%XQ9ma#4_7$bD5M5LsNFfc2F}g=l0IfU=<6o-gV@j1%cy43pgV=M<@s4>c6Ki_3?<`9O-r4cReZFH5|5N|L!Qt;!jM5~l z-Vm+W*8`u6ZQ~*0K8=iChfBCRSO;>yC)X3siShWt^Wpc+PI_`M$IYfoG>o!$r_}@Q z-BvIeO`Cq{JO7Z_$Cj}1fF1)p4=cIZ!2yFhD}33Q!_8c`JhA%wTy8NnvuiTAZ1rxI zEGek->zzxrEK3{xaK$qRPWgReu`?CLd`mf1JZ>It5?l<;C-*$^9cnyNU4yyk<2$Jbq{pKQVntYz;BLfSV#Wq!y18*Kv9- zUc0u@wnk!qobb!ojB6HOR7}Q_i}!{c$Wk&HOGH>MjThr4_$uP@)AjBOZiufR$qJsw`fk-z#X4lL zgkO%BHg`~Ya`0|Jv%^7?RqS-nDI??e2XS!jEwM59Jcxxf@9jTR^s`o8TaNb==gHXb zBzw1Xv@ZkO-i`RUP3$uUZtc?fx|wAj>p8A0cRqtLFy}S2-n+zeB~v!{8*(dI4-_h;_@*Zg686n~Sf$dY9#KsD)=&t+)<3U2H>Y3Cd~qLqq3iFYqe~sQS?@KKMvw5|Iom=$TT~3ZzOl@> zt4SW5(&X3nR`1uV76S)CrlN7AWUjk&GBdn4-R&cQ8=$Fw~7BaqkM zT%Co8a&z7VdpzBwWBro?uNI9~@~cZ9>|GB=pa_B}qam>&bz9lUH2ZDq~-`*pbyF;>Mu ztI?OXs&85`_to`VwiWlIK$kKr1I%vK09r6wPne#Xe}q7Co#vcmTQ*`Y5p%aH5i2JQz zQu>nvx6Q0sk>N8m6WeI=cz?9IzW-=(ze7)(mm7x#SMlJc#cM9ERZ`p^HNY2M&ypTg z^Wc=DjyD^dG*ZW8EUU;UJJH^QgJSowGuvj%!IeW}16sYS$@lJGvUI~%B?H&LsPuBo zJ73nr=D5miur(i2>$>0W63RRlb}C!ks{xMT0i|72n+m?zj77h#k_gNCr{fQz$rtXc080gM68<#D^)02x@1>h z2CnSTtn$ydDhB%fa+`j(vx+TS_I|_qhCzJ$+~D};{z1I$q5cl5#rlcTc~b5AQIX;~ zXu|dClTB8YQZdR~L))be8|KEhUogrxe!!S@FY_0wk6Lzn-S_i{o+$Y~pJTf!iGAF* zV?9g16Y~mK>&>wGSucGUs4gG*>$iCSOlclK;S{yu{9#HYMlN+BL60yHPxSGjW=hwO+&1U;B$}3myMjB;Xb4s&L#Y`Ruy@MKx zJ4Egld8|I6{jgj2#6GQ_XJ1&X*tAAG7ilK$tOfYwV~;}j`~Hd%&p({}`lZSfmXDt& z_>O#ZOgv9wTrx9A#EY_2a>$hxl^i)`N~IN*Yh}9e@0ZQ3Gh)T_{QX#T{YgrGyl&W+ zj*l1vExwNQ-?LcDz=!26PCP2;!ze4yxMUV1?mzUjtUgoq-i_bi} z_K5rS;EM3gCT)cMU`YCr3A@GpP0C6MSFau2CEnB5vs2DMB%WIX?}c|B@@1abM{HZC z*Q55{2ATVOpj9J2^qOCT+RerNRPp*@&BT9k;r+`;)_3#Z{_RW0rKCFMqiLJrHmi>W zv$rpKpT_-FdE}i|z5I36h5s>Lvg%lXH#5Y=r;E&rYAD{*C%ocSBx=2hI|uhH9XYK+ zL>PM&6_>V0(xU-Wgl!0x1w)mdeb`oTBOy>`g}^)+2(2#)z0>ty<#|M}C zJkg(n$=g`Kb}>HRNgKO=bbFnYi93J%DE+$@1B)qpdVLn}g@JuK4?0-(jt4I{S`n;` zcH=AU#|?W}RmZ?39ltj2*<8o&R=XDU@?LNr;~ONkY#66tpf{`MpSplC%0&@#>s83G z;*?J79o=q-eLe7&&*dk@GE{8V%o3Vo$oq$kgh`I00#)|%t z^B%3>^&XWv^08vQEupBj*J6)QCZn!O6{As(b{yO!PA{;;hJPz>^q@+j+u!TT;f&>8 zUkX}kW?YK#Q?t-E%}1CV^A<1g2OsYu-WxN-+8Z2u7tV6y4oAL4+K*@KXjH3C8|#bv z9j*V^v=i^&Z8tt27<;`Ir<}XUZs$+&y#Vmugx1|QrZPt9w!d!7FwyU1++@ef8H@Rx zvXOZ0r-x4%GsGL7ood(rt2fo!CcZ}iUK!S>csDUVP)g2qT+L7gB!9o+J^vbkk_ZB%6ZQ4Nf_kGG>HFGcP-tVbhe)c$fK#@6A%P8YlRc?E< zyx6CGIdR`TaeWBBo0svaQ$;m9^>kDFwW7bae7(r$WD$2Ru6OJEuX3~VuS|(!$le1OAx~Lds&i3C=(SHYxs9Sb$ z6Y*Yzo;C{(ULDXuJdauJ#foA+Ov>En;v4J!J{K?eE!g3Fx9uLBGPM1-F5e63STE(U z?d+&KAKLc$pM`fFrOXI(-o8cnnKJR>kE2&b9?Q5nbIa^bUZL!t(#t3$=)Q;pIOF!C z(GC;C7-jCfzt5Ue{%+b}W%DMCS@;d@on>XsddIFAV^iw zOzdNQuD$k=$OG{Bsy-Lz+UuB%jyqdTT&EWA14+2^hq+bl_F6{i-nQZbZM+Wy=QsV~ zUFL_D_5T{XsUZtx?JAUujEZZR$15ZvxfPE5>~3|ztFx{1*x*{)yD9C(cen_{K21J$a$7wvW1o}p_ZGAi z{x-ne@v|{wGEQrrnDJ_o2dDfqp=CpTe+n7aS1wTH0SrYH%$>J|9h4PSAIE(;Va-AN?w8EWI;$Dw+?k&oezg|w z!LKX0Hd5F@8I(5id)X&77}#oyddoqPF%Ds=q&WnBK%0bK4Web++7{>lzGxz;1F%HXkd+?5jJEpsH(4>&j z(=|#*J|>{r@T=l`UB+$fE#HN!7^Uh^z1bf{9$XqV;n(tZZXB%V8`N$Ox>Vj{mmQgMo z{o-}Volpk;@`*FuBCh8so9&+3VCMi8lkxODhs_Jcca|t~zfbr@d{;E*dxe6NE_kn+ zUC)irom;$F*E%{znHkNxU#R86r#6XDv~tuj8FL=T9lS@yUU-zt8ZFiZGB!3Iai!F$ zP)6C;aa~jmXB{)d;se}0o-Xv@y;8rFFzOk`z^@s%&ul6!_Jt+vUa!O<|4VKhe0_J? zN;~oV45jI*zRSusaN*lV4LQGgr8#%}G;?u`cz%M?_txtB=f*2J_`T@G6kXpi2Ih{l zPNF~NjJyBF?Uj3t*(2`rf|{7#+uCrkAJ*zfwOMCF^LWUp<;%&!AGz_ZA>N$D*=04{r^q_1$$meI8cn=?3zIpnAFtJW8!z-8OxM!(JB0yIsaoOZmc_qb)}xIO%f{3j1bQ&=~;{4ci*j4F-l*};sOz3 z+&o`3ti1mm@!d(n-1}8RFUqX*uMXN?4`txjj-$5uiT8a$mtCJ9J{nwufs+o;n)OwT zOW^op8$yfQ=-8G+{pzkRVUb6*Vprf=@w^~q;R-vRO^SEn;Cyjgw`G3|ey8d+#{Hm;>N=TPcAc7vCZML8tzot zaTyiWqNYu)EB28j-0SOIAoYZjgGP^1wxruB7`S6g!G6P=oAV{jYd>=k`9_)2K5NO8 zjpBLj%TKyHiSH)u;gw$26zea_xcL2MH45t(=$|>WQURro$(Zw5vB_;!j57B*E>X@9 zJ5(9dJVHDl2@aU>{K*=zk3{)>WcT21Miw0W*kNmr;$_79Wd>NQ>)!BBVxDN;xB3Og zjsZM;O3_+(#kfM5`+XvJ6-#-XKBZSk00$jgM*gU<)% zC>=@_+q&#}4c6)FxQwzD#P`oW9vzwDqGeOAg$1_Fa{b$HMSVZBmo@kyo>MC6zW&7g ztJU*Som}7I!hLrRCg!}b-AKi{4mmg`I$X)YPMKGfZ?3s<%G~d6*@}JnobPW5wn=H? z)7DFu$9*1lSE{dcJ$HWgn_td?f%Oy4{&Waa@~1wN zUMGwFgGy~oJ?%v~8M7TN9y^NfCw;sgRp3G|7rymHpEpcgpT=p^Mr<(m;Ad;Rf4*0g z2iF`@4(r=g$$cJQ_gv!c&YLQ(99~>o%RsRjeX?Y;3kMhYw~3lvUBxJK$E#5B{7V03 zD`z(J;9!Hf&97f68NiG6^14vsl9v5Qw>_}%T-7|L7B?AkyQbI=eQ9Om#ef8&(RaM9Cxc>Cnpt?F=tz}XN(7@%>DkL*ylTN_gD1RvFGU;@S_WF=d@#yI#bjJ&nziI& zdj+G+y+0tHCjcAxBu!b~-i3kf>fMXxLI(RBsuljIpFIPMv@F^6wySubP0y>1_FaF> z#P?ANd)+O0sn%c@2ELB@(7mCMLFW;F)*F3#qMzm5AFriiltE_IFS}K8 zWhv|Y27VLm4o`m4y=PnTeGS6geWI6Qem?c#?rU*Bd0X@B<8ykeSy_|$TfN1&Lg`a{ zaQPDAJ}PD9>5=1)R8%lS^e$bq`|%1|28y@lmcB15;!gM`q0F7}qlI5Heaibc5PsFO z$Z_MBT2Jwubk6^KAjXN&MOPO(6XVY9+9~$?i0io4V?3`M*{aCnwyx=gR+MVU9U_;# z>L9+8*?8f>w==5Q=P~N!^ON=~+`0Sik!6nrtC%5nxZTii@pCPcG5VqN%WgjujB=)r z;y|3Mf>Am>k6g5{sMx>NvqrT8ES^3TFi$4vP?igHgfaI`B}5 zuRrS@bmMCqw48BEEApaI#_ce*GLPFGHmhogbspv9GM3BzML(CZ;`_4)t2T1xltYh> zE@)$;W(k%87VWnm?IU ztm-!f0}Br<*1oCO7nX736Qdvgq91_AYKaeQiu(Zlbt-2~1nDaSBpSxNH&h(w1ZnaLwWDMw-z0yXsBV+FO zteV*V{jSx&G1+FI&5#Y^y;TXfczbE$gOyBteK%pWi8BW??=PQpINgR*+MnL?%Sj>r z|B_i}%ik311(2T;|6#^MB?F82pIF_8yYkqMs|!u+Y@J7&8{f1I#C&qMU7Z!BH;d-oLOpFDC<@2K}EMS3Rd*E^H#r& z;yHUgceM`NnmM1n-QUow+H!H9M9=DP%uj|c(J>j>P>ahyKZUVLS!*5r#wmGuSNqfD#QF!! zeIHTiCu8n)buaOq`kd?Rf1}%uwY7a0iuYCt@BV(5aaZK;k&<8C+X?^6*nd>kh)SdF z+5J7;oo3F{<)bp#_|m1%VT`ivoX)2goEG1^)N}iX*{k;USF&1l+)s21x8Y#i|Hs;W z$5Z|P|Kl&CG!U})Ov60q7{|fgYRE1lA;)T}Xlc@*NGT0bB(qeS(&SN*w2MkAm1I?- zt)k!K93DQe%hT)m_Wpdnzt=z4OTAb5*jKyz z4g==Ck!E@AWFk5lN((Gw4>6(PgGhL-I<8})kqeVorscZz+o|e@u=jls@(k!K(uDOH_yL`^T)^dd8Xjwn3!w;CG4h1$F#V?^Z7Q^3a~RoBvIYM+nbxd}8faGPoDH2m)?14w+Sp`&zA}g_(=-`;AVcuCG=0abt`++ySuS&K(yZA z9ISN835bQ9Gp(cXeF8B&MrdnD8Sc-acrq^1`pZpspp!obC`_+s9?(DZ`FbI97Ct{x zy?Aiij)PfvfBN+{pSy0%KKZ$l`29%ajX97kZ~~&0TiRU@enC-Q%zV>_&fOXQdLN?mbba>xpkIgk<6rCT$i&CjC*0B9Jy)ks*qtVri(el)Yro7E9)tVBh`BT0 zXbNUH!Sj@i<*B$|iKznBSiculJiZ3TLg0g49zf(B=DX^h;IDMWr49J!C!Sa~l2c@9ifWgnrU`9z0y_D5 zbC>Ob&b`A*tM3OJA*$7iY5`FtxNe4Gdc#T+Cu!UV-|G<3E-63!aSGF%52#qO5Yg?^ ziXaxwGogCyFb<}cRYzWef7LTC*#lL@hU+>z@%_jH)9Rv>9ZoPmd)mdr8{I%*A!^z@ z1MkE8%~^UFe|@S=L5D^K;`<+}#aTg5T1VpbFN&H;%Z^Um>jcEe^*hho?bAc{o6%0N zVZk7;N!yp==Ubxnk?$>0Lu`PkYj|#nOOgltUp@5(4{X`)0Y`=yFil3_`bQd7qN_h> z{KfqyG}{qBo5~JZTOCJ&S)HBfGZbR9zgY*+M^>0 zqiukg)XlV!v120Qq>zte_uX>>s-{rA3Fh^>NRm? z2XJ34)sm~SI@2CcK*V@?r}*-5Hb4v$wb_uloB>FE`jKZiulc!A&3dCEBlJqO=0edc zl|Ikl7#Tl&-J`Q{TH&^`1s?GK>YPnZ3(}7|0a4yoBtQPb1VnWgjw9c6%n67f#l2oN zUmg)#O3Y7uS;GQX$?V%#=V~IN@!djSWkFqFB)r?}#lqK3imq0c=R!X_0o9qVuYRt^ z&nI+#jx2rMIM)LPa&YO9%g^7lQ0~TW(PDVri)!Mh$ik(@9`JwlnFvn0DQ5ys%~jI= z%Rt2MStGPI<33@k+z7KTNAY^F#+Y>;+wsq*Jf%Z)R=gVG_Z!ceg6;qg_-nz(U9UUE zSD75`W*}lz^kwhk_}^u|4ssC9!?|8cLdwVS`;RDTq@CRSO&K-r^|GsnBw&Ziu@e1DU(rj z&X$o!-8|s`>PgQH7Ou2LT>Hte9#VZ-ei{h_5@`wpii)b*lXROZ(n^Ozi!{l!t4=+~Doq z6KWGmaQ}Fr+Ah6GcuqA%{#=-!nmzMju>A9M43pN?M!TgxPR9FQ6iXjJow!cS1c>oA zf$ts|vk+D9AdC5(SxhwK%f-*KQ*a(1Z@xDEz6MfWL~(GXkq7*@+QoWq2*dkwRM(!l zyRF697!72}8s%;aypJ@H{PU{@3+;Y+r+E@SuU&7KFwzEm98)Y&dDAvx$rL0|(0bG< z&k45ffiRoZ>d0@YYe6ZV8%lh%yybK)er_ao?lISVkJllGo?^t_!~0}Zd2u65{P%Qr z<<#cC#r?`ejqS@K6!CdNKw)%?&jXyZc+c8-kv$8Dty$BQrNSm5Vs~+}vLfD>q7!!s zytwF!>o_Rt+bd~{;p3Jlt@~q{wJpxw>-EK0}hLT5Y5D;y0Aq1 z=Gb#dddTk1wQ*`sSg2~*@&&>8JU);a8m*_jvRN?g!AI?F`2K-TsYsK-$L#QY(fH-k z9(X^E&W%L}Bqrj01UldN>(^U|+5qvo>Pa(8{PA(2gPq@=?eAWhz;_Wv4nRx_lxCS1 zO+j(h8{7}$^_ct16|$@GJ_qr8%FA7wUuvQ%l`;{qo77Lv#<=cb`0LR*#z^FtQo;l@ z@AA@Ja%ZO?x1yuBl*Mg;_*(5#k{90ZA#PC#K5I~kk4tGM=ARH{L>#7=5is`16!d&b zzDAWj6I~RNtd%uqqzsw+z0>KR^50rd7uAc3l*4s^Gzxvbc>cq6TwmHN zS}AtE9lw55&&PzmS}J1$#5#dt395MgipW1-%b7yMyLDIZ;^&J!@jgxiqpj~&9Ag5Jf4<#l3XY?i$KQE54(ae={bCgP zIcE62MLN;3RS5UV(RqK)I*FJ@y@bd9>eUX>72cXEVbPb ze=aq?Z(fSyuYZ@Y`WgG6Zb1>wain^1N%8w!d>m7CO*M0fKgdF+J5AnXMlpdmt|-ER zg~l%nNWX^bt4>^A*{~2lx5q8Mb9&4YW}iwzZwJ5GHx3c&iYv=DA5cg9ISIJ`^USaF zi=z+P!{+&Nr=xHm235PG-~I2`vw-Nqy+3v1GA7(Ieg0zK0sB5L-*#BTubb_45iiIe zALq}5T84etXAe=O2dDdn;B{HwzcV*SFcC5HRGH4--f5zE5JhMN-+golYRfYYeKx>!ERp!QEw=i0Y@w z2?8%p;hgTd&(xUfac+atkgCYJ7JdF4I_uGjG@LI-qu2E06T!(&&=tHXq_mO&8xan; z&zOMp?=MibVyK|YXO=&Yy=4Pl)5g@Ejs71GJ`pHdf!CvnMXnXWLl#=VC$;5y53XvW z#qSqpw64SJv5N(*tjidEmP{SFeEnJ$+PF~eu1vNfn)AzBX%YUsR42>e3ALZy!Tdny zW2FtazK!Dkg1YVcHcUk1&w*}pgBH*G;$vDL#Kbm)8{OR6L@rTV~L9_o_ zH?DsBBT9$Wv;QUYtCYVFhHZ0i_2I4G3BL?@Bp1tu)4r2F9~O2)F`K&gJe|!3b-|U( zI|~@Fz`^W-dNC87n3!Zc@q-&IulhYmumsl$_j=y9OmO5+CZg(<6!v+cxh;sUsa1R) zhV!iQZ%j4CIW5!tJiq$~<2*5n7VgV9TBW%Dx!1yzQx)uk@IDU3{A`yY&0O3+R2HXL zxPytP^5>ZN+Vspb`494Q)*H>?4$E}GAN*WLHB4|_g)4skqPkOa&@rcc26Xsj+?}d` z=af+tanBXZ{p1e3(}rpweqN-rYvdE0o{CY&CZ2jr-*#!7=-fi(b@>K`x zKLjiFsirkzAHvU%RoX6Ro$&jBxY2z|dJNuoAoBC+S2IzlyT#(f{Vbr$-+#sRq*VDi z0cH4g<>dwZi~PAg!*Gt|(;Dr9qc$*6ZP}9C`KpM{@Z$!OwX1A_>UPP3gju-^Am(M3 zoyfVbh;#&BwywtO5Gskwy2^0gATf~lKyu6-==8Qu{o;6-0mRys=NI$pl8DchKfS5O z^~6N}^=34_Z;EMaYP+k6sD92q;rnx?GY}7RyqkPq;_Ey`%~6svRbNcNFfo4Umm4@g znBra4s#@j|C!l(Kn@dX;UdJH5oR+iYxD=juM&pUyp<9A+e&;|cZ=GJ$eh~NXg}Q1U zvDHIQ{+i!O!Tat+-dJtd&ze0sPxpIsp0EOuUrUnL;Q3<%h^Guc5H7_z`ro^_AJ#kf zQ)RVo%Ipo!Fp#-MzLPwq1bgzn4%mQ@w)NF1SM*TY8oZD)MIOoQ5Pz9D*aQBzhCdVG zuE+mQc=fuvZ#aLF_<8)2iBCo_(1=|~r6N&jKtJjltq~Z?K=G}|*B?KI^KB?TJt^UG z>=CZd?RCxZbGp;<*Ap@=dMy~j1b#kit}!aeby;Qg)dq+P0jnpdI0lb#&(eHD+r zZs`HUJsTDp%*Asfh*~wC)md*CP}=PkWhQ{nUo`q@4Qcp0#vPpXX1?D#nT4oYjIR#7 zgy#)V-F)WOoDyd>G>_ZGnepBoh(Bg+S|e$W`;7`tdwkP!hY=%ZylfTlpp`eirV9W6 z>(R=`uEd$3!ghVx4xH~m=Yzm=5~7b85OQKg^koAEBC0G(GP1L(B#)^J-Zj;~)d^5>FXHbD8{dG|{O(ZP5L|-e`7KkR%p(1CE-GI*N$}>~KlvR=It)ZtnN=<+` zhhfJD>kK5?=PQ|5$XX&9TnO1E?zEw%PjAwy?iZ zIlp<3DWW=l$LH_WuiSyC7bsBNHjaVlyt=UFobH*SK*U#rZ+dwBk9e(Q&?4)nOhlE} zwh~@v3&ctIz+q1H0MUuwC$6VE^^;#uD`pBWDmdp~G}-n%uV-06M@h)FGv0cr^0ukI zwjmRU>$haBx|NOlfCi9Pj?MYRL`3Oa$D*mn91*{cRcaapJ%d# zAga96%cdaHo_d=hEHroAcmLCows7UNR(3JIuitK1t9)vWbD#Vi{VISig+}k93k*cH z(kgUI?kZCtZpye@a9%v@pCnuo_?*qwfMe< zn5MF##Q&}Z5QohV{;+ALGZ3GdpA8*p;ts^G-U1@oS&oQ!sx2XJI==6r)6Z8lezlSs zBHH39rLuT^=YMPa5%W9GUf_9L>=8x6Tk)KuUisJA3rW_*INz$vZ+*t1K6&-buPu7& znXzkLvyDz=X(8e&%_A1VN3@WIcDX+R|pY z+X7K}_!bEZ)? zHHs^eXllTOK{pt4nupr-DXH^ga0||%%xB&mtchQL;=O&cX^ul|fmpgmdfSp_GZd%! zZk6&KGc?xmXg~V-0PK91#44ruB1_e4K0E*`$2jZz+( z#x5#TL+*Rjr#mL&wxwQYsP9j^XsLtF;#i2!kJQndTmDNYIqUSfZ~nrXpUW&DX4{2a zCbI97zs``@R4P7x<;^EAaDTk_ai^c9_OSOf4rCOxp;hDhxVoFW0jQ3f#CV~OKR=Q8 zn0hgXf&NCF@J+?@kce@Dctc~21q69|aBt(!vm|zO(%lsdsJAeBUyh&8ABbyinxu_? z&%FNWJpj4Rk1bE9>L6mChF$mIu>z15KfTTX@B0x0c3d-<{tD+y_3CDM$=>F=93t}K zPij4xJvop^#=-Y|4c86_+`r?Q^GDFw7LJwY50XoVJ_AMHt!sRYb4J&HFi?06h{&JY zDz1l!{Jd2*UJvHwul_^-{GEGm;d~dW^L7WCigNIEXxQwp9Vw8~I9f>Bx>o zbV~CADDL6?n_ipr8jM?;9Z}?2>8qJGwxFN9JUi*32_gzuT6?_n#Ccs5dF^i3EA4^U z$(Uhq^Aj5q+RGYk1swXsRWyU0vjDb=t1vo-PD05N?;K+1I>FWGpcs{K4Ma8IsX>kC z`0;S(;oBc3!c0Uo87C~8@M9txB8e+g8u0$;+{;h9>fC@gzGZi;I+AtN$zPtKgRGa@ zti3%QAJ@I6HhlV(r>KDzjafQE(a{vuEV?v&%XSy|dde-gyxG2={CTrw&IpLg!do`T%eW!pvi4Bn zCGu|Qt&xJ!?CY{HkZlQ56;C+1qG`eDv2r_S!HhQ#*!p`6`kZ*zyRt&d1u;~|#_GNH z0IC78yAMt`H3q8uIWW_3PGLvP>9LBeK7ah2@A~422b^5_ne*$c5q$i?9hGKf47~Q9 z8{T-1aIac>5=XtTGltC}Cq_$`Plwjj6@N!o;W{OS-Iv$MS;3*Wk)|3B#(=w*RAYSo zP}`V69xpr1P;f}tXK^QEkV#K^m1@mK#1jY4>Ley}5%Jo~8J9ldKNBs2^`Z<*@pE&p z<;H80pU1zqrW!eVBU62{6|x({UO#JAP(QWSURlI$HV3Lq|J1=|`0JgkOd0ZZ3m26r zSPqx(FbAUh=|+j;JGqFs{GM=w4gUD={`>({JzaS_au8uR16CD6(5FSQ>F#N#dp zWZUI$=0N8(SvE@F#znbDhrN(rhOgVb^4EdXy#ar9i_urik+#&}eVpywKF_7qw4e6p z06T{15sLqQ<>2oRk92zg@$%fzEkZYJfzEqxeq757HU$5SqNuVIH$)83+?6h}Cx2y`6R&xs+sX8aV0SqQH|K3 zEgG^b2#C_l+bV^Bn!~g2BTlvr!~F-n9+le@aqv8zXC0%X-C^p9sE*%V+_LyK&WWVx zsD+bXhp<3o#q5tJDO@Btj#W22+y{sXXr`Ktry)>1sveP)8{>yMuQ*444+kJt-haFC z^>=e1y0olFm6nx*fxIg-(U90F71)-!Zhv z9Kv}2*&0IC60KizW2eD$25x-at=y-*G}m;Tz7-nCLmK7g)OiTD)G3AI3NUVfI@s|%T9~&d4bM14{u1!H?l^&vbu*q{rWtD z+Zt5yJ`2%&z5PP2nlBJ@mI`!5GCYyTL6wVI9R@(>l;GRr)Q02vj=kPFxA@rI8dF5% z*Z+p80@3-<7X=Iay7Ic=Apki27DBH2NgFpL%$V z=54kaB0ioeI8%EY7l^qJZY#dcOzovre;=3^Altq9s#m zdzCUoG~fE75s2$7dKI7fGGND4GqmW6-ODKwX6R~N!aKm)jOR~rEF{hiuQbOz58?DbAi(3gngJ}`OJ#&2r) zx{*72>FOyPmHWB-mfon2qdq_tPuIGmnUDL(dri$xtRFVR6H!%}!H~E(!~hy{=B51> z`yX?Edt^P!bwgAYUfO(cTH=bRitqB?REYZ`%l1EV&Iz{wv$*sk~Ky@td!8sAH+fd|RSAs$iahYb=DP{-7+%SZC?`-x&3ZWEX|&lPE0E%w)WX@x%c4ZWg=uU}N>wmqGu9vXzG zK7Y6L@;NhaAZkt)5!{x@!3`CwepK96g7)xVXH?&r!`~*uSph%wp~B5n&csr(pZxyy zWuEAVynaDvg)#^@z7E>lXo-lAPiJUUg zA^KLbI0M(&sFd&4 zjP&p4AjKt9=N>RaU&2&|x9{in)6cb})nfw}hzC8kd`)#U1v=Y;t>>j&&`11oTrJ#x z%iGYx7D`SKo2{Y@H_95{*2=MAj-T16WM>v4^6TO@bAg}B7Qz8VCtS(DUb)Y8isg-m zwwWQKVU?(p#$id&_h_5-c)0;0UUIcxHg^jbhf%<(ByWaOvmISB}dU zeC0r*p5o*5vr4qaWSdmK@bUqT&F{;_B24=n$6Mg8F#uxA(3(qKLL4Bj`t!}Us9Oc7 zX5+C}o9kQb20{gVQ@jApaL-te&K&N9DlHab$VAo?Z#Jo3l03x;`F_gS8VgArPA&Wl@$ zxuQDbvWF-g#ALCj1}&-);#zu78T50%R#ftYjV zUFp}Go{0Fj_M~6vA}%7X9r-2V#9R(g&3UBU-HGSJak>vbb1-JX@At7GOJ5p@%6f8n5XD7QuLvxhyF$+hs7lDbU7UlD ztC`7RneBsE{p>VqEYvQO2KR8$pH>Ox@NrzupPY~0ed_xwwO0@EN5s)9lb1TDaS_#q zsvEIae_I1TpL~qcfb!?>bg7RdZS&omZw7@}nNE)ar2g8haqkMp45am#)Z#|&o z0FR$}JI@b{N7(QbR^lF>k?2QRQq*$`3P zaO=&?oF$6TRwo_jZjcApD->Yv(92YPeQ2xB=26oTf=zmdg)w-NpAI*U(zklChEYz<|=4cA3 z0&8+Xu}8fM%$xVjcUFTr3VRVDW44?F#Pwxwk~ht^LBs18H&v+~ z-{1qqt6WySlJbFN>R+Z;<{Ba*@BYLF|GZS2Uz_C3oxNAdEz$bT?tXuI1I z+=tcd+sM|Ba6!a`yA?%;wlff&XESZ4zt7{M{S{@tY+TnpRHSRu>`$tItIC)$viP~9 z*K%AQH|M1h;8f%zq4+#TwP4hQv{Cr|-Lm%W{QH-c`}BL&dfa+~5e%R3c3O$A1)@4= zOV&$fk{enbn{{V0n*&7tdM^Gx==>_aAn(p$F0yyWPg)XVVZxU$#&;5Mz4$oX*`sd* zq9)5!q*aw+Wb4evrTG4tm^#kD$T591(CIP!;+33zcpbFY0yVcu?kl;7&Kl9@GNB&k zU@}fe`^?rLRDX*T7GTbSyazkRRMP$W)_G}JT-SuAl{duy5hE~ zvhESQzjNZAQD$3EpZxs3*D5{veOSSvvIkK;KF>vTKE5J``x1J+I>P@fGOD)D8$MBc zS*9Oq6~Zg>udRXVvj_94V~<#%5piQ?zym6>4G;0h->VFwbMSzLiW|-UzhNG zH*xYtE8%rgMnE-GzTQW+__;N4$29*f>MvA)&gi_~iOzBiL|mGdbt0&cjm&;t3n`eR z1T6((U+jMa@ZZP!a=*+UK=V2l9X3V>6axN2D=BEPQo zoJ&uAEtZjgJ1A(HD$tp{_ttX>1xC+tb&CW1e$A7Z9DJcMBsEE(?f|*t!14WCfs;pTD zs7UayYJ9#X-Z`o+roG=25fcUt&pNi(8ieBA8#_%xzNw;%(`QDaXet!9eosmL6LmI=8-Q9kgY$3nC_6`=;wBt^!nlX`HY0 z!~3vAThX7h_P=&R#JM-6=Orz*1gdf$;=;F{)`fvo@Tx6X?4kq%nK^Xiow<8m(38WP z=PZ3?1RLkdS!qmEp>?aT+r5c%xyTH+-DhNYq9GUBd4MZhoQjz$iu-GOU9(ayd6J$I&>0~+tuhQGf8V*uxM$xP>+4XTe5k{$&j8+l0ZnNjhRe-)uTtrP z=)A6)G;TM(|KjhD{cbM(e|0P#+aX^m19Z;K2#-GBfY*;JJ>GY{a6vfDPVhM1pCh^r zmKV4qt_pN62;4nKda*JPb+i5$Zdz{%#C43_o9$YRfjG;VAuDU>iUzW(%iPE2n;B4@ z<8bBh*khw%AT#&RQT~3x1yLO}ifa<6?}`R8R#tsave}o?|E+I})_UImV|r+2#`;sU#Jv%lwqknzq%w!tfKT?EDZsWaLuUil&7 z74?cD?c=&Yr@xHU{v=IP#IN7_=7N0kt~sSnR;E|&cbzhz2YfW zpTcX6fzByc+tX_cSU}|WU1r$AHC#?3ao@a8bKZmUNfj8#pl&q69Y62WS-NGxlcb0c zL}yydRrizOmSDmQ(4J!4XHs*GnrwIp|k37*f-k)N{O6cH~P+xa;&j1$_?EzvcP0Do7Tnz7B0E4%ab;fxPjiNGd{41?Ou1 zyO%xLcRV94fzBo6zUNpcTu^e%goEgXAKJ^%&Ym6~(x+Tho28$mGEg%wTD(=|=C zzG}A{BA!nTEwC_|2~_#{Z0mdT+Ww)f)!$_rB{Cp4Nzwvz1D;?(0ZrZO!pS zwawWvbFZV3s(AsVC{q%O0 zD&c?y!yGXk%f-Dp2}Hmi2Dcc{OlfT4r@G1&*fyQL8^d|dF5SOlz$_rs{5=W91Qd|;6C$1M8*xR6Qe${ z5OLWz`5_vs0^v-tQRVQ1oPHi$8v9;+KL?1Q4Lpv}Hf zx#c($5syWU^q%%X0jTop7+3bzGyaQuxmWRgL<~LN&Jes#`87g61|&bLXR;h^jm9L2)7nsCuTG>6yGRhSn&Y zfV|HfA}qhK^|#6O$)BUw;DU(!ewX_}XkkSJLj|vQ5!vYqDjgRBq2jYd?rJkmpG&wy zZ5In#AR>QG=*kd8mA?;njnlIa_b&#kPQC1k`!DDW`0TaE=(Z#fgBLAX8g@4b4J4=5 zEJ*K$8qmq_FL~*Qhyu@*Y!^rPf>yNr^x07gP`N8-zK*IKNHX?GZdJEHM1k2iaD4y= z=;Y6F9?8Vh9B={$w)@LN*5e&aem%~?*1$gb&sF6Xh&N95$rWAjS@8Yr`beA~NMqem zFP%RMu861}CGW0;pWlC|9lEeX%>)rmTGbU^;{JZ(eHXkEGoFKUVSfDatn&wL?bx(EDU$w;?+b{F*99uv6k&iuT+)`YV`k8r zcW;R3rPFx-s#g(fu_rdSaqeE5WaFg!Tr~Eb&wxGX%pnTd#I#S7Hq@ShL7_~f>m!G*8xZ;c#oF`!_r`^Ce- zsvxI(Bi5mfjpR5dw6ofneQM$u+yEz4pgK14ef`&VCYoXW!GhHoNbBs6=SJLhP=!5= zMyrRP#likTn7EX#E#l8Bi*fDqZD`7cTexoO^~>4KZ!R!^sQJs|wp!UXuwlrZO;^pS?lNslffvCJUds-^4=dci#Tyf;E zC%SS&-~GzlK$Og^eCB}n38}vOD3UL{NV#V{X9v5_;-KhfmZ`X}V0UhYyQm5fao0+t zcQylvmo;$3CZ6B9J#RW#}{$k6rFQ!Ul{F;>zIjI zZ_jp|s>SPZy?zM2b|)dp6UpM`4XvlHeRek*YBLVGqJ_eOCGNP6rPXTC5odfIAx1?l zz4^Jr4-w~2#yc`!6oKfv?B?CYQc953X{1(*&mUCtSF;OV?BM|M8XgNFEX9D4DtT*{ z7>LrEb}IVG$rp++_rl<3jySJ_YEM4_=_}~(j6Zg9DMbuKjE<4pliX~EqI8FUjo-uo zqRdmB*f)DeLZptxV!fNLh-yvkzHz?z{aaof_J&);ML&;;Bygh`K=gUNz2Rgs3pK}V zmPtux1LN*Cr=?Te`e}&EX7s}uK-Hn9{j1{}S47;7$JtJc;Q;YurNXyS>n&ip#I~*H z?zqAI11}OA@43Nrw$It7vO#Ynh>ErzEyKEmDBVwe52by=V6+cjZ?(3!K_vgXNsXy7kpJ%uipBH#@4Y3i|ntsp5_d`T}KT7>Dm^~rwo{NGT zqH5i#l9j|^zr);Iz^eyZ`8Wtg?U9Q*CS(D`$uT#R4}Ba4#IhynZ$Bx!A*vHrJX8*~und;#KYQ9=AI=5^5W1D;_huNrpBTXLU$y)@@{NG%T*j$zaoo>Cb&Byj4cmY*K(%hy z;+BRa1)wUWu)t-8gfri&>*BeP6!X5e2rXA(0Fhr;en_FGz8t&$ z219sVxF@31&_QXI`3zHZG)nW!O(_eY8i?DyhAX)us@^H>PxAus@m(=^{HJZh`ss8} zCCf0v2Jzyr8nqcf{2a4?+nXE(AnyLHoFLF*0aT0X&%b)R(+G(Cel>jD5+%(V49X*i zfx%0yA?sD#&_H^WhK{GD!oqtzg|>r z?|zx?kZq2pb8bf`s4;+ur?MoDNVP%Ii$YX7asI(TZXf*Y{mbhXKy}EXZt25$L5R4P zE2QjjeFT{D7LL>v;Z)`>kL~z;M0~YDBJ=iPKXk68>s*q!C{Udee0F=m{ScIYY?zFL zq%jO++Zt%Kr$1`ugg?m7T7LDt|s&7``4Y_x$Y|jeqV*?TinnjUjQA zO1P4P337^^wRvq6?(<#$?9_c;U1hIj<0>XpxX1u8agIe^TY@l9P0<&NYSj(|;)Pd- zbRUe7L`2Iqe>}RJP0^l5dz+%ma6j|cp)0gUo1pliM_cs0WPwhv$(>V*uDBxNhoSkm z1>f62Z6$BOF1|156mKa$ir2#_^80qVxNeKrzxyxZ=>ucL?;FFG2siEGP`5t6yDffy z_pKd-^BRnjW$8UE*R&|i4~6&2UoXjL_pFy-NV}IWCNYT zao2~>50pT3mON{`vGg6z|LAq!&|jVjRe|UO6R#AGH$lAi?B_Sx{5EZ#?Gthq|9)T$ z#SW>W#w+l?<0|J#XB}l=Ao=q;t_PtX$IZ{i9cSY@{uSTf>{15&bZm4ApU?UAq+2}^ z)$8kbOb9f#1mea`TjRIl_b1ib6f2>RtA&70Yff{h*B@h`dRZd&^sPneFpy4O_1nY- zo1xNAwoP9$*+A7-fcydfJmU7rpHGGBYl)h!t0lGY{yWw0mz+mrnwuc1=DIj34%gG!`rGKtY%_+jS|&$h zE}QhJK2-b8Sv{ei^|m3Fa1O1!qv+{}X5eiL!-;I5D!?mX3^PIY6-WOT30p$UoQlLAoJUGEFH$7Y|FIxYt%^USD>;mf`0IIP7Cq~F*y%46+l$ML;YL==hmb)y zXX6r!^LM@pqLW{zCT9r`b8L@=A;CV)9~Ro)x<4BIZ+$v9C--xdD8Nvw(wk{Cn8!z+6-HE%^0YLy>n)k+{ArP-(r2Hl*r=w6g_@3Xk_2tX#rHP z&2|}~WMK((I=H#W%53*U#9-qwKdtHqgJkZNtFn7#`nm31o$GxOTu(yd=i*wK{F!*J z1;wCIiyn`?ECYB-hv7II%RYx%R&Gns5P$`3v7X)A&1s$EZMHsri!2ZaUsbYPcg74+ z-6-E4J3`DD9*m5B7Ts!sen}M;Ox^8Ct71s<&NEw#fofB8?JMo^azH0PpY_>@o}AYI z!qD6)W1Af3{4N zo*QhI;)#e4J(U~d7a9Xq{OTW((y|8!$t#ILD~F^1)`O-K9P(Dm1JwuR?HcK?f)Md% zW3~E9Jg zm9B`$udCLxhgF$&Zs|56$o#&=wJ}U)pAsjkS1;`^=BDT&IVBUsUmL=|XN3AUfT61ukBeFpy5= z!O2zU&4EtU*!S+|v&<0HMKuQ#EyWao&MOSd$FDk!U}lcWi$C)K_2h;cgZwYgb~_QF zK8vGWhE)sW`f(b=<4e=7npgn8A3MmhpMHazbBbP@16B1dQAw|Md7wJXY|}Vap&KHu z3MfqrlCVK^?p<26)ApJR8pwr%{}jGm>xcY1?dEshlLzATgqY%Poby06`uZE6883{0 zXd_*1x4hH@i5qCEB#*HGs`45;q#{8Dv~AJxF8q64^`lO9>UMcrbq`DJm3MYUb|+p0 zjDBPe137o*(8dLcSLrr<0%Fks>5A4Zh!x~Lc+8w#Z7^pfwb22v6wg8zU z@(TMi<@#A}U6EC`%nuPe9(Rna39$q^KL_fb*@*iTiNnIpQ|j4rK-EZ7b&dIa3cq^jaS8DASb%Z1H8@!4djf1!_IXM7C>zIzIxo3PFbLOgSPD;E{)EIcncRELK9YL?Wc~maOVQ5C) zERDJZL7*z2HY4uY4M0R*oRnmtIS>o%Vl{SVX)rW)AZeY&;$@Fr>-wybStU zO576Q@9d!?57iYCxk};oQ2NAHNv|5OztH&W@PmYvC-Hsic3o~rwIxvHwKKA0<$)@H z-vX~|5G#Tds#W4!trKr<@NjxA09576Bc~qy4Tw%&&VSH({QR2QIyir{JP>nCA|gw# zzqcl4556ocd4LU6D|cDc9Y@ zY&NrjsBhl3Tg=A~5qWQ`y@%z2xbM%0Dn^MBh>6W`w^3ptVtl$}P4g#tpelVJDR*HT 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 HbW-^rzo`^g literal 0 HcmV?d00001 diff --git a/icesat2_kdph-main/results/labeled_relevant_stations.pkl b/icesat2_kdph-main/results/labeled_relevant_stations.pkl new file mode 100644 index 0000000000000000000000000000000000000000..feb3ff25a66cc9ee1f59e4b7a70fab7460f8f279 GIT binary patch literal 941140 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⩔=ryMC9;Oee8QaEwD8vhm) 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
    S5_EI-{&VolVfusbAgp^mLSs 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�C0_fN zt6fC5gr+(zdp7PJpV|DaTQ|D0=EkfhwI;T~bpuIWJz-=cLd&HmZ94SRD*n>w(?ED}I}u+Z7KV zZsec~N?WJLlq?BXWWbsc?Q>Ui#1hpGYb4HG;3?23XSyX(i(I-ryFGBA9HzSx6dh>Pl1rV zYEzAKczfh>Okg-l4sb&u^Ir8K>Z;sHAQ`%y+R#~1X5Nq=EG^2#)-j?^$Fm&)oB?N( zFNTIm5>Yc!_R05#cq5V%Jq2y_i8?;7B?H1jU&*=jWbl})czWK&X0Fqe)zO^t8w8k* z+fcD#B34t6{WeIV6zknAxp(`EKplOFs^mgWhJvVwr%Vlk)`RRXq^G7>f=!u z@^DCLsoF@i&bd@IPWdi{**x7^1JnMc0@W%ebK*npd>Nv5>T!F7TtT%NT~41&9yFGd z57ktzQX1ZQo;-H*EQDyviK9kZX|9{OJwxa-dE68cc~)bhr9CEeq`@m4W2s2-vDEcg zK!`2`g9VPU;?&r2jBCb<;k)%8o1?aFLzUR$1`E9d30XKovs?#22G3AbPT|fRBq^4f zNpR6sx+~_Uqqd!2+$c_dTfCO}hAmOZ28HIua1JQRHO~HU{IEC}#w$B|eHPD059gVK6oCjX171`Q7NTL{7@urdBYByHcau70=0ym2Q{K!WsiEhe=nu z17V9e%YU&Zx>JHVv0Zt@bAR2$?HTSVlrz(Mv(ky|#r>t{F3CxE%Sod)&rzY1mCmoQ z`ehqo&hM{uKBC1vb%6yC?&{ zK~OZ3y0Sa}Q#a|$p2s2GJXa9p0BT(bQ|UQE*VRa8JoRvjN3~e_U4pSDvEyJ^K||)a zckV!2dED%<(47}>*#VXAEGkuQhJ-D=7_?o|+b9udg3a&{N=q@y<0^Hs7MvNXx)fo> z$KKCHSx+}fsekcD>CCqwqnzZQxDz?c=5%$I%XXy0tbQTc)fJcQELkI&e$}9%5U2j8 zyLRENfs>A6r>wgY7CX(Wf^NxLb#kt4bUO65W=hK1K(_Lroi&Q?r(k9Fh@#${I9%vt z%rCv(tkIWl*UaL5nt0U7K|eEa@#Q>zT-Tlz3TY^d&#K>!{%H%x-Du;9S~66gKA>G? z1 zv`8%1Nvu3M=s$7J?+qu<`qI7PUK%3^C!|I;-r}+<@2WnEqwSt_;)j1X0()oAt$Wq1 zEYUqyJa^0j0ab-r#`5YK9WR~iE(lx{!^ie)DatWYb6rRBC(fZz#2G_&vHFVE{Tym{ z+^yU>72Q668$`M1n_TR1v{tj@Zo+BQaE4NMDxMnoeG4#gcUy!M%8iO~H)U$b+-ukq zuZz<3N%h3SR3Bf?dY};is8Z&Xcm}8Cz{PlNB0|N zs#z?TEHLA`tT-YnoM9L_<6EOpS-O@)>n8c4W9re8;k@iP;;<>&&XREEm1Cwm{WNOM zK8NmWkg>7@$XTBOJfnIB|EYtf$h)%R_&d8}zD@P0^06CSR$o!*vP2?F*Wpg&lnWFa z-*q&4i5GI)l_paU*}f^ALu<=w>~M`$_R2cGzuF@8g4Y5q*PX0nS41rR(jrI>GOTnq z#%>l%+dU^Ec9n5x&1{f=iGN^{&(rmo_|sNi^%?L{-DVtoLrZF6c1~7wSreW>Z1BUF z4mBd{b~9Lb&Suu(Gu;-R@7A2IN8FuFJwoESL$3OW={p8JaZ2l!Yq{jGXON3C$;6ST zyyQ#Slpeil)noj(tfYx=xkHhG&-UosHXVx zHp#I{DT)}<^Oe3lpMy_$+GQhV%~gN(4n!NfR>8tvTg)T;(YI-E9o z#W8-3R)uC}V~81mx*OB%OU6xC6H~S>bu}HC4Nf676^PsLK6x;ZZ7Lh=!+y<;UJKyd zf-|5Y^EL0Zn_JE*kG5ieOq`j~xJjN_YmFm>|83==Y;Sv-V!Y76&L$3a9=#nnpTall zD;s(iljV*nzG}?&`6(&7G(357>UdhE9rQ4806^xHHOd>Cc-RvBd@ngYRttWzWMdf>ZS0uJ z8?&}5>`?^4Qm|qyj(Etz_^|#Ep4*73epK35&7+v|(QZGhThd|c`4Y>~6;asj--(I=5^FjXN`@C%H?rF>8rz?v68!G4|!04j-9S z5rgPriOJ9TxqHh`yoib)C@ZG}50~AvaB&;m z&4n+EMl2Kc)Y8MgjJJ3eO=~Dko14GzI4vn4JLx=piVu1Xzs_3lA0A|GY`0=oadtYd z%^-nCqd5S*%QEh&hf-x_vq8&xio=$L5QDKN$9azROfz(Q&4&`L4%4KY{8#L2zQ#hFN3GO&>%v#T1H;xrPlO)jTKpg2$D zq+=+{#>m|sU@l~e1G7m7+p*fv)Ri^5#dRX5+!a#U#a|xoCwlqfrU>6n$@#CvK- zBbbS6?Q3Zn=mLNiu zby^PE+}ebh-i$hWiL#JR?$ni6N%H#p+FtqqR+?xqn(048@`Y*%stSpcLDGk}a;~KFaDz zHd>4|6q!<&^Z*(AA{H8%VN>J053@PelFh6=h*{eh>^MWY3C2yen=9kKnKsZ+^xm|V zv8~&TBpXi`0~KT$wmQlQ8mxo!XV{MUup}kcL>22EVog@LdaT4bd?&xlpB8r5ig|7- z^=HoK(x(;AE~2VOI_g>wV@IcYVs&>9wM$4$TR7`t=wWv?&S-)a8a4dl$h7;OIJR8yBu;BB8ccq-I8C~R^VS}c2PdBX@;$U7 zWYZEh-uA6{L}KURX(T0TETofRs_H<<4l;()pJ3^zX&qqpuCMnXepQGwVYzJ-so@dIzm$J^gr31D>Ktdg+jW zzd%UQI|sqwAaCjpo-B|ru}{fu=20|diFDJZeFbf#8rvtfg*G&V7MpqI5ZBM@AzH>y zyICT4>}OjT&~JlansK&FH6~L)17)^6td3;A#v#`%4Q^(gT@H{`IWJ=Il=ruixjh;; zY9wWch_dL^xF@D4^bI8unj6jw8Y7$g_g5VET?9o39hDMe&3&wuC5x`(F}HkTWV=dn zH8u!g?z8+I<=$49DjUXagU5w7V`&rgV3cK8p)HM7)oa zCr@`wJ#@89TLYA`M^9j3vXkIT*NhMIoacy}CyNAC!;~2;$gy-EWvwgsB;a(i6{e7! zjpZB?D~^9|D8-kWW#I6oo)Dzw*rr*W8*f08XZEX|va_qqYH?L>%ypy@t}F$8=)&He z&6teU&L64JbYa!bz1;&cvRjLedS%LY{XK}=>K0zOeJpCh}cK_&#YkCGBSnR?F z<6?1A>14~`kM_5TaT#Lz%_TSvWNzJ)o0d>|-lHsC{f%z%IB}{eMeVJesf1%L`4Dt3 zk{0DHXu^@5whEfnYUpVIXxQVPET>Z?yJ=7|q-t~fGPBugGV^vWP2Qr6Nj>R##$zC~ z48Gjse4N>DwIDYj%aT*O+0t|fT&*@-CVt%`QEVu8DNmIQ&V|$T=vW0cF?X+X8T){f z3nO=Y8@)i*tDb7Pb$J|k=?b^qfQg89oRTy78KR3ZdaVR*|BC#B*Jk5MD9gWq&l`S^&pWYUg2ZIOvn)GoyRIiDyp^;pS?a= z{;M4_a1hSFWmT?NZE#FD0-@0t&NUl{!+wqx(Oj_K)uVj&)lfdGZb@V5vm+n%+A`Fm zW^IBN&{)nI{cMU6=MZWNvF-qb&hJ4Mp1*F&7J$7KP~3#>^mwagvWgSaT~C}L&zJ2S z&3O+rt99uih=Q3ggUI{2y@ug0JwY?!Y=2n;M*-WiB~NxVn6Y_hfh;y}t$aeVNjY1F zBvW&D_Sn~}N_!4>HB{c^dx%&XpB;;YmewG|g30#J*aPSeuQ70%;*^{*EZb_W79(}7 z_Sn+Ed7`^$wk413q|@gFN3nS}<}*1|C}wz8)JDX{5~Y88q*LG63)%U1*kqKot%+M( zTq4Qf(6Sfgyj^?t@Um|8*l4eTGQ;)>0&%rB_Lz3Lgn!kOb-NkwY;GLPSV#|-Y|Pl^ zv$E5gb~U+2cvr(Fn`$h7ZxFEEXEi3+_OM#}BVyKppAq>fIFI zw>bF>eBGwqLYF63(q)kIntCZ&K(x1WyPKVUPtOgb2CCJTJWfz%c*;wxaVUgk8Z6l+D+6C z7V_ZmO4y81vqC((H)}8hexHb{Jh0jGzPh-M+Q~zOX(1}kx!j~Ho;?YTs=UcEDA5%& zv*BS};9;F7E7xmhX)cx~%NmC0nroIyr(L!&nmo8@*CTG@Y!9QjajcPk6LW6)BI>g0 zwdq~e(8OuwZ1b)X6Y+sEj7LB{pP;$jP?+W5+#)e211DrJvhm>WhFbe^E*>Hfi@M!vEJPcdX{fj<#__52_C;R z?nOzp?9@FMWvMR>5@)8JG<%~;jA&DmvtVXzU36Yk$js(8?{sT>SW9)4`VgJ5pe(Io z?DM#;%4KHCVZpP9-clyzq{c0p2ivuoh$?CN)j^Da>Ae*>hdWlY3G-YYLW0H2 zZEz?VSz9fTjn0$V^+JKbB&L1}d!%=P#`GEx+)cmqDFPuc=@srRj=*=54$h#h!a}%& z%{hAhPA#k)Jf&~!C!M%D39xQRjXGFxMe@wC6Yin#h?Sl_=#z&@yA-6zq1v*G$^gTr zt-dCnhap#4{BR8eFBac&69^V(JbRw=bUB;WM3jy!f4F+`QrhIlrx)(EyN@*nh9$`5 zhmW?VDn4tb+68{&IPtaJuktKoEpZaQ5iSqrvHJ^|O}yH&6I~v2Kz_E+8VCDawo}*v zns!DdiyC{LWbKW2c~CN^-;!tV2np+$rm&6ZW(LSG(9OGh7 zd`xojepbi$C;oD&0pi1el1>lkju(U5ny@Lk_=WZE)~qv@9) zWAERO30udv6^-@17Mf$Kj+a!NBe2Ix79O^N#Q$oYG36Z7i$1t=eu<~#vEHaG`xi%9bYi0BP#pK~tn|esV z6_3%#BCI@FOf3T$`tk63)vI*(yj<4ZrN`4pP^>KCJatu)Frw6S?HssH19q=sZHxfI z@lik*&D!D?7RR!eWKQ7*M)tkaQygJ-N4TQNsLn$)GIAR-aZINvvliYK0xh-3G#%vb z*jBs?9=3H#Z&(N+jI1Vfw<4IHE`p(S5Gd0vI@21IC@HgBKz>Sl!xJUt)nc;ZTp>Nr z#p$@+m*k%VM&eXr?ZT`)v$HT+4(9|%!ZyH(g+)8E=NLeZMA%O4D5z@8zUc{zdtneK zqY)33`0%#B4c2BCIMy;buo2w9Ar3b>T-|&++m%XcMv>BN{Lj%AR&?`Z;&2HpwQzh4 z7qMG*@dD{4`lRENYiy%<6~w9}lyQLSE1CRkmI_!Ay+yLJ?CB#54ZBC5alwVt{m!Ci zt%aBLxBIB6G4jXssgV+oR#H<;+&W=TC2>mij+6LH-^*r;QVC1^Q>tU_m1yKG8nH)L zSo)?l%yA>BGDh7rOU5tro8;B20Usl4RWYC~XR#>W$7+881cCN))xzDD#v~cB`*5;5cNvg3}Ud zKmB&PYY?APpo1nuc35LH#2f<*CXe~2zSNt*=RVDqJ(G&cO_y5 zju1dVH#SZspuDzCVi`EC)}QvXOd!x+RrHdz()qCmO7Ev-!wb$mtzcx=dru zhTr{JEm48HC7z`$$;_wAhcLt9t307Nzn1tYJaSrJD(ys$*5fl6&-SGKS(H(p*D4d8 z<@l^JId`;+0O{an%HVMJ6+Ha&g_{wf9H6`MAtvsXOX;dI+QhlaO5}~&r9+D_OGKCb z?Dufh2dFy6#qn737+s?%+ z5#K!$2hiKZsvQajCijMjS`LE;WvZQ8M=gAD66|K8{8VDxUORP2UeDE2zgu|QI9_rn z+>ErXpP%Peu=z}#u|fA|5_3n*@mX^ZNZk@t}pCol{GI2IRwdu$cXxSW)+0i7m!K+(g>(Bo`9K7~S441w&=6hDKr2%x6m&bVf1 zEQBsovgW|`uw%03NHhR?9$B;11#{>Y#hF8Qg18=ey0l&c=nUrriCi(e(iwEqX-xyG z;79iWU&MJ9HFruI-`c$*n8e-6s5(*c@6ee^cIwbE$xh{gSsij1`+$8TF{br=8sg|& zDk?(4?}qqzkB{PAr-8}Qz5Q7;hhB2z?1oBc9jIwIlUUDVc3&Hv(d);mAj$44%3gro zViQPI$5Y~9!4y2OI1saLcInN3Y#Y3-GkrTDak@d!9mTbNnt8>4%)Fz`LGnpX)o4C6 z^OVknxw5=Ye2BNw_-;{C6XpO87P_6y3TO+Lp9^4Ha1VfoRIG{~wfDG0P>m7gzNQ0R zgY7H@9W^bQdxjq$pP41+5oj>MzT9$RwS@(65mZNwi%Uv8OOPP|Ygk9?ATDNLb$!_2 z?JTRA=~UyuX+hx*P8HrJ7E3%5n*gFfFKsl8@J;~ajej~8?d}+DqQ)iLqOQZLc8fAuTTr_toHL*7L<>l^iR@340=GlmiB}-; zpdT$wLrmja%vq|jYNJW=%$))Ivj~7DTpbF} zI!$MZNF~bko?3XtQG8lwo8Dp}iu7G#ME`YW>RXwaYl?FTpvju;1)wisCbjB7c7aMO)&tp|vj2mPpMq#ikaBsLsT zEl&Ez&~J9V@6Y7C^*Gi

    I3@k~QG{nc_Cg9k9Qxp_(Xl^r33E{Be}&AtLb) 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 LmP+_0%W&} 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " if (!reloading) {\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " }\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + " window._bokeh_on_load = on_load\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"jspanel\"], function(jsPanel) {\n", + "\twindow.jsPanel = jsPanel\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-modal\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-tooltip\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-hint\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-layout\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-contextmenu\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-dock\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"gridstack\"], function(GridStack) {\n", + "\twindow.GridStack = GridStack\n", + "\ton_load()\n", + " })\n", + " require([\"notyf\"], function() {\n", + "\ton_load()\n", + " })\n", + " root._bokeh_is_loading = css_urls.length + 9;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", + " }\n", + "\n", + " var existing_stylesheets = []\n", + " var links = document.getElementsByTagName('link')\n", + " for (var i = 0; i < links.length; i++) {\n", + " var link = links[i]\n", + " if (link.href != null) {\n", + "\texisting_stylesheets.push(link.href)\n", + " }\n", + " }\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " if (existing_stylesheets.indexOf(url) !== -1) {\n", + "\ton_load()\n", + "\tcontinue;\n", + " }\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } var existing_scripts = []\n", + " var scripts = document.getElementsByTagName('script')\n", + " for (var i = 0; i < scripts.length; i++) {\n", + " var script = scripts[i]\n", + " if (script.src != null) {\n", + "\texisting_scripts.push(script.src)\n", + " }\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (var i = 0; i < js_modules.length; i++) {\n", + " var url = js_modules[i];\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (const name in js_exports) {\n", + " var url = js_exports[name];\n", + " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " element.textContent = `\n", + " import ${name} from \"${url}\"\n", + " window.${name} = ${name}\n", + " window._bokeh_on_load()\n", + " `\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n", + " var js_modules = [];\n", + " var js_exports = {};\n", + " var css_urls = [];\n", + " var inline_js = [ function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + "function(Bokeh) {} // ensure no trailing comma for IE\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " if ((root.Bokeh !== undefined) || (force === true)) {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", + " inline_js[i].call(root, root.Bokeh);\n", + " }\n", + " // Cache old bokeh versions\n", + " if (Bokeh != undefined && !reloading) {\n", + "\tvar NewBokeh = root.Bokeh;\n", + "\tif (Bokeh.versions === undefined) {\n", + "\t Bokeh.versions = new Map();\n", + "\t}\n", + "\tif (NewBokeh.version !== Bokeh.version) {\n", + "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", + "\t}\n", + "\troot.Bokeh = Bokeh;\n", + " }} else if (Date.now() < root._bokeh_timeout) {\n", + " setTimeout(run_inline_js, 100);\n", + " } else if (!root._bokeh_failed_load) {\n", + " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", + " root._bokeh_failed_load = true;\n", + " }\n", + " root._bokeh_is_initializing = false\n", + " }\n", + "\n", + " function load_or_wait() {\n", + " // Implement a backoff loop that tries to ensure we do not load multiple\n", + " // versions of Bokeh and its dependencies at the same time.\n", + " // In recent versions we use the root._bokeh_is_initializing flag\n", + " // to determine whether there is an ongoing attempt to initialize\n", + " // bokeh, however for backward compatibility we also try to ensure\n", + " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", + " // before older versions are fully initialized.\n", + " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", + " root._bokeh_is_initializing = false;\n", + " root._bokeh_onload_callbacks = undefined;\n", + " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", + " load_or_wait();\n", + " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", + " setTimeout(load_or_wait, 100);\n", + " } else {\n", + " Bokeh = root.Bokeh;\n", + " bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", + " root._bokeh_is_initializing = true\n", + " root._bokeh_onload_callbacks = []\n", + " if (!reloading && (!bokeh_loaded || is_dev)) {\n", + "\troot.Bokeh = undefined;\n", + " }\n", + " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", + "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + "\trun_inline_js();\n", + " });\n", + " }\n", + " }\n", + " // Give older versions of the autoload script a head-start to ensure\n", + " // they initialize before we start loading newer version.\n", + " setTimeout(load_or_wait, 100)\n", + "}(window));" + ], + "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n var reloading = false;\n var Bokeh = root.Bokeh;\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n Bokeh = root.Bokeh;\n bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n if (!reloading && (!bokeh_loaded || is_dev)) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/javascript": [ + "\n", + "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", + " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", + "}\n", + "\n", + "\n", + " function JupyterCommManager() {\n", + " }\n", + "\n", + " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", + " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " comm_manager.register_target(comm_id, function(comm) {\n", + " comm.on_msg(msg_handler);\n", + " });\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", + " comm.onMsg = msg_handler;\n", + " });\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " console.log(message)\n", + " var content = {data: message.data, comm_id};\n", + " var buffers = []\n", + " for (var buffer of message.buffers || []) {\n", + " buffers.push(new DataView(buffer))\n", + " }\n", + " var metadata = message.metadata || {};\n", + " var msg = {content, buffers, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " })\n", + " }\n", + " }\n", + "\n", + " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", + " if (comm_id in window.PyViz.comms) {\n", + " return window.PyViz.comms[comm_id];\n", + " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", + " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", + " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", + " if (msg_handler) {\n", + " comm.on_msg(msg_handler);\n", + " }\n", + " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", + " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", + " comm.open();\n", + " if (msg_handler) {\n", + " comm.onMsg = msg_handler;\n", + " }\n", + " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", + " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", + " comm_promise.then((comm) => {\n", + " window.PyViz.comms[comm_id] = comm;\n", + " if (msg_handler) {\n", + " var messages = comm.messages[Symbol.asyncIterator]();\n", + " function processIteratorResult(result) {\n", + " var message = result.value;\n", + " var content = {data: message.data};\n", + " var metadata = message.metadata || {comm_id};\n", + " var msg = {content, metadata}\n", + " msg_handler(msg);\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " return messages.next().then(processIteratorResult);\n", + " }\n", + " }) \n", + " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", + " return comm_promise.then((comm) => {\n", + " comm.send(data, metadata, buffers, disposeOnDone);\n", + " });\n", + " };\n", + " var comm = {\n", + " send: sendClosure\n", + " };\n", + " }\n", + " window.PyViz.comms[comm_id] = comm;\n", + " return comm;\n", + " }\n", + " window.PyViz.comm_manager = new JupyterCommManager();\n", + " \n", + "\n", + "\n", + "var JS_MIME_TYPE = 'application/javascript';\n", + "var HTML_MIME_TYPE = 'text/html';\n", + "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", + "var CLASS_NAME = 'output';\n", + "\n", + "/**\n", + " * Render data to the DOM node\n", + " */\n", + "function render(props, node) {\n", + " var div = document.createElement(\"div\");\n", + " var script = document.createElement(\"script\");\n", + " node.appendChild(div);\n", + " node.appendChild(script);\n", + "}\n", + "\n", + "/**\n", + " * Handle when a new output is added\n", + " */\n", + "function handle_add_output(event, handle) {\n", + " var output_area = handle.output_area;\n", + " var output = handle.output;\n", + " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", + " return\n", + " }\n", + " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", + " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", + " if (id !== undefined) {\n", + " var nchildren = toinsert.length;\n", + " var html_node = toinsert[nchildren-1].children[0];\n", + " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var scripts = [];\n", + " var nodelist = html_node.querySelectorAll(\"script\");\n", + " for (var i in nodelist) {\n", + " if (nodelist.hasOwnProperty(i)) {\n", + " scripts.push(nodelist[i])\n", + " }\n", + " }\n", + "\n", + " scripts.forEach( function (oldScript) {\n", + " var newScript = document.createElement(\"script\");\n", + " var attrs = [];\n", + " var nodemap = oldScript.attributes;\n", + " for (var j in nodemap) {\n", + " if (nodemap.hasOwnProperty(j)) {\n", + " attrs.push(nodemap[j])\n", + " }\n", + " }\n", + " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", + " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", + " oldScript.parentNode.replaceChild(newScript, oldScript);\n", + " });\n", + " if (JS_MIME_TYPE in output.data) {\n", + " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", + " }\n", + " output_area._hv_plot_id = id;\n", + " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", + " window.PyViz.plot_index[id] = Bokeh.index[id];\n", + " } else {\n", + " window.PyViz.plot_index[id] = null;\n", + " }\n", + " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", + " var bk_div = document.createElement(\"div\");\n", + " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", + " var script_attrs = bk_div.children[0].attributes;\n", + " for (var i = 0; i < script_attrs.length; i++) {\n", + " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", + " }\n", + " // store reference to server id on output_area\n", + " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle when an output is cleared or removed\n", + " */\n", + "function handle_clear_output(event, handle) {\n", + " var id = handle.cell.output_area._hv_plot_id;\n", + " var server_id = handle.cell.output_area._bokeh_server_id;\n", + " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", + " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", + " if (server_id !== null) {\n", + " comm.send({event_type: 'server_delete', 'id': server_id});\n", + " return;\n", + " } else if (comm !== null) {\n", + " comm.send({event_type: 'delete', 'id': id});\n", + " }\n", + " delete PyViz.plot_index[id];\n", + " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", + " var doc = window.Bokeh.index[id].model.document\n", + " doc.clear();\n", + " const i = window.Bokeh.documents.indexOf(doc);\n", + " if (i > -1) {\n", + " window.Bokeh.documents.splice(i, 1);\n", + " }\n", + " }\n", + "}\n", + "\n", + "/**\n", + " * Handle kernel restart event\n", + " */\n", + "function handle_kernel_cleanup(event, handle) {\n", + " delete PyViz.comms[\"hv-extension-comm\"];\n", + " window.PyViz.plot_index = {}\n", + "}\n", + "\n", + "/**\n", + " * Handle update_display_data messages\n", + " */\n", + "function handle_update_output(event, handle) {\n", + " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", + " handle_add_output(event, handle)\n", + "}\n", + "\n", + "function register_renderer(events, OutputArea) {\n", + " function append_mime(data, metadata, element) {\n", + " // create a DOM node to render to\n", + " var toinsert = this.create_output_subarea(\n", + " metadata,\n", + " CLASS_NAME,\n", + " EXEC_MIME_TYPE\n", + " );\n", + " this.keyboard_manager.register_events(toinsert);\n", + " // Render to node\n", + " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", + " render(props, toinsert[0]);\n", + " element.append(toinsert);\n", + " return toinsert\n", + " }\n", + "\n", + " events.on('output_added.OutputArea', handle_add_output);\n", + " events.on('output_updated.OutputArea', handle_update_output);\n", + " events.on('clear_output.CodeCell', handle_clear_output);\n", + " events.on('delete.Cell', handle_clear_output);\n", + " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", + "\n", + " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", + " safe: true,\n", + " index: 0\n", + " });\n", + "}\n", + "\n", + "if (window.Jupyter !== undefined) {\n", + " try {\n", + " var events = require('base/js/events');\n", + " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", + " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", + " register_renderer(events, OutputArea);\n", + " }\n", + " } catch(err) {\n", + " }\n", + "}\n" + ], + "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "

    \n", + "\n", + "\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + "
    \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import icepyx as ipx\n", + "from datetime import datetime, timedelta\n", + "import time\n", + "import os\n", + "import re\n", + "import glob\n", + "import pandas as pd\n", + "import numpy as np\n", + "import logging\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from config import workspace_path, atl03_path,\\\n", + " other_data_path ,shoreline_data ,gebco_path ,\\\n", + " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", + " ignore_subsurface_height_thres ,output_path \n", + "\n", + "\n", + " \n", + "from kd_utils.data_processing import load_data, \\\n", + " extract_file_params, \\\n", + " Extract_sea_photons, \\\n", + " filter_photon_dataset_by_hull_area, \\\n", + " plot_convex_hulls\n", + " \n", + "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", + " get_sea_surface_height\n", + " \n", + " \n", + "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", + "\n", + "from kd_utils.visualization import plot_photon_height, \\\n", + " plot_kd_photons, \\\n", + " plot_filtered_seafloor_photons\n", + " \n", + "from kd_utils.Kd_analysis import process_kd_calculation\n", + "\n", + "from kd_utils.interpolation import geoid_correction, \\\n", + " refraction_correction, \\\n", + " interpolate_labels, \\\n", + " apply_interpolation\n", + "\n", + "\n", + "\n", + "pd.set_option('display.max_columns', None)\n", + "# pd.set_option('display.max_rows', None)\n", + "\n", + "import re\n", + "import os\n", + "import io\n", + "import time\n", + "import math\n", + "import h5py\n", + "import logging\n", + "import netCDF4\n", + "import numpy as np\n", + "import geopandas as gpd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", + "metadata": {}, + "outputs": [], + "source": [ + "def buoy_bound_box(lat,lon,buffer_km):\n", + " # define a buffer distance around the buoy to search for icesat-2 data\n", + " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", + " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", + " # define bounding box around the buoy (WSEN)\n", + " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", + " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", + " # region = sliderule.toregion(bbox)\n", + " minx = lon - lon_buff\n", + " miny = lat - lat_buff\n", + " maxx = lon + lon_buff\n", + " maxy = lat + lat_buff\n", + "\n", + " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", + " poly = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", + "\n", + " return poly\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "1d72dbef-f954-499f-be76-c1de3233b325", + "metadata": {}, + "outputs": [], + "source": [ + "# load time, lat and lon\n", + "df = pd.read_csv(\"data/Dataset_Kd_Paper_2018.csv\")\n", + "# convert matlab time to datetime objects\n", + "df[\"dt_float\"] = pd.to_datetime(df[\"dt_float\"]-719529,unit='d',utc=True).round('s')\n", + "# remove all rows from before icesat2 launched\n", + "df = df[df[\"dt_float\"]>datetime.fromisoformat('2018-10-01T00:00:00Z')]\n", + "df.reset_index(drop=True, inplace=True)\n", + "# df" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "e84044cf-6251-45ba-b148-b8401309b68e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total number of data order requests is 1 for 1 granules.\n", + "Data request 1 of 1 is submitting to NSIDC\n", + "order ID: 5000005862267\n", + "Initial status of your order request at NSIDC is: processing\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", + "Your order is: complete\n", + "Beginning download of zipped output...\n", + "Data request 5000005862267 of 1 order(s) is downloaded.\n", + "Download complete\n", + "success\n" + ] + } + ], + "source": [ + "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", + "search_hrs = 12\n", + "search_km = 4\n", + "jj = 3839\n", + "# define a search region around the buoy \n", + "lat = df['lat_float'][jj]\n", + "lon = df['lon_float'][jj]\n", + "\n", + "spatial_extent = buoy_bound_box(lat,lon,search_km)\n", + "t_start = (df['dt_float'][jj]-timedelta(hours=search_hrs))\n", + "t_end = (df['dt_float'][jj]+timedelta(hours=search_hrs))\n", + "short_name = 'ATL03'\n", + "date_range = [t_start,t_end]\n", + "region = ipx.Query(short_name, spatial_extent, date_range)\n", + "try:\n", + " region.download_granules('data/')\n", + " print('success')\n", + "except:\n", + " print('')\n", + "# if data exists and is downloaded - note in the argo csv and then calculate kd using chao's code\n", + "df[\"check_sum\"] = True\n", + "\n", + "\n", + "# code from chao (in Main.ipynb)\n", + "atl03_file_inloop = 'processed_'+ str(region.avail_granules(ids=True)[0])[2:-2]\n", + "ATL03_h5_file_path = os.path.join(workspace_path, atl03_path, atl03_file_inloop)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c3821bf2-6fe8-4120-8852-d7e82fa88606", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r']" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path)\n", + "IS2_atl03_beams" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6ea8b280-7b7e-4d0b-a8ae-7f41c7117510", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gt1l\n", + "gt1r\n", + "gt2l\n", + "gt2r\n", + "gt3l\n", + "gt3r\n" + ] + } + ], + "source": [ + "FILENAME = ATL03_h5_file_path\n", + "# Open the HDF5 file for reading\n", + "if isinstance(FILENAME, io.IOBase):\n", + " fileID = h5py.File(FILENAME, 'r')\n", + "else:\n", + " fileID = h5py.File(os.path.expanduser(FILENAME), 'r')\n", + "\n", + "# Output HDF5 file information\n", + "logging.info(fileID.filename)\n", + "logging.info(list(fileID.keys()))\n", + "\n", + "# allocate python dictionaries for ICESat-2 ATL03 variables and attributes\n", + "IS2_atl03_mds = {}\n", + "IS2_atl03_attrs = {}\n", + "\n", + "# read each input beam within the file\n", + "IS2_atl03_beams = []\n", + "for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\\d[lr]',k))]:\n", + " print(gtx)\n", + " # check if subsetted beam contains data\n", + " # check in both the geolocation and heights groups\n", + " try:\n", + " fileID[gtx]['geolocation']['segment_id']\n", + " fileID[gtx]['heights']['delta_time']\n", + " except KeyError:\n", + " pass\n", + " else:\n", + " IS2_atl03_beams.append(gtx)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c5ce8cd9-2fe9-4552-a578-3a5d75744eb6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fileID['gt3r'].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fa0da9cf-febb-4759-8a9f-425fe7eed7d1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fileID.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2748e518-37b6-4b65-ad2f-dd997ab0e58f", + "metadata": {}, + "outputs": [], + "source": [ + "# # for each included beam\n", + "# for gtx in IS2_atl03_beams:\n", + "# # get each HDF5 variable\n", + "# IS2_atl03_mds[gtx] = {}\n", + "# IS2_atl03_mds[gtx]['heights'] = {}\n", + "# IS2_atl03_mds[gtx]['geolocation'] = {}\n", + "# IS2_atl03_mds[gtx]['bckgrd_atlas'] = {}\n", + "# IS2_atl03_mds[gtx]['geophys_corr'] = {}\n", + "# # ICESat-2 Measurement Group\n", + "# for key,val in fileID[gtx]['heights'].items():\n", + "# IS2_atl03_mds[gtx]['heights'][key] = val[:]\n", + "# # ICESat-2 Geolocation Group\n", + "# for key,val in fileID[gtx]['geolocation'].items():\n", + "# IS2_atl03_mds[gtx]['geolocation'][key] = val[:]\n", + "# # ICESat-2 Background Photon Rate Group\n", + "# for key,val in fileID[gtx]['bckgrd_atlas'].items():\n", + "# IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:]\n", + "# # ICESat-2 Geophysical Corrections Group: Values for tides (ocean,\n", + "# # solid earth, pole, load, and equilibrium), inverted barometer (IB)\n", + "# # effects, and range corrections for tropospheric delays\n", + "# for key,val in fileID[gtx]['geophys_corr'].items():\n", + "# IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:]\n", + "\n", + "# # Getting attributes of included variables\n", + "# if ATTRIBUTES:\n", + "# # Getting attributes of IS2_atl03_mds beam variables\n", + "# IS2_atl03_attrs[gtx] = {}\n", + "# IS2_atl03_attrs[gtx]['heights'] = {}\n", + "# IS2_atl03_attrs[gtx]['geolocation'] = {}\n", + "# IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {}\n", + "# IS2_atl03_attrs[gtx]['geophys_corr'] = {}\n", + "# # Global Group Attributes\n", + "# for att_name,att_val in fileID[gtx].attrs.items():\n", + "# IS2_atl03_attrs[gtx][att_name] = att_val\n", + "# # ICESat-2 Measurement Group\n", + "# for key,val in fileID[gtx]['heights'].items():\n", + "# IS2_atl03_attrs[gtx]['heights'][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val\n", + "# # ICESat-2 Geolocation Group\n", + "# for key,val in fileID[gtx]['geolocation'].items():\n", + "# IS2_atl03_attrs[gtx]['geolocation'][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val\n", + "# # ICESat-2 Background Photon Rate Group\n", + "# for key,val in fileID[gtx]['bckgrd_atlas'].items():\n", + "# IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val\n", + "# # ICESat-2 Geophysical Corrections Group\n", + "# for key,val in fileID[gtx]['geophys_corr'].items():\n", + "# IS2_atl03_attrs[gtx]['geophys_corr'][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val\n", + "\n", + "# # ICESat-2 spacecraft orientation at time\n", + "# IS2_atl03_mds['orbit_info'] = {}\n", + "# IS2_atl03_attrs['orbit_info'] = {}\n", + "# for key,val in fileID['orbit_info'].items():\n", + "# IS2_atl03_mds['orbit_info'][key] = val[:]\n", + "# # Getting attributes of group and included variables\n", + "# if ATTRIBUTES:\n", + "# # Global Group Attributes\n", + "# for att_name,att_val in fileID['orbit_info'].attrs.items():\n", + "# IS2_atl03_attrs['orbit_info'][att_name] = att_val\n", + "# # Variable Attributes\n", + "# IS2_atl03_attrs['orbit_info'][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs['orbit_info'][key][att_name] = att_val\n", + "\n", + "# # information ancillary to the data product\n", + "# # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC)\n", + "# # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC)\n", + "# # Add this value to delta time parameters to compute full gps_seconds\n", + "# # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5\n", + "# # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch)\n", + "# IS2_atl03_mds['ancillary_data'] = {}\n", + "# IS2_atl03_attrs['ancillary_data'] = {}\n", + "# ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc',\n", + "# 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit',\n", + "# 'end_region','end_rgt','granule_end_utc','granule_start_utc','release',\n", + "# 'start_cycle','start_geoseg','start_gpssow','start_gpsweek',\n", + "# 'start_orbit','start_region','start_rgt','version']\n", + "# for key in ancillary_keys:\n", + "# # get each HDF5 variable\n", + "# IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:]\n", + "# # Getting attributes of group and included variables\n", + "# if ATTRIBUTES:\n", + "# # Variable Attributes\n", + "# IS2_atl03_attrs['ancillary_data'][key] = {}\n", + "# for att_name,att_val in fileID['ancillary_data'][key].attrs.items():\n", + "# IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val\n", + "\n", + "# # transmit-echo-path (tep) parameters\n", + "# IS2_atl03_mds['ancillary_data']['tep'] = {}\n", + "# IS2_atl03_attrs['ancillary_data']['tep'] = {}\n", + "# for key,val in fileID['ancillary_data']['tep'].items():\n", + "# # get each HDF5 variable\n", + "# IS2_atl03_mds['ancillary_data']['tep'][key] = val[:]\n", + "# # Getting attributes of group and included variables\n", + "# if ATTRIBUTES:\n", + "# # Variable Attributes\n", + "# IS2_atl03_attrs['ancillary_data']['tep'][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val\n", + "\n", + "# # channel dead time and first photon bias derived from ATLAS calibration\n", + "# cal1,cal2 = ('ancillary_data','calibrations')\n", + "# for var in ['dead_time','first_photon_bias']:\n", + "# IS2_atl03_mds[cal1][var] = {}\n", + "# IS2_atl03_attrs[cal1][var] = {}\n", + "# for key,val in fileID[cal1][cal2][var].items():\n", + "# # get each HDF5 variable\n", + "# if isinstance(val, h5py.Dataset):\n", + "# IS2_atl03_mds[cal1][var][key] = val[:]\n", + "# elif isinstance(val, h5py.Group):\n", + "# IS2_atl03_mds[cal1][var][key] = {}\n", + "# for k,v in val.items():\n", + "# IS2_atl03_mds[cal1][var][key][k] = v[:]\n", + "# # Getting attributes of group and included variables\n", + "# if ATTRIBUTES:\n", + "# # Variable Attributes\n", + "# IS2_atl03_attrs[cal1][var][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs[cal1][var][key][att_name] = att_val\n", + "# if isinstance(val, h5py.Group):\n", + "# for k,v in val.items():\n", + "# IS2_atl03_attrs[cal1][var][key][k] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val\n", + "\n", + "# # get ATLAS impulse response variables for the transmitter echo path (TEP)\n", + "# tep1,tep2 = ('atlas_impulse_response','tep_histogram')\n", + "# IS2_atl03_mds[tep1] = {}\n", + "# IS2_atl03_attrs[tep1] = {}\n", + "# for pce in ['pce1_spot1','pce2_spot3']:\n", + "# IS2_atl03_mds[tep1][pce] = {tep2:{}}\n", + "# IS2_atl03_attrs[tep1][pce] = {tep2:{}}\n", + "# # for each TEP variable\n", + "# for key,val in fileID[tep1][pce][tep2].items():\n", + "# IS2_atl03_mds[tep1][pce][tep2][key] = val[:]\n", + "# # Getting attributes of included variables\n", + "# if ATTRIBUTES:\n", + "# # Global Group Attributes\n", + "# for att_name,att_val in fileID[tep1][pce][tep2].attrs.items():\n", + "# IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val\n", + "# # Variable Attributes\n", + "# IS2_atl03_attrs[tep1][pce][tep2][key] = {}\n", + "# for att_name,att_val in val.attrs.items():\n", + "# IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val\n", + "\n", + "# # Global File Attributes\n", + "# if ATTRIBUTES:\n", + "# for att_name,att_val in fileID.attrs.items():\n", + "# IS2_atl03_attrs[att_name] = att_val\n", + "\n", + "# # Closing the HDF5 file\n", + "# fileID.close()\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "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.11.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 9ee2b243353c6fe39d4273137eca584620f2fb03 Mon Sep 17 00:00:00 2001 From: Chao <30786839+ChaoEcohydroRS@users.noreply.github.com> Date: Wed, 18 Feb 2026 12:41:31 -0500 Subject: [PATCH 4/5] Add files via upload --- ICESat2_Kd_Flowchart.png | Bin 0 -> 673672 bytes icesat-2_kdph_py/README.md | 198 +++ icesat-2_kdph_py/SlideRule.py | 13 + .../__pycache__/config.cpython-39.pyc | Bin 0 -> 1830 bytes icesat-2_kdph_py/config.py | 247 ++++ icesat-2_kdph_py/data/grandmesa.geojson | 8 + icesat-2_kdph_py/icepyxATL03.py | 36 + icesat-2_kdph_py/kd_utils/Kd_analysis.py | 264 ++++ .../kd_utils/SeaSurfaceFlattening.py | 446 +++++++ .../kd_utils/SeafloorFilterByGEBCO_Module.py | 108 ++ .../Dataset/Results/atl03_analysis.csv | 126 ++ .../Results/atl03_analysis_updated.csv | 126 ++ .../Results/background_vs_elevation.png | Bin 0 -> 47431 bytes .../Results/background_vs_elevation_2021.png | Bin 0 -> 48428 bytes .../background_vs_elevation_2022_new.png | Bin 0 -> 45148 bytes .../background_vs_elevation_exp_fit.png | Bin 0 -> 58272 bytes .../Dataset/Results/calibration_example.png | Bin 0 -> 25868 bytes .../IS2_BG_Rate_Land_Ocean_plot.py | 483 +++++++ .../__pycache__/config.cpython-39.pyc | Bin 0 -> 1925 bytes .../analyze_nighttime_BG_rate_icesat2.py | 520 ++++++++ .../analyze_solarbckgrd_icesat2.py | 496 +++++++ .../analyze_solarbckgrd_icesat2_Jobscript.sh | 16 + .../kd_utils/SolarBckgrd/config.py | 79 ++ .../data_processing.cpython-39.pyc | Bin 0 -> 3921 bytes .../__pycache__/interpolation.cpython-39.pyc | Bin 0 -> 920 bytes .../noise_utils/data_processing.py | 179 +++ .../SolarBckgrd/noise_utils/interpolation.py | 19 + icesat-2_kdph_py/kd_utils/__init__.py | 8 + .../__pycache__/Kd_analysis.cpython-39.pyc | Bin 0 -> 2274 bytes .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 693 bytes .../bathy_processing.cpython-39.pyc | Bin 0 -> 5188 bytes .../data_processing.cpython-39.pyc | Bin 0 -> 12306 bytes .../__pycache__/interpolation.cpython-39.pyc | Bin 0 -> 934 bytes .../__pycache__/kd_utils.cpython-39.pyc | Bin 0 -> 19753 bytes .../sea_photons_analysis.cpython-39.pyc | Bin 0 -> 8406 bytes .../__pycache__/visualization.cpython-39.pyc | Bin 0 -> 7993 bytes icesat-2_kdph_py/kd_utils/bathy_processing.py | 647 +++++++++ icesat-2_kdph_py/kd_utils/data_processing.py | 733 ++++++++++ icesat-2_kdph_py/kd_utils/interpolation.py | 19 + icesat-2_kdph_py/kd_utils/kd_utils.py | 1181 +++++++++++++++++ .../kd_utils/sea_photons_analysis.py | 449 +++++++ .../kd_utils/sliderule_adapter.py | 181 +++ .../kd_utils/trash/Kd_analysis - Copy.py | 47 + .../kd_utils/trash/Kd_analysis.py | 98 ++ icesat-2_kdph_py/kd_utils/visualization.py | 263 ++++ icesat-2_kdph_py/main.py | 221 +++ icesat-2_kdph_py/requirements.txt | 14 + 47 files changed, 7225 insertions(+) create mode 100644 ICESat2_Kd_Flowchart.png create mode 100644 icesat-2_kdph_py/README.md create mode 100644 icesat-2_kdph_py/SlideRule.py create mode 100644 icesat-2_kdph_py/__pycache__/config.cpython-39.pyc create mode 100644 icesat-2_kdph_py/config.py create mode 100644 icesat-2_kdph_py/data/grandmesa.geojson create mode 100644 icesat-2_kdph_py/icepyxATL03.py create mode 100644 icesat-2_kdph_py/kd_utils/Kd_analysis.py create mode 100644 icesat-2_kdph_py/kd_utils/SeaSurfaceFlattening.py create mode 100644 icesat-2_kdph_py/kd_utils/SeafloorFilterByGEBCO_Module.py create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis.csv create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis_updated.csv create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation.png create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation_2021.png create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation_2022_new.png create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation_exp_fit.png create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/calibration_example.png create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/IS2_BG_Rate_Land_Ocean_plot.py create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/__pycache__/config.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_nighttime_BG_rate_icesat2.py create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2.py create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2_Jobscript.sh create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/config.py create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/__pycache__/data_processing.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/__pycache__/interpolation.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/data_processing.py create mode 100644 icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/interpolation.py create mode 100644 icesat-2_kdph_py/kd_utils/__init__.py create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/Kd_analysis.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/__init__.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/bathy_processing.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/data_processing.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/interpolation.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/kd_utils.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/sea_photons_analysis.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/__pycache__/visualization.cpython-39.pyc create mode 100644 icesat-2_kdph_py/kd_utils/bathy_processing.py create mode 100644 icesat-2_kdph_py/kd_utils/data_processing.py create mode 100644 icesat-2_kdph_py/kd_utils/interpolation.py create mode 100644 icesat-2_kdph_py/kd_utils/kd_utils.py create mode 100644 icesat-2_kdph_py/kd_utils/sea_photons_analysis.py create mode 100644 icesat-2_kdph_py/kd_utils/sliderule_adapter.py create mode 100644 icesat-2_kdph_py/kd_utils/trash/Kd_analysis - Copy.py create mode 100644 icesat-2_kdph_py/kd_utils/trash/Kd_analysis.py create mode 100644 icesat-2_kdph_py/kd_utils/visualization.py create mode 100644 icesat-2_kdph_py/main.py create mode 100644 icesat-2_kdph_py/requirements.txt diff --git a/ICESat2_Kd_Flowchart.png b/ICESat2_Kd_Flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..52ad60f20a8a5174fad8ef90442134665edcffe8 GIT binary patch literal 673672 zcmZ^qbzIZm_xR}%BSwxIj8KhzW1HMUj?}937)ux{SA|BScUn$4DtrMkrk} zkpTiy{$9M}`+0xj_YZq;ANO@%_jT?$=iYnHc_v=DY`{p*Lr+FV#%N@ydzFlgnv#r+ zMw6BXXnF5+otlh{h0I7->v|A5v6$MP!+haH?W8atu1_n;FZEkK} zW_%K2Twa}Y_uMAS&(%U_Tlq99iYk`Q*qP6hqbhDI-)7WQ!*xf*#3sxKO3Or!j#Fi$h^M?yz+_#JM}+?PLGYu zKwCxt^IS!ltNXv+`_EaRtK%bcJkF-yE+lO4JSU{% zM#uQ?6Ge-rMCQ2t;|tpt;6TrXdAFy3_e6_EN9H*Gqsw0+(WDl%cebaFyln}k_$5k_ z`}*$>`%i&g52MPx&X@wWzG`Tt^k0(vqj!4?ZGPGx&l|G?V#<@4xtaeT!?8fH_5W-# zhMjd(UAbBDXKVX*YUIb+e_Mk;WPz@Z0pw{+7bF?*Q@8!jz5o7@KfmXO0J`5=N0?I5 zZzJFHf6j7%mEzH}KVFt|_HM~Awt}dC@0cS%{$b=FQ$V{=o=q|(Kvw!MX`Yv)c=Uf7 z@DD)^uuvqM(xh_B=~L2xM_#s_-f@IV-3n_zY<Z&TJuoRksKJiTpvnLHP+(^M4JR zAHP%PJWc6I;eAbLSai%nzYE#Fxxe}O<8vzowyyv2z+WT$en|lPz{0K(7`1Hd2ii>I z#D6^t{dC-MCo$QEZs4Cvbfzy)6se@d|Eb{T#VLY=gOi^V9OZ(Cn#*vPRlZfdo(;FM z3nj&>9}(sL@$TGr>h||s@45cZ>5G1)-10!QY(>dW-L7nJQ@YjL6`QQ5DkaYi9k}=T z%`5pYL5pQGVuc<;Y+d%2Unw6w`*G{vCGc+|x$@(vz3vk}J(AZ0i+*_VF6X(XZuMJG z?)=iymr41*HxVw@f&V|Il1WR*`D1Mdq$rx3o1+4sJ)yr2<+d=Vw^aZ4MUK<#hTALs zVf+8LfFcm2EHW{!`L9*}or&Tm+dt*?_e;^iEJ#^znBkz4r9u0y!av-@KShrIJuUL1 z_vl&IQSbWe|MB`i)zuh8F8T3KRkKH(^+dJTSN(fWV^(s>fq!TtxsJULFi&qENW<=5 zJ%6cD+>H9CRsB7JX6%`9$F|=tIKD+|(fW7ue|p0!KOk5h86_$V*xJ{^%IJS~6NO+U z|C9w<6mw>ZP;behf14H=mC4@%`qMk*(opEr$S{sSH~HhiTsNwk&Hp*JG2@wi@$3%R zb=-9NUjqL_dk<+X7$p^eA#ZN(p}zh5tN!@U;wB4H?XR`VC8zpbm0Qto#UzDK>1s3$ zBfV_Umi@`m_qK;Bft#`;s*e`xk~G7^TTc%+UXHA;h4`%uS}y(0&dz?DNT@vo`ssvU zdt`Dh&^BAegMdx<>`jL+>|fc$8KWF+ZAar*ORvK8@o-D(k^!f6C*jhue$#}5@OEex|Kpks(qd2igDg&72C4oe zD_BJMYgH#7jf)}ARTC`v{*VOx0Yx*gx~d zyS?8&NBlbJ+_F0~y>kCT{ss5U)8id8t(Y6dze)dQ8gyWN_xUUTPCD`1zfShKXvQj* zt2F1{9V{d(6R}-U#|MjP)vnaRdjp6z3HK3)Ih*?*ZzvzGRo)*rH=wJm9mnPL`h6XL z`e3a*-ha|1kNWuF^EPkm#*4SPbSILKY-4>6$!?Y>BDBcO()*t*l{cFfJA;OsBJkX9 zw{Zy&mpcbN0ugJ(`r%KtJuu!)g-U}o89C1zbO-bC0v8-QV=h@0e{VgK!4x(Kf9nbQ z%{}L0_a(utc1q^8Ug5NHhyhG?b4u~fx?YpjbGNKVS5FxgZbt{ z%)Rv!b`ds(o^RYGB;7;hHmJ9;f#1J$jyxyU+di3YJ=)~$4S}6+Pn(r)bAZt!n&v1_ zA8M({0v!I>6b&M|Wro%Ei`0*|x{zPwHrtN32M)izo(;Xd9`WI^*@S^W82i$@{V!}W zj_atrFuTp-Uq`dQ8itfNXj#kaKGA+Yo83rigPpI*vl`_>+gRF>p2NLwydK)&X|b(2 z`w3w_)AwE{o;DtSeRj)MZ(symalAhp!Mu+k>bSb*Lhi%7Yy~5JF6VW~hprX}a!v<$ zP1aTa)^NLAVK($yOS@}SyK3yic)(preW1Z$#4y45oat`$6vcD?HELwJ~D^ zqgQK?6*pxZn7hJMep2`3@JF(3fUO}_KJ~#|G&9Y@kBygYFLu4qTy+nU`P9V4#i6>; zhpP538pbXq7v1_c_3G9Bmk^Lp;qjZm?6PSN*s&Tp9XqzLV(>4G>|OD_8d^@PYY{Xr15a z7*~3H_+!Iu;pUB=NOH4P6%QH4am z<`;z*?>+()OBwg>=Sm@E!LXe67B>1%SFc&ETh?!B-SV*w_)q^~KR*8lld10ABUW#zr{A#_2bun8_ZM;XW$h*&Knp}Qn#WiFXyvvR+ zuti~(O|oy@R6p2>D}H*k)NR!sTfj||D6++1OO^GM2m_pu7MPARi{S zWRZT|RcLaYwU5Z=vcp@AA#G({T{iL?X4_LYh>F!V(UcD&8KQXG#uoH7T*nM}DWtfr zb1sIm{@Pvx$*e_PrVZno7X6wYW*c$xBldZe|Hdb2m7tQ1e1#un>N~o<+xB)EyAo-e zmPV`1&fQwO&d(y(WHw9+ugRZ0YG@q3+~dX9VyL6mp`miwa)J`Qtm7d#U<8}?=?(-=1>NhO=H z+yjoo^>Jd@bLH#WxJd=?{Q)14%^LizE0e*wcs%J=$`Q;cV9q^=`(#$#J0n) zlI4`T=j246GI)N~d@%HS#@F}&YHX5R9p? z`R3q~b6ZaxMh9ctUmliVb}|A9&9}MvTLBcY7P8sA8YfTP2Dn_KInd@(AmBd}TwYay zxE7)*9U6pB%>`is;Rg;GaRDjow2w7v`H~xA93mIfG&N-lGaJjLpUNG6P$!;HOzO2r zEa{cP1^N$vOxWp+04H+xgm2EFU$!dbyn+*B;CtiO%wpB?>IL?Z5mzmK>nu@{>d@ob zqKe4@HoP;5EuMvr;|aaS5m5mmIbIykNfkv^w~FWWVt)`N9F9UQLR{qZSyIC>c9`y4c47Aq zSd1}+syZgfFZxFb{&PlZlXxNSz;Mqg?ip???!3uMj^QM3FH3qO>#qYA-9g$X?hO8J z#J4AV(_I#vI~6wAX~Ssy>CN&Wioat4BQNHBr`#XYg+#aXmR=xOdrY9!C}oz6-;R1g z8CDI58D6ZsV^M5~my1mX+(r)PWP&O|q>k+*$rrtYHD>s3Q1Of z!Vf`D_S}hC?=Hp;^-A!V;I579x>J026Uih3gqV_;lqcjLz{3uA=|XPG;wu$`D;QiH zR`D&FZvCBNJ&k3b+xL9E?CQfV{W?8~KDpGqd{V44)Ez!iZOjGF?)hGDMB7Gv2);Ks zK;;qQPYptfOHGMa8Pm6AaM=dIO|&&{jYX=2sl8QOSJ;*IE)O54w#rgB(x?m@xmfV) zc;?lekE}l^c#+gr;m=f=?Ki|eMDhP9d*Sht<=e$WiZE_fI$lL@`-3vxy>s`)&9H(P zuAV+sUU?7bP3w7scL(V(&%f?1=>9~_9AV1B3+@#(j6BXGc>Bnzj;2_GJyy6#3!^2_ zfi=oxXz_6lrWD|H@Q%ZD<#$2tyhy3B|6W%VRP%=KRETKlwe z?j7ufBy>q=f|)A#+9Q&aA*UV}r3MXDxlH4yqqk2Axz=xn0vI;=IJ~#0G_%;+>D1kq zKHN*d*_CVkOZd?@Z?!f`XU;--9bJd~HWHp!n?S}r)A6ve{B!0{&D-WO%UkVwq5imo zPJ-I*h)#5Qsut%5l9(T0$zXjXvz|SpyJ7K~aM;lvCJaK^w-&5<<+ zNRa#OTZfk5MXjh%BV(vC8_lQjVe(w?|F~Oy7&0Hwlf2r^U!`m)8J0 z{sR9(qU0_&HYRX84>&v8SYLA+%P|oAo<)*~j<-W5o`&YfR(~K(4FQJ_ zY^ZSifQqf79(z-1Z863E{#sAdrIsL@5;-Tb{juV}FG?O`!-NjCOjP{Q`F&^C2suu% zokeQleXC8oDhG@c4O1iezQJa4ddT3XI1j@|%gaoQLiZ!996anjoKz+eYo6vxYrTCLbN1m{Upz+VbeI=*__?gLalMi#z?>hD3$0z1*2; zwdu0(oL&|BJ@FXs`($23!7+GKEoiOBD1_{tM96^jYj7B=O4h*viGsCg-ECYYx9e*j zaM)K!zZL@#ICj_AT^42~7_6~pwpqtM~?YfsnNu=K3vKBTVSgJh)^|j~9}s z3L(-Svk;AFMTxW?oc`pJ2`?Gt37Y9#ESdx1J{GC3IVBgD<4@(5|_xXd$^fBh5i!b)4;6`5JMe@loO1Q zGoJCrapziK=M&1KCu6BG8LKjHi9(0MRq)^_Y7y~g@|gjm>+9c(AcypBXCB~5C~dxe z9NF1!j&*(iaNaoTx=cS{SkFH_w@P-=0r$52=(6Z}lH{{c5Kj$O2eTg|$&ji@0`y=@ z_%jdzs;q*ic7RaYiWDS$o^5ofvwgQfN6->x{OPs$Yx&Iy_TXJb>{4?}9=xmmGr=@5PMm?FX3%V*2tfrwr1zl8h z5+w=h2erG_puv%}?WG}ta!vWM?=LP`&xdg;EFzrFR|)yl(n0g+bOil`jBsGJUKw>| zJ*br_l1VOH#}|7Zo_QlC&md@&4%UZ4`(v7CUQezjZ%DKdb=<~~oI9QFX=-~cy5tB@ zGl(s(mgY0mjaz3?kt(B;Vc1X^83O4{tBvtzNld4kOJF*Hhbq!X(F8UkSCFu)OirTn zEKDu94MMGO-cC+cSQkcq3e9DUu}qI{u@|DGHT~L?tlqD?WnkDvVC-XXh?Z$76P3y= zYO+j>D%L+~2NkkM5IK9x5*We>;;6Lu*Q+omm z%LzL8@SW6^Qhceks2R^G6fwmJ-qN|9l^{Jao+w9QuGd^uUUa!wd0zTZtzM=}Zxnrc zb4jY!#iWjLggXSx%cAzvrdzcG#tY>YU7;-5eHWCHa#@)uPLv=XLUS7eE9~4?t4zB- zNnX4&-m7cesL}{m95rhvo95}v?43hvAm*A^CL`}2(oL+zF~->F9o0*5McjP6MFD&5 zcezjWh+wB$x}{QH>Qm~FN$E2nJb1n;VvBdBRcpG(|Cq@xP`6Tmc8v{RWgXvLPBsJfohygIKR z)I_dfXabhTIKeK^>J&*Pg2I;}tNoW(ix>oMIsCjen5;m89xaN3pz1= z)vFBimkP(2P-Y2o+YU5tyMCTucE|JL$Dr}ypjyL_Xz_ZH+iab|_3w53iIoRRxAMiA z<_zZxm%*-gg6N>dY7=)}~y}JrVVcu!l zwO@9qapdHE14$imyY2K9q@FH%Ak1PscomnTdF-u^m4h2_A944LQbz2?U@G|GyA_{} zpi4sYQNdL?p-x%39bq7W0tAnV|Rs_rT0x{?{42(*b3?V)R~g55SDkLsa6=C zTpQ96smLJ7a?L(rb63DWA$Y`2s3R_gDVV!U@FQ@PHzsQTvS!amA%V`)VwuyF788~&`m;MOM9xraVs|VDX%>1Fn^5JgDf%kYx4rstlZPZ z;c?PMA}fwXz`d>y`Yk-%3kcoWiYecpuYQ29?46%E_F07C!;(WFKfGTkst>d2O~$Yp z$3|DKr56QVS#tR+^MSq;rI{l_$vtjaM;;uBzQOaUjHm#KD{`wb~w`73Gi>YAhgd+fg}}!9W2Y?C*y+T*9C_$0KHz z@{W~xmRPC8fjFFQG~jo~Q9Q8+B+ZYn?%pcWLW&?Ai~JU(J+@QMyVy6>c^M^G@~6dX!IT9v>br<< zz*K|NEEY^G_PlhiOx?fBzRgD^-`(U=#VzU!UJdGq3DN3I)^crzq~$$eiR`OQMP+cw z#t66UI^AU3^l*@uTVy*OQWE{1chDW;>^tMc7v~MDoYVB`vHkB zfB(d(Wo58GTg0I|`QkAIyM*EMZYRIAhahs<#%%j?cc!U#4Vq)c)SXdsY@?-jiR8U+ zZqIHBF-;47%2K4QCykKvrp|(Juqu)Iwu;YO8~UMCQEaSP^3{AqNg`+}=DBV{Ju*uA z{rBt^!wIZ|PWPB(5I@k6=;a`d8>*`d$i*VBpLTg(bx^Lqm z9VW?RXhh&~w19^M$7mI7Eb(6da$RM0$+~uTZ8Z9}mLNiKUJ=9`F_&_YDkaeMG-#uD zx&dRr%>;fc8x^I1*Y!Toxlqwkj}y?pygPUAB2|)K_o2=V&O5g&GR05kL9E>U_DEW; zQ?kjJ(Y4}v1dqG*oW8ek6J%x?0$W0Qqk@Y4C?vn!c4ezsiX|mMl6j4I(yWD{wR5Go z^X^Z!$jB}AW+WyjMt`*_>frUcs5l?}9Se}MT%m9$S`b`yHMC6 z%VbzBeKN>{yi;~T!dmB!*rNXaF*0&DnN&B7F~eLN{1Qd<9*SkA*(c zi(bkTF?Xl2;nBwp9_@;UI&p3Yx7eWb-xMGpvIACHSzdFLeXiv-PL3C#k_=-HWSiJ#bW6yn?w3y+?#p?I134GV zaDzEU-%9jl{SkTFvU8!PCcYs+o(hcqMMFODk;UTrnN}yj2OIozI~VIkX#;ns1tkl0W@c{Sas*7La@z46?eWI&XQeY9#5l)T_amW zug!1jbIaC7P8AJ74E-VD^J{%ljJc!sx3}Vy@T*!e3j1fvJ1=DG4ss4ft?g} zy#s9OUOLSX>-|JgJ};K;2ON*RC=ex^ADkvSE8-PJBtop}tU;X&m`tDZW5qa#4xu@C zBdQ}$Dhrgnbl?AjT}7c^FiFId{ZQMQg2u9+RVep?K^rt}S<9zS0e@k>!3X^M?A9P< zM~i%R&eDli!}h%3jDg^Kkz{Kd$+1$ExvOO@`KOqjjGo3&x^Ph?Qds8AV!_c9zwTv& zUqrdZ>zOgWo?kA^+%@Lim&jW#Nsq_dPPLE<#KMJO1{R zw5^Vb9w3uL4v{N+K@X+cY8v|L`jfJDdrqs<>JG_Sk=${-to++_nJJS6={*O+Qt*}i zXq9t>VS*crRSOc4>~Z-~Ux1Fc@-2+?{A571U#!(LdtOMYy>Q;AfCk3-<(#Vb={BAL zuPhAlLowptz0%`ZWcw~uH)kRC>WrR41!N`OD9M%hUZxkAa^$;on6nZvl#^c@ zr{tJ;YY@9cD8-N!WVFbn@$w3)!0Jl`7YOyzakUqCR44`~&7=-hZYhe1 z^w@UReM24hOZFY9;%@pH-4EUoge~%)&;(x13?IY@OHF#UEAVpRaU!iQ9}$zeOQtr4 z#@yx=j65%mRm2C}`py}fPV&%9GbJ|iyG@A>ZN{^^epe(uJCKzw&=5fc$ORbfy5Ti+ zW!(v0Do3&M&lG|>n3VWFWbcEYzA2lfBB-oh3XP#EL?pUMG1sZQ8So2ufsJ6DXm(VX znAFygd~PB}iEC;Q-*i5*pWUuin~G}G@-`?B%l9!UoUxi>60gxwGodu&Myv|K(&|Xa!tq%S8qG4tJJtEo%?DxWZ%k=W& z9y0r27MdIExxRCt;BH?Lnh4BEKC@RX%3|T78#t$_A$sH2RpbSyQ~M6y&|D+ElTm)H zUotjtVqQYU8L7uy?G|rkbW$=JW06U{dGBjF;wP!+2F8-AwAdISQ+Z)OfcSV-2G^zp z@otxG=-_FBU2XL#ijP9(ZJ3~#)4}o3WL&s!z~|#Jm-x|_7DHW9S}==IP}omz#&5cz zuCHagsQ06Q%VI0;uQOiPcDjv&U#j(pgF$wI7v^VdSJ)^qAt zyTjibX{T;Uv6=ukO2bt|@vSJ>h1 z4zctRRGKmrLy#fzR(tBPOO$l`Kte;}(PLFtQU*mCNX+Mo+Y!1OaIb_Q+0LE&7{*7 zVEQk9C=wnqkk4xS{G6SIR!CX# zZGjR2$KxdB`V(-Nc!9wEgbBheBa_Mqy%Kk;DbbaJ&l8nx#eWyN02LoeV5-Y|F~*z5 zUGdNZO=>)hMlf1=f@r268nZ0p;~kUV$?RYTfysLdL$#q0kF5b&r(TKU32Q&o%iQzd z&c^{;SrSlkhHoCJL()maA3(WP+2`=-IK`AV_StnA$Rn=0<7k(0oS$dM5`=V#ZS_)X zb9Ylud!kEjZXB|g0Hx`R8ST61(4ys{A@l-rtf;b@JrhsWnI|s+ z#-{1Y{4}u1Isz>WNBeDmQwfGQR=bi>P(c3osG@NNzOax z0&_i{)|vs#dHj_Zkj-m-c`3xU+!ii2HwRH8DYZR<)4~_Nok&a!azHGFHhyi!cR;#( z!n0t$8zW7n5=%-a(M-oSnL{Nj-m1Fc+5H7&s#t>;^aY~@GrfgzDLdB59sc3o07LW5s>9V>y7J2>zlvtb<@2ig%%9$Gg6O5G8;k z%*_H^&@P+dfJNXj+$(rJp0`7P86#5b@JV!!{*-o!SK#@)&Rv$sbkE&1MNg+R?QNVq zxx(IFrOoZY-ro)t8^7x?tBLH9iC{vD{i48&db|Rj<*G5NiuIV1)1IC{!>;7}hfsH{ zz|Sl6q>4xf|69AO!{fAr;_lGkNt4;6iS%^f(2B|X z)mI?9UWoGBo5pym@B*c+Q4lONu08XQKp4~q++@UJc^RF7(F!=rBH#U@-=hc}XnDT) zFidm7$_xw!-*tWH5Q%N0_X(0{T7Oi?KI@y68%n2Rk%~4?$cXBAcux_s+Qyo2#gzhg zZ29#VC@G@1L5fXkByzhEAIF>;RbG5#nJ?${D~p*MDx_LQ>d39z#y`Q`PFmh7g0*S2{Cm9JDEF$!IZ|#cCP3oJ21IVD^^oCa$; zgWJi>U+f2noQDvLXo&F#i|rDr_~micNT+;pfw3%~!L$0<8*JpZcu|1|a7~N;-jj6E zRHJzpyX|WJkk9ZPoj9N3JizbNZyx-9evzh1c#leid_Ghej9#6k_ zJNot_thesH-g}M0C(ams!HdOKTkrUBeW~R2H;`AvG0=371rjxB>#|$l5XU?SNdEB zJghEvS#Db9P)B)3JO9mCz*%eu%-U$+d!N$jE?AfA5E>-Qv?D7Q=d+^22?ShKUjR7{ z<5xz;YFP8F9`)EK_?5X>ZaGCdaqtm+Ve$n+BjL$`@LcjeycYvSZY?xoxAT!8W24-j zG+-;7?%uz+I&;O0IysJ*t>|n<)TWjhuF1>o1u-SK3sSC5e3`Mr>PTcYnl`=%lEzhv zPC1hiyZiYF1b=&R>!parN%9aNi%(ptk#(x;R^MsqQcF_r9oPhFZq%~Gtv)!G*7Pai(yaLHh`76##4ZpJ7tGQZ)97Nh?LP@z<Gn24@W^Ss_1F*flz&hw(4w1f=?)2q^0y zK_QrN#e+TKIsbB7>%}zlOT|TgLia+2O`sD+S()G-WSUQrUne%nr=viPB)Fbwtl^~S zwrVZtY^F-mmFc?04kwLdyjuwJ6QD?9lA3kE!}G>B7LpM+MJ!NPf)&eTpthuM(lIj5 zg6=G^PxdlB37_FMblH8#tEz+RnwrZuR-2Lcx*YQ-8PSo zo~8PkF3>rcVmR(&`mYy zWNZ8MFXMUi#HF7X{3G`}tzQhvWWSk|EsI3TmyvWf!heocmZ$zBx{KNP_ zJQUC90q!L~E~v%7W9!VgD-t{$ZDC}a2VTA80LD`n^kLLzXsLMj=<26~(ebktUp5wk zv|+S}dgwE5=0z!`;{jHDu(~ftSF>IH?@=T%M@ZK}q*c*7y<+IB6BHq8)Z=j;pS#A~ z+-ofUB5RRIVca)N{DWzt30(mfRLElc<7 zRC`Ahg)tmlHL&v1kpL8|9tN+=M3_y!=7~CopRcr>>r(^=v!4VT^%|SLc&b727IrHQ zYkUF{akf5(Hr2IR>l%F1b6H4+0*&|38MB`jyXT0VQ_wAaWU?Tf{vzA>A&`T9hhw-t zCVnKc2X{}e;#DQ-V5=3yMY&6MdrZURr#<9~w6HlNv6HEDc{9I1u92swOJ-VQ=(F%Y z7yir0rc%SLpSs6FOxITg>n=$nyk>JK}W3399t~1$FARCv)hv-$E{?DYy-0M_0jZ*fDxvhO`a0 z0&GMLhsT)hf7wJ5kalxZTB zZmC{tR}%kf0A&_cWiL~4hk%9l-ga$O^X=-r9s|=Z2rq%2_H>cyGps*haOQRv#Dka4 z$FS(1W4>OcGm`dto+UNi4=1b^w1cIA_jMWh79ip-)UO~b5)DGZ0j@X{rEs%Uj%>vi zzR({^N_So}d}A!rtSbegu=2;XSG;pnUM7!iws#4p2J-mg$1(lghhA_bTw zcGbW=`7|{h$sj6BzjK5rn7=)$j^#xk7iHEg#nI$Q&utCNja|((on15R%D(2ik?7ss zkc2C_AxNv(1M_wcu)EuWAAgr3Pzl4L-}adAcvXBz2`x<6itO>qev=Mr`rx%LDdkh~ zygflt)q-`ndEr#K&G)=s{<*WN)Z|#QeNk9V^J5=@g>D+eR*~e9dOL%_X7tQ8MY%_s z6y6#x*1`h#x}}q(BhmWEe8z5QyQ0YhJm03#OoWA2`}TY1*xsxo?qJzgAA!qpI`R;G z+Zo|3<^dMn7IsJQocd+ep_Vd-Y39wqzLx%tM=~sKYwy)^>iY6X*&&L{b3GRL`vI-v z=!WzF496OIYWn2^(%9zLXD>Msjf70mO!QLyd>n7mb8)OnP=>w|ZIJ99(l3dW)~SUFs@@8;V>@C9O*yd=Q71 ztl8ln%V4Glx7=1>B4GC-KkbNKzy3MBbN9GDXu6WN`BWrYpNR0gXnSaDXT=?$_$LOx ztSZp{)IFBSHWtv#jN!ePR6OvV!tvn)+=ZfGOWufK0@o17Yo!xNXsus6wVL3g+Ma^R zOTUDesg9y|qGH}SMzAp#${BgibH&ce%WFVK_ty~FrYCS*EyT%sXctnVX7RN1d#pNH z!072pLG)@2feSm|jtNiP;+wPf`P}Ch-g%PLYQ$R~Q^Zx(BGMuMNT32SOrC8#D-u4) z{8o1FyGY!SlGZ{cb7#`I)uj8rL+2VfzG1@nca|{khq%ebht5vrXEB)^wzDE&ii?y| zUb}*n!MylP?JxGeuAeyc1t^t$jM=_ia6Hc9T%bX3brNFN`Y(4`U8EWQV5VV%(?j+n zktjt1ulS=xeKI#!NynvnBDs?cejYO#Q*LYv;4C3Q$q5>rbAx4OVHR(av=SrO!3eMp zhG`)k^y9Jm67Ql9UNQ1^g%qtWh7*J6WPu4Ga|J@Tv>cA@X~h_2V4+Cak&L<^&Cadv z1fej?P7foDlD81QaukBu04jEn!4+;_I2ga&2JLJR{UId1tOM0z675Au%*#VIDacVMb*#>utH)LcI_wbAlQapSG<5l7*MCcXt2=Cur(WKvLf$#gkM~Q7l#P$D{NZLaB+*nsTWS-P%j#Ml0kPi z-_Q6-q^UNEqwY30$il^fl?<)@qmK>oU2$_ICW`yLhMFXbcuRFD1(Ar(#2y0WIzGQZ zM7l^aT+?jDF1L`IFrE`~KKL4QFPZC-Ia4?WWqEBjCz$Qf)Luk?XadPP<2WW_TixN>Bt03Zq}K& zx`tzj8ylM&RwFM=l0C=E7vxhcqLSsl&XDdym^BLPV2qOC&U=7nYrOaasP+vH6D{CW z*b@kgSH_BPTd_&~EbgvzY9>@yC2B`>2T=PRx=ZEB1%!{&bt)Bb9%ZW<8K~^kuYVMVV9`vKl)|a;)G>Ey-a;SO$i)chLflzgaSjQt zJ#Od7a7>iKUcJFt#-ZRq8q+VCa1?)>g6C?HApa=idT3bqII7l-0>56 zX#2%S$uxqBJKkuG)w(GL8wuujPwm|Gz3UA7D{Xr76h>p-d(jBb(?00-ZSQREe3JnR zhBt8eK&IjYv=A}ABr|%_XsmaPyo_nYD!rTQRT@&ed;zoPp^_qmiK$lOii}HouD7>n zc%%KAIb!UZ*`ZEAQIIJt8?r-H2*nq8_X{DaY8r(--L-8FQYt{}eaYcP{9OF?14F4! z6Mvi{gr!91JHGx1G2AOo4rP%*RedVAE{IX=`=xzWYyaJEs~UY0{;);@$o; z5zP@9;`{wX)#l+WGxp84DwkZi2n+KbaTU)=ivx=7&cWpJ^VLkPZRyL|He(@p{#|i9 zJfdH}Nq;0n>!)von9L93RD-2>0f%vv6|kQOA{_a)s))p(nTf>%BfeGoo@r=Wqd0TS z)|%ZHxhhE?ciwHy?_-C|^4#~~Oee9VZ2z4sk=8jAyL`K2C=Jt^mL=^bF`R7?F9)sU zQXccfB%*2>dZ6taKY>tc=Z_XWajokV09=A;GdzgECP*YjR~`Lk^DFRBk)BaA&btp5d^+zOP2h_GB8p}|jXVuVox z0cl$8OOBi{91l<}TlTvUnL{_L>)vHy23S`LyQ?(#6#!HVryM?Ib z5-?V<4DW3eVtCkL0290FYvNXLe=pw)dc&3~|0BLNnPq7(K<8Sx@Uhqd7Ao+pBW<}) zO4<$@RWz9|^+8;%(>8PPz&JDN*YQr;!l33tes&63NO9d~7LD$e5E8*Oa>S~3y>Uc6Q87HeB>mLjT ziPjIMEc*W1$OnWe(%Fdd{jK445ht(I0ip-P-vRBGb!ZeqLmjwhw-ZJ?KXLoUzx#FY zRSK#tg_`zo*r`1*W+vYoX#qf`AHcHY+_BrqP}t*fEg*K@p(7ujK(7O3k)mq#47Jqj z2%@;37K=TAVFZF6kTa$idjmBz$()XOP-_jR7m%Gd zj`R6sPtECWd4r6C_?B&&UI^R5d*znqXm0GEH}gn%x)yMFH%w`&HsmW*-0^w7`T6a$ zmZK3DS({Y;bfEGvDy;?$50T~xAFz$LFYTx!-c`R^isuCyWaLmG{-Jb&Wn*J%LEvIhLz{vSxVrl?l?_&>4pGmP|i z`7_k<+uo}w08-TqhG2vKlJS51wEIT3`I+P+e<8SQ) z61-v*qL#mR4-RJLF_W)eV)b1%cBuuE$5zh*c34&tv_SXDV{%OJk0r2I(r*9#&VMZ; z2l~tbp%=7QG5}KAyiz~*-BC%zX)v7lUBS6GJ=m8=$=8|iJuQsJAPr_CR21rX;MH~_ zmMff>fTiV%I3~sSO45gbhY-A-qr4};iXm#j!Ts6i9_)V({4wJ>Jb z^Hsk<>aJMn8O>1jbE}K_V#prRnbmv(fFTnV?c>t-zqkFe6|&vy-kR^~woRE_rvXFL z`7c^mS^>aBcWY=i8vA_#00JwO{8nNVCqZ8`ZScm3cU5NUKXr-R1^lIVzZ#TORbnKF z>x7qf8l$Z^V|pNCI?i1~Cn+H@GS?AJnG1kIZteE~+BC^xlt~Ko3qWp+-)E@;cvlU; z_qk%jfY5QQ=Negf!*@j6u@Dx1%E}=*_+QKW7fE~`jJ{+{a}!{U9rVvw%*#s4+1S8Y zauAXzmS0Kaml>}+rQe|t6YJ3#cphk%%RHeDAvdJhmmJQkoTtpp;DQD2g! z(ltQ*{^_Zz+lJrXes6uVR*~E+x?kQdx z>YMnE6)xlT?#HL}&D{@X6TpDaBwsXX12}S$P)el+}2rDfQ2)ym%xA8#Ry=p^K&H5sPC)U;v1o#<_y#tdow zaVgE`x&g8-z(j3(U?DX?0cf6-e)@fY>v}B_?Vk;aRpSS=&;GMd55MS`_vpKjKz;!9 zoqDkGoTJa-umfNZxV=^8W7u}Px$M@q2N1*d)Fr#jhY*}Fl|Znb*6V9#YB#1m-`=B{ z4%?d)-yMGTvh_E>D2tgij=cd;_D+GU({E?d|NjKiu}!oV4**NFs5{$|oJma8TA`>N zV$04D8`Tt0zs`T=K_rWP@Z1hG)>~U3*RB&_0S%MsPJGF^Wy`%cy~tBMth!@@x|@1;2@pRgPE>B^ zq5Qqy&xlPfYi~5*9p51fcK~DisJ1^NOslvc$D3JK5F0O(t#tyIy9MCZNaHli0G2!B z1s7OS2S2H7)YNNR1+I_jjhFhf$Ye9YpvR^Y66={HJLJwwZ1j~N4#d|^X8R@T3LYQ(Tp)T;*}ozD?dL#9O;M*DJiWw zdea5s{m7Zrr6>}6Yq|`RP&z4=cLAi(PV-KzY^5z}qcPoXP~t6s8v4(M?VtN}51_#x z0QfNbFVT%S0V>XcXt;1eb)08ij1Zv$gTs; zqG+BqtE+4#>=#fW9&7oa$?^rbAf7jP4h^ExGEfsFdrfd;XrUbK8`PIMJw5W$!Y#yI zuat(58Ai|9y$!gh<)I&H0XxeVv9iZlh5;e{FhQ8n|Ksbus`j@PYcL2}^-Co#ZuBxTG-V?x}(%!v!VBRD25ZDCcz`O`u;>ODPWU^!+Nb3&> z((7QeI(d_$8u|7!wd*5Z>bud$@fvNwZL`=NEZc>!ItR~6765}ZhJ4z8n1I!V0DSt} zYf26M;}L5t8ec=N-=;e{2pWDfn)@`Y>$+mt$lGOVnlCiL3lBVG@Y_|QuZP(MIpdT4 z1|OQqf7pxYxaV9kVPN_dtQzZk3-G>mw;_q4Rn4ilqr86b-Fiju`6=Ai=KpxMzYT;2 zL*PB7EBq5o2JP+B*nx&uA483;k5%+fHZF0+xp%&MWu%fh4ch}u!H|tFU}qd6MJKz> z1WK)e$n}OWE_PFF-eYXd_N}zx4;PxS{$Ps0@Qc2efA>X-%{&1H!6TEFuRDZ6>i0s! zSo%B(w#U|2UI8qIAZgYuI1~zux0IMSy?^zG6;J=;P%H%fohp$`nd!%y#PwP}>8RzU zVBfQ*)*HdLz1!F>V)(XncZ6bC*U`@GmjjMJVMaNsl$9VhmtewG4p9zu08Pt=H)$)^|2i=2=1pyKEAki69=+iP;@)VIw20EON&>TeGBX7 zv3Ve_k#y2ct`Yb1^CK?0pp8QSyRgI%+(Mk9j`6?5p`YA&4BX2ZLW3ji;u@DQbzJaE z)Iv+==r%ChsWp%yI`$Nle&fh>O_?*-_*M`1VXt~0pK79R*W0%qC{ z=lsTAk(OFF2$=dl8~vLuOEjDl#rnK_THLS=M(oHJcwTzC`#n36A00{2krmV&zNCAf z2xJ^&J)w;i@kz2ce%PtoJ^O2PgRy3I@XEuad%uo3w)Kx;B!U(&Vc~cDLnPqo^6Epr z=XTSgYj#3!6kWQ1U+&~c^CEZQ3g?9XOWlm8KL5q`|Ey?$LIki;K253*n&fzO3q9eS zBgb#s3eq` zn-lV@5AyqVax>|tTgxN2GweiOV~+?Bw7&l%)F2|ZD#_MWJL{5q)t`WY11W^1ZTUNe zL%}90@%9DZ829alF7S;<(Jq5a0}KBB5kXTyhp%AD?KFv3g2a!7XK8)_4w`M87urnc z0Swr$P_jtry#xa$38+0U===(y>@1ZJQ#_CXeEbbkAO+hsD`PP>GH)QL1dpgNUi}y& zdwJUQ>%Fd?7K)RYCvFd1`%CT)j<;we@h6uW-HjT&O^sTz79!gGU;0?Zox3mf&$?KP z!_Pdxck{FH>IxZ;H_x~QGk`S*<2DPvM1S5> zyxA>%s66yDh)nk}4Y~S}D%YEI@Z?oCTC3X!Kz7Vt@tf`L9&ka_`;w(KlP0gOaO{$l zfOxRvS?vZ9aJ`?COK6g4GM}ai(GL8JYVud2q|b7`B=dh#COxY&Vv%}eUxZ-m3*XJW zq|bTT+LWj4c`KNkrf+D|KlZLJzN0FfO+b zO08YIkqg`Y(f3&P8|HVZa$@GnkeXnuCDHZ|ClO7bSSchONkE5nvHJM=1rbiWqaU5p z_O2n@>N)1yZe>R~g*|MY>?`d$qwDZR{$|^puCkvJh`IN>AMine8y8(?$lY!{+q389 zV52%;MXxELNRxP6)yykf|RiaV-{jT#rw$VfKa3J!3VE0Y1gpV$e#zK6- zD~BC`3h+fo?*2IB^cxU`Ul%@iX1jpKg7+t*0=|38=a=9zN- z9q>T>(T+xifw3*aSAM!kFCe9fvT}vF%s0M!U?(-I+JB=X=ypi|nl(2E97r7+kA3zO z$yhq_z6o}B$qx(cV(QitO+U*3Y#G{>NA$F9=o`uZXaRIzZ-0Nsy#lN;0XrYLleIVw zDjV*`%mCb`RlfCJzZ93C#x5xNa7dkwzv>r_^4aa6;E>s5}WFM>kDL3@@Y#Ses~w`!gj&oCi24fW1tjy4Ki9e7yrnvN>GCe z5(Zo26KOZT!VJEbb`N@-WXRt5EwGEuc$AaR*Y-EFRHvWO6@OrSb@OaK9#__KG_(AR zO;85ke_f2cIPfCbm5)?}pJkS?fRB9lWTYwKd_mkST=&*^Z2?pRA!gfSP;y@|21tr^ zVnXAUnG&UycLjB0WH0qdU*qEO*3qiCC-*V+Ue6hZ4*h4q`ta@hL5Ec5+N&C{X;@5v z0#oqqkeIjq#r+uxU370&*tdnB*ljyKX;R^n25$v>st#j;h=oGJT{AZGakkbY=>tFv zpz7cThZNdyJBrD5+=~qVKP#5cl>A%my4uS*7-?gRSzs(f)^j)@6jiHdOZw#rXC-qk zXxfE6@9B|QhemdaT>7K((&CT9g2bPyZ{#A5#V^s|BlHa(} zI4d7BwR468C9!v5;-IjnqntGU(@%>?QPR8jk7#oF?54h(zHi=k+WL8*e@G@iDv9`! zGvGcj>Xc}$d$a0zIGQ@FpT4p?2M|MEg^R7ngseBdyJ@K%@2xpb|0X(ksXw6o5rWiO{HXVp;*6!TP}^R5(uL>7j6f>$Ypu*tHB9gp8Tj= z-|k)jV0S-m1nK1t(j>%$0ieO|j!s3`%A0?KJN8|_kYD((N8F}#cgaj0>KgSX&eC{HqTmf#v+z(0_RSm)bOimeAItX|zJRC$3WpIZlz7lIDw3 z*%~g-IXG}*%wtOYO>>_fh*kT7e_!YgI)@*6*dG91?-^SGH@W0J*-8j3M#@JNv-($mnVvMJkj6^3Y{nfzc4h&%Pck6lF=2Fl? zDKK*8V9E9e<3o--#>!iOc1J6rVGwps!`ZmF??5MU@yBW1qmHP)3m2}t`BjJb-#vMB z4S(bJy*{!#Z$Fd+NU91br|;e0)LDEK7$KJbi9!ET2m^~FK1?{DD1Nvq(Wm8HmalQ` zECjzXs$ZQ3Oxkbe#%YcM0ZcZ~plr-rR;|NO<}gua00b4kG7_s-Md4;S%&yJaG(puM zwxYm0XW7%lt!z{_cYn2cUO|#gQvXBWd}+LWF&~|MG<)G>8Rp2` zWFW1aMaNMw-qY65;EmfWSUl|STHKhHTTHoi<&4?Mmms&dre=wZrX}fR&!P_sdcz)! z9j=E7;@UeNo$)X(S~8GHufVT|`q{6Y-ei z!Z3@e5<(+I1+Sl7j}edmQYc4`s5h=Z&x5!2mEy~pv<9ZlNClgCc>!i2^ZWv<|HThA zI+Xjc6WX7a`sL~Cv;D7eE-+8?icXhD?*mY}kl^*ibO76_zdlo(;;M^C+g==1K6j|w zN;zsFkt%WfN=V?plSp4o;1#L~00cL%_p<`Sc!^F-pgxUZN$h|7*4u<4J`|m0o*@eQ zDnLS3JoCdq;6HX|po(JK=)ZsKFY*9tWreypRR3>mWY#IU(Z9%$|LJLq<<1Hp1hHBs ze)97a|DUyhGrH!ZGrZ-8pH%;Qz5R8``as$HZ%C_xAn=wqt*!X~^Ad|ceVF+DA0~{Q z0@%e>=PLg$0|XX-_%Lxs5c|(71b)jB0oFPnB?H>@J?*3aws!yepR6s;m!f7iXWPPN zgYWx)eUh=NZN2{tmdKpFQs$Je=09H97OU8%{-3p%!gIhYOV80fr1;kz1(N8__x;x# zEGrw>Y!%rt)qXsz=le$f+r9i%ZIZiS@ax{^vvlN!%YTUEfv+x^@#N`A$wHpysmMqg zrVX3*iCif1c$X?&cVl)UDP8?g5s{e9Z(CCce~?hl<&}`PDzpo$#dN za0SQYabU{t-yY=4+iK@Nx}Fw(1-PH*C~=si(aumx{Ho`30)mZU?a!6bx3{71^&kzh z1)~lGf(B`LH^{$fC{1bt-K-H9jOH?3*q&xOLa^O7&wrj`)G*VDl<@r1pS74}Nw$GH zPZ0IR9p(iYt}ErYSN9C{jqSmR*Kd&~NcICqUciOptUpb33;nIh-KPeYM8ch7H$^^^Z3UlQ`s zM67Mh$$HZ71k}1>At96u9ec6mfTUN&tu&U+28bU2KK~(kX@Mp1{M|;31vC@{WQl=n(n?n^Ouv>pwp5%3onD{g}0HcO}jji z$Ie+0192gnz_y2+vB7ctWa%h#vDR{_MT%eui# zweTgLs~7n9ms&P=Wj&UX5gS>;Lj&D`_Gvi}J!d&{b`Wg-S!}qY$?e<1YiWJQWT7zr zN~~dTs`r9GaKdWacD0@qiyfoi%aOqNDM=C`63vf`CTb_bc@y|Y(|rV9 zX%9-~jea`G9VKp~-O9Oc^6X?r$CV1W6y4d>JCaA}sOPm%Y3n#h8n()$yMJ{V8DTxo1kRMRwO()U72ir!LE^TW-)p*he zHxP45`PdW5Bpn{}Z=tX>#1KG})XE!kb6M^izDv}2wPEJi+8}|5KOo#s(8Rl|AHWYt zX(bZ={_l_e#&cI(XJ1kav{lg1{d+HF>2SV%G8BY4Li$%v=cjIrj}47{5opN{AmE&4 z4mT4_Ty+O&3ZId`X+`eNV1wgoP~in$%YHwO(7Vcma$0y_QXw+aGJyXm`3v>Iu{0vL zS*CK$W65)Is}2PlgZ&D*BHw*s008}1=(;ky4%H+8l z3#`0d=st-MiV_Xzc-!#tV@&@2Av!?AS8EWqcU;Sayk5dCZoyHlBWoi$6k{>=+HVkP zMncTstLqQ&nQ+kpBeM6$?8d)b z!+g;9;e~zgP?Y6ljXVEX^v@4C&}#mugC$9l$zWVwVklkE{FFOPgNZ9a(>^wDbn{t8 z$2wK z68~C#6iVzv^4}1H=_O`bF6$vxo`^yHRWaupoGNpPb|e$Wm(2{XZY>(R2U@K?U6A#1 z>B9|C!>yH|qX`wVUHUncEG{PBCzg8jL&u=xz+UjEyXRan<8Fhl0A8eb2tLFHDO4+O zP)gc`)wxJ*O2`KM62&1?q4BHXpMGZ0_?(6~fiYHOn+HMI32V4TUaJ6%J(1CeJMc{q zuwjmbrszKlEP$I>n-A}r`z^ILu4NGpgS8fs;cBAJa}s&7R_kW!V?>q$>dXM0p_6*( z93)zm`ZgCLwj&sXJ3t@q#zk+PG@*va>gKaKGGcjLNB_|R%%0^@gfkx`uON@MT0D{E z=piah>p{##C1W-jV&OHrAz(M(GDM${J&i@}<6Gg>`Cf*>!$NFNo}F-)RxHi)YV97}qJ2hTd5v zwE80{p~y(wVow*D`BP84aY3jD0e`fg`?}Td7Y`9wdcEngrqDU}q>MwtN=gnj1!1im zJvgdMYEopA#a9=@OE=@V@Ji3j{WSANQ-r~vGa4`upAiIRo29M@r6KTyuLawfH|p^G zj@&a>nYYm0hP~!tF;9Gel0Wx#mg2z7fNXnI^YbCxV*3YZs~%4}m5^K8hhcaI_S=#F z4#Pl-jJDRImwDmrgc@spU?$|x>U!7#$5^Y+&O{cr%s!2-w;sJM{CL(MH;TS6q?f%Y zfjI1gTW&Q-yV9Rv_jhEhd*h#(hvUsr)D*w`Gf}IRS*|Pc9d+n0L~(qYD*`I>$6fXv zVMp2(xy&mtX4{%xj**aiHwMOy)Fq%{4w(*DO4GI`L<9B~ef}geW7_TkUC(Rth|C=7 zQMX%6pva6Ctfv1M!ny|aBU=hu+t_-v8!G$VqvIyC!(k>Q z_;hU*F_4^tK-G)VXrLC~SK(wx5#=)bMwHA#Mwl(};p2CtLM#%x)vQc4{ww3LWLGBa z@Ud~#An$8Ui`LfDjf?Z%J)dxYFoy9*QmV3l22=9tSOXO7cVI~tM+l<4U%_BWc|H}d zhxVf9;%E@uGDla;+!AtGNg%H=GWGTELkFLQIA^T|j~3NqymBijshj%U15m3A{sTxl zqX}cz;sJMdoUpye;FWz*XNy{^_)bITZ=XqeuAnPKrmeYd`hv`6eC=-2k@`INr=-T${U-GDFt1G;kW6*CN-&2rS-9`C%MrXdt5Wgvo7V9awNUZqE}nqLxT)k z2gmwJo3$DO<7CiQuI?#*i=>-7Gfqp<@>}VQ8DsazPzCa`%jzd<(%|+>T1E?{2v<^O zt3Qgx|6r@nXScOU`Fs%Z*qqX|T4(us%aZ;dj-A;9hegZsgWLs67%`iwmH0RS(O~a^ z3Gdoy>0+hwACXi~Xv2WDjOO1SZEmfH3)szlcS2I7i@e%nZ^5@$HEtIw%bs8o^j;_! zWX}`#tw_?luVvj4Ww;Kc=`6NkumlW$2}P1Yn{$2nVMaq{o;7xw8GHz{CrSQq2OTD> ziyBcM-7zckb!4%~Ptq>hb(qPd5(C){v90Juj}@_0q=S|i=|lq}>bjuhT@=6Iw{HvCYc`FuZ6Y$@M|68j-dA6ktEID+HBcZgjz;(^Hx2lXd704ov|Bq!#f<tJyuWj{M2QOzO+?_{h_rH`zlCQ}KKK!5 zw(%-%YrHZ13h}5QN*Ya9R=K|0c(8@U=)wZ5Tz@{QdL8cMc$w*JE*6m+f?zal(QZlT;|@wRfX5u=&z-M1rk zFh?QeV9|`E8aT2Ebk`hgh#<)?U;wwec{+=lJn@__K<`3~CR!{{eUY7r@zr5YkM%Ku zjW?MnP5d@nkO$V5(dj5&shvAP(@9}58WRS>tdT@Z%}tZ$@G*m@i#t;2T4`{HP%7>h4tSNR#+FTPJYl05Q4@nZZD&V=#0=x?7?Qw~$%U87 z>Fz^8a?n|id?;!}#fRQ&f0>MtKN)ijI0woj8&EE%6}wM)bTn12G^QB2cN5ccyqCeW zdNl(G=1+U26yhll9uJsi#BdFA&$=*rWIg=(E|t}Hxy%f5XQfBs$t!R3v>XrACP^*; zNh!N|wJ}IjRu^R9nZw_TvZ}$XE6~AWIg6(-V93*k8w-{Oj@J_O)^tn@tc~Yjl#> zyq)wst~b?j=DRif(6>tLu64AdCV7I`ycH;Y6)z5O-0^JMvRWaShw2*fdd2n5-E8t} zIpP*$*bJIo?-^s(p;V6)ls(Ph80h(E33f3@YZ0X);yi23mW~k2N$2-FzPdAsu2>=k zg6v>>&arc=WA|{1Q6PT(IX}5bT^{pN4b4cV&!je)MoS3MK^8sizwGIo(Y518YKkNT zNx=M01ON1=6vcz&K}2B#Hs8`cwfAyMFVlA*an)m=SmTT{BJN1ri72AO{?&l|l3dUH zl8%0zqk-^WqCzqE1)!`~=i|TkUG8*aRs9|tb~oo|P-vlf>f|SCYn44|gkF=u^Rn^s z1}U+k5?@vyoz$HQs7v$a&6d+GByg^VVxWxKw>%FOikr(JwskI5eCNNe?1?~WUr?zChc$*pYA z9GytJZbh>}V%+b23#F+A9PaD+o%b*LqSC7maLk2WKSQrTs8||H3(cvdb<8J?g!{v0 z{OaZzNE3zn8e_ks8M!X|=9|0E^awubGJ9V$d1PZy!eFq6D=jX=&Rfpzn4EIN3oQ6+ zcvm3`mEro;N_7)TjdikCg0|b=VloZ&8i00Iw8bYI3fkeX#(@tIhXtU4R;&#zQJU?2 z{p552S&d03y&Yl z7F`OjO@RBVX(?rR&p&URi<6-m?M{;S?Y+^0S)=Em45jC9Fhip1t4zv-hkU*j)QYbSvxb-%o483*rx$DM;B z!*1Hlg)L{GQkdtaLkUrm7Sb$!VYRbZg|e1`+G2|W&2V40_or)^$)@f6vZHCk9e*~* zs+G?(?bz>>ljZ{S>to`UNieHWWEu_w-k--J>nQ~EskPePV{kRE;TGxsmYc2n`5aWC zl|f`zvq!`~{*Js;#3py2YY!OtRCBIEo#zPPT?EF^6u{WvE> zI3alYpo&0BQ|hgxZST{kj;JBNn$UC1XapM$_iLqfY;|LGywiGWG^y%OqUq*`Rjum| zeeM#6Kq@@@Rn1oh3%}{R%TjTN2xr3`hj%Htk+02D$t#(Q&)q*vEk`;RI%DNum>X=~ zY-fXE>>^nX>k45!dy7w#%=5st^A-I~tSNw`U>YjO_(ifX0)CXK+?0iz2|C&L)A z*>+L}HT<(vSpDre^D}*6xaa&OM+s>eR(TJ>g()o<*-I ztJan2_WpAB3gX@NQ~RwgB&p!1atIHoz{^gVZqGw1Z*qXS#JLLRa|)0W77)k|-N9j? zb*~uOic=*%;JrP6CacFNEJc(+#{}VXSvNC=@9z=&Q*dzlhbIdImK0iC6Heo|>|=Z) zQ!iZzrg)trs2mzErQrhBI?659r>Lr6cV?=4qY}$*ZfL1HAm#A_=z!*sNrtq7Y!8}q z0a5qGUQI6qc?QKVNWuyY|p+V^9`+qKzf`9sVn39wlr4^4WcY0bz? z#?rJKDX4l&m6yhT&$UfkObONircn&h&DIn3C-tN~Ly^Cv6AWT=hQjLJ$yW4lF{*I4dEJikwvYrLLH6ME%VpYcY)NmC8=SMdM=g5b( z*MYINH}76*t$VGcE}m<2W0kcD`-XXn1J}(fI?H;eXhDXCD7c)NpDdS~U!@v_xuQN8 z*B53fcTK=w@PN9MGZ-J0nnNwP5rHt$R_K`DNWoOxqq_SxqFSS3=rtkCISK@%iA5%S z#^n>kmse9g|5AoudMmQmH0zCT8DF{Z=ZqrJcjvM3xt;J?lk)cI&*R%wfTOTey4}%YL1*7(-60W%FAqupDaQyZYt$| zZ1#&}lUB9vy2)R*T}uop)`bTAXuP|KduZa=$vyBi`>RE0WsYiZ1K&C2*DFgw1qRPc6T-%X6THGevM8?^Jw>*|p1{S!pJQ4Z`{<#O1zu=YPVKDv&>Tc7?AP}; zEHwx*>k*Y7!Q)aVg+V?@II^*%4Oe4Uyq`~);!dK2U;f_NlV{{2M|wkfx*58p4fA#v zb)Gc<>H%`wKgIof<7o!JM}me*^h=_I$#LU_iwg6z@5$k4>G8urFq7yFhvqT3QZL5l z^?@h61Gyvu(XLaC&-IDx%VIUu~5q6enbU%(x} zi(wKWzm)yiL#5!#KuQr9f5br{eO6y^`|v@3gyy~yP>H(BzWtY2-X;{J@aP!v8tA1T z)i<;#W-f1P)aiasJddl^)zUH5+EP5SUF`{)=hJ$8ibJzGZn9;tHe-0^{qZD^o=(P% z4;PR0Q^m?o(czHB0nOKN;6pyPaZ97JWus*+eAyteJ{kVywR6tVFVF%$kWw`DjNxJn z$>Q6Cn=+EeWVmGAf@Pj0g%|~PyD{4S4qo0Mh3sQDp=D!v?E{|czx8jGXcBO-Fs+0L z6EFQ1P3L_9mAf7ED&Q0m{h>I`PU-GU0^Z>u_$t#WQee5!6gx2ykf4A0=SQ+j`dqp7 z7BT&4GI{;J6xci_@Ycq#M)~kQqh>34*)`1U;f~qu6|O0x9w^k?UysOnQyAW0Ah;8^7#0KTIE}O?sAgfng0{ zTi))<^`)ANw0-;FF#V0}HHN;Uf!4tr3GYPSOzSvULL<}?Ipc!5WaR5;1hcak5xEjc zI>5;q|L-xMi2{JeV+by*{i}Sa$8u>4AKK4guu%$hju*Ql@&s6TgDPx^k}JPNRhRKT_V)qD=d`pXR2oIqdiy8&ZSQfxMkFB`jKH^m z?FAsa6SJ0BDmQ!R!pvrOj$Y1t=LA*qMF<(^h}HXl71>u$+39hv=Uz`X9E+d1K3Htk?CMHq%mFCR*4a#jFKsQBN#w<8*A&hCewung!fJSt-VFR#TsZ#~uEB>XbuXeX zQjPLBmEQJ~_eF~mgx!LbnDNA~>iB9E813CPp9`_IZ7dy<(O<`?GclA&Xz5%huX*#H zTk*P8ip%vX-KECD$^rE`5(waIx?``RiAE^L7HXpJc=`UGg!-~!M;>b7Btw{=TPVo> zK`5XWd=h$Utp4_Q-+FE*-xCHx9~PT<*Zxn3tbHTsy)f&azl&@}{Ac|U4X^D=a)COq zp2{V!u$LkI&0te0IbcXDNmCYi*Aked&3Z6AzA20u3NCV7dfHc|DW_@)LFZfeZa!e~ zTRLxb^iq_hu){ff)-Y+qxpe#D(V=7AmZKEnH_2AX-WQIHmMOeV&wc4GdxB=k#OF?5 z|A|5i<%cuXy3AUQ=<{DES)_{{N+ul_^2^X76IY?#z%vfXaQ z9Z;m~hSNNuFK_u_RXh1j9>NH2gVungnZ=!UQ4AT6+%zLis>iu!cNAhm2>VSTggF8F zx}DFwMLx9QPaQ;&9S!mM1U!^@go#qbXTFP?T(lKe44!nEdgK%8 z-VzcSe_#WIQfRjB?A3!W}S9UFgDF%taVdU=R6|9H&Y2AX&y2qxwZ`%Uhq7M86 zhypjI9OmjP7Bl@~+z06cy;Fq!Rj>1-(>~PoOTZ3aTfb8NRCW zexqt9?ugzKvXgw^kW62#R+{gNhL*4QJ`j8R(s{|FwIRgs6m|1T)S3Q`7BIri$o)%U z?w`2M?enT16Y7B3r*zrnTj*{4=$8~xu%l7$wC=|ZizY+ zi=`V5_c}pM^|SUNFj zA{`7IgT&0V@f7B_Xz4EFAZmSJL%9d1Ui1qZ-1Yuo(To-wNRv_-{Oa_Cj;aI-`|c?E zI!jc1)(q@)V{p+A_tO_M%Vl za?|*WxpwGU=ZRkI^HHq#(NhfmkY4M@fKJqqJY?_=VGF;cV9C8~e(LIxM=72NeKHJH z-7)!0YCX=aBeF;e9WqnvY;*-d*lqt{3nz=_hlBQ!?W&su57_a3p2E*L#Xydz&OfTxi{G{4g;d*bGouFhl* ze9oh-&->*!J)Y%_p2L zT!~kY%QwlN)AJ!ZRFjj`U&V1+I_OWqPR60_y%iC_utNaR`-2ObdQ7-W3m$2hR;I>Q zubX7%(HbSOO;a{y`^h$&DnA#1anO9&wlYSEk=-esfZylNkb~?nXvq+m$DNmY5*|`* z-JZJ$cvk3~Z=Ia?j;;Uxg0v5|r%UAZ_AQJL)|s$$^~0T{Yx_K>OW`?=Km<6&?4r%L z+|%R=pQV;B6lh`1Y{7(B)UVqSL~Y*Q_gUnO8kL%TQ*v7Ic+~ggkk5CgSzWxWdCL*! zc?x6N(}1wCJHvdbC!8mrT|Vg)-ugy6-(c$LY;^cFK|mg-;40&lDF?wn_dl9M`qXVG zGY|PHy*rg(jnB|(Nlycn*lkUBv5vqqZum{dg|=k)nOS=Ew|Ze&T1bcVK3iYOg81)D z&iGM`@JrS>I&}StYUAzJh?Xm?WA$Or#h<2&W7?g?ou-1Ha=aPJ2zC4-i#2G4+V9<8 zSIDT5br>rIr#{;V9g;26^7og6ARe|HwfXxXH$lQyKo!5VxmgC<(s!&MZ2fqbZ{Bx7 z5_dQNS2hPqQrrX`5vMl^QRy{52b)50@KQrd46}I8jguq#=*>8B3knB|2CSwmWGFqk z;=I4S&TA)2l3m85g;&^i>fhIyr1YXKJZt0vPA)5Mw60b{aEYl(ja$U}WzDAIL;
      2o>GQNSF9J0Qo z`Q!?fcQ1}wyE1RYMls1-44tA>{SQxtaR&tK;Rwah<^&!!BBAw}&T3J2h+NpRC^S@I zNBaH2V_UmSaHM35pq%S&>Z_@?e=PvjiM}3g2 zhwXQ#Gwl-)ZYSQ!e7Z%|A=kGH#MyYF)aFjE?qGkeV#5UJVgptRmvMVVc+8}=ClZ+Z z9NzAs?~6R|(>N!|bnx8L|8$#^wafRH_x1-=g1A!%`OtmSwI>BSKqWd>m2jAV()A1# z@dw%?enF0PQlw`K_H$oq1At=fI$9VJSV;}M@%vFIn7jQ@EHv#VA`?w*u&Jkh+1=0L zOWfDIGCK193|TcTS@g`LOy@sZKy!J+E;l99X{4qM(a5>tr;p=&V}ed=re3(Z$vpru zPab&M;dRA0#{5|z_BG5=+!?Y#yP$uJ9YADm#W7|YE~H5oYuA<6&N#6-zYr4)vbip4~JEWG`tqOW$1l! zVq!H=<3UWvy4_w&_T3$RUXW2}Iw)nH88F3rywkcEICIi%ouC^;xbOx2@xIe6*tV=% zbDvL!?oI0=(Zb%W^MYpob?LS^z7Z_J&~lVCD4|k^`ysc_#Y$v$`H@^ZOFB1!;bL~! z>r0f0Ch;)4l;#Xc$fEEbXkrv0R6e^XPsiBDrH$6Ml5-W4Tx;& zGJW%jKs~qhVdluq**8g7@!m@UDSvjvz1<%giyw8->-Gx?GOpc!VZ~HrAeARNX`u!q zNGa5vxE1x`GZZ+3E~n`=hBU*qJs{h-bA;Ib5xogmjeak=LKn5_Oiwe z14q)lMb_a$ex@;OLM36tzgRxiPsrYG4u^Irsst}BDMCI)7tVQ&zH1~E_l=YAuF8jF z<;?~qz88|GgIn+RVhLq=AVJS5R2CqPM1wL$zSP>mx-U{o)1lbCx0i33=_qmy5x~2p z$wZ^DAkSd=!)sKKZ^%!MONPJbF{f0Go|f}?bGctZ}(0+*ly^ z-TfCme*40I_lFjqwM-jjh+%%K?pF8skUBw_Uu3QuO%~8iJl4_>Wtcf~{8hPA=ktM$ z?t|4Abq($q_eG0VP1g-LwWaPOnP$@Hr1-iHt`ddEZLWG=__MTt%BjOlmBC-nbnGuE z@NKm&(AeGX(Q5g!O6wV*g!ji2Q-9u%(~^hBnOt1-e=Z-em;aj*XMWkcp%o|B#)iNm znxlkeym7zH;hRO$F2e}dmW_9QvT1D1L^}V|?wu4-hvwMeEO$*#$cdtO`nYcNoL?SF z*EK{Wvw6Rn6}HaP5-^*PBGij5Ibkqccx3r$dMtmVD|+FYtse?$xI}4#GGDm!C(qE?4empdRy_x#0kotzh6|~3liG7J~S5)yb+Yt|JGXFbA#UbsI zV#`yc*vx*+uNs14XrW6`2%4vpzJ*PE@-VpF3Sm*0E~{OEq*Zg;*wDt=chkI+cOA}7 z7;HhDH{Tz&mRdJiVX~Q)Om`7W%Km9NH5ejU zxUtIy-8JlTh4l=lH7eaCZr z)zYtk!UblE&-8K(3msI;gjBkC?b>3R58Wo57UrU1#@3-)sA7HipQfGi9hsZCk}IX| z6Ir%S>-cw|jYJ8B-!*%=y<>|$99{w2Bg6^-_bwS zkn(Tf^PS)PW(~$Oqc$RtuA>%R8Cm8szq=O}{3j_%W3nhe_HMSV`@R*pxe z?}8%Zbz7u5`HcKzbtEUo!9kQYaVW!CR-atW#uJ12<91%DIcwM#XjhcnqVVaL3~9OT z68?-w+0-$D;MY_6Wvs^=^yzPV*0!O%v3!zoB;ecsp6MxO& zJ~9_jY35M@g%7E>iX26qKKXR59iEm^OFlM~*$bmWON_ZRv3W;mwjP+w;{#lsw|fXX zeo`~J>7Xguw;ZxN%_Xk%E70c7#NK^a(l-!pyvWe<@S?}m!0Ok7HU8x#y{31%=4<%j zPZ_0)q+H#LHxJPoy8#La`NLqbDcibX15;EJ%+0O%6Y+@&{oj4(#a|R?Q+2?+Mzo?D zc{)t^t`9m@Ou~Dh0iaRx`gn0SM1x1b^>9z6l@*jxBCFM)Fnh)J;%s`|FsrD2*pr(AXYT&F7XO>&wJDS%~Mg&`yOKl=sUc%HL=`U!D-BqYG6Y$gW-t zz%<}m2p>Taf`sM*tvG4_VvGI9-(lAvk;n;yxWuv>&#{&`?3kAS!q|55*m@epyPL=t zdR?8poL{|q3$1)GiG7$|jiE3y@uCYJ@dVRE+Cu%3#4SA858DQ+{3ebH5uoXMVB&Yv zZuu&IlRC)jZq_W0xx2v|RV342#aGo;*@gTD$h6vw=J{i;^(qey%>-%8PcmYLu&ZX+ zhqa@-8HWmnwSS3Wie0wFmtJeI z+UWb2FlClF?=0nqS}Wz1Km`pSKL)-&8X|lWp zE-1iFX^&G`t=*|^0nt%QqwZ>BFZxNBHji-YNR>Iu7WGApulkV|Rz3uM#((W<%xZI3 z$B2)+WGLih#805N(ZIh^CtppKw%2^^xiyldk8GDi;CV4FTURYkgXoCE&a2NoN(F*& zW7J`p(!Pm6EqocG^#G_Nib?gyjdWSKH5{RXcV=dtq17luPQRIBc>nCDB}G&49!7q% z7^#H6v)u#tsM%6Xx+R{WeERW1&DM|D+5@ocI5y!0wN|(5>eGe9bVC~F=gr@^)BICT zPcMKM9hotE5;<5}MvLMy+4ED)%4#(hw)!OIdd)7J*z|fm{Uzgc6vP+kiqKUv_e&0g zMMKqo8I;|4r+{K0puPlrpi;vT^_yHOWiwGIT0mQVJ}nJ@EiOUmDV?)t}@3V(u)n*vq{8GMV{;#;w3{I)2w_-a%#ym!oHdNm4a%+fMK@=!E#Z$-MZCk~w_dXo67F{GCn++#{lS0N*e# z)YYsv7y-_QNE0U(np$~@<|(n5YeyVp4!iFj3o?n|GGhvz>LzODHJh%8hn}}Q{E7~t z-Ms*DX;Csve>)Z=wYSYnv7W|TGqwz(y_37zJ70|#EMN#Zk&qo~Qk72k_+IQwm-AL# zIjr^t86u6FgpY3ZMXkq_>%#SGP{~Qi5ANloKa=JP6TuWn!m_WcLwmPXwq|$kcZfsm zH4^yEybhU}hx?PN|A(%(jB0c1*1vagDGsF+Z;R7XoZ#;6PASFR2@rx5X(?9R-HW@s zySoPh1b636_kQ+s&N$=$@`b?|cS2;|Yt4DhdHvQi330LGlo|Ezj@?ziTCb{&U7fI`wIL-51)fHr0183=12oQ{$OK7W44 za!Z}Ny;oHs^!H*Mr-wwP?gSk@&FLUJ6*hW>`*W_r85-o#AaP3a%y#-%Z;+tHHo7d_ z9uop3Al%W=rUjY?6Yr?K4qu`hc)*M22xQaJH%AC1yNUW(_pQ|#69&Cx{-L>#{?aLQ zKOQz^{o=Gx&eC*4O1m&HWVl73P+lBFi(4cH@ zPnaMiIX-!OhG30mig;KJ+Y)b*ZtGPXE8R3;ZY~=3)g!Hsp}hUz0jG4fKMt3@J8rFss%Xb>bX1Ue0kKuZSjjP zN;Rz^iFd;&jGRk*D+p)ix1}02EmAoGsYropjI#a%_#1;*!^Rt=qli{8%!{zAd0t%oUc z1Gmpx{H*i!jwUlFFZ9Sgf4!+YERY=0D?YTcwhpwj_FU_1^DiW5&h~DMI<5vw!sgr! zr>D5}v)~RY;Wp4io*6J}(H$vWX%9RKi{Ud#>V15ufs?)j1w1crJrBOK(B=HA1tei! zoM=FUnrXw{eC#`8j;P`v-4z@l$Y8BwXtnLbrp#g$LmdDRH>WxeCIiGweC|Zk1wdsK zr;n-p>5Wfsu{_QJ3WLlgEI%pn7ydR3`fX#rC@z8bULK^-2tB+4aVq4KKZz&-MNcM3 zOJ_{`$TEkpk4YeB?{H?q%u{|bJRVrvE2s7J%98LBvoNSsyx7vi&Gq94-p!r$yaDoq3s!%2H%f;kOo z5XW%bK%RFfPdTV8yaPi6cOB7e)cmoN)iMMDYw*i*h|72+*y(=8oCgd@ zR?kz`OW5U)RgVY3u%~k^tf!jvJoq?Gii>V^FwUfNd}_|UeZBk|_%2G)GxZ+0lJ2vP zz2dr``3A7=m1_X_{^3)?Cq?kZv&`w5to84blsNKgCn)xWT(&^?Xf)8{^Nn$LEUq*& zLW{Cf$QD+&e2RE|L}es6?PPFdN?Xal=i7*GU93|P(^~Ymvzr;qDFBM)=FRDu!(H8a z!+!1I5${H$m&-8Lb%A9tQOoIGjWY(wBJP-lHL7@So)6?JG){>LO0xgh9pAruxD(%24fQ#kh@1 zR*#!Y@mf>+oyW)4U^P&RIk=CZpsnpzd~~Wj@n;-qu*USC4$VIxo+mY==92hQ4Y^<= zhYD=o%a^t_VjDw{^t&s~Hl@2=D2tGmnmyuS`J5o{b!}74=*On#{C(}6znkLlAQUzg zr_vyaEn?<{dlioKu8eCsKXl$$%klZHS9%}=j7y>+=?oZ1L zciU4q7aK5^&1}xO6=l>E#|qCha9HgsXl*?n7C|X^FTKI0n$9oe9*zRKZ}4n;EW(Le ztU1nTiQp3p)_2KvTYCO<>3Kx`xcVH7+e;01(?u)wPmppw5k6T>m%_#ZpH}gnRQFOG zcG}H)M~Q;?v^;v-e3m}8QZS^5=)WB)?*Q+wXr#!iV5|DchpYUo(BP`2K`gsjqa0bpf$st_Oz3Vceq=0oBV44Z=dH()mp* zRV5(r_>Ksti;7W7_(C2@&dtWgZ}7w}=D5@M$0%FT3hNeZ?Poq8_aft(jplN=4x@oK zPqEM+jjL?kCp(}<#cAe-d9Mz6_oH#v&Rfr)8XBB0lIh~XB;zbdb~S1^P?jtAy;1$JPm@H88;!n=05Uwa~?a-8IOcGT3ho zl-Zz0EBhD2{eO&!f3G;gJ=E>L7Isp3ts_jrr$pfThjltgCSK_Dcd5sj4%kN$+Hz7< zH!wDF$9G89>M)GC^@C}}32vkH+opJd2zTtG;D(Hy4*3?ziAX4^4<~WTwRzvT(KnAU zuFTX+Fe%+Y&JKa5X)|62%MKVr#At2j0Urle4wdE8AYSEA`Y0;LI zwPj1{)uiOo(eIij*Qvqc-;#tPKZoBuM;OWsH!lw7>j1Mq%s9>*>AJ#FYewA!IBv>> zsyUv*-U!Ms9f8Ufo3`;%-TDZ0LCFTlIy@J3FW&HbC@Wi1D(SnedD6Ka)CM)$H`ciE zULeg3I^MyDH>aP61e4gEg9`Eo@1Q9=qlqP8N$fdh9QFy`vewr9X?yxf_=vB@=~_Y? zc&dIQAXavrqARX@VSC#$vP_G)xRLHThU$2{Sod%d?s@ZY1}e7&#-G`jV9vvO=G^z! z+V*et%4T5^tJykf49kvdX}Ts&0_rVsO0X@WT>5Q@S0Y_RVkTgBY)$OuPS2*;)ooEP zRZ~wbbyn91c3fGespGtYt9iEGO~Jibo?lrZ^VQRO#fC@6f#_6-PO+wfZSBC${&H(cqit&m z?=3%{yOAD~ePfB{L8Fs2xAkUQ5@(4+qWejCz`q;PpC};;5pJ!kQk^L(R#|e}ZyasZ z1$Bi@g95@HfF`bnAgn*iRPx8$BI&o~2s3rR|FaCi1$9EdFIW3QAIwNb_=S|Fp7zTI zB;Y31#v&_j%P7`2ytd5>Dj^s5V?vDXlWo7~+#%0I9$&tmeLH<)SlwK|wU}Ha(?=u_ zrA@V}xiejuZ;Q>R!)N3W&Bb$r#A!D-K&N0iye_KRXP()skZhe>!=)_3Skk<#uTgBE zl{%}hG=rv(G1+KrJu+ELwc6^zRVu{>rzB2LLDP!i$`!ctiwo=N!rr1FT_Ho8=6Dpzw*orU34bdNL|zam>)+8XCB zmn{`Bxhn!LYA5*8VS-M9;jJ@TS0P07OjHB9aA3%H346o%09A_-J-{Y_+{M=%C64WMyur&yrH@35Ep98Gt92)3 zk|nwwWj@(?B1UKW##4tiJ?K!_I*dXUv_=V!^xTEk^hl{jv(!k3!JCRCbk>6`hX0h+&{nMSl@tbZ2=&iAeOGsdVTj(=!VjWA7{x6x|iXUTd45)NDhQdbO++*Dw? zV?+NqN5ES}=ZQZJW3_wmfHx{b_bs;#tKAIIN{8MQgpoABN+0um z1WjiZU6|JMQ=pud-tTz@tfV^pssq)%n0;=$EIU&8F!<;0bVN?j;8%dwPg~j(As6MO z{HYxyQNNgUKKE8fctQs2W%^x&INBn6pYE2)>)Cl5DoDAX=^Qb4)8=z}i6Kxl%54^F+x|e<4%^K6amhb?99lt<3G$ z`K%F0jN%O;Usrnl{}CztOmX~f*|CNUL5%Vy@v@ekAssYlaB5^^E9^0?^>|8d?fNL! z$mc<`P&W!Y<_XSgb~Yc0Ie*@kp%_WRn}pt&@TOi#jbY!KB!bhl2T}!?2$u5<__n+1 zO}#NY&*RX5hVs9LfC-AxZKoZU&I;BCE_l(`pPnMfVm+(z33Mb+DWUuedgFAJD z^vzoO^{ac{!Du;s78!;U(0iRU`&LLUoMymThnDOgV-H3WFp#|{Q(wHl6<6TjSTMbG zt)6U5wkTe?#svEA21l$>bGzs5=y5A`=6d^_Jv$X?Xz^C`WnZhd9y^64olxVK%E}JH zgiJ3SK=-3ep1YG%m%EqoyCrm#)4s=TlP9bua*`jRL_o#Y0CAxUPX!z!w;+m^4g8iz z2;x3;$)UerWqY_M>u*Eaf71B>{8C28{Y3QAkMW0a(T`c{isIP8u_+cKu;$zJ)iVC< zI?85^V}2Js9`M8RyCl}Cgl5v)`@cpKcqPu>C#DGH2sqL*;GA|xLLSv0#sG9sj2^yk z5HZ}sleOwXwQVs>md=UqiC=-|G}EHux8E2~;d7+Ot%@`cug>1aUaj=Nl8q4sCSuOM zsn+bzh$&*honMlChlRG-JgR!fV2>!WsD{;zbrba_~SSP7V|`N>{UHMgaMVYIN3+3?X910Jy(uBAPE6QuvA?KdFe*>eZwe z*+_z*!hpa|iiuH6;h#c%B!yq4p~{SLjld0NQ>`Q2mFb=yQ8_8CMyoK*oqkPIPl!%~ z`rP2W!^m>l@x%YYn~3>n)l>aF#L&a{TajjVo)s7U`{ryVyp547=KOWp_db(l_q*g&=%0P8W=NM_7Qzs097EQ!xKD21sM4EXiI zkkBYNC56mY7g!@N=q=w3Olf(07CT)H=16w<9TaHuqFcz!jK zauNYih3`!q<~zfp=KPJfGXo3;B|%Bmhwq=lNbl-smGYj6@*NGws3nG~zY}z$@+rNH zIDNctVi80)B(aDZb*<$OMdfAKbDKmwl1>}F{4cb;{+8zIv zBLBgJ3&%=PRpM&2W?`y{#5sgh@=A+6e|)eymSrl}m-KSpA zd)*A{@VaE)s8l97{Kqp!p5kOqlvs>xzCc?HepO#D4nsi3#VyhMxDdtD_glY7rX&m^ z7t)wX`D~Pj8^4UE^$ipnXkF@6qu*kY@QM=zmLX$ z(jR_rz5OniyG<&|DWLKS69StUt}QwsL-%S;v!lZ<|!<6sy?zCs^_4siW zj`}B)Bxras6ZlU3@nI&PRT{7wtCrs?3$goIw+D-JQ zk6PD;Q#eG_o)}DlrF7_+Kl%mn=Pp4to+C+_D=GGMdjxbA7m;n~7>7FY>y5runAA^^ zvbQ@f9T7b6VD}j76fzUjEK_+0(OEwqzW&C8^ga{V;2ewNI4F^etJe8%nOg83jYms{ zkd^b_Y!ObjD0&-NR7Aw2)gl`Pi8&KT?$*iqtXo>0#QS^FfL!wm8Vex)4!5H1?^`Wd zO7wv3+n#=%<^8;0UHGWU|#~KG5T-*PCN8@X?wQ zT;%pprOD+T(M87}_Of<^+vI`Q8VV%rqR7tXmfaCXyDNRi)bw%~-ayq$-I^NJV9_sj zC-#UOp6xjBxs=MYJcU`xbZ~*vD(D^4%BJC~evRT%vqN4pwmV3TImc%37@{8>fZ_mx zQ~dWI&(u73uBs_jf)*V?88PQjNtuA?UKsb<5nOm0f=*VezDEEPr)EW*D z@oPm}DJi>v4c+ZWU@jD0O6|0JVUbLkn>F$ee=yPgRFQ-A!+5y9F`Hskh;5Aeg5S-( zlDT!5E#Tr#4afSjW=^e3 zGEmNQsBz+#5^cabeYlP^0A*}Ald4Uays@Ov07sB<_$w*vmwJk8PebsRn|4u`Xhtz?pno1|W31 zMR08Y@{L982;32=p{15KhO3INdVH@Wbf%?Rl{ezD8C&P6TIN>Z?pG$3ePvLsH@S;YbB%+ z3tHT%-XW`=M~)?Rr)Jc@ZqZ6<|je-HAPO?tXkEp4`TDsmbJOCe2P51QGj9L!qiN;fw`@I3^XCCs|!`U z^c=YA$O^pDf?WlI+^273lK7vDaxuKqsOjLoAywF&Yqd&poS|+)HS0?*wwDL)v#4=lg5%AKw(Q^G%)-y;)RDTP z+su4DkZr3hx&Rd7ksnrbtu6c9medu@)iJt+9&Fi)TV}c@C7roR;}ygKb$!no;pr27<8Yeww6U>WQmC-#?)Hf7krTjvl}Kf0WKZu`QKYa!7l z3WtO@bHxOk=Z?Xka6YxABXIptW@y@gj6sZl+-Chu`?i7i5!`C9Rhq_kk0xi`%}U_&CRJp2}B_?hByE za~5H??i%5AK?0vw-Jie>6jMap^P<72phT`!&wF`@E7!a_YKlkg94zCfQSZjo^wpzV z^a{?n;yq<)DO1@m^sKc*@Dv;Q>qVe)KiuYI3KITS+w)j9rvb+49;e@>LkCkx3_jHD&Yt8ky z&-Zt(j|<%n+6RK4ANzgehSVu7G>U`v^VQx6-k8tG@YP&%>G9d4F1EBEA^(k&WC3Lu zURwQm3hMH&xb$B+;^cLP#2JvCtY#aE!<)})shZMUGT&5N&`38{GDgBw7b~Hsyqg%4 z%cZsvd`h?2szt)LKw!}x`mY*+jk*ONsojF&BedHi?}rB6wP@PZxz+J=H3kvJo(F;8 zg2oR^mLrF5bFIY7ug_LC=BuV{r))dZoNsaUSe-WY*S`B{qw5$aws%57(D3@r*^IgHzSNTaOH$yoKb0$A$-x$J zP)S3VA>)aw0-?_CMK^xE$Y@DRSK8tw1XI*-+I0$qGqa<-3VrgkGDD+@UL{t#i|u{S$&FmX@wq&bwrU2(QCewly6e?=9k^ zSqL9Lw}slzEG`}62_C7epVJviKDhdo=?%qd%`Gk+;%%xy#mXAgV271uy6$>%XWd8q zdu$|M0p32htp@T+_g;%Y+d`&sj)yd#c6Z}8Ez}%a3$ZO zgi|1~q02E4bXZVqH^<9&p&U)5smWvnH7RYKGVxC4wXF_o@8Fiz419GxIr-nyScYg3 zkP{*#ilFQ}uNn^j0}K4S=oFTKCsF;waaM*z8uiXab2*8+?z*hfTeF9dNx=CCIYN+Kdx9{U z4Ow@Zp$M$SQH`%QS0!plIg+?_kVrp4sw|VHwYnvv0H;$P62Vl4wxW(xF!&WKUM{|m{kXu5*_?L4 zvPlI5%)}nwQ$A+o+IP)9)d{D=F_45so38mRv$l(Gr(=0I-*8U!_8^jz}7~|xm=+=l)zE}D*czWt>&NMt1{(s7xKh;hQ>Wjajl%ao)ipgz9jY3ih z5VncIH>D^;P;$egWMES8qfPw?k8~n+36ay8xNqnpvC45EdM41L}}~J%qWP6%4_da zKmz)def5e<&8JJ1dtdz@IO#u?_Ml|D=>H`5pHJZ=ONUcd{Y}98c=R!`PG(2j-@^Y^ z=IcUI?HK=UVEy|jKa4*HUkn5%nXg@BMeqR`tNFZu#@`KonuhKsGX(}L?0Z%+yPr+r z9*|crm`46BE&lKGFyi|S%Aja|#VS@cL`E*sY$}~yu%tZnS`1t~&pDsA3M^%GHfk(V zcP|e8R~Y!;GLGe4ZCCwsSYIw$E0HZ4vk{uM?f-+1{P#QiZ29hFE!t16 zDM+*R|MhzRgwew_nl}2M9Y!7w%v}eM%fo@0Qvg{wxU$sS>kf{y9L%RC-_*aIEc^wh z6spP+&oIR*df76Wx3sr?OVdCCWX>Q8qLTVv!{=+h$HDyqP1$vs!VOQOHKA#P>U-QXqs4|xs;(7Xeul!%{={4HJ z<2BXew&^N!N_jTq8SC{)aR@Z^U*P6H%V6LiQgC3qc8bg*fi&V>bH1U{axsI6Bz>%! z0&-7BZX+Ck$qLN!6!H#Ub?Mvx?>Pcq2X-yz{i#WuCXI2fY=aFk@M*4{ih8LQiZ&?| z@Nt>{vc3_EMiH38XC#45=h*YW3n=h>kz=|F&mQz+OmqF^f9?H;D*NY!gogh0Z7mm0 z9-&M3)P$q1M!v=yMV7Ie^zBc;;c+Y1t7UhWF!Rpg{~mgwPKbbvjLdjqqA0?%WvD%H zy+_>bp&nBkrzG*V+~MnIi8y`a^UjRqPd7NA=Z)kqA~t<9@FB@XR|uFK^Y@2twGv6J z&@F)X50-e1csU|>*7&mm^+~G+q|5lx0UgZ^u9p9atIs5&8Dha#x(zT{-iycp7f1!& zUh1`=I<(Y!Hvs2;|Ky$0bd(fX5&Sd}E%;GB20>P)MR4?qaI8o>qv|%^4eVIxVzPK_ zFHkGZ@ICN!#{BZ060w+HQKQ1YM_xhW_X_^+XlF%db9uG4GNCCU0$Qt;549S_*r~Bb zKd?s$zTzr|oFnP@G5u6`VQi*{?W)RFpr+IP=HW}%(ouP~218x*u|xFa1*DZg{h?L* zfJQj~6P+AmDvt)r(FULJkkv=3<9NPdoD-spAE${mETIpr#`v?D8|-i8N<}U+=(I zqX@!3OwhZ)V+U!N!A*aD^p=tF@kK=sdIa7hA)La`kU#mBiq@Q{}I_cYq zfL^)N;(O+FHaxk#!tT98($9;N?ObLb`zqzTggXbiv^juen!k>gUuj~VQj@bm+lowb zKSzFSEys&U)#e1T)r^$!R65cOcWWo)$w;%Mnf=(D1nL?`Dn?0NnGB@2ZMHAwmh)CR zQFm3nre$@mDY2~ZW%RxN@=I{200m)Dgx<{d0KE`#ihD(-K%tC?j{DKdm-2rDEq_*8{Y_Q0DJ@CcnjvVFVgvlz0X?#|df(G9r(Lk`Jo2KXza;lX zHfa;q^=AIw_@l$uquoyGBB~|f?8#aEN#;)wtgV5=angZka&3=j-=mn-&3PI0MA z6))@sCP~*?pBZ00J`u#pKOql2y$+=m^g%opoF>O>;sScq%h9Fq1qKTJ><)=f?;T`l zGsfE+wXOKt`TBjIc!x}X>OEua*MN64B>A!xkfPd}*@Cxc~-#b@^(|gv|YqGf;fd_O+rxS`l#ePVRk>V~n zjWOc5k{cnD-LrYMXqWI9PnWthBxyUiC(H0&N@_jAxXk#5Dd5v#@PxMPa6P5sgVXC( zatH2OCGz0u9HhacnEb%TyS3pm!A|qxqvN%9Q`*SVF3Q7zN624w69hDjIaNcle`4vM zF!4k{5wN+3ba6X+Jd-rWI`8`PFYwCZ{1ozeR%nO)da3iRy+mHvg#ba6Y6<_-OGM-| zV(|qwB9%NBz*YP33sMZd3P#D@a)cYs zOYs)k4=!Y7v>*Y535c*pw-`fUcLJvNrzgJOx@_suD)koV)h#f*>b83o<}@ynDXBJ0 z)a{w?T2*for4@QcO`T7-={J?&Vk zi73l*gaG=s$92wYYFX8`ewE)ZUCE(e+oRWOOg#1m?2{U|_nE&9tk)r5zWA)2YVX6C z`}tk)%Ixh_h4m0hs%{fdue#+~rurQU5tI6~qZ+MJdw5TkG2N1OsVWAsB6*MeW{dG9 z#*IqptiYYxl2Div5!1WyaPYGahugOmFxC1Yfe&vENbcJb59|$i)bkwH`*s zq+|v5^wMqm1ye{Zu;pG>{Ql=UVYFp>1ngkMS4m>C#ZzeHORggMR|XSNqE)mX@YX5+ zO8$T)fkB+jVeZ{`WiXy$NT6LJxL(OE%M#^ff}Z0=V`n2!*WiL2iyL~_bZx=sOhk|H z+%C+^dO=NSo25w6^FzodSAfcVRNrFy+-KTy39CleRdlO~LhAHaZlqb&p3Ai?LtxIl zh0S}^(eGP*E-uMFI2k^5P0HC4Uekw*#D^4Q1zXu_hx3(Rx$v{!T{<3Z?r}$;ULX3| zS^R=Z%XD;H4!KYmo_;WgG)yV~s8&Z&9Zi?4PgV2%5?k~l4|&z-d9B%w=-1@rc>QyB z!9o`KzUyA_V(L8rbDVd7oFa#Y&JSr*HB=SD5f6Hyl{-aGFyqS=@lteU6eMHjHGS+u ztb5%Wuj-5F|cim^-0AH`Pyl_*_Lf?eVu;43mM%m+1vHZJBVT#hEtCg=XkV!Aurnf>`z{ zPL{b3U0Gd$^t%gPgO19nWY24ziB_4J@DZN!%V1(xY8PaABtNsPkSp@!o zsLsq1QsYoFXpV>!iIBh%5DA${9rd{@vD{xmf0%vewoYo9qBckTeLd1GKD*I=eqN94 z<2Z4HY>Y&oxnW;bx_3ah5aX(lZQ)_cuUQ@=DCNok(*!go^_MM$Kjq$Y zmFXi*fvEKU*~b1XHbv++x3`(_b4uxTa{j`{k5+CGwN(GDoMuPxLFuEo?%m(f0FYZ>bkJ)x z2}*4|G_dnj+7rt=t#_vh=55Jp75qHYD1tqnn~&{s9}QO%%HP7=$)QTHa#4v5AAI59 zJCpH6{9gp0@1@-(o)q1DI%>L8gn%j}TEDEbBa?ppJcMc1hx-lASa(rLQ7yr0ncjo( z2pJ7lqoMBsfI|obf+i;%`Siw3urk?p8@!C~31*WV#gNOmkFfSfLOMD+ z8k4!kSRNk;Zp>!fcESa&ZY%FR7vCNvBQnkD@rq1&5tu^9td3~_aOXAq>5XY#_gnP+ z&vI_c)*+VqbebCir{2U-UqTt z{4Eh=>d^m5du@@5G)w#qSNQzFOywp`v-AeMk9rhyv@%YZelTHS@xSl&guh16fdQfU z6}-Bd3-P{DAdNOx4tNSX3A=teBW4yK1km#c{UDR_d&tT-$9*Bv0b!ASmSyCN5_S5P zC0?jnO4giN6-Fj269v5$4%P>rbsjyDi;^Sqx>2RWV5wxT592=bQ>r2nzwmyweZu(0 zyQaVg-gzJM0qfvq%e!YtOHyMlIpDi__`45WD0pdJ8>ZE}* zK4tAB(U{F<6Kg!+;63po5jhzPeZyQp2H>YX{J3i^n=jW|`TuIe0uM!}CH)c&UnLA%CSc(Er+kSlK?|wmj_^${V|l}E z6(UN*lx^H~cXEB*1RRte`A>-xjHj$DYg!KAllN~(w4D+mDWu-8^%{T=2oo!H(&#WUxhhJ_-XO+B3k}@wPsva#bCNLgxE=ZIv3LAIgkf;^$0r3R zwzJF+M18fTeM-k|KWCitO|HXB){StO4Rh$zUf-cCUbU=gyah$;%nbLXs4*ai+Ve_< zH|d|mWfmN^H<~iGtH_=%CT3LjLr4kzVZ3ghOgq21K(@Nd^_~L!m!swdYQ=7z{D+6D z4dj^5X};+1R=aj?r#hZ*byb>p`W@v4v@R?1X$`d0N{dtnTw2hU@tx}LE1eDf5j%xn zOHi>dOSS6wzypCtH3+KrNU%++HuZ-g&h71-0?X zh}LTWCSjHuNr-^!%TuV5v*vW+8XC26gLIJKaJed@$s-AV*^ck9Y7p`R(O35?XLBX7 z!ktC?FB+y2P7gnoI7>UA-3bAZSU^G~*UitIPFe+i!eH=d zX+r|-MCRQ(alzJdG2|Okdok~-f`V*!0}@}U74-_4A2k{#jT8kDT11E>BTkATSGha| z*;tyxVmlx}Ow_`Ej6uEsQf2i={bs4DN!`+V`I3MtnYTP5P?PO-;NDhf`LFGXqXq8M zN#d>X&GNJ~V8* zHg6Msg$6H0bq-Rj*3E6DP>-R#EGD|tb=`bV?q<7&A!WtZKKc%WYcT>-2lJ?aZ8Iae!%bgBlxo16;atI8EEo6YRdyW z_{6AH@;$5P2Q?82qh@K=5XF2Wg_N89+?@Urk924gXTXQ? zSM)wdGCO2w=Mv%<*oNC1N=OOsd4?&6kR^r78=cR7pQ}H6prDBj{T?ofu}}h|@luP9 zj(kn3z(5RECD_Dse|q^=i2@N^vhpU0z;vHO^04%AVtD`xw=Fhn@FtmB^)-0hZCb15v8exM}#6?~qEvgjJKU;IKRVZ+;gq z_7LIsdx)%JU{-MI#>Kj7uUG?xew`qd$sjpj-q(0R!oB@$1{W3&Tla`x_iOlQSOYJN zD2?dFHZBs?64-3nc0MM2FJyo2?&!L=ILeP?XC}5K4+(GZEm`8;+MN(v1X|QB;KjWo zKHDC8wx5YSeO=V>1RNn9f+kP#CfRC#) z!%4HN`!>L<+;kgX%c@r){2@@KBxuUf%>(+%#-J7VsvZ+^Qq_q^8M*?~`f^@*+o;^K zV;j|E!N3zUMcoyipMs3>*64d>NZ9v|#Th1trw1U?uYhqn4sJ3oQYXTXnL~Ekb&Ka_ zU#L$R24L#oyIPbq^RW6^Oa&TJ1K3J`ujoq)QSaOV;-0?YQ&GY&6 z`rPM+4DP}2^hNyfdY)iFW!LjCSxzUw|Hag|6&AFxq?#T2@=!aA`_|N|v}~&U?D4i!t#ps&B83mI4b3r0H{A^h0-Sm0N9S9(yxHoTacI zYBt;3sW^VGA^E)!iKMy5!!=*Ov|x8iA_1Iblt-v(TZxk0BB+U&<9K9#g)nMjkW={l zz;QgfkQpYsC(rW{!Uu!7MeQSw*0QIXwXhj?)0tTI-47!=ft~GkxjJo+Aq;Spk6|q= z$0^-phh>dw8|mp(y#+LG()A%tGz$VB#YH`nBF#`HuQ@4ft8|Jy;K*mM%T?(>GP-h z6qW_mOjRO91aON-@69o1Xj>aixDe>OcHMJ?)BE={ViS}^;vbztxNH{EzW8OMUT>9^ z3FY2}JlCZgpK-s7%uy@#F{Oj*!c)R=*i)ZNrnXhUK=vwK;xyNEsaj#!EK6GU)F9!< zkh9CA4oOp&?l$d(LM6yRG!Ew*?m5+8`1s}P*GBp;1-oKcgnCKlw4z;6=47KxSbiql zBO`5ob-{;62>b&fa6Xb+Mg_kPq`4prsfuSX!n^$uA7nt{c~Un2n_LR^Db+*C^uA!Z zno@G>s|Uv@9l+sfo`JAT9q}Q;$VF0TMIJ%5?!Q_1--6+vO6v!bd=ed(?J|O?Z2a6B z&sG_xGj-Z=UQSMi;Yu&P{CR(#f^L>X6&D&7dZ0|}xBVHbY^AX#*;aRS{~A{QG}U5$u(^^WT;nJfcn*gmhLI!iuPa`$Rnn2<#kX#+a;<^D(De2opo zkC?)cJ|houPOJPj%U*2ekHgsI{JBh7Q&VNxmicM)21PI3>~(`n>c3UD6wrzD;u93&W1U4gyn5_KDo7qK(F)D%=bB>vFsfOl*f|_7!2TX;T0} zaVz)PL!bz1_tIr`MBElIsjA7_n$*^g%!0XGoW+Y)VwxYsQa1}z^NluwqxL#}wB(Ij zrF3Z$ff%ta4bu=p#%Q~?@ZsjS1}}?o203BAUZ`z97Q^)3j$3uq#)kF>HSkor6En{J z4zHL3^dwF*sp=~2U^)SW=gIEon-&+iy)hRxv50? zuJ6>K9^C%<@N4e-#~I6_gnB;QUuBM6x4t}s2dA)BwkG98Q)3oUIq-3_7q zj5JO_JsAOu{Wr4y?s5F*5AGlBm(kX5Xd9=No9xG$CNd07rm3VT?J4W89j8lGw6q{l zSn$4v^=8LCMW0#(j-;H^%b@N4!l|#Z0_d+7)DHFJt(|;dL&(Pz6#44R&^Pj1Qv4v{ zj`PM?FGaR@4kz{oGI#kP3KtX)yhor*vFhDt+_Si{@IlD>o`NGN%?t5G2erO*XjL>^ z0UdC%nBJmr3Ks}%3T_oMU28XBX)cLKzG%b|K@O!Z<{l$cxBu+-WtVkVqkMUFtTkx4 zM=pR|fT~4AaWLrm<$GXRHt~!>F$ib=gJ#j(c0D`@A!J`$c+?Nai8Y<>BCW&E{&M@3 zUiDce-)6E2dBHT(&tJ}2m)f&)-0Q?z*Jt7lR(py|3&gG}`k*t`I?M7Hb^Nq~dNFM^ zV69z%r8NK>2S+sE$i0h>nS0*HfTU!;mp=y_`V^7TH$-XK(9)l$sMPH1X>gbIWsA$= zdfu5=(5U84x)#v>Q6~;Bl26FWeb*0Lop@<5a|x3&!?^B=UcW`q%H=43NW*#(L(^#$ z;Bea`au-16-($rk4*#Yl=gij}oTx~TK--||mSc2vt66MpBd{-zrKLJ;`De$A_o-fL ztwjP9{#~hg?E1hS+xRANlImtC>xI`PVhKAO{JgJKv*;#fw=cI+NIow(tB^RIrd}47 z5-9@2%u=~-8h?uFsDIwRo=9H&*#&=(q1X}pp|mZ>Qfa?T+1c_dfra+mhhm2pH|J?= zk7;0nLrNc%OWx~1`%>@EEv3I(ApbVa{tl>{KBSzCzeQ;jJbLwVwEgL#;Jh%sET0w0 z{%F22tRk82RScw`dLrMKL{Lp%qYWif(#XZn?4$sIWDm){ckMM!k!n36rG;b?a+x+G zp7cgdFEF$UP}as%%I|Now0rh>OZ7|cATM7cL*0pHMoA=qq8RaiJwNH+E?%k>d6Gji zOafBvA)j2JBjvfg8(X2WkPY*OZ5W5klQV9(yD777W>IM!0-OgK{Vv26Z6MkxKR*9r zGuGP5oQfe|&e>DjuXDUo=Kmw>t)k)z)^*X~!QG{?Ai)Cx8YeixArOK~u;6ZuOR&b> z1C1m&!Cf174X%y5>+QAAS$E$t?#q0fQnRW?{h$4(Q|76&dTFyA|HT5vbF+-LIT^Dr zh&d#`Q)*ZRAj0d&39zhzR^@_%(UDYky1=xBhyjNOV)oOi zOj}dVtlaO(C0bJRIz<*B9;Yfa6TtH0-=Oat$nrX3loKRk>B!dLF5{=Gli@uYR~&&;yUb>YUZc zeJt8o!NcZ1VS<&;Stn;xskd%aJC`%6&cLyj1>)OMk>QJ!4O)BM7nXEFgKW!0}woHId%dZ`?X9w?1?cvCeBFP_g_lozwkF6qCkiQ zJMi9OEGKgIN2(d@#BQP93=@8U5B%~&$J3BNx89V8Nr@&ZIQ(V}k6L zNpHr60czCu4OB3l zluX$$rEy!S7Z}n=#sazeUxw&^KPMyL|IkJP@o!#;3NGrw=9cX z6U(Z|x;>Un`ttH32(LH^2nhaOgkq8eTEly&+%RfrYPjnA`ik7K^~4!TOpDluCkrAu zgliK~{&$T2d&5RAdLDeXYELa@dM} zPY$Ss+wui#B#W0gA_DyZ5K*SvK@gQPDm4=-Z)X}{^ac?L@w&aNMgYMH)uQ%>7Ym7s z$j-rSR#$E=IatG^|FKt*bw%vouI+^EdLM+hffS(F_#QDq;q7t_a*_tO(q-g^Y}Tcs z*KD>m*7gI|bSdfS)_YQj7OI{jC8zHw_s9=R7g2TdiNG|Y7~3A#1KTvF3WzfAOmbrj{fW!1 zakp9CQcr^(e7Y8VW)^N0*I-opmKFZvI?JUbSSiAP(K{J0X&DHZKlKhKt`D{|pA!hf zBkn9y_0P|e?cR=-RaWV<+L<psJ#rCrV zE6RlQRd=bTciDQo+rheIVJ|e;UZbMG0K=M<)%CSD_F>aPRK-xxpG5K5Lz4kQ^m6F( zEQHv4EbXM{*m#UZ82s`saH&HuMtc1*ATQ5&dn6sR$$3Z89s_97@@k%zmlxXE|VbOZ3N4V)!$!)dil8x?1Bb34}-^F|lg9 zcwAu~m)mRG=ckAip?GA+tZQ4&150yYv>=E;yyFtF-~aA|J7;d}-$LYdlKM=aSPl;2 zj@C;NCf^%=g4k(Ix@kmR_);6lL0-UjwjHPO<+-!=<=@tg_BA<^F+uJF-5*4e2_GRT z0WQmP@Qh;7<1{cP@i#o{{JEZDyA#BjdQvhJrD$XMIv+wY&pP}>&)Blj=Qhc+=qzvJ*IgG<-^gK^PB!c1b9 zV}tb?G&($#V=A;K#0Q{T<$VXi($3Afi!G#%Pc1L6xLR@ahRBVgWnyCTf<7eiP;j8E zK&93qF=B%-0@^1jmpqqnn!QzsK(qT%1n1vzD3#|L^}oLd0XAQLte!}musqs75ubv) z@7KsO@rVN(f7Xr-*>A9E^N9{B|HP164wd&F$dr9p?H)>SpT9Iie~Y?iWvH4i@F^wO zUIK&^e0H|3gC~`E7hj1RD0+jq?+5!!Y>toEK!`x$IW>Ub@zm>-CG3Y~38rac$r5!Z zlDj$T-?Y{|8$L6+yGRd|2S+qjz(9DS>P%lg#3?H(1w5{772bL3udqmsA!K4-eMM1+ zjnU^Yosx$b!h$L3R9L+wWL18TV(xC*IVZG>pQ$%9{mV-tMfi7H%zQx`PU3}XA3~9u zJUAb8$sEg&z|@l!57;}uN$7%jo9a{jDp7h51SXb(21`DZoU5p*y&X!XoQuP=|j8uk1WY;+JvN_g>R z)fW(2HECc7sz{#hpon?QoP*|rd^*RvC=DtHND&)w5JETm6o0vv)(j-`3Opep;t>!; zQso0(jpgXV*Vm2j?jHs{-46Md-6o~80_Rb-I!J#dA@n$+!esU?1W?0F42v`%T;`~Q z(=|!WN~?$Qg`L-X4@nnq`Cj@kEmlQ73}0)-&Em}FR$zLZx`JwkPN<8MrtI=&W>W*_ zHysz^Ta58Vp2p;tdAG5(?B{4mUL`W-zhC$2bd|%tEEOlssltluQHVHO)LyXM9LXbF zO0cdW0YQE0Woii7e}9Oo7G9lX*ANJYcG}4VsJh(lO*EQWid=6nlRYi6hzLKqQ0GwI zqcpF%RYG@nK9iWtmXWV3#4}$2js&d|G8sH*e4n6Ntv91&e-AuJ*|(RSV*?bM>JXDQ z&&f$S6j{lNN|9oXCS3>UWrU?{8}D4t=S`=3AvGLWd;Pf4{APczSf2 zEwq~ncVFy;->r&ZcZh2arvI^8~vDcxI_?Zb={a3x8D2AqYP zs+;t|IL%NfP9^UmmDRbA5kl1Zn5U6i6}5T)rxUhkf};ORi)#?XB7yr4L<#YeL zg>_U88c=OX>hvZ({Tb}%#$6yybTtMQbSVmPvC}$izb3fe*H>LE0uOO9t+W1EugY`K zx7SzkL0Vmu5P@O(oZ8j%N7@i6K_Vx&6TYS6#kyFQ zNEPX%rAoJJVc>Ly!e@x_MCjt*V)}y_p63>~rxp;n5c%ugujE;5>UooIWsazrAGj3B zEBM&3rW1hV`m0sN8_U&F>uab=t#}CaXa_?AXr$-`Z&NHOFwo;+jt6+>f{m&5kMUG4 z2qcNkhmdWJR%^1VKIq0#Jkqz+g|q42Nz@dDU%b9aCf%-!c4 z7{^-El|5ejZUrk+U`oT$_tn093+04?QR+Kg?l5Zw0|#+6Oyy9h5w88B4p&qNvL?%V zCpv+=$|Z>0XTvw+#C&u7NyC-sWBwEr&X|3oeZ+SZULTr5ZdNEBvzn{(fd_41ub_&= zJmz?fnJttS$iWSwc?6;yAWzzx`n&ia3+o zz0#_z)222R`ryGg;lpqKZ%@I?rDJy@E+d4UA2Xj&Hc3)C-lRc_-yB!9gJ-mwX=r-e z%QLGThApIXgwWLt!mKsGQR2&CrQ4o@ZWFo|uX7xN&6Wb23=ExiMM=$#6CIK2+)9M3 zTCmBsmQHWkY#|hx<8k-yx~jHN#gr*f$fLpuy^KEVSd50^At?YK%+TVo&u{EAPA!Zo zr}(=9sX~Svqi7b9k|*SciT23c!PZu!lbw8pNg5*q$_6wx@H@@FCTbqb@$NjnS6v8Wq6P)fOTy41Qo+ZU<=%OOQnk-pC--b1foXdvR;Lt-?u1AGc11H^k z_~OZ^V+wkm0N3R8$-nBTJpZ##GP32I1h=O1GRxUuU`_XaQQ(35w%I`*dniOgL!Nkb)E`f%}InB;R# ze}$Qk#}DDy)1`t#UZv)>U#^WL?UuaCg#28V;={Wv)8F= zWw{vV^k4qCu%%Iv`;B~Dwq9m{l?N+g%k5EbP+x6z>Tbs1;F!zi^1Vx1gB3psmr+0+ zrMAgQx9-;(U;Ko`Y3Tmv!Nj{GNeS7?%mo!+1Vu4_3V+{o{33q=#Ew{BQbI8wG|i4@ zEPv27I{mFfxXBdC-g{Rq#jd=}D9xogleyS}bAe>oTEL^(m0X(aMLkCrI@*ewW40ql zE5QGT@n!n~8r}P^13KLn=nVOE%A6yujjPc+Q@j4T6YW9Y=4uc;Dajfd5pOm_ex6d2Z^z4)j5Yt&gP*W;A89C2iF-ro=E zZH4#U%%49zJzp~$XQneOiQdAv@O;d3qY9?^bJDU_suBDXD>PZMR%@vznQ_c;oVFes zPsq*0pwR#^=mLRTx|DXn!JG4%6FJ z4Ue%8QZTVppGzE)Iav$rXs0S#3SF|Af}I}T|6ucN) z;cb$jZ3Cs}2hEZDd$wMxMO@|J3m_W;d=cD>>XqQCQ_obUp@f&N;mkjr7>MOwOpM0; z!CKRQd_bdD&HweSx1Tu5@upXur8!~>|9|$=C4#ES?U*%@OPo?x*0&sLZ-^=QE*8G4 zDhFp@TzK|5ytOx|Cu0c5>Do&TH{E*jI?EwDCu{b5(f57Xyu5qx=Q2CIfVkRK_2ltv zVF7K$yew$N{H@=@_5NTgT2@94uY*Aw_`w5C#?*6s3#c>%;pd7x5`|$?1mKU0MMQlZBXzYLnWUU=4qxv-a~aP95=Cy#8=>HweItK` zeW|m_Y1Q?uVl?BK&*NsB%zzC2oSp#oE0Ei>$s*+i7V*g&KBBNEWt9Wb>}p|dKs0U zdoC!>q1DUjg-PZ1u-G&-bv(UAGtf&i-EW@hFx2%0ImTU4y)4s4d!CSE75H&SK6G83 zw#)iz5v6hHbU#^YuC0rG2)fecwTpyddqar!zxN=IZlSE8HDZeuy5C*Q=99fFPYbqK z;=*^!;V4m$lt!#RUmK~EQIqo-*1Lz%d6rY&syMTNtt5?qtX{?|6r;9$b&qIBfS%$R zl>#F_ge|cbiH2;GjI0&HM(|9C=g8A8TUC2ciE@*Jp8~9};tLyoyFVaIQ=D4aPW-W< zx++mKVYoL(JW3(gzX;w{={fk7ynorquNzHOEXX6*6B*O*B|bwta6BD!IJdbpZ!~*+ zLDw*y$9zsc_>}O_QzPyt_g;A@iT;_DkpK!<^ACSmib@l?;B{8)H`$8bClfP|6LSc| z^+Gj@6J1K>3Ph~3+whI1@6UDe5fN4!HV_6;*z%#W^a0;MetKnK6N*1-9S*~?!-0#} z`|FZ|E%Sp^I!!Dx9!z{WwvcKw#@TTY_>uNd-~p1KCMlvxNZ55#E8oLco%wK>>hOa5 zBZYI5h1wz-fN3Fo2m@HLD?kK`$Np~Jvp^ho_e`FyR+oghUQvy0l=$XGa}?@v^Idk( zqw_9p1naKjl_|5`G{|G$R8k8&E!KGAH-f|=PJ4tkAflLHe?K5b={D_*yVs88v)70& z&%MV1VB8FO_Hv^Wnhhhre(vi4hj)!R{vPL6K0DO~|KhR7j&ZZ+sbz|WrdGCn+Uj~c z{uK%ufTIAnD=t@LkM~jI8^Ogi(6=^57K0)hdmGsErzvJ>OyD?|M>dKmS@l;#(H*X; zX*-_lVSK5azGBxC$0e|*A9p>M9^wRuSDwq`e%KCsy4U*Pa83R3?EV7(T3w8}BTww% zK1!;}<^BUKZRefplEfu=(X73PlMKedB&FXJf(k0%!LLEKPuUMY7=boG1J+P@Q6F%47xZvMK!K~lso#k~ z;jwswt8dr61-l{s>;_n`%sMryLtJZpWOBD(8v3%wZMHmaOqn{_*lU(-lEEh@C|Q$> z@;Y}CK7-@ycjj>6r*QN7$-BsLE$=XwgqDpi4jVm7)C2X$TzQ^LkMsxN1Hs<%cV2#b z!|+;|N>6y!70EPWd&7dv<*pm0wo6UOQb2$UayvHGpgq&sAd#09t{C+Ni~IDTht)04 z-NOStcP9Xfd(<`N#&&)!%(b=mu#=}d_kC0|l8MoEtJY#F_U=5fp*mjVW)g}+$0CSa ze`j^H+=!~__dxI&>KA(Fa+S1t7}O^q(4x)NmD1^;)^bFOW4}hM~lO6XT4}ixzQ4e+qy@2#Z*hIM+UXXwH@SPZCd<1LIk0a z$9!AwRGEs^9Y!t41n=>9Ul0%xA+s%x-Pjwp;~8Or5S@x+<1@4(hpKp; zmRecK9v6KU{@S2_0_l;(H3Fj{ld@NF#jG0X@KRjP~tUM3`AFU{` zBYuP?hToVm&kFCi#4pquV^Hzk7e#&*W}#RQcG;0pGY${~3pG;KhX^)K|BnQDF(JSt zjeGBDx6?s-&$!x#8IExh(qwjD?1lnj8uEC0B?JBc{1`M!taiMR&U%NIroqS5f_ZWS_qh;$eMMmS%)gwc5~U z#2q~)@7kBB!NmjyBQgF=!StU(ZUhc+cS^1}K*em&`;Ls{E`B8YaDF2;w|{+dZq(5h z>K-d13>4uX%?L#4c$MW>?L7JT=X?+|*eQu=45msY$GsxKoGlt$eyH8kCY>l{iQr@) zn?+zvU_J5iKDJWUOl<#eNLr4t=LCaMS0Hw+rMGX^9JlRwqSc^vC)*g9fE%JYmGS} zc%*!`W36WECbZ?zc&*>9ig2rBy0|)<%Ag~f3QS%Q)^pOl%Tkkiy)M@MqX zwb*k4zow`@Qu};;B`>alf^oyJKHV+WZdVC{dF8;y zANOxo3vf*@&`#Hn5n@daYu>p!B)qYYrS9D)bRH|u=E3&OVS~iU5_X7-zY-;OJQGl| zoZg$siHp1tcaR(u)X#}oH;A6l6hVW9wLed|l){Nhb%V8Y-?=spm>$@_WvV+Iv(s}0 zZMfo`=DmpI*rwl1`woy3XXba>ed5Q-7%%dZBLr2SZ{M5CcZ-R1<=Fv)V?fV?BRT(>n{0$<(3$d9hdG&n#wMqW2Otc#cCFx~rEC~Wk71+`Pu9r7qJgEV+yjL2^Z$zl z5H1_Jt97J{9PmcdLVqAH+Q-Ipnb;7zcl({4Juk@3qxhM9cpAVjgIpdhFYm8u zRs}qazm)44B+`Rv5E}aaI*FTMiC#JVGpTxu4)=uO z3xakTO}ET8q@G)3>;4VkXCU$LfgP6G6=De$S!c=&Ng;|Uq1G9Kj*bA00lBziEaFfu zdfI|H8F_o(5DnB#`Z1H8=)vY1-}{RKC`0hXWohcfR%zf7 zVns<5KdSPPJ9}m@N^SA}-+y&B1+PDPCd@i9_b#7=t!A5w!A5naJlaYx)KXJX?tkS7Pu$ox|W9xY2FA*r>a0ybTQRzq`)20{^aA z(g6e+lz+EAZ`#tJ0r`8^%b6w9W!Qa)nK~Rj>7q+-d?={do_nwF>aWx8 zp_S_p$v-!H%HFO3L89BXGm_u4)}51SAJ3Wf9fcS3@=CB>5zDpN)3A||3of6LCU(wY zYRxKUMC?W=$u_gaTI<^<<*teNNRTA4-FkT(@zBvsfxRs_-9*Q2WD;O6nC!f}f!wn# zfRzPB?K8>?bbsmP$qIR2cd)SvTa&&GQrCnPIvnn^8F z-FKSAZo+IpPs@Vk#Q&T+(#dbv_eG4LB$g~pQa~ksp~^H~r9`di{R#Dx_<<(ZFSJ>g z`Mgy1W^?Pa3+VXT=FADm1{9_}2BXB-$tdUh_k;(ly0H77a?a~k6agOc2~`}}F` zpD3FG=H7k`j;+PePhl=!13d*Y-|u^@LgVlY&Zp+rwgz?9I(?nJ8?P_Sn`dxh>Ow!K z$_8tX{pbfLv*AhMmM%X~6h&O3;TU5p|J0Rkx*(44P|`iS8wHnqthF=+@NE5k49Dub z%=MRSj_&UC5X&2^#FaCnsg5c}FUpKp4Y;JkVD`Iusa6+-#pr|$&f|1)D^o4DQv>2_!?!LIHEs9K z)X7ASc(LB`d*D*_POksiI0dwYBWIk|sKAeB`)iC_y$Rc{-X?eQB67`G`Nv4(9Rrg> zR0}oaPahRI3m9H@Y%qbfIlk9!tvAz^o+q{Ho||<7q6EyZH*B0)f(Vc#@Z|}mckX7g zhM>fUBH!EOvFRc?uGWVYT+f?Ce9w(2hqHA|u0v15>H?uKDz-oq;Q4k7AkXd8wOv`* zqbDym%&hYf(4zuYuXmsX2DLL-Ql*w_LnsVsu8DIVT^S7-!MNhD1af8qK+Jys3m$sa zY{XRcZSH>x;Ea3C*SY68gWW7oQJ3lhB{CL5#0mRtJw4 z8xcMa(9Oj^bkf?ibZI%1esgo&cmhV#TH?ZBXF~fIRCQdnK8|OYRFEF7HQxy2mGB5^ z5Mp=MtqmFub*HEEdfUw?uBYENspsXqLWzD0n6n3Dy19@$+4L&vX*p#?rufvncAKZN zMJ%jvhy7LT6~}fp1TFy{p0xTr@_M@x%eiZ`B}q!DqW=Ul@0FGI{1>#_1W?lkC{GNrFj)@UVX)rGeZZ)Ypdi&!o4Tk?Alndtv4hG^;VE+&)Js>A2yXpV6?*rk_(I+FQDHm``unF1|yD{rT$elK}GcTXJ>k4*$ zTHEsLIw04qlgfw=z;Wc1yuXwp-#;FzR%E?v+Vn+4Vr}8go>x52a6yQ&P=T^iI2b-! zVC4XKD5PXTF+$3jhte+>TY=?zaZ2D``q|%Gfuu$axW#L{alB%~eiDrv6#M+d2Fw8JO@rzQde6sYD%j)MqU?Jl6|78$gcrO4YRY0u5v* zZN39?W~+kshhQe~q7 ze{d0s|CAhSa8;Og3)He-#t^$=%+0O2Jnxh2QVHG-m1@CrqSIzhWs>c)mf%opjjj); zj^kMJ=w}EvlAX4HHn~GVEIgch=i>IVJmWhnd@U(yqiR2I`sK&gIqBMjb^PDeW>-$E z9>(JD>|@l6ay$|UHm@3Ae&idMIvdkKY(7fYkx);bZXkGWCf~*tNW^134~3(8=LXOk z+$fn7P3@uM8@+K2`Hx0yKpQ#f^U}Tl6FdRLmk6F{&K3IT>iHPx!)>vECg`z&=&aGM z^OB)5pR3_bkAWuh6b_(ia4*x{DXoTy-WE7D(6AUle&cXFti|w`FL_T@{xvIh%6OHO zQ*d5(T+Lo;2=YH1l>}3RCaV^!QdVpjndQ;dH5 z^vsD3CdYA*-EU4KVCEY(};N@&9tc9+c!r|J8X3zqgdV18oy;}52?`UjyLO0=smWzmFSEUuuBmI4-k z!uxPvt_y@N?;GU!g$dTnC^$za(KXqf`r~nwfPkRkhq{G!Q&t02Y;P;dh?O7Hj}|`8 zM{~A|6z|xyW&6CbC&H+-Aj3M_rm5K0g;H$?brXk+u!)cZ>xq2Apuv1nJgOi8|9fJj z!7j(!0@Yur*J$>|Q@xc=^A+Ug{nJgqlZNn8Gg89rZ^Z&AIKBnhm42-hd+&A4JGOki zA*WU^%aK(24N19F+?fhZY&3Cevn#RFW&25KQyybyfKF$zrf zjZ5(ELJE1GOlEA4)hL?LTB0hJt2xmH;_Xrl-WkvxgniL8?IbS(zskI(WM|v5D#C2d zrm8*nYqAQZcK*42to=RXKrD>pc9g7h8`o1!cm1rvSZf=TVKrCIOwshfAdDGnzl7>e z#K5583h|r$tLJgxGTZswD4SSR@}(oN;*2|nGGcoIX>kC)Bxjq%{h%!+lHTrx^(D(y z)%H;sZio5bE5%s8vWjZ%SkxbttvFI2=FMpes|Fim(b*T1u`PK1dPrb~j zF(6TmmW9k9mjb!I1NpkeIjI548yt@`_I)*}!_j%1vxI%@4~w@k&sBk{dYdk$sD)OZ z*ivA>rlo>0F0d-e8SuUByX@njWQW78O7=z$bMB`e6@!Ra7hn6i263SY;Qf;@U|rPt z>+Xn=#BHgWa6>RPNWTP?$NIC`mwTaWwV<)4-^v;J#4&{TE@!i7Y3I|if-c){EAlX+ znu{hfY|B^wHrdC%$EM70PEEYW0)i3=Hq}c$$?z4TnV?`0Ukp@8+d<6~`-I%CGsEE& z1I~LxLfm$EIc>CTf?%LQY{7cSs*Ls)CcS=EDpWBi0KjUIQk|(;$2C(ePHL)9qzi@ zeB@3^Wp1`HRL3$u>qnJ0*=Jq+XCNp-d~+FmEg#bo@Hfev=#K{GZ1ZxANb-*!E*-In zpU5b*V0(9WP9td_iBVFQCDU7AKmZ3TLNo1D>ZdQ1 zv_|QQ>jLa60$O3#l7o?7MAK7L?r2J{X40m&7{)jDR;h)`-2?va7d4i&nLi*-O>q}e~w!D95RO%D6 zMB(1CeYd4tiwh%R&)+$>IWA+(1EajGe9EPT*=b#*cwHH#>0UZs)NAZP>`ebJRG#Tle)GNsJEB z^_uVAw~ajJN$3DNtfGn&xKZZ!a>d?T6g;~Ixc0enW;XKrY?cClJCQDT%a~tZt%WN#d=p+cG>-;IqRi7^=REwWcm8L;H zBj9wh0}9cSHHI@@(h={!bP0^;17cf-_*_?Vy7?$Fi{6QXIRp2t$3!7SzZmEpFDB?L zk;^~Nm7(mKFhJ4K+`YxFx}dHd6WDP5efO5QFrhCJqFM&i-)o<18J&z)y}f=>I)0L3 zc!H5pY>ULaEJ66ffP7(N`y3Sd%AaJnjODl8x{e;Sk`flM+k{~)~vjUSFG5?2DZo)4%{9-x7V8K?eH~jQz$m^Y;L+k2VD0xmJN(4CG?wh z+8Jol&7$%rF*16eiYg3Djf&T-H=nf;dRF{XkAzCk=OAWKDG7>Lidd>)2d;iggYZi(=4z>*?wB|djU$B?aZ(K<-WgRoO=z|dy1I^y(n?O^i zhT|$;^7B=e_I(Ep8o48zs9chwM?aI$$BcQ=wsB5qg#6>3gJf`_Eo?ez^3 z&o1+Q%4*Yha{{6FgKK2vbOlmmTH7PyUO{RkiR6rtQr!GiV7J*d^3v`b zr%q;;|GnabDA&39Gda2NN6MR%oFA6q?a4YQ;s8(jUE-nXw zE}y1!qgeG*!@EVRwBGFc6L?EHI;eVxNp+|A3=j-Y-XYx@EN$^RvF!~DKYZyqUcL3N zED#bM8CQVK*Ij82&?DQwLmVoNe$@J@`cn$ae<^@|YVSckXty+r;Ufp}lXjj4h9WCC zA#N1z-_n1zEp3Mb=FE4uxAKov2<_{Y=$F{Y)XiePrQ1HJ;q5=Chlq2XdYZ8GFih!t zMA5x4ND$Tpzq1$M$>V&AVw(px|72}8L3kNdD9f{=U0+KJ{4uE0$bxl>5cvHOE#G$X zQw5dIY9TA(_xJM>X`crfwyU0YgXhoA6X6+4e~p}+p-j@*Lf}Hd_Ac|`Y+nt{#Q05u z4(CaIET0=m-v>{C?}N0F@5NWHr;9GOx8gpEu%ALMRHeN+>=V$FFJsGI#utS__9rV& z?kz~6iaKvP;-OA0x2JMPr40YZT$sToOG2p>5m4!$4m=sZ4HWdv+*ONZ=?#@fVW z?B5Z2+tiw#xca_ySf1~gwK=)Y`ep&EC`re%f`SG2lnmL>lvzIQmv#t8X8*>y4YUn~ zACXg#DJB@NBO2DAngG!64tuCk(^jR#%HxP}61ygewfXE2u$KEK5f>lyl0~z{av=V| z!YE^uhgW`hSy1P%M%y%G1-*8fK<3w({N+e(INPuCeQ2&E;;AcN==Eg_>Xg;51|d>O zNHp7dY7%PS3C7Jg9@JjHiJv)=ygi=%3c;@$4({JP;7 zKpfRC;Y7^cA&Q6t;8rqf9e19Yp6}(P&k6gR^G-MY$dvcxx`vA8 z?}2K0oXLvrY8v-8A18jh==?)6XcA#D_^?4!5K5iM3? zHtLLIAc8toRs}2FM-8g*5F2B?l1jCvm+8G0?2;d;p^YL%#C!o#aK8M4HENY?!BXlQ=SV)dlok65ehZi{R* z+_JQcc{I%`%gfc|X)K78lxZEJE-Xgy* zAQZt*U1QZN7wX=lVMF@id_csRa`HA4&IG6OvJ{kcc1m;(@O^YH9Rt=Wp&Y*z`g|Ko z1*OwjZB^TrxY$z=x)f9^wQ*CK+i2if3xYC%*6V(i0031X zXl?WdKAJPJa3F6n!{z<>Inerh!sWL^rN`DU>2?KopZ$_PeGnZ0i+~g@2W5WH1h+Z{ zeAoE9dI0(m2G>%H96NyL^0k_r*V}RDyYI_h5Lo14No*K$`&7m-wx8v~Cu_Et8hU7` zDC(9MQz=IZsr$cwCa!d4%k!Uc9_|CkLf}=;c|HzhDpy~osz?yp!Te0ePLtV=^Vz97 zleAHz;qOCl^LNNEpAi+w&n~ZnL;I`FemeFt_c8?4qr1LbT5oNc$@pa$^(VMEzP^b5 zjExPRJwOuoc6>BCV0Bv|L+p>iXVc(P?L-Jx5g9Z4TE?xE=zeb_o%!SL3^F3A!q$x8 zqj)~e1rh8cgm_>@x(L)OsBra+b*L04a&|O-CHi7H?g;PLYhgjB$QrUcmI{1GfZ|Ls z|5f901w4oyOeZ>@Mo$+%1?Gme1@1Gf^){0y;>(SR`Z+_r?wDTQb4d19U_b1$q+a4^ z1OD9R|5yv;n~tnd?KluZb+`YDt*1!9nI)FL#r}89pp0n!FgFlQ#^{OeaXDU*l?Af5 zdvalyGb=sK!El-K?%Z5k-T%Eo3;qL+FTy+L$(T4cGekS6|1C;?>ocMSNEoX{hvSo} zYvEjQf<6EZ`^c{Xw8~<*GD7Qyi9mOTi++~YDZ}=kqEys7&|kCM?bPq@akzHd!>?(n z*vFgI15@uMC@Z=w#I8k<}DlFNpwg9OQcI=L7_4qV|Au_Jv)p|x9OJ7R0>5WV(n zh*CZgT2>KZs9Ry96ZKA50@tlEpbsiA?KxUa3Wo$m`J#|s{btXgG{~>KAr9h?M9_gj zwb*~nAA$cq?ISGoy?X^k2WM5Krv55#HYeF7N#NpY#`UFWJMm$WYFA!rFj1gb7x5u%<&kd^i|?Kt(}msnvHL z)|nmoo~-eZtImG!LLlb5XV^N`LF)IsBS+Qji12YRaOQDCj*E3%SW-Bzm7(r$ zOU80xhaZzJTywlQSElk2FcMdkj!XS3J@)wwbfmv;u0qWt)jooT<6PFVb!8s^SS=h> z?`uV%+8+K(>e)o}YRv6xx+}mu%|cc|tCS1a|3O+qKg>+XF*ft>;gdemMs$&6a6eY& zV*pdXFCd+V_ZBy5c1dx_FVv-1@)qW<*Q_69ExFsiMcWpmw8bY}so))^+O_$vaz=~% z!qRO$4;aRf3?N5<%it4=Ylc$j#w7V2b3No9P>?5D=?E#Ck@!ch_%BX)Pn;XIz8q+v z=Omm#&ZijN$$u!rC#mS~KkzhlPZ-Qdy>hGlsWMat^6mv(*iEEPD<@2CvA7G6_SznJ- zQc-+k)M^l(6BA<}w&E~xp7^OnVQ0^DM1U_x=|S-Mt!tYbV=d(%8~8Hr#GT=p-v0Av z$k#b0(cEBrPq6(;5{(nF56)Dn@%?YBn*ltm`zzt)$Gbc%2sm3T>O1dicfW38JOL>Z zgh;6-+o4P1^HzQK`DTd`_x51~*~KifLQa~eVyn*S(@<)30RQUgF=vp z&m~FHwrZlTNB-}tZNCXi@lB0-QMsFMNWuHNGdSWk)vhZ{dzW3Yp1W=FB}-KideN&i zLRA3&Sn`-HpZaO@Ij_WG!Vl&05G5XG7P!;Tox!*u;$7_IQx$DYzYVp9rZM(gX=@6d zA%5E<9#(J;@=_bqMGo>QH3gY1Ul^pn&l~zu0HTQk4R~2N#kjFD_Nfpm{44Y?Y1g9Q znr5i5k3C+mEDvp}IbCT);4xpT?;EQ$N?~TUK95YkN*k2=YeI2`tLSlbMJf1Jyj(vv zciygl{73dis+-$fhLWE5)XaKUV$Rb|X=s$_Hz$T|VVio0JyD$+@}I4wXy||T=9jVSJidB< zJYBy^=M~!Mk{sVyLK)`XhMik^oFWO0wZQ|eygWpxa@wNY@1B}jK4>D7HW1!^g17s) zz2w5b{Fu@7QL~-c#bRU0GPnCak-5{|QgO_2k91e;FkoTNiX~ayLrh6YNh0Wv7Mvq9 zskW$?OuobApWJ|TIsEk`{i61h&S2R|Kl20j?Z!t3;<{WTD;!nei!KEO-oeNtNdq3H zvtdB}Ub_rS2F6C#3~uuL{tdLgwbQE%@q>1Z?qqASI^VUd7H;2B&8XhD=iIghb9L;< zyZb;5rp2x?drZ3tByd|x*YA5hh0vz*l71Cj#Y(bcO&2;1OjtA3L5x^L&7HnSL_|-W zS4g#)petMjd;(0oXSA${y0B7NEt3Zb8{|$603~HOA9<8C4_y|O3?o)&J!OK&>HKYC zBd;lq_Z&LRuKq6Wsp3wxUWQCx@83GK_ihe$Fr-xQC|0|z0?l6!-pW^GD&$GLAin+O z#TYy4b934~s0po$3K&04c&FG^=n~mdAM=Fnj)8sfG3e?lbJ29Z(thh9fDu7E+ z+sHrZkFJg-tkQ!<+#UI;J_o$6IShBBeu;9jhssJ*|0|$28v7glLk!(+NSep{0j2`{ zYsc%kS(x<4`hEn0xpyzRw5;1HjyNQ+JoYwab6ME?is%j%>V?b#w?+7oq?5WMldx(n z5Q2=M+E(FYJ23f_cnT*}*oRdCmnjHR^2dR|J$dChffX^}c+#; z{0DLJ>Hy*>Qd;1Fh=c&`$Ol0=7C8nWe@4Bn`}@xSVgWeF$l-em25&@ns?L-X5E1tx zssPGD*D-1BJ$Yq1caD1LSFY6>OMXJINhvfZn_F$$)xVN}R2C!jKv$$50ZgII1h$Ns zd$eEn$Nz-ndhcD{iYu25T2M>s39pbjzyq(x?2TeedLFMRk>JdM$pMyxuQ~DpkZiqX zG}pHFqEm?w_67hz)@c3JF7Zo(`i*;gV4*uMhat{!jvuze(;X=)=!*E8`zbElxp6hz zfG9z+rgre@ja>M&GNpc$`2L7fh14S4B@7qsv3!?s;@zC-0oW-^OVkEi*g^an)| zIPML}(o<1lg5}ebw^k;7veEePOCJXd{0I%~XJJ$R+T#qn`MF+M$jUNaZIU6V1Qt>4 z{c-{)jXUn=ubc9ldtX34SDDI`bCuK3CnFt~$VPYAijidp6zI&iBz>l3vqxh)XcgPj-?iRz6F6A`S!X z|A(xv467?yx(@D=;10oqOK=Urog}yu+}-6M!Ga_Z+zIaP?(Xg`2Y2V&%uMb(_kKSQ z?5Cx=y1Kf$YAtGFK70Iw%~xGucu~mR4+7x8<5JI455oEScw*%)AMf^!T`DiT68p8M z9i5N&Jt-fDePQXsi2BjYf3jFUY91hl-a@ z&Ow>DHD>(F&$lX*rpq7bT;5UP8($sxCKFDq+VM?yKJRsA2opbkK=U_pK00L zutzA!K0Y|2$NQ1BOmUn2Sw*g0Vfbs5EX-t_U@oVdH1QihrbcMGf#sZOJVZRC^akqWsXPd5~w(FtW5X^};2bIl2J3dz4u}|1`+Qo_d z7zH^`0gvp}cJ)&;Xhg^EaX{cUai%07>`3yL-Ta`ZV9b#p+R@_Cpb+?NmK5lC#&qU9 z7|6^!JuM?PDwJ1e9eT~j{q%@B0G(%uTX_~_e@q7;9^ghv%|Ll!aFbNIKF_SQZyvgz z9yWI2-fTC}tl!n2x0eZ$tVd?3ZqBG;%g2_*)FHrfMbv zRNX69mf9otrq+;#U@?GF*kkEGmr8Jy$xJrBf!L73qj==ONDHm_MJRI{5_17B;Hit2 zA)o3a$yt=$^>IBwf^fO|^@{fcY_r?BtDTT#M;3kvHMMB}7qQ|<^pkSOL&PMqh~~G{ zuUD9D>T;vRS?;gPk_tuI%75*4gP6cR8ImZPNW4@ABPn+K!u1qdL9N|}dz^&D7VKQJ zig|J(*JM`=sS&*fK)FWOa56TZL!J;eVDj?2Bz(o z73}9e!Ck)%NQ%ui1)1Uoak)Y#_Fb`bEVrvz^92H6%k9WR0q?57_D+PGi5gA-B{OaZ zd-}LispS<(-1~j40}XZ*ac2u(;fIa4!yBvl0kZ<<&V{!dI257*9m1TQs4K7hv1mbW z4g1?>Cg19fqa-R>Jz`v5;?VrUCvR&AaN5jJmE9z%%eTHu*@=lWbK(S7 zNKW2a3)L<=?wjNmRwd^TjwAN#n8_K`o)45#wV9>1Kvt_Ffx4%s9zN_aA-8{vxOaF> ziU+dD{nf|LU;~PYSB;ye*5juX(-ik_3=C{ddYn4j>V8ME&5F&yZE3Z}U!;~`O~r|! z`aKfN7?54|m87~sp7(@h-KQf(LqbRS`L|4K{r+m|IY<{;f)=gBW20eD2-m!AOJX#9 zusf(xif-n3)Gj$&Z^htbts2p}Yhr`v*MEL2$QaKfnsc5ne4R2mbl5BF$Z@dtu=5_L zx2z(T7`j_rbkFW8`t!ltot|YB^SWL^AUr8whiPX=@q-O0aXPUsw$v(XkLu>Fma%5D zTWmoAjMvE*w&yKskH?EB)sqD-3hmlgk!FL9KxHY7W;y0!XuuJH(AHv4e2qhc-(qLO zS6kzjrFu6Q4*EDGr)*~H`rFPjPxmr|uyf~Fq|N?NyQ+O3qU)p>wPiv6Wzn-bt-2Kg zhvE~BxSp${%OE=CI>ehN)H~>lk2+JR3nrsY8pL*`JAHWB1BJ;fL=Dr0pyWH|g+9*+ zZ@4q&Wb34K&G>Q}tsKUC7w20u1`Y7jzCg2;M*hJ5MyQ82+B4^1a@eQOf?)G;Tq4gW`f0|v zKzX37XW;s(gV@dszq8>(6D;w2r*T(18@i>$sEPQw-{Z9vj$4TIj$u8H3G5=EH%me!~{J9U=^_f${L zagn`m1PB+)C3!g*o}PNecSP&VrhZIZRv_t#hW@0-D2E5&Lek*5AM2g=gS$}@GmS3m zP38)T0My~5TOOOTjIOaP1GH$G6ffD{;_8s)J?QTjT66a$@F$zpI(vvF^XZAjb^{4p zsvMWj7V3O(8Zm=i_1vFIO}F%um9w1qHyOTQKa3DLbc)i!5kioeIL4mS61IHjyl#jn zvwdP`Fh6gPSAAG;mT>$9zHHs-6{c>uw+!-$Bs{UtIyKtsBqwY+Za_Rea!Zhi zJ=_i;VzRg%TuX$6X5BN__uF?Dpd#wsBBptrPuF)|S!!HVyUnq}_iDhSHi(euc!|31 zX44kB;6>*tNE&MiSiV&riTghEbtPN0qReeths*UUNzQz+80id)Nw$UzaVnvD%(gM% zv5O_a$1PHZu}kwp`j(lI-PRo7j4} z-YH*aRv9~Kp$V;OuOveK8kC--w3H76w<2{6jW+Uhn!Qcp&-Sofc*@k zb`S!f$ec^U_H2H zZG=f&uZ;wQC6G`LLkzV?&yLTw&YR$1^LxHjlyFUw;qT+lAE|l*vQ9fu1~w0+Xtv0- zN1NsgjLz>tCGlNH*Ai-T>xo{M!FpR!T%oKh7=E8P{e7>Id*Sy~C*2LTAnuDB-_N+|GrKN$lS?}~40EluQZNHQ$wS&r( zn<*0;4IAFG8y3Ss=UFK^a;XnHJtX2k&ahTj{lK`}TPFN`)!2<}2!@HT*#KZ9jU;ZzpHX9$trNP8 zeA~F+;@j|Qf81U0;e%ryF5!f(4Y>Pmr!zF1wHSk^1(m!VufkSX0+Xr?w7q}nC#Uvk z-;tb+-VWO(v&^^_`J6fKr8KL}3q`P5}4-124v%*1T`z{KwKSbTpwNzyEi|7%S?_MYT}Re5~RDuAwfQGe|f z4qyTdn#S>a6*6*$-3_VMJMH;{YuDlA9}e+rdc&k~3>d?Z7Gjtt6dO3KI?=xFpw_RX zoSsLl3N-q3PjIsr%aL3oRsZyhWSjoYLPgClw92t*03>%wt$U+s6qMA6ZCfib6<&(kXI}8YEZt4CFX*YCbKfeb27s%@q*vmFOJ3a zw-!x#ifLSzH7**_gt^bhssgO@94fW5sJiwTN-UfRq-Lx^_bF}=0@zSH`cb>LQgBt$1%d8{)C)xEZ{z(kScoJ)nu ze%IqCM?DaBCuQ`dwk;%;qOiae`|1&xvx{M3LD-34goR!hNCqlmqC40Sl>(&1rSPPH zkn{x%rZks4*0h6pGA_T(kuN`Hw%;;a>_xu-rx-1!KK6 zRl;|@iWVqVZ{ha!6%i^n@}#E&a=XjXAmGAAj$R+mHuI~#H;3g;$=2<<$m1!+Fq`P# zBKDISb+J8;Oz-{lo94#SUXDhy9{I>?A8&aIEh;}_}BHOJZb*OrnQK^L3Y zvG^sd2@p{BG`&YcJh3Q#Q6%yRq7>(00Vr*2{0cnDICUXGp!3OYz}C$jyoLOTuMT8VdlEYP*3HlN9}WLkrs|4KJPu1 zPKh`E6)1*3JSn}3_G!5X&h3n3sYV6d`TBGjRU$udW3f$+e(4@nBcXc9UgmIXd4~bq zIhc5{8=SN35}0XowrN`%@7*=ncWQsI3b9GK{ix#xa~q0ty_=5oRr`m)x2cf3m)v^-21`0W#%wNaaRa-N=_j#VpQHeSl7 z!>y9ub1f4!PAu8RE|fPzq;sEK?3O454#Nx&JclLs7^AXLf8U|`T%?GE)^dw_Hg;o@ zbG{gxk8R{>akQ{-uO9o0t;>jf!6^*?UeD?{ZPqYjMf!9aUd6Mji z3gv##C%4*-VkiuOD)v+lAtgHQcwhk2Nx_7sp6?D zhG|k09Jx!yy#4HEXrr=%T8F#p@+$0ZJlc)gY<#y*vAd6(=ePC@Eqo538oYo{L z*CcchR)zqXcs{?nAiQ}y^-QrJb>ukjEWU)wKYDZ|KI*)xAVm@s`4F&{mgrDJN}SgJ z-YkrI883a{{lTKRy@iaEgQpECu`BpfwCQX@l7T~m*ySt4W<6JhCP(8*ipLM`D!vx6DkYHy9_)7El;^e{9F*=)#8A^Yv{%Cn#qciYGHUm;Gc8;>2>MiW=7I8pzida4!-v6>^9X|ctT6(v^9Smov;~=!r2zaY894OMfy?_0Xp^!*9H)ko5K0?QXOU* z8x$Ls&*zyp3qBKYbfg`ylSZL(ORG#eUZg!725Tzq?eTtc0@oNQf>)-C{ij(+TKu(g1$P{J_~O$eL>Vj69u~=spR{k z^^$P~UFbFO3f{mUky8(9tUP~r*SRAxtF%HYF3>LENU_trk^=Rt^gHfnJg2qoeq_Bz zb-{O)K&vO!`W#(CCm<~BvUyo^vVASM21;kj1d~UYFWmn;gj)7OWAfyOHQb-}yRQcz zA@iLNpks!d0yc;3%e>eb{iqH|9(fS1e_({Fm4|uicoLB5aqCf2tEYlScHQD!kMz6v zSZ7V68*KC%Z#tMJt&U6FW;}LsmJOOd^p<#>SZx-FP_AA z*>od^R}v4r^lo-=Z`PPE+>c-!sIZAl&l1E?7clL<;W`wVj#ZR|?{Mhj9bMJIV~Ur` zZtmvFVYt>5@`;A}Mz4OR);7BjpIo*uceiWZ)Hf#jWk3`fTava=0ks!d;y^1z`%bDz z)KERrZ`X1Cc{A}iZDnF)-)rz{S#&rP!n!GN#tT2Nep7P{twJIt`NJt9)(O{TazhFp zGT`CmV^!ckyLc647_czrPR5OGwZxI;lQBD&|RkT4Hij za&6`$ZL?t-uIqOz4P!X2LzCM+HtKu0 zOzklbj7g*}S6{UKj8h}ogqnQP&D5e#YP;_AHMvfU*!z*egV_qQUMZD*w{euGwjUpx z4)GTQQg!@!;MsAo(uxhG&eXSil`!QZmWu)F)78+DT@IV+dk*4<74Y4|i~-S}Y1Lht z*#;Glys_D{!tr_RIDy znNMyyZn>T_OPa&4sUJY!*kSDx?Yv?J7FLt$DjE2Qr*@Z-zM0znWEfDs%@dL0b}fQT$U&H8K10U-86jAo(aS;L z!t;vTgV_mygnzWuKaVz=NSya1{e{QkiTbX_1csNtF~j#WVx_f6S;(&wt}sXW#?$KR zEVj!TxWH!L8ZX??VFzs$^CfH|5*PUQJkH;&eFU)_r}5AUL#mxuat5N`?xb|hz(wb7 zoxP*i5m*Wz%$5p`DZNp3-Uwzs5X8Tz-CI05S8BE zV>mWOO{z9plHzGPfRBLhDaQ(RSkCN0HRh}k)p@I{5IG|IwiO3u3&*EFOg#gedm$mR zBHOg)X@2fgouv8A)*u`&|D56FjlRX@rD)<4T2y9iO!qBL=9n*k?Y3h zKc$)dXR%qMTui^NFpd_T5oujH>Q*~w{v(8kG_2`jtfow67zzoHJdfc+%FR?Sj#` z`v+H<^_PXI( z-xWg~&3|5)1pamIKz!&v(^UCAz?0vxZuNhoC8d& z#!og0-Ob;d=MkYirnq5GnX-1bsO%I+QTMurU{T*TCG$-9mvwlejjPTfL$J3Ue!!>{ zpr~NmJ9t!%Z+OV6_Rv~e5ir>KK=N}gAjzGKVnleuP1%sEWp5`iUpCP%nSoDorh3A^ z(lGVOfq?^O7#)WA+gElhJN z1uz}W1d>oTq<-+W^ZH`3h>15l`ko9;mOar4jIceLIPWWRe@`p~)OEa$=0#iNu`Q}6 zLd5(yanv++IM!3OXvJ<@v{J?f*>}atu4oiiRm3&vkVB$i3|`gO}UQ4vXgZ zhL+mpH%pYESdy>?#~dfO?-yS9$s``QLvB|eNV(hEbFE9yW9OzVXS4^d(2zt_c+k|Y z8-gsg?JOD`s~0SDCFM%J9K0^ci@&JXoKE&R-YU-Br;_9^WTIukZS|wTT{6gRI2mjg z1zF?lhc>aY?UYPaOn3Tosvt*4jO;yR4UGDYcug{PhTk#NNSnKF2a*TqBSL6iDifJ#hKUpLHY zMQ+rmlPD`I3ljvlGXuJsLr^a;B*525{q2+^Ao^HE77^R*HQX2-Xoy3V<2rG~KlZDe z#Ojzvh1M>$mGujoe5~YW&s`6&tY;a2^1zqgx|B=>vig>zfaZ&n z-;YpeZ|S`ucHM$h)>sW~uPa0xG&nNPqgGhIs?kr#6`Zj@U1f0?aXg3_3Q5p#B@fsy zyB+fGmpA35I*}96O>mDS*m|EKpr)TzQkS*B@%NGS8K{p?!=@2&kJT+b1f!him~E0n zms5fO>LiPWIv5RStL|zd4Mu`$tCjCf_s-yRY5@UMUT5o`X`)0RfGSsgt|mfo`;`Dv zta|Li=}R=Du7`o%-OYZ@&I6R6Zh9g_bFkglghJpgIbzX{xImCQzFfB*=e<|2Q98jZ zZ#&gnSm>V>y(f!{Ulsi`2unX{$r1UkNtYA7V6|pNs9}Reaw8stB8i_;byfTH5Y~Tkqmd+H)6Ib^=cFuKZR4S83arS@jEi*^#Cb}W zP|F4Fy#$;T?oWoke+ndZ!|y-LZ#CrNw;#Qg#I`?2f`6OrySgz|>`=2un~@eNDI+=}`!tL9(ZS=D{ zSzt~|?I9VR?TG@OP5gxN$s;#4_Jpx^c3K_b0=7qWO7w3DcTf+w47dsDy}a0wZ4Zw= z3;Z?^`LU>=m2!TLn}exy@9UsRI<=Qp#?Ul5bqE6u2R^e1RoX8PP!*UlKfR>X`jE8M zE17Ody(78Z?iJn5Vapukx$SUWmfUSy9efV+hSQHQE2;akOq+0|Z5=$o%+-gXN@9g1 zXvQ|&(Iz#6&Ny(m*|$5t_COkAwRA(*`B6oO4S8a{EOe_(OY{3VP!%jA(qgg<>=)sFVZm^-S)1?jByN}&|R4}hh0X6c2c095@PTePN~gfDdG+p2zD^@9*81r|0xd30YYwXN@w9bOa z8I*65>#YYY(Lx_Y&iPk$?n`@@`K4sRPaK{=-orUsM)SuF*z1|X8@%j1M?(O)u_n1j zreo7#=Y|lSQ06V+a$oF{^XRNGwMLyz9Y7s#P2c8)z?%nY>Bq|8_SEini$QLT*IXbP zgLM9Rvc}On%gais#pzm@al{VN*SF2UU&E(sX2yUw!cdCV`6sb_Q8ckcd2ONK5M8vC z{LYnbGFO;i!%72;4G*|eZt>N6w=1Nk0UVnxI)StH93sd<+Gp5W!1xy5wN8i{GhV_N z+0&%wcCCDvU(J{evU>_l$8Ajm!4rI=-vN^El%DF^BV>#fkG+h^AurZ<3})3N2^^T} z+aqM%tn+Uy82xCh=X$hC=;CmJrE>OO}=_!pW`I`!%z{ z^O&dtbsO9fye>04a?aLEt}cmR1j5ls;S|F?Zclg6R@P<|$xp`EpvG$K)EpSJ z(U+ug+U)robdRSQ)HfgH1w-F_$=~(74l%6t<2_Q+c9DZ)mba#+- zux>}lXUKYJli=JN{Sbl5)_zaD6tXb1;%GV7+9cl5wXW1b*4>+RnHr7nv-Z^J@B{Hk?+a!`i|{WM8^oFh0uwG3 z^FDkzfr=2aD^w{^it3*dDNb^Q|CK?SdhoHeSFS_gF>#*i0Z*%`=CHJ%>SkdEx0 zF-`{Jan7PYZAAWh;YkAQXdbi-Qa*5H&sljyzr^Pd6T&9!kEIC^*LEe6b-VV{k)WCV z5h+@Ifb(mJy?SB1CBfSZY}Csy!(lF@r~(fUN|Z`7S<^R}uZ2l?Z<=1y=$$uOC@DQz zwDbygh|GSc-w$}1SF8gbcMGAv_IW{f;>A7A%dlfZ&P2T8pJJz1o@@k5@?EvX<}Ma8 zjBkQbXCg`@-ayU;`Q*L>l8<>HoM>RS`UASP8a94h3$~Zmg)-}J^U2?MTtV{PKSr#s zupkelk}RXVGt*BR}68a3AR_-3pn`sADnJxpUnEG2ZEjI05- z4{JZOcI(wJo1dOGUDl6(FOO$0cK36)wrnU@I^ZpF1mtQx`1<~qwc5bOneYc#Us#}T zYFI{+1w$DYIP{j==i=DBVYeCL0=DR4S7%SjCFJCqS+GJUpA&p?1Z-j56newaYwZzE z2+#?4k8XzpNMnF93(^;clwKJhLSGNhP0622Rw8bt6V1ttiR@jB+g9?j;f* zW*)Md4?YN8U_!=HMaIN@`(++uFrKkrLuT|^E*gmy{Q5mm~g zwGukfboiL6+W_n%^jg*MEM;TSjHwGCpZ_6|ad{o7^>tm zdh+Ydcr}18WwKPxug-27hPXvX{{B6T6dsq?84ZV}wm0REpDD8NL2S&4?9sWj(8az! z0I|Y<4fyXLHlhH9kImhIDFqc(t65cs^#y2T~IuMh^Us5##(;7`BWTYBtB0hcCAot$1SfD>zY_^`d2-T|jeEuPk824dodtr(>FF&E>(wPthJdNf?38IY4ZG>DmatFdDQPiLP2C03X2@af@WEH*-XENAj)qa(x9Oi34nH zF<1RMJeTxr`qe@wVlv6+(57c(wY+5oVZ<> z3z$0Folx1T5FtQfbzOBFv@{T#VUm{m9pXg*HVfAvUIUMYamPW=W1Mwx)D%NT=aLX) z03xggb*St>A7pHs!mf` z65}70x6y)+rqM=pzN{muGMf|uc?7f$3)bk8km#_Rjbc8!t%SNc;+y59@yb@uB?6nV z!udY&|9j)C#!y7k8C$Vi&m$7eJA$UnE_Zu%5Q?>{u+O&p;Ifj?3i*P| z?P($B-f9E(Gb8?^G^jQmGP z|M~`GPEAVrm;TheFh(seAJR=DK>TZXnhX$q)c+?N5U&p)wPPPKY>dB;gw-=>iZAeg z?BRcmSPnWscA7jsu5YXiO(FOH{T~=XtED_C3kw7RXGzZ;iaB6^1>p&%b-`Cdr3)5w zzkcl=iUQNqX8sDCr~e+$Uq7s=f5Td52A;ci2mo~gCJWKeje-0imog05Sgi1@3a+UIU_9v};)Zg!Cc+`a`e1iz=06n-Or4e@#WXCI( z5*kVa7u`wqXlzIvj7Z#n&*1;$L5c(k@dS~p)j+&IV;KbWF<$+e`zilt=7?My2;d0K zlnx|*aYOc}O?_Z5@iPr8I7}uo_>o1{JZ`v4kwuo?SpBA_kIpqGBQ0`asH7#?MyV}CT&ztxdaw`Soru@`n9Z68qJ zChXJV9dq_e2_6LniWea>lZljygJ;0wO?=bKY3E)QYw{OKT5TqLP}zSP`7>r*NTB*W zjb3{S%@0A8U`}=%;3v8Al3V?oWtzGmrAt7SoQ23{u2!nB*mi2;TG5tZN zmDL3jF@wPf9sQN3rD50VrEeiy1*FW(yGHp8jylwkoJ)8nEGUyq8kkM{Dq<1!Sd{R7 z=KD}h1fPW!%@MBv5Muj<=?t&3#a%V|yPrwYGXgOe=Bh9O=l)tb>0dhk-hZu>2of)k zn174fMjD+)H4Pn~(*zc%J>Y(L6>2*6OiDo}fZf;E$GjJZ^`$ajJ&S68vRK~ztd0mC zmvaGrf>{9o8k;Opc;omofCH$ieoT>cbZ;5FYwGq0;*VKxZxwPhZP#4F2)7pLf?=_w z(}jj36Zt8Yr!PZo|Gy9&IptKYz;&Rn{b)Zwf$vj-29YXsU^pZ`zg|7CGj zt4S3yTxcuJ#!!LNBd~|q4H1fj;5#*mJ1pArH5b5_1p+v-+E)Zu%`ATL&H4NMkiEcs z|HobacSA80q*8!sja))drN@3m6ZQ2Id7*5ITvdREfo%iG0HyK{tWtJUg8}Qp2Ju7W zzx1Ghf)r@`KjH_TXNX=1{u-z-0{-fYGu6lBf5$I$MP+j`>NObm9%jP$$+L^uvRg;B z)`ii+)O2paWK0_a-8ikAwBY}1`ak`E7JP&>HR(}_mjj^!uhw5#H?;$__cWF*bO#+z ze(tsxov%-l|uWL^$ku&X2mdh z8L$B8=;^?cF4DfR4$30YW7E+$I>PupbLR}fHY}lbFgv(~6YBNGlgB=Iky=HFCV^_i zc|)-Nr3E+6(7!Ld<$%J$ikqW*l2YRlZLJ!~D5hngOisSv>0mM7xaYw?H`gRQ=8t4n z>)+6*S3=i29Ds_6+_MAah98f#?$WfAVQsh$=4p4q8-4(@Wu(EVot7iI9%mr164t2B zd6zoqz?GzXx#^zoO|(*qXGc|PWTX$dc!cY^p*V1^OJhW0{=HhY+|Y=dBY|2CSGucd zJ10G<-e7l})TA!ki(Led=MH%n{niQz35k#CzA#qdzDfmuFX-Ylw4ML95Q`l=Hk~qL z*CHrf8j~qliEbFxESo(6dMHahWK0@)p~jf@s(LZ?Dn za^!lDm>$un<&uQV%-;Dv76Kfk2*JU#)t0i#DaHvKa1fsV8(W%udYC!pXhm(2r zPJQQg?Vs7=F0N&w8I#~Dwi!DMtkF91x1>k&4ef7kRIR;n_0#_usRZP+M70tk%o)zd z^bew|rM!Su75*sZ|4go?v^)Lc3~Chce@rYO)y0R!e{bQl)*%3-C^ZGSB4LwR52JT> zb#3gFwPcv5-lMC&AJ6L{p5Kdh#{j#PS41dz8lDGM#c55?D|bC$y^XqEj?`QG9e(=-ggFfxfghMH3- z)W}(G(kjCca9DQy%%U?@P~vi0$IKpy^UKU3SIDul#H3Za!OxO%`XiYd1PB)L1$5xh zX`3zUD7D@JA@dxsI6_;uoFN0$nyj4zpnrBD==rBlYO0|6d-Krw_u%xer>yWOeWyCg zOpZ&WFHEb#x}pbRl&jM6gMzNthJ=C+_}HO&bQ?OTmFf&a2M8C3OP_lBq~I6-@5a;X z1)acQ>W^QQPs+kbY}!XF@jXoZ*Z$U~7uEgyEED<{G4)nMuVbv+9&{=es?`9*pTiv? zzobjuj~OW_sWLtW12A5{vD9lUsGnuI7OHK;y1MY>G`-vTxQ0xnn$^Hvg-a@?-o*SIqSID)G!@#K_!5HPgsA`Q>Io0n z!}T?|qwd>WE{4%Hn^g}P#H0Nc4Uz$=7bjY{)yi4dxf5nk&HFfe2%cNi3G!T zH=_@1Gs)EvK^jS|z-^D&dX4_0*tZUL24-Xo)NwUhn1U%d1Ox=t8ol=bmo8G`kQnXD zaRyjBCzCGTN!Ws^ko+(2$aPYf`DrMrC^M~lvT2kHcZsAv4q`*jMZeV@6h` ze32*4HH4ns0$Z5^L7@M(Pe}>WxYDOf4jP)>>Kcu1kGiABD1lXx9i-UI1vmgS$iKCP z937z6EtqBul#~-nT)M5c%=>AmkYmLExmXp3j4WM3){$qK(?TtcjwcwGW6GNdEOBx^Hhr*Y1TbeX}%_fwt|7o@cU;|<3Zmnpn!xy zy~&&rPYgi5=~=5FGdiKSF*-WkKVH5OI+yDi7h|NzC@Hmj*4dYn*$(-1=^kQ}@mv^y zCo(AT$enN~q0+ZYALI)~r@|CvJ~3pHOQ4VgSkPCK-n2>~I#3|ZI=c+T4p<49vUIiN z{#>;Ro|~{Xb96Gbe;t=L69@pR>t=rc6`MW2{QXr?v=&#Lz&H=;)lB7L`<)+>9Vd{B@;k9im(X zC=Zj8etX-|iJRd1Li&||?q!$3Wc&=Btw;L8LR?&eVjQpbwgLsD(T*p9YUJ6mkw%1o zs%IDM1*Tf$hm@fry_ixaL0$L5>fl}xg-kRpv zIvEa0fS>KJv($zNo+d6^(%u9rSQ0@(R=O)I25_xsEuCoW;O*k2w*ZPLk=1Nos816X zs+EpRURvc47%^7Sq{zi(Xk7QQ5`9u!NomDpg%_OMJLC7Qv!dX#=gm3-4!2O0W*QpR=fUatikvd%6)OsAYGZ{FtD3dVJPd$WJirP1Ot2mi9)2)V9JQSK z#iiOjPA1_Y2$l_$(;ry-RHK3J{^ZB8B;#qU<3jJ09P;W|TJY!jZt4XH1x}vy9S50v z_-01cKQZK>*4hh+4Y zg;vo!xmF@Q13;-6aB>Q1$HA!G8x~UTW5+DaCKJYe*bvZt2NQac={+bvEVy%%8SP8| zpBVyC0}jZa8ZTGMNPYy&cdGD|($Uk;xD=F>FhEUwXZf#C7Qh71tMf!8feKy|5I_Yk zfksCOb2W1GuGl|UHV3sbtRXi_&;i_p|7oCJ)`z1){ z$B^@fPLJ4WLq<@?3q($jXdhoZkkzzR3yY%MBU!-kEwg{sc^Q-q7Bt1n#r8jK|8*{| zI+3Ok`3^0l$qt~t+^^d0{M%MmNZQ)S03Vzgf7(36sfd?MXZfMVuTI}D6!2QKNQ?E! zU+8oHx2cy?b0M{r$S}RD5-<;TFJVQXR4gE6=`P(pc6oQUnQni|)F(1>lsBX&S+@|l z>-#HX6Z~tZkU|5^)*?dw6#Z+!fp2Vto}E?!ZLzug&bGUPUE^%e|`aNh#(xy)evAj;|5xHdxYaveqn^K?J)z#4cx0fvuWL{syC zNNVSb{iQkMhLA5n1Dcc&eN-=__^-*;egc|nK(gPK@0qjD(W|;?HM<0vs<-M8U7eqc zfA|3TqCivTD!^tvlnDflxfwFG+hUxdOmT-4=L9hOa1^hM9zq_z`e7p^;HhK@n4MIdZ9;fQ#{(*p~PqJFOvQvhs7GW)t#&3gfg6$<^hlsDe-= zuUhq7+{+YgH-h*7=%JN6q<-4J`)EZWYi+^W1%u&ebbE@6Zp`K;L6S$ejCD{i^W^ zrSt53i_25ny*;QXt68gjRux5V!LaJP-(ZV4l^%Io(Z-Ud#V@(gS<$E}Q7UJPT#!<< zao9+g#?HLw+!Buo>!bsQ2wWp{+gnIT$vQwOu2(?>6U)}B$i|oHPp_Wxag(7_SUC*> zdp^|^H>L{1l~Wfq>%|#;vxwzUkP=?l{ngetxHRL@>#_CA&HccQ%^+K9$%|u|n1NCm z9`u|d1bTo`Y%t>Q?CBZ1F>YlaM4k!q0rCa}u_PrW#p+nG6pPFldhOiNnXOpZJ`(*= zJI-Vuy@c5+2L#wE^I+lR`PKO0!*Y1bQ;VIeoAo;3oAU~Jo3mDd`rr(NY1z21YMvg< zmCnw5Q_Yk|d0JQt*i69lh!szdG;M3tse$|TYQRyl#EvrVd>+x2r6vHg$@Jx84_%fG z*#lp*ha(NK_0-4Mg(kBttbx7uST)+LR`0UcuY+39VX`I-?WD)UUIHX$N^dv-W)S%l z7if8Bi?AG?%5FHc#ZcJ_W6=F@SfL>AfKkqL{6^1M(`P+olLf-eZ+u8c6NBHOdITr( z7>@E(5sguap?91Y2KH>Y&|TNLEF^=|qF!+t=!s8}=y(SQ63ldEI)p!8b({YV0egI| ztXe2rkLbJc7=49ov4ZHwQ{ATFeA$*BMj(_I3&6U`NXv;)u#{)eEBa*U=z2@>B|HwC)3wZrw@EC$_B$Bp#do7+8jafdStTR$V zXDeSJ`B0||wF#CQE`*;vV9@aspadLr_LK+o)fFpkSSn4Xv5Pb+15#5{c_pjol6-y) zUE*B+G25EXfJV()au5oZlJs03beAphR=_vdM6ct>B>JA}gmo`0@ve_%qr8$;E@}9n zf|*;HCdAgTcbtwT4Q%|8W&BXJDPd}L zW70h>#Nz^(;lq!Y!Wh8Qq+u6dCY|}>*^apmqP5XOG4WNnm4=nw)d*kF)zn;6a0%M<*&aIPK+Vy#oGnH z9tdx9vgAou4&yo5D#379`bymZ#94HmtcAz^I^hA&8yO-&2uOFL$NrrE3GE93`v)wQ z-1*YiQp))U!@fb2>@xSaa3}uKdCyL7Ei1Ct{DQsLAA`MDn-HQD3#F!zqdX&ia=KH0 zdVKO4PL%cP_W07DKoskG{3wr!0@-c=UDun?PjIabqm zfxtT*9Jg~%%X5BCeRt9P`r``KM$-yax<@k4q(Dt-oJyYmDB$ljI-~^g5+@SC@*<&a_pl6%T9I5wQQ$2trKOl%%=?{bu=(IxbqD+_H~t^ z_AC1=gOy?vM!G44>H;U|^v%ty0=5NU#ycQtcCzy31USYO6qs+EA<6erXcCCuQI5}= zm#IE$i2kky!lYbK&lrPB!RWOW2tk)0NEG;R*EvUwE>}uk78PSm5S<-NFnFe3g zfgly_P%=QinR4)j!q{-@{}J_;L2dnEw{~%NcPCI>io08}3hqv^1b2tx?khcMWpz{>@{R64A%%qG8*jNIBgvU8~QU(YJ6D=|`TyLgMl0oy}BrT&h z4Yn_hqY%*tmBsVe!859UMe*~}rS;_o1N4a!pA zzrA>h!b;4QXw5|_%W7lAY*h8@N`kI3C85WhmEX;oq=#5HICETUyL?XA|BS^Ok~?Zr zLOXV*U7sFoMFpxgQ5m_+C@PB4N}V@-V|mbR;YQ&W`algTiQ_g(%onwDLt6E9iRe|~ z*UYju^eab66B=XmzVS9&FRFrvo{f}WQ+EVKza+3?Va$Yp&jRAEE{mJb<|)3B@yRh9 zEtnvn^-5xzsD4$lS%#_DXcL9dR zYhJKPx=`HQkWL!3FFW!neWDuwmqqeeUF#ag41F!CRz2qo6caMtSkRSZGoYlarKVFA zzFQkp!N1TOc)#ZAc{Tdq8myTukk_lG!{S&@CGVEsay(-ng=b#{;XQ3Dr2k=M{!Vy~ za|e->{r{P(tAz0Anb`=_yMj!-NI_E4If1d@D~SB5C7XJ;B2QcnvtmT9Vwomt*@&V* ziw#~E$qjv53TuV5`|`x|mR|O1JK1Kl4pW{c>PRh@wxBcO{NJ2lwy`uCHf9vwonUWh zMOxsMok1;mIppu)_t7MLJUBPL%3NVI7OV08qa_|3;5Pg!p3*wwz>o=K)Z*bL(A(v; zVrXpq$m~tc%;|0z=YaW_ChsM$(@~FKMW$$!OL~kb+5DGmlumV__f)dufv3tsFHKXk zf@F3KL-}~Rm{S^i}{fb$w)vIo_&jUUs^K zolx*!vAf^@tSw6(Mk6H#+E^57v7sC6e8O#c)n;@Y>b&E2t2B(Ix0HO9A-d3& z%@Yp)wKHVN#Pb@J0EOki%DbKXJ8cPDzJi|{dR1XYa1h^bu{^Uo(QZbpr8k=fP}z7t zxNl%Ot|LQX5V&}?KlVT`SJT&&j}D!K-FK01s7*QkWHDEDN<_mnbtYS|1`w_zZ+$1%&!*?G%PNGv-w z?K;kD*RSHi8Mo#0s{QUqx680>pP~D+UR~Qb`1bK6KjTUEiu6x#-t(2Rx=NAIagXS3 zCm1~*F&xmds%V#QSuUzfVEcYYEebL{>v@na?V-? z_&$_E^b0>#^_7gpYO-JVNGpQZ;h#ikQM;R|=-fG*2{>`!iCn<>1{rheu{rYzVtWJ_ zV&+J@oEUqCt|9tAE~MA`k68*>tMI5K4F=fHE?8=$SFZGP8knIFwaGx0zHm2((ra&_ zP!fR}AYJ-k8I(k0x#g1$@LrR>pCYcey;C_Ub>@qCZWZqBWXQ4~8Ch)iqi~yUJ&xT! z4Uk%3R=8ETaVnZojMq=%c_-`sM(Kl*dvM6q3n#Y&OFoh_HrFTM8ddd@R06kUKTabyWc4d?t=Y9ar}0%p{T$%O>2?$ z@G`pTJj@tDdRyq=fDF@si*}MSQt;rfB5yY{f*g4fhqILy7zab8DKNe15YUIc zc3mGS9AGW-a6Dsj(IC9n>B5#s3(pIqWAO!+h+W2HwOZWtt#C;Ibb~z+nkOq`E-;ZJ z9-IV-GrL{hBYr-{T5R@L<7-r(oq*g#_p`}l}!&uO#$z$GZ#vO1(D8feC=$Y%}v z8~^joZ~~wIi*|?VLlMV`+rG%p8kHA-ct1O zaHq;VV1%O|%E$g3%R3)+{CJZQ_$2>~F(cRu;g4(jn=5I7l;{BGlx|*!*%CQ`gZz~Y%Xp&pM6hMXZw`-#v!(`D6XmL<^BDJI)&Oc7$$Cew#&D; zNm3DY3NpE^2D*s$*pp?=AL)|EK4mT5nKUGci~x(t&w2IpoI5`Ad&XB!>`y#qc z`WXoB4fYs`3s-+$1JXK6-iKwxu8Jy2rG9=S6gkKe^pS2bFxNw^A8e=)XHj0CTF~ zDd9NRUB*p{gON?!jSr>VzjqqQsQ#KXWZb91xke+(|JkZK+@ZOvP7@BFhnA=Q9{2gP zJ7Vnn5t@(41sChnArd`+{y+$)1)~>uwLl z?Wj8WVk?-=1XfU5oYDJxd=k&VSj5ppk1pd(aQxnme{b=5HY85iem6?`LM-RmDxzER z6-+^OvJ>@RTea})MES6r`^#)Zci_9?j30>9+34S;c_}y*(c!tk*L$;+L+;S}-nK8! z?4ld9a>S$?*KM>EKW1pQ**%eMRW1GS53|1sY2zixOB=kWdbWlHi{OxTdQ$^=^?urf zaPW-2W}Ns1K0S;w`~P^GrPjYmgl?FfQM=rIt(tX(4wnsVqZw|?yPzGPU1`_ts6i)( zP})RdKajTy<7^$pdxWIA8V4WnUpT^n0~UB$t6k%P2~BtOEi7nlXkATCUMwEudrOnW z;FZ`&a*M7SwwSX|9YkOhi$k;P2hv3_r2yMRIxSo>Bt z0GmBsow{azR5iB$ISS3ekW|X ziR?Hmg`w{`?Ou^*dfgL``#H3p_^?62uDZyT7&8_ur;bLgusk+}%I((6B@|-07f51& z_45~j*dmv7;ad*Yyeq(F4IMQ-JcDxD+~wIf>-3}|e~Ax^mVUvOJ1?ydF^rqprTUMN z9u~W4x|2|738sZo%9gdt+m?3)qZLVaMDZ8{zzn)5Fgr6!a`oyG@w^x%+StCno7SFva0`JIUnu!R)RWwi?kOg?<2o=eMMhf^EQ+4@4K1U*; z?jjGo%lU?CI1_C_$wEbbGy6hs53ThA3Yc@V#WE7iN6Lq;6&a#|-U ze)(wQeV2b(fZciXE?UGD^~;Ec&&7dB&R@uMc=zYQi?aHE?-7B-mrvzC8HUnTcT*&N zQ<{`W{`166VFb&nYjU1?8n<_#PY?%1s|aY)%m}jbFVJ2YE%qUqG`w<+sP7(-q1w&2 z>ldpcV|B_mJKc6tZ+`pP2|9J1*!Ikx+mE0igsJqM^P~jN^&o@>WFye@g7u=p`L*rZ z{P@q3aD+&^Z8LRW6r#cle!=ovu1eca_K0s3s&^cEHkyhWPiD9G3oGS1ms(%f9-)#(TZ2DuSAoGcA5uDaO&~dsUN5^mf{lJ_?v%?oL=Rk%J(&8j2XFHDm z_eB#!QGN6T++J2n9OdaL(~!ym|-5kTpp}mDtD2++#wkekE7FQ>Yg^ zan*gJN!XsRF#7!bKe?yoU>wu`eAaggm@-A=)d+Z13bBv`={)eWnph;(s!5NT$MX~t zR~#eAfzdbDn-W1eWjg%DwP(*?r7yIBcehya$9wN&kz7#f2Gc^<;Q)Ia z=*n)y$p4`DYFDBS@=Hsj)(;N9^z{x)EPBYuTe*}iPngUqma5bi-^UuXdiPi$B$hI7 zC)}Mge05i8AkB4{cQFG6`tBK-M!gXib60id3~k#hJcR<$ ztf9O`H6gy!B{E5Kp0sso%<+dsVy35^or<8GTzyBKrp2V$_Y8=7ld1te!+HuCfA3JY zsuXyi4LG?2r(R*oFg+d!ay{BAvZ+^ZO`jnFhvs?gu)TCSL#M^BLvz$1WvB9b~Q z&FbZ%Ys6{H!GDq=30Pusz51=KOmeU13?M?sP)U0dsE9il^QJ#^ZTqhV=l5J&jKe#k zsMpq`NgnWqKss|RwjBv$(7k-#?C;a(O}-ljtKUZIoVh-a{>I@38wJ&cAD6xtf3^AQ zut?0Px8=bs&~6s!0v84&BPnp9K+Xmmd1JJqPr_vAfUM5!Ff7_uQ3!hUC06AOh- z(iBQn>RL}VQ^_A=17Ci>k#Y&kHdX6Z?Rd=n=$YwnsIoLH1Ag)0eRJovU034a(5XYSk zT6FqqJBuGWau>GdyD-?GL`KtUZ>?zZV)87^rQ< zezCk{n070X13ab9jlcC9h0c8UJ|$OvBlBT*^}7My0Oa}J`LZUQD86G(3pyqgdbkX$ z^V-i5o}T$5r$pFH)$OTQyXuL&b@Pih()SMr<;>^)EMMGe+H6iI`(pHB+B=QTAVz#I z%xJd~ta)Rc?-Z)^Tf3qK;QP8AI@_J&8}TgY3N-{u1ioVgAy@X%S7Js zKft(Ibw07(V+iHhYQDb!M?TK}a-J~oz!seA)@#S4ux2%Tv`Z3>Y4$lGA`fB@&IKPA zb#F1LJv^L~c$}8jKKV3w`?BTmh=^EoF0Z~*N5-=ekbN4&2K56)!WnLi1N_+~nPtgU zShM&L&h|QMy9;#7`P$z33%VY-1?>gxH+tdH-@wi0UBOs9A|)%9AIC4r8PTZ_lLn2}yZ0rqKodzx z-aH2WEp|l?qW@~70T&)nT-K+C)^nH}-y4+G+uH1P+8cKh z$j$u`m-)XOEUIi4A%%Lgn=d|-I(C^&88Rxm+yH9IRIP!Q*Mp8KndjRJN&i3BuT;Yy z_3${WG`;_yH@X?ih>b@Xn|=)`Xs+^wwpW;d_*^@V4Ld&VTk)2l%TGEd=61h19{+QsD}3bxRisn4iEjSz+3oedX2tbP zdN${t?ZTF2kedfnXyUH+>BC}@5ZpUi($4c;K(~;mHAIyHV))HwUO%lqVJ0yrnqj2i z>*o830YbnxS)#Z7uC?a1v9swl=qo=cpBFXAl&FcxIO=EM&wxM}+Wh}M$U!?{U%7od z{~P7o9+E%I;dQ>AAqos<7s%rf=yQZ{rgwfe-l6b*jhr_ShP2+ z=acZ#hhVpBR~inxc!MXvV7%Ouq^CSCCb(`t?m>nEo#tnpOnxfKRF%ro?L`*-CRU;Q zlX4qAb|X21SZNY1v9s?C9v^S78@zgFZ0GEYGC&?sIxt`1;#|hJBG(`IOgf2s%Py^5 zy);bU3krFjIgIR+q1GJ@Y^^<#cx3628vU>yks|!7`AM!Q5d9M6vbZj9L{U)}%lpLA z2cfnVaEjIpo*6?ePvbZDVZuW5>V7L>ai0up{MSQwi`RappMikrPAq^t!AF?s4TVe? z;q*L%rchV!ugcxTURuG%D@VW)P!6t$i0Go5;nF)v7|+bOmHg@`?ytRsNqBdkyr})6K%J%Y6utc_y&JK5FjIQlGD~tZ zUu_s6u>QqGl(@Sr=}*gw#pILgVwWw0sxut@ofL17z}vb1CBf=*9}8*m4I1XW?_0?z zXT)c;bixODJ&9Zzyd>O&iJ0Sy3;mxzYsAxrozt1vwSdq$8m4cFljzyt5I$MHKcPJ? z?hOdh!n)pHJZE4_5LD1s0|`05bzQS!lM;j?8Ii@x%XNh_o(fxjqvnB2DgQ2=)*F{E z1s+tu!v-@dds4skc@nMluC;T%yjUiw&ON;PP9B_l{JCoW1IdQ~YhWRE#ENpVR0zjF%>@ zDa1yIr@uZ`#MdHflJxGY<}9*R+^?7#oH{jov~zp z%VUfN@0{wI-teeNbY(yVT2^wvW=2LTqI;I&kEPXrA1D^=hrf!ESL+B&GSnl&K!Lzz z*Rs(Vls*!e?$0FKOGyA4$L$;;%Xh&t&JABJEpya30Y(K9v9~uUsff^QLHs(6J?h_2 zBUl&reT%#zxo%10snWF5AhPpg@z_eAD1CA=Y)Zo$h~pRJXHc@s1Kz3I0Mrf-JPt zx$NWt-RYV;HzHESqQpYjY2*MlorGILy;{)T*7~H3Jd8PQBtFjf(?nc6W;Nw0U@1|q zcsJs|5czDLS6eNT1ptLOR_e>Y;nf;!R_CjcPpq`4Cgfy^{$tqef)*jhdQvH8%6J z9=5ubCvV$)xHL;FbrBg#7a0#K6_&5u;N`~NLND0OH^i`9+ zb~rz!*N1bFMI>>5Zql(*wHaTIrAx$k@M`A#jmm%Lmb1-Mjyh>8(Y?C#?9o} zVwry-40{ho6hbI+|D1CGD|8xO*cTO|NO0%{3=}X2&^;Z6@sI zE38p$hjoyfo>nC0nDK%M3g!s^JNaWNpW`nPVG)wiwXKgBq=(s1{}nnxyB^%3B(-$( zNxeEqW}1Wwh%k0r?t_8S+CMZhVw*}@$|jD zcH5U)+#R&zBB(loo2f`bI1GJpx?^9zzT+W*X=^O_rcZF#lkG_|;7#%L53fr8&QT^; z=6)BT`klx=L_cS0<7)|$;k7MR6YTRg>tXaud2iwWac~1r{fw@iFez%CGhGLd(?^2 zv$Bga<7B{p4mH|Vg|Ku?3{&a<8b{c4P4sMkjb6&wKRiUa2jv_tRSP!8>nq{`wpdFA zDElqDeJ)81kEbxGL|z3LaXzee*r61D(X2;ylpY>^Y9bbpNy7)f`FafT4XZ_~0h4wP z%94aSzrFWf++HJ*$qb!as|j6Ve5GdQLWv+caoj2aNt;93K2-_&9bZ|*zq6mR%UOe( zT)qavUNm^Mos>Z1EucDKGPepN2%|f5Q?+3Rn>d%@{_pI>`UL$?raP9(>Q%_AqMI~d z=ku~_k|+d0@ZGo`ss8jlbyn^wURLmTS7KH>9s7Q9^yOY)sgG4jy(->draD>u^G9)Ur>7YkErOd*39Ek2jDn0D*M zJKK%qyxQ-(S~rOg1hG*%o*wnul~ol_l`ES|abg9SJ1&of;mI6OHMdKmS%a!?C@&w6 z=x0}NFOzm#^u9qoNYD*WJ*k<9frfv^nTRDepHn#Ab?Zcjyubl~b&_V6?6?@x_J}(_ zJ4JT&`wU~sAWp%K=Dj%oZq0xbxF;mSbA&hSzDn9~95DUs#C2&<_O>5uW9CE3n`5=o zlC0rp7+ANfFOnR~{i^W#LhhJKf*#os9iwWN+2?f#At8NzeudE$UGc<3;dc7TG$OS` z?D5Y}rO?t>lBJ)?n%cK3=qj7EzC-hDOggpPUgDSdhB+4)jO=R}P{1GlIsx|#pNo;7DmCc0=OnpR> zN7*MW$7JNZ2$9be|EVo&JmmO*zI_zVD>fKI={X=HJ{VOctYJj*S5o5EOia?})k0ge zuFm!{*VKY>TRTkAgwpZ{UZ@y%$nLbtVtiN}|NU^>4&~_T+ilFMYpm7eHzc|TInc8T zd3$*ln9m)tUx}_X(X#RJt%&z9e<{TjK_Nx$jJhzQytum!RntzdvUm$Z;M%Qpr@4N* z&Rc?LqhL`8=Q^LIc_b{vuign7@(754O-JU#2mB1z#bWiJ_olWSO_S~J zu0q6KVG%}CLfMkCG~BMTu6}h4Z!=u1_MhK~>ytigms`)&V|~=BMln*tO$XlHZ)e~)cZ6~uvS~d>ES?9B~K7R z{QXLlT|Zh5k-uv!t?C1n)DzPX;W;wqq}fP6LV&#*_U3D5_BSslNy{3;)%fW4;*4< z-MWU@yrpg;;e`q*6+7sJ0InkS40vYdwgfH7VNx**M^RQ+lU9Pd%5BB%;BMC0<6#^+ zyncHB?>tls`|#mx?QTyQc(m#FGe$m z!5sS)wb}~O;mbPi&$>h|_I!9OGAUwYuQEfrn<^e9(28uLk?{C?Nmw2#_+TT%>h9{OvFhrT_F7Jsa^Rz)Q|B@&CPI?{F+4AGSTT*7&F1e2q zvwmzuZxaLBr!t?os^d)>>$&#ow;{gV2IQPZ!td(u-86qb*+XLkNFi!7?IMRJRX=n2U!{W9a09k2 z##;AJNyl{yQTI}+Gzn;%-J<3%Ac%7*p!$dwuMj?H)}}dn53p7@GSjvZOnk9S=Hb!5 z;<0~y`Fo=&IO@K^2kZ8uL`zf;`hSP9le{jqWA4i;FWZnj6B&1F!T#ya*rC1+k-H!! zK$TM3R+n@~B0)-4qgAs}xGuM3T1&U5g?mKhQJ5`18J#sa_|Qu=5S}y6zYqaGYjDZ! zDDQWE*^GTtfX=G_3@pjvA=B4dTuMLRmaz|6$efkgVi?RQDA@q~AiAP|HNY=9-DY5~ zlcfd}5}))$Sv@aXR6e%!xI-hKFrB2XzNQqG4?!O@({p3CUIvt@jSi=yVa7^Sd++wf zTw7G1W09jGr?-B1^CABukTm{7Dk)!}cXy3Xo_OA@;XXwZ^I>8cTIOuF3egP*UnQBq zvP)%+{IGs|VLI?={{cQqS?ux*Ht&s-$iEd5)h56>V`iVKE1U-&tzjJH`(C*^4u-Is)Y+p4sD zr=TY;Wka)xwsuJ0)aeT6^Rwfpn3q{mS~bH(fn1lqyvyGW;d7DLu~vZRCWa_r>So>m zC$)su%RrPs-5Tb+uuZm>C(G2({nB*AmGWWFHXCxTKe3K?`53rh>(U*pqB zr{YL=cemj;IV$p^rbUxx$A2pFB1iQ~_}Dk=P+B5>E>7gE()uR5CJD++5BR+mm@vtH zP})9DWgFyZcs(1xYfg#!UIpt9dnyHZ+(wT=@aC@o<4#0un@jiBXwx4z3G>mwe5tnE zBPE0j8z_8MX^JL`Rxp4o1WAh>QnLXHo_CvEA)TAvE#TFpJIgRa z3=2AQ@eHXPRvR4VmSvkP-$aHPlXppGy@w+A9xjWp8dp8VRS|a~?d(Tn=odKOZGr)l*SG&y3vlju5qd+bNT<24_JA5Q1yB+_Y~VfWrys5Gk(is=M@pP<|2=EJu&{29 zcw3)lx@y#WQ9N8`jHDUoe`OUF#W>71GRIT4{`0*mkTFJAsxQ&8O?U%#FvlqLT^Zv| zzraU53UcOXccas9*b-)DD0RZHIIZbIqIBs{DP3}}RwKc4nR!-+W z3Mi@tp4nxK17Y>{$9s{~M8l}WUx|%6d2pd2Fl*{ zi&t_|Cn0PXn4hHnpczD+NuMq3jR*t+nZEylGKyF$#xQ{$k8V%1iu!H+kMSXoW2y2A zXCm=+B%PfASHtJA$>m(<775Dt{o}=2j|9JR%{SoiON5aLTCcjsAM;z?VS{3({)y~i z9C8wxk!6b2IurmFdCw!A{0*%BdaCEcfR;7Q=w|Nj+)CI8mg4Kd2!V3 zef8iD^7Gor>occSpMVd~leE@4LsJf(42WU9Fdzmr|9Zz_F9z%E_hPtWieyi_(Ja#S z13;*f9q?JWDFKy9BZd#qL;Z9dBEGf6&BI%x*Ih)*0h0u^MqNv|(O48-~13q?YeMozfBrm4dCFm(J zZ3e-aJgr=JEkz_{#~w?vjwc+;biEkmNiVKSr8%Iqlwd0q?J(IF>CTkq`DW`>4;X2o zN-BmvCXjZZ;$^d{Km6BeJ`;uC6E**EqAtfd)R@l>6 z+;p$>UC_n7wA~@y=Mxk^o#4~+=rW)tPMztt)M8B8oK#kzgu_+?XSm(vK6R=Uo zqY$C*eIw%UNzmI0uY2m-&?nUd4Ld6=M=I3}?yH=#{keu7|3TRIqe$IK!`}w=luvi$ zKY!{cTwGnrwN4YLcPf2u_%TEB>V+Ybql`sWJQI%o$Il`_tZ^LzIKkpN~xX@#6YgUD6zRztR6@y5cPWkNy2C zGr;Kf51bI<#imCuyis8jZmIENTtTzmI2#rt#>3t$jGTLoj#Dq2YP8WAP#^omb!f1mO`% z^ShNWtnhbDE3$up<5-$d2@+qzCC4G-U!YHyoU}o~I2-i4GV&w>nZ2D^uLXsp6KXHkj@S^Gjm&H>+9tjkuqW&~ zx8f=zKL3p}u-RTej-S#~p?PNv?#TqQAA{WNk$;{vS!gl2j=ia1K6+1j?0Oja-QAs_ zRzPKQ3uF1Mz!HP=={9XDo?6NVHe86OR6ZwLv9O4zqWbUk#jR{3<9PhoiZZ}{sRdJQ zV+KchnRlpos_0+a4|n*Gkb{o7;{{N!f369_R1}QwQO%5pP^i7?QYD)bTC5-XCKnL1RB|9wGJ}K5zOB z$LnyR6h6?VPzlo)3nmK=X`X*$_d6@qqZX&<^{y8iaDhRL`r%-uQE} z(ZA+-5jF~MVDMq@I#pAd|K0l?wkX7^W+=jMiyn#3Ow0PPd#lCSB1*qakyYoZIJJE>)%Fa)te*TYIUl%K&6E29& zQ?Nb?*BGds1+Z9ooj)16RR^AyX5urQ_TbhrP`Dx-Y7y`OeHAo#@htp1M}%n!U$TSP zL z;@R+HHxQr-=d=5O^sxgL_Fq6$&(_9Ez%#N00_YNfvOuisKoR>grn*Zq$-5m49y^Yd zO^v~_5QBH2^w_omEl$?W+4h8Q293jnEqyt3mdx1IrshUO3*>5zM1SnkZui65oCD%H zVZq=-Sie_T18;m!6gw`UB`ZsRFyL?MG-59zlAIL2;$J}~IW$g3v5{-)R1*PpQFB%0 zGtfS-Zknr9CKScA2P#3?{ON_26>jLczRbaoRxgZ;hb%gc z0uaHtdV@A_mqVYput`iC|-WSE~Of7^L1?^aY_gKF7@leIeK_ug-jZB`Uj1Jhs>McIN;BN^eYpToL z@&DnTp3z8uJu8bynmP>({E3b-GmD|u+>2HuE_)BilZ%Rlr-GWMK9dfIv7D?+drW9! z#h*h}YJK*;#||hS5A(C?bc78^c_P}KgyX;mL91lw!~9-Io^P;+6>vPamvPeP_^2}0 z_7mONN|U7&x+=r~z8Rm7X`8tcqb%I~4oo`k_GDJYoj5@VNXIYJd!s)teE;d47f=ov z2-%bsPw#-K@n~``n9OI6qtQ z2qopl+%iKw_1xz>Zx@F2VS3+D?PRW{CP)8W=MQ3r@IoouzIphX=Smo)TjS8G3Nn6m z^}&;x>aIb9Z0C=&b#O^5ka1ZhP3~3+?XfB2Xiq2fLoe>^Yu@71oCwzX*I+Cg31O{x z3YjXMX0bkyta*}^hqn4UOqh_)m@^oB{l_tCX>-7HLJ@KbQQoU_aV{}BwY|LqF?c^( z-ZGUb%gME|Ox9@YZyh5PPkKx@srm7cP@Ela(RP;0bA*J1N|X3g52>?LqA*!yzbY@6 zDK?*Z*v$@kJp5XqU)ei575@MpRFg8BpjeOf#KX7Ht{dfHrDV;EU}r}p2bJ^MhtWXW zH6-E5zypJS6YJ3=d(yn~@3 z8%UU(L32z3_uj`ss^=#%yl%7iGt|5QiBwlJdymf+f6@Qv9-cr5B_V?UG_p{?OYC0l zjp+`dJD^gDx)Cd|zhF8-oyBM*_<)5AjLRLl);hg3xs&`C{+l{s6>xXgLZ4X{=r+{ziFhrEAVigUAZm>(KwM z6g2gOB?#Gs*wm%!zeXQ?E>TZ&Uk>mdo}P_bvA0(%T895jm57SXG_c%$G73elxuj9r z9iIH7H1|7#Pv5S)-KjN|A2b2maP<5^2`@R3f7rZspH&#r2t$;Z$EFJdbQNAhfMEbl z7vqsX`CKZoJv$$1G$?(;0HNd@Y|6$LiuAU{28VCfGq|-u7=2>)JD&<=Zb@r!h)2qT z`$bXaJO9cS4kuq_-5;DLW{tGT6L3`BCbnS_U-F6g_*69{FeQL3ESIU@jdxB3qZ%ft zG)rF?lqFpVG+Xx>C9a-!%Y^*VuchgV;z!nO-}8-ce4acNGKw+`<3Gg5^pss#T#@4A z1pXP%EMkyM#Y(G~ekt@%E6tTWb)&!;@UA#uzu7L%^@BG!cIiNi!&Sg*oy03<+o(Vg z=|EPh$>lrx0j3Sl%wF`>Rd#FU-XG+a<^r1-X=9h6|te z>&w)3AkwF}1D)hoBNv(=IGBb}JWc{(RL3kBtllv$N*Rt?&y@dJE(}BsrNvx)sTX_5F0Lu^hd)&yPsrQul&0PaQ9$KCmd8HE*=%GofQl zLt<~zSG$4Ehrlk3FLF6-%vo*wsg`Gh}n1+4Jp$=h^+Yo5;EPUkQGR||-4 zU#Qj}*G+b2AZED!`ehXFwZC!O@@H}DwILfT@8`2K)Y^o7Z}XoHa#K^Id}J5qwtVsvAUaE5(Q-#OR=ZpTp^}!>ZDiRD7 zJrq{;RPAJN@X*!BSJB};S;hcE*k^?z4TMCX!8Dmrj-h~mf}T~bDf}xxnykx?*({oN z(`)M-QK|(7xU|~5FnAdRmh-Y`3$t1PViZx9C&w1Zmfp5m`b!fFA7@nlvxGJ$Y6AlN zek@coE;i#@P3Fki>i+ru_7GtP4`XFA*7RAx$%*58wLz@lwV$k=e)I%?CsgTRBu0MO z(5LDu^HVlZ;yz7`PhG*kve&gO_loXGk z3D*aRQgP2DB{7}XMaggTiFL4~;lVrM8m{K}fi8j8$YBmiM0Ze}3a|>QZh$LhsrswY{8OWDxUzoUAdXa`0K7<$@ zRh_ziGyHX%92ZvlGsb2^=Bx|ZUrq@%`QT_UZG_?if0=KJ>u|aFP5-9!*RPtNC++o0 zwV1OEpO_O)jUCZ!^bP@TwYqKa2CB?g*frRcQ=%GAxCS68*y%5czp=)sW1@PYitR(3 zw!~m&a~@S+tHNJdfJCy%h*uVP4PEMZAT;sc-Zre>n~9{ccFT`wB|k=p;(5S_;UH0> zy-*xvP#`n;!r2ul%(pc?Za9kw$MagMkCp=v^Ve*PRnI*9OII`8Z{RdaoIqZW#8Etw z6yP1ZcT_0S;p@C&=IKWfP4|NTzIIh9q&OopyAm8Vr>~MGgoKyvv}Y4^?8)Z=;yS96 zKNG`Hh=>6RK}(c5H^k=JypM{jkun)tDBGs zcUi3qOg{um@kiJ^0j_%A~fuCz-fnwl>ZbE5$T_qzhX z`7gVqglNhMLjtfDk5~0-dsEk$AGGt)a}?D)D&e1GkZLuIwb`|ql$i%0J?6!iBn)rU z46N_3TAC}9Z*d}FAA)Z9CLHgQS&eoPYBnPLwqe12+S%5*vd)e17YMk!kLlFQPu*6Mmh86ATX!u;bzI8$tHsHWh%1PpXWz^@) z#gToQpA51*EFUHS+$CP7MDc=B?k4C%cP~xFM~rNW~psWKMD1krqX1R{-)vYB}LE@)4;9P1_#a5XnLFBR zRc1B*4jzYveL7uiM4%*8EBQ$8T*oe4b{E*bzX&a!#Kk>rDLB-rLQaVS;#WNl2;$$j={$u3`Tc{bS6YMHx!$kcq1*z8 zhl{P}i>>^#hu6-u8s`za;(i%v5<;Zbz}YA(&L7*Q>Ee&dB^!;dobf*ARbxO!=nD za9mn1#K0=>tbZ@jx#Ufvmp^9htpY) z1HEisZ&=30m#Vc~JgPRLWB*4&lqo9{t|~DV{FU>ojHE>oZ_+OM&M$cz@||IL!u-8` zPj$a5zAzIvp=VolE~w-LP~{!RVA*V7QJuwd40l^^%L|M|EcV@{D3P(czh^RN^X&k# zJDqSq*r91O zrGD$u7URFv)UB>l=jnpm%vx)qjxYJ%TvmS-vKPB>_=1Y_ea6kbpo*C^VZ5gnq284Q z{lf9LwVdxW&cKwU^&GifMG?UG+_n^edqDBQmN$`+`x6Gy{z75W4Os!6rz)g)q0V_e z3TV}(pCiKWGTzJ5)_Sd|Z+-;Q0j#qcES()nK}Ma>6xxzh$BaGCxK|ZUCHI97_ddSd zMW1vPD|e+TcGBnOz;*~rbdM9sU+h+5Sa1&Nj?&p?-!$Li{In5v|TX}mz(RF~E^>$3LZR^gF_o4-j;6Cy;_ zdV&kZz|j`ON@1gkntJleF{+EGTve}D!}=Iz`Q3;a7eTbn2#+Ri=6gAvP_*&Dwz1VNbCwYBFP@yf^}n(p@l-QMEK_LR77fR_%&6Mg$x`C}n&SWm3JF z1r_d*u&{bMY`%oxCj?6VUT*3%ES`x6eSk_Vb-w-7ev zD;5#{)-NE1ifq6wO36`lDCXnl)?8@pE>PMt)N73}rs%;0lm9qoaD~a4**m z7>~5v=I#Fbg_G87A=ZeBL}xH#KeA>g^|Jc?ks%G#E14DL!lD`wB!jlys@jXG2%$)z zLvBV1S#P0EyK~4YGLTZCR~yV;?|Z29CU20U{7h&Ag@CnWYJs`68>BdAb~@9%)c&1< zqvEWvgRF2s$R`!_YlG%i;RcwEJ;MTf;_8t-joM=-y3f>yEcR zL%XQ-lK+qCh2vIRtRS4xkbhxDeZKu93YHw*5e2}borl5KAQ4?!Kte*&>*RAq;IJSW z8Hp4Y7gI9uT`QGWmb#!Jrx_cg1+7gSJ$yp0@!LRYNoQ#^d0^FMKNl$16Vxg*Eh0;* zV%sa&3r=*r9zz_<6(q&m*}){m4K-Bmh$<0&C5`pHqWR8cE&knjyjE(d!-oPzI1LI( zo`E;k4F<$A*uOK~DAGG?<}Y4VV(4UP0_Od+1-)r6JhxN@zZ?h%zHIPH0$OWp9AS4Z+WCl#nx!#=^tYvxeqFnlzJZMM-;eIx=FIrSq^06mv5{a$G-r-? zDzv%K!=Z5a@6_cf(jj*L%rnvGwL%q*-u`hkopgWWvghg*ozCySnku{8E}iu6>oO@& z`6K=*TNrf8D%%Jhk(i>?lv9GDb&=5AxxKT@shcw7b5+!+Quq_pyG5kQY}UR=PW6RA zW3rzr5PAA=`*=SDlC^W3`w22A%s;C3(|HSms|R3Flisro4QWKB32;Dt;CtI#-4ppP zgpSgkSU|TutV~yMSTIRNDHv7SH5V(hgVQY}Y*JwSx8=7=6$6xyudAV`3c??*@8N$G zSG!ZO>(t;_a)o0))z{GGExy0M1HRu$3f><-9(}xJ(rXv;st4K_`HD|X*^@~yWC{4e zj9U6s-7;#Hg^2YE2iI?^n|1UHp$q?+?O$!%^5}CJlpRTU%HB~B`UhEq0iTZs(GE3> zsn>ZPHm{dUz+QCx(bOZPtCukZ{{vZoj7(efB;IGKuc7VGP<;EDc_SaK?eDhFwc0o6 zsJ%k5f)fqC7!}@kz_+#=X;PVY+w{gr&TJ;0VPG@s9A} z81GgM_EGl#gX{wJY$1tkWmDa}EaBcjP{uU?M;8ukI%TkYtA;%27#0aNn-e>c35R7h(3rAMKITYa2`tvT^msBd#WXB zD1s{~f$0Rx!I2wYZJ zK5o`bcu#Mo(zE-Nwja$i`%J$;0fTX6vT}e~TGb+^e9z0Ucsj~dOTH!(g1uY-dDz$# zg#X+rfXuBF!9gj<i z?OrdOKl2F8ULsHgal_okgK7&wMPjDM|Mdd$?7~-~r=KccF+O2dKIemTBHJGfrcy*r zAw2C$<-l$YA@|FrKeu`wr$IN0D_sKAcx@o)xDuZ)T<0r96T4*|h7$7nC^* zTn_2A)-&gRcfQx(?)=^@?g(Bu2;Gj+o)0N&OU*~e+8}LchehV0X8Zy%F`FK*>6RO+ zjJtmHg0Ii-tC}1vua@gf>u>>E`z9?P-0huo&c`414t;TLI)bn z&-nCZzVfa%TDQA*G>n7OxS(w;3S}s)bd+b}#b&Pm)(TQeC8`zqSO2K^2_mWY;^&a~ zcsP3KQbeaF*Ax0Zghq(%B1ZAMxVt9KK^lUE01U}o!I*;bsyV&N>FL9GB|nNLSKCfd z$sks<7@lU{Z@5WGhmv>5dR6Ls987PIOEKr~j5r_E7p@(cp2nys;e^&Gn>YoL>*O8f%a`4?K{9`xiEfHy$Q>LZh(y}^c#sP9QH_5$h zNrCTQJ@-HRrWSKvQ|QC>^|XUmuCR-|KhxFTFg7^*9uWjPThXW+b^T&t$o7R`3hcP1jw|BrDDL+(*%i)YAMgTnn3tWhNvP68u ze7w!|mZ+?t ziOX{}nX?@?DVy^Ki%4zJkBG-H@5e7ipg)x*@YQiLCu+zignTQ3>JKZ{BNE!8$u$;& z0wGMj`SdOcPK5K96Il*4GLe|Hf>#p&fc#<(k$AaPuO!ua4Q^yG)(w6}O)VbBMXZEO z$O~Ux*b^Sx$XjjE8|xI*e>&L&QIp1b7(W27spu1w;~yZB2dU-V-v4;@5a!ksAAWQ7=!s4tlrZlKmOTp$#c@m|zU|e_x<~ZGcYse?`;(e?FLN z0@RSY^>1~BDtNswxDJ@JP@h?Q2x`OSv}yqapxbRQQnGbaBQdn)B}}PB4I|n{gOn!z zUWLon-StuM9K;vblYc|*pB`~^^>j+F{;PK3VCWYpP1q744Im1hBp3)HcX7{>cbRq>GCzu#HLYP&l;7FcrGummtjb!( zh4P%JJ{{pe=?$Pe3mX}$_V10$7iw=)Eiyp{zn8$^K~F+f0I0Q*BHM`%%$7lxrQ!tz zQ`x0EF6f!V)oqwO7v{ifYqcU5kci*lh#Kd#?KL;6Gq}+NacpfHvYrGGhk?QEQsPpb z>2l&wUMGH+B$L3mU3{xG&u=Q#)~^y|jJL7fqBih)#p~a3FJ^vDw0PFTgvn%jW3IXO z1>9-C*{LY}SSrF>Sz9HNl6TC1Okvf4dUdz$-ysk&IayN0f88-#Y6qmeEB7@i88BQq z2q|v=x1|0*c>muI9DgvAfACU!Xc!h27L&j9@bwwQP=y-L1{iINOSzhWYav->Wf^U2 z-jhX}!dZpOiN=6y^va%2!!JaT#R@>l9jIGe@%5N>eK%nuUr4hYqTstHZBsTl+c8yF zVL!;b^FtvJ+;J|}=EoS@&&1qMn;&aLN7rX;Yp-vzdn~#U&^n!qmR3#QgvB_}%OKp` z1FxOfKg)2{5B4`=#><1-wHcB}g6+QXCIB``ehbmARzkNEPP9Jh+}`2rOsDrDNRle; z0<<24GciOqM1-#WaYR{;$W+G2R#G2@MXi(1m4kH;{Ex=%t<@W1n9WsFGJvXm@GMh! zsl~F~*=La;IeA&fnx!T^DEfC*e_nLNNSA>sHyYGH9xHoYd8`C%Y;fm^_V@?5HJgz5 zJ2FO(_2P#r*N;Vl{;w;Y-T31T&z^7i`hrer&Rng>>HoKJ{?A0je_sr^AFip_ zmGtOe4fec~W$@U9h{Hy7nO;x*&|q48`NsH7CTGp_uQX<}v&0U`%34TXo^je>XD`%1 zX91yyAM@U~wV@pgl}5P*BA4Uxg-SOjlTq0qQ*8pcH>w*pbCFrKS#k$FxX=S}a9{5U z4u+DG57SSR3G5{&-@K+`w500@@e8fZb3LwQ377G3kg$aN>z1$5hE(lldFhU)=qO7M zsR%SxsKJD}M?{l&znLc=T*j8Eu{`!UTdNhzr&p;Zh7#}n%@4^BG*&~u+|uV~-QM8? zJU>y=3ql39Y+zp9UyI565CcJP7+u4|J2w8kikxc!9>-@4g*1I)482Nw=Yf@j^f9jL;7@AQTp5lTYNcL)=?e2|{V>U2};XPk(K%4VlAN(p!`-4Ynok=I*{PgmcsU@1wD0^dk^r z2f?oC;m3TwPzLw+z=jI`eBETiYAl>2u<*?YBbta?hJNt~i)S7D2%z2VZmOmWwBvGH zRWH2cYHCx8UP;kms)@hv2Z~A`7@*8pK$?%NMVhYgLA45TOJGE*RkL{6r$cQxifb>J9Y+jP;~CLp|I)IQv2jpb5aJ}59vNgSMr10)*_Xg9Pu zIBJEuLPH`?aWBX!^d@pzp;C*hrq>Wmh#;e=+fSjlOAW51JFLnx7f*87R+(%$>^kL7M}y1KnQ=<>W$#xS)XK9|U}#8OgH3Oj{Z0t>)S?{yh^O zI-(5bg@wlVV@6l~)mm5cLp+s^yJ4L%xxxTE201wuc^j+yhk@?oV< zkK9Twy_B5H=P94cl7MaNpzA3s@`sm;^~Sgy+uU7y9SZ*fa+}6mI^~@b_JZquuyNIU zh5qGrNjRBW&Tcvdv$#+RYTbire<{zo=O%o(WE~6_+cOZ%t-YQ zhpp77dHc%fPN&(Mk{;f5MbG7X#HUR%3H1tQ)?-3A<8kqN!(7oNaTvg-oO1{CN`n@N zPM;@2JQwxq?=R*)Z#@OP{tqY(l?H)VL-gQT4&XRyK&u6J&2rrKdDttQ2x?fylWpHu zZEh1BZkDG{WgV}?x$S%!cz9i;3y;TI+juM@>*I4aJIe@7A^WVr{Nx{UICA=P^5p)< z@>k<}X9Az`?prxCELno>runnBCmL3J|7li+59@SDxDSrN#&aGxXa-tLVH#-e%&Vgmv=em zU{sh}^IZ@z{7{KPoq%4e6;jvZy!6(?VKag(?4j4|AuQUZ#O#8Oiv4g~?}BxS%>xcs`3V7;*0=Z>%(NkO`bgz{ zq(>_~|Hv7(16S*!?qIAGY_JXADZxlH5_Ds<^cRBcjQQ9>dRz@=t$CP@HQ5!CU!ay7T$!wuYOZG*9Bv(*vc{{Q{PLoGdAS zIbwKdPquh7sFj@5u*b5~ZAl|C*sY1;p4nohKD=c3Lc7_T2%TtyJU6hvPoH`TxmvedcIz z2{Ip$xujx0m?8OfD>9!_Z20fp`^JY{=p^BOd=rv(x6a!)(Epv{X0)G52HoresFTLM zEA!6_KaDqWDmeS#9Y&EhgsJ)g?`4Pm$l3x^-3i0 zso5=Kv_QZ2BqU*qIt>!tAkClUlQaK6xdB5aN#%NvlEzHdk zCJrOMc1aU9M_{*S!*DlbE344|X*h{edVEZ^CFXZRazUIMr^stIdt}L`%`=SVe(a*7 zCT?sR+g)6Q@@IRS5C3IA{p5BO-D;=*RLI#rE3*14i*Cq_EUSQ&^%0 z9v`S=N#uMbiD)zar)S&P2Ni14wdIqHj~(;`HV5Lsa~a6{KyjBFI<0e{IQVB*(eKXv zl6X3=n+6M025t*P`qc{t^3={-(m2fs-7AbnYs#$H5bS#Tk<&o8${CG|We()ZH9KB8 z(}@0!gM4@6D@})9quMezQye;1c?eW%gVNZn2AU z9fj_b-2%IPB20@*GJf|TLPa<`tcHDe;H_H!(YxAq+4SM-?gFl<{OhDnSGBgI&mmfr z|1oUacyzc<=S1+Y_jf;w>l^3gmD%rZAs^w8{m-v6$LddDu>v5Oh`MAlXaCk2?%RHQ zK!;}r?o%tX%(Pxv4HOjwRz%=@{#kZ4pvj?UvNZ=Z2KL56d}Tp+tHPn zf%5Zbti<;#g@fX=4v@Fw-4bSDanU;kC|imA#|k+9!WdNix2X>`oJ%Gx#T8&h9I3bB*b8*L?`LfD<^|+aQzW;XUs}q2qlY=mtXylL0D#(bAA`GK% zf)A7+dK7k@%lxv2I<>$ z>7xYT=(EA4V8Km7CDh1bIkM+h)ciPJ3v!2jetMNZfU+5{R2mtOZp8K;bkxW5W)l`Kj{9-lNB{vfs09%=<|a&nu|p4$uupuk`uy z--5@hty8iLX)SQ*)gj+0Oz8C+up*Kwe)`aih>KP;SvUVgVb&nNZ+VdVINTIn*Cf%_ z^t3DRh8K+K?v*JJ?LWcr?N@3Fry}Pfruo6sv$eP>lm6W;t`T5Uf4qSgwE2YLIjRW< zqft~zspbhF=VD|HAK-Z!6j+xSbOC!sz2j5e*@*4}t8!uLoSLQh;bNtF=$+ohgI|9dCmKMh`AqHD*{ zuQe}^=}-H!u}-FwEJHmi46m7f6O`cGGnHl&35{~S$^DUqKOr31{GvyEHRL%0O?b1M zah;NgNtJ4-{fwI8Vxdw4&FXaV8CfVrIJRqDON|!DDev!0Bbt>X%_UGM8>y0^Q||=e zf~4D1)lc`t=C8OPlC}2d7QrSGd2sPnOc|J0!r5#YnPNTni}R$xE-XK}>}}gJ{fZzI z7V5-Px8kZ^mttT3S)L%_+?iX+UDLsV>tu=Gex+WjBBg@j)@7oFF!Yz(L%kZV9fgyM zmXkb#A&xVtJcBoXRRZ|Wwiz7T6ru3iIUPWuk{GX~8GzDlJ`+W*fZ%^~; z?043|+3ywxLKMdr`?7);Gq4KJ-?Q{;fodbnexN+H5esPLvUx++nvzPqO7L%Se{Pd6 zR%0aUG`X%m+#NtKsvR90E}i>(o9w*Dm)1v1I=4Cdy=c6=W&C#>)#FH{KzqqIfZ#`3 zn1!yr@mW)9u|`UcJj2SE`l{~U(tX__QxSQXS_Bs<8lm!%O&)qt(t_$sZpr+Jm)A*? zn!BO?F1Qj+=U5P`&(Vs^JC`JOP+zgNEBU*SV2pk{i{Jd4I=peL|TQl7-KR$ z?wfN{uj>Y)HkjoV47#0!g$k%Ee#=wugTtXOiD~tgXJGCH?_bNZPgP=L=3({$XaaWo zpP>(~a~lKJ=(H+yLXSJ&g9$nnn|l;f>o-fb8u?~x0L$V)NxYA1ZULV?@?xc2g{$uZ z4v!DfQ-y_+P}-bqKQ>T`m+gO}9ZqC-*Qbk^?jE?kaBA}Oxx!;-3%g)>Kb!;MFWZl8 zY+(G=UG2E-bkJ*Z3-wT-IS#Xg{Bem82){$kw(c^=fsUVJswPC5p!CxKPfx$xOD>My z&xnphd{BTcQr!nIzH1tj)J?moOgt-S0HjCZd%_DU-)!%5heX8mD{UVTrcN=(pTDR1 zHWz+pG)XpVgeFq*fy#*0s-cMsOq8r}Xdh{=RR!Y#B__K&5QH~%HgP3>jqp>TbQ6Ge z-{2L(Bs8UJk30eQ(*ZLOeiJ|BHJ2{o#yPbt6mFfYFpFpE zAdv1~^ZyBRu9oj;&pCvub9@yYy^{ycAlK)UL5>eW^dwq~&^z_)oC>EWb*z*Fe66V7o@}wfo&BGQ3uPTq+(2-c2$A;#im>O4QyZr_#)kKe>f6mdOdYyNBg$CF6BL8UHav(6rsmP3&bELLB3%*Xa8B$zXBCrV6kAF(3Dr8Q&= z7+jHMwdWPTrAJ71R`~YxHMQDg!&Xij78t1-f`lC~%Ex+iCUTcldzz7v_OpEycXt#_ zbc_dr*lm`Wcx#=6W{4rEnF=k2iIWGiEj@?k5bu0=MZ_UXZ_*JWLl_o?lPM|ImqFe& zXRQuwXWhd1>_=izzS}xyMjbeasVw3Q0@3ObW7#*eD>x?!BL;p=<7V>lDc46-Vb}NI zquxFIi}69)^iN>`L>B%R$Bdkun7cc!pBEP#U|2VG*vFGiDJs0X<#_gLqaf&d*+qG` zYh_;6s+GQ#?%p)J#7QvBu*Y?KEpgO7Ldzw3MWD(#ud6c@bMXy_IM9gpodmSGNe3??jIw(q$3}igs z%R=mY4&ob}N9t?r){hHOX_T|(#)Xu*H>nM>rWlHra#>6!@N##fAwg{0^LS2Pi)ia~ zNh6i9Y7c<1QuQ=W`|`@xt1-e?1||E|{MQ&YcS5Ulc?RxSaimw^oB7Ar!KL)8mr>pZ z3+$OCtzp5pJp27xaasF#s0_pE z=fjjyx?j>c9n?S3FTZ3Fs*VnA$%>Lv(urLliNLb#ALWrlSt8qC z`$$FLEN?W1+<5^zVBIKH_Eh9~%&3P9Uo2rtIY-^K0S%?s&kD&Bg&1hulxW7p8*1gO zrA;CA+XR`zYorBm+R^JU%>+{V^_x9ns1;>+XAeWZs^gBXK%cA;(j?l#6}lagp+ zIgIS2owfM5fcwtzuGTh(p{ESczP3KE4@Q3D4kd|wSYeSmol`=V4JeSiSQGU|TrAv^?4uhf5bXfAR3<#gD4p#LTm7l7b_95OeqcV61L$jHa9um)0x>?QrQAH=sGKl}9Bm<5Xm1so1W!`xE69cl)TkBK%os?a zLG<>xUIaucX+$vCmk?E%G`~Qn9F3?k4EBBt?X&aY^+uc56}Ra0_AE2rDw&vjuhWl+NMOU&qf(MG(bg%YU(5 z5D4S2m|I+fOi4MZz0{Q$q`Jrv!I4|ylZ^XU;vd3KpjU?)lWswU4=<>klMUFah018E z)n?Ag{`$6N5A$=vyWg6ayBh@Cj6dG=dYz1tZ<-qQ5&L9}0>CB)9wxA_PcU$dz)afA zu{8x>%F%K*KSZ0y0qx-JNhpUdV5-&q+nG)yZp1x~QV|XotC4i$4b61)O=~h!_#6!I zU%5d+K?_$m;2RpqoVk@6zFXsYEv|rnPYTyy6C(wqP22e%5$Uiy(_f8Y{^c_+@oL8> zrF1gvdj19%ft;#uunt1EFq&`gOb3b}%*p$+7(`Z~*soSfy=*9|GPh)FO_&aA>zI>w z9q7pZIl#YjMr*)Qk?k6m?5pS5SP4Il-#DvZUDn%5a8^U}rd9}Mr%O~xd_?nX=Fc{( z-7jqIs#rHj1Hn3PQ^-}hE^`S((_T6YvNKrmDQjU@Z-x z#qv|zld(~GrU>2-?FBExl4!E9Fb0pCA)a_yZ>AgvgOdMx0Y%_;;L@-Yd2K(4%LgB= zQZLA){6lY2D4d4Vulohu(5p96j`Ff)o50jimEZOXTLQpCF4)`d+Rr`nwcN_Yiq3>g z_Hgjj_|hn^)s3aTQ-j9yte?3{3L`URvKwm+yy_GOYpd+_dC54J$w-gq&}IjGg3V*3 ziiRY+dvbB`!Zru|fbfKi{Y#Bur!B~nO<*{&;L)`Q55~7ZIg9)+2)vW?u|w+NvUGvw z8MmZ>oD(&ix0&I9{8IybPh~6OjRsgan=g1(H(U%?U{OLoKK@agEkm1gAv@tm+S&Xa3>#1(_W_@0)6gJC??otz+4_#|50*= z2g>{s8~~K7sabYq=N-_h$-VobO_Uq2bky%2yE#wFxg>q;Q*5H@4`7TLcc~9rlDB<9 zIZV-*AdqJ;Fy!dnMDdkAWqLL>D<$F-L;9&mW3UE@@gVqm^H4X&gzjuea63?@Ew!aM z(2Ls;GFPR%ezG+7PP63!C$?E>5wRWe+Cskm>-_ApvlqHeWbLcKFmWZ$*BxJz&6mG` zP%~%hRongYP4eASB#oWBWW<4TV~hyzosAELcE?FKZIZD zRw|S#UhoCCoHXJmmH2Q30oEcMd@)F$=#h%-%QubM0D+Gf$UrC{#iqT-&lfGjK5oP| z*5S!tk+=+jHx^9d7nxv1SU^A9)04G?wIe+kkP8LEBK78WIq80n@H4wIvWff9E;>^# z<Rm*_EQjVe14B@JlQ{4yfQU4dX3`HtHrXwLo(}T z|3vm>H?p8SbLZKtw8h|EwsG)5L3a@aj!h{@3r7Pg^x%HKs3_4YvG3_Mbluy(sQ%9eSA`D9H ze1S7~70R3K^Dfo$$XaSmMZbEGAu6g3K0rh*u{n1_=ILB`6UN3C_Ay$jCwjX%1zbl~ zO}*q)5*lld!M0B1(TP;;O65Y?o3Q1YGttfh*Vaqf+^x{MP z=+Ue6krL#-F=*?ly*SUbD62U`1}{^fNsTpKJ%-O&?UaVjLjGI6i1kDFq$8$JMw9-gDeI~N4%E5`IPgr`cH zG)f0~P`r?2@zu}Ba)ZYRew!C5YqtC>`6 zC#_4rgz|NCu>E4%PR~u7A>^)*`g7JBGi~&XXh|}w4&kKl4Q$S{Bg*%Ahu^cf7{r;^ z&m})2h0z%}IjKlm!NdBQ#6;pu^R20B3+mq8l z3}bxU@^lfhO)TO?#JlhHHj#PNY})H5wNA&BJ~G+q6_f7Sm(mwlG)~)datb6M3S8E- zve{NtQef(Ua*uCN=+V=6s4}x0Ka|55QWKp}CG|Vyi_NeaR^c${Ff?{JS0Y|~)){Gz z2REp8bc6^8gBBQWdnmxu^1a2)rxLZKp^lbp(VI*dvP3z|qy1>Q4KH-oD3aLxB6)V$ zC*amSls#9R?jZ9S(F`1!;A2uuO4rw`2SXG zX3RMd{Bj587o9w`@Xq&CFL%#S1J-)TZ^x(C1=ziY$g`4QS|}VkitOeh&WGuX!AVAS z2oE$ED8#pJN^e5uwByWxBZ7@5k_WMzb@bZ|TT4*gnf zaY}2u-ar74xM1Np(FB}|C*OQt{c9DL!YUXROWam^m@4$@jy-lKZn$BkhR|~

      fJ+2lk;TDn{$6FOh+L0XLeB?lL9#W}mJLF`p{9x!39B-%=;Q7)`( zV!q^_mNnKS02>HB$cqa8_kjtRr!*LUq~Cjq3iIfvRB>NkntZ4G6TDVlAOY9LpJi)i zBZ(3Zh|9#`*SGK#eoKJ>=f0=Amm>L4(uqEr5f~Y$G#w7Os^>QO9*Z1fkHA|^!$MB3 zzl9a4!{eNg&a^4b3Vr&!)I!rTo}oDYMPXp|&$;=pDDm(NZi75TTBfDBxSWorgP50` zoSc*;_%nY;0nlYjphdSW~oFO-Fc z>;yTH03mh&vYGkcWd{Z^EFdQVO!11i$m0TMJqVRxWXB#>QbLN7fdQLO7D@_b1bAEUmhrNq;OdpiXhw)5;dl4u?jV%AOvT_~-SK zy@Zpu{jao6CJR?-GJ@a;gxix7ftI2iyw(6`h-l-30L25J{q-(8r$}-i&(ur(sMop z7?aWDrwT-ZAF@LpVM7dAdL%ZwhaZ5U5itZq$m(5LXapVuaWw#?qY++Va(*j}|Fdj= zC8{>^02|G!wRY%Jiz^%F?-_NN+ano>-c>7i*QcrMro0T(7D({KfU1CF7K8EkKgkEE zm(X@NJ}Z`ZK2}?AOLR!_hTe(fp(uS(9KHeP8*=dLWxq<4^;Qv3o(P8S0mblf+frcu z-JeIUCxv|h6e5^c>QtCSM1fXH?|PEYhfbD4vkZ2>H_#;t0nVG6!J}m`@D z@qq}X1FhRLLNKibq2_;ASM5IH!h%cCA^&BEm2UXUA`RezIPZ!b^zbWsW##j2Y8u<4 zD=2?3QYr(WX!ATEI&FG&k6cisE>nN`r_b^|YE&Al%7bbg-$*~*oi%WuTxqMdl<)XE zTl}-p$l&32CrbkYd8#M`mrnG9OtU!r)LvO>Jm61p$^6f%^1&4Y;x6zA)T|W0-Ybsl zD4I04_$+W0+oc!-#^&fG3mkMvVO58Wy_UB>%dvm*#B$>8Hhvd)JZ~t|Ot_rYN zuOF)`3{u#gi9E3u-YJKdRI<|t3!6pYoC7%|Wb~hXy^pZNU(0$g-fmUXJ~WT2#$t`V zz1hQEgclcw)hvRCm^O@XooUdE_R+wUU*$NGmayJq&-437p{J+#BaOyf?j7<>TI>XX zx{$1ho#cicfYOv?k3Ifjs3x4e-JeGTmM|SDS2hWy#_FAvxC{RpAmmCTruDW|2ie!x z7sEV6q2%u+TX~2OjuY)UHfy^4QR*5BDz)9?8Y@*mtoA#9nMkLG;szZ^2-qCthw*#x z$4%C>T>AmEZ!<^c=Me=3TjykEIEEuZx!p32Wo22(%DZDwmR@kX5Kvkh_(yyEua|#- zNvBoMnpvX%3{go(cxrGnjzwQDH4E5A$NiKB3^tfoQkby?ciuiejvOg3T(#c%edCP4 zqYn_cbvImmKLrF6@4+=U_-YNN{!cV~CR*MGHwH33fU+<)vP{C|fnkbA z5KLMtX1@Wr5%j+zzLQ1}RLkWS6;oYgW=!zKcsyZb?Hu3!wO+qpO@Nowlm6tFjG4t+ zgtbL|C*r{HLLyt&J*&0NpToRTiiN2%YFD>=6an#uWF`%saFpsqg5npD_rnO zCx!qe*6v9h_?Zoj{Z)2XEZAzn|DHUmt&$ORodBr5lb<(gP~TL#B5|T1WkL zq}lq)>Qkl!Qpl%r?=}`z*04VJx}IL~E~A=G1U_aRZa-CObAT9VV}r&t7L@ZlbL*voJAwnm5TK=z4@z*qmLm zFo9_413R9|_E#JV;FD_a#A!Y^bj&AXwJk(LFe6D7{9U0wzRlP`L5gXA{O8$-4+Z+d z!cQvA2HwkmtX!Hj9f~LQIK>rCcs~q?mIZh*SOOQaSZXi3en0HiM+L3nkMD(`Bw>y? zQih$070>xyo@_Cvh5+=5cEvz$ub=6OqpnIGM4Q^w1`V#2GLJ~5U8ujz9|ZEhpr3X> z_<-hy)AfcIET0{NwtoaGUJU5w+>CxvZZVG&(2luPDJl5&Q+)2#&TC4Gs@X?{uqtz< z)ycy3u&9XOMLQ|cz-KTp0pM&=JUGPAg%t0jy13AuOrUs4PJVU%2&(*7?f`xa0Hn++ zEHS}fG0U||j!(}EPJ@8(wscD~e|vSc;w#upuSE6pn=%2=Y7F`OnF1J@Bp~(fOHbB)0j&|A{0DMf=k?|4E-@dT^c8rG{hi9@FoR*YZ%gJ$rbX5pM?k$vi%(uz`>ZT z@BYGo{}tl+yOBr)+~ACRKeT^xWyEybtSq$zAPivGC`?4mw?jXn@AGnd=1jeZz}ot{ z>&^XfF+QWWxA*G$0nqu;zq-DrZWnq2^@RZj$Ahl#fuzHJoYgVA0U;M@$DR03Amg7z z3}i$O*y+wP!|QK7VMrLEcj~JSWO6?4`wQ>8q|hnp=$^NN_V4cR%B_Y~_LrJ)+@Rs# zTet_z7jLFg0Tkec0&%E}YOf(xMzHyv0HO8Ivd%|+XPQX9ai7GHXM|UDb*+U>f0prI zZxZNLu-3eOzAAOefjjCHz#@w?`>MWo8)l()X0? zyG#A;HNp6uq|gnzdTTJ_-;76j0o#}TxMRht z_#d>Y4IV}n{a>H_&x%C*dsDyBWO}r47Znr3QZhO|`>5*BjAA1NtO+I&_Mnf})y*}4 zcHjdVrVlrJoKA=^X~QuGe6Mrm7Rzkw`LfFW z!7iQKaUb1@HQPPnQELyEjrsvd>9~{s*OovC00bHHDEuJeWX~g_!+Szdw+)m2Q;_jD{BU13fyCK^Z{;MJWFvAgr5a276_1FZAvjC0l+6atwh; znwS8JkXO2Ed|!HM_V*}dG0mtf0C_C2C;N0To+qu=pl<$Lk6)eJxt9sR%chj* zdV6_V>FIWQ7yW?Ba5?vXW60oGr04VhI*AJ}VF}qyCcgpAf{ynJ))khgy!Wp%#Ssug zD4e&7qx3^f8Sy)eDyZIldwYz56uZ&nqz57wfs87CI&zxH199Sh*m!4n=m72Hx#z9y z9+(Kk#}31`U$~cQcY07Div06QU}2=^Reyf^6YSarC}ROKI3Q~XTq;q9)R;Q}iM(@F zF9@zd$6d(k!9n!Q%=7NPzQ?9WgVUBoyFhFJFnt8a@uWdGKFZn=vf&sXrN}Ew-|vSZ z=m>ev8K0Qw9TJ;(gxLA$@T+)6p6UZ!=pFPiStb8I5y&ukxMxL}&1oJJEtSWgqyxyH zg;^>nrI0(-YX;YK{v_Ebb=gHMI9dAo-7kr0R|v@)AYY?urg0hY=0M=|dhwdC0{VqlX`u zVIdfzgNfhTPbnyrHV1IPCnt`eJ6Pq1FV*44;Bm`cNGp?OVo0iFU(i;RyzNDz19kU__I`;9 z2fj*2Zw1(RHk9#aZ^O!NPh_K#+;XeF&&{gn&g$1_KaH$sxu;n z=qv+t9z7m@%ZkJ`kaH9JqM^@73cR zrT6j*`G6s1`eqOROU!ZSUnu{>uTlWSXQNh+}w&e2>awJ)`h z8p08`mHN+I{gkG+sS9tv8;Ys8_&R<|%Mbx>hyG`KqVSQQhldV+)SmBIT^RO6Ywyb;7wYdUP)tHlQY(!ClG{$fv(3UTKp6Im-obltqubNBbm~|g zA{`i&NWHZ<0e-%cu4XoFADChDw|>X>6=hKh{gZf$xmD6vKBuJoQU#ax&CyOu@7%k} zt+(Bn(ys`zJME7>vDArV=}Y9TggK4CRut`4lpzqJ)ooGQ3=`C z_&N{0u*xhz0Y8u#P#((r>e=EP4nC|a(+aRVY7PfWYPB>!>50ApMuz}F&3InP1z~o} zL=_p=L=|+H!z7hgUr72C_31am*7dRzok$q-+Tp;!dy8sZVjEYL4^49FZ>w6c)H8+ zxqr<`>=NV{H%of_HfI$V&(&m=#dpL`5>;+A9(4`URR%Ni6RFe1R}c_oc{UPd8!vJ3 zI`_YK1U(;bz%f($80@k$&I38Yg&;8|O(v@hQlBG;-L4}s1)q}5#?G%YKt%5MX-N*eB15#0U<8qQ! ze(|v>EMZw$bQbn#zkrkmBfAf>|wRMNxGZ_*AU%0VmN6Ip)Z2;{1$Zi_oo%2KW zXD~U_;}yUBifHfe!r(ZJ`dH%{0zLsGij4X$$I=y#mT#YsKf5C>^MfW4XS`eQqlC=8 zb4UUl*6BlnXEem6Bq3$2B zB;E0&pY%PA^ER=KP5Y>&fi)`eV%equH*a!>gW}zs3sT;M5(4jlaGuTq&OogUQ^5+I zDITLN&pvVm-8pibn?iO?!gSuckr7rO=Zjywiu`$rzOIrs^@9XG7X(cwiSJ}>B5-!Z z3vkypI79Uy(9X)$55Fj8e03etfor)_#>A!sX>BIA_cF9lywsRg!fJkJB8{tx+k) z9(mcr_L&4C%J{Tqq?@irwsguF3x!u77nRI>H$|bPlLd8g-UVV zWL#rrEr{vD;@Hz`QdyR=Vv)p0*~Q3Gsy9TXdT%h;YbQ;`%@O?$cRPk|yP5FIwz9Cu zxVU8cOvPz$=uDC$ZddC|#}(jATXI>p(V1t38xaGJ(}o{)d5en@l}&QeJ;(Nov_|Q> zNOMW4O7%KwiukiwJB?~~ZwC3-8J^~RNerxxuFe?J!yUrv5_B$dn&D;^7$WOxr0J%$ z@G_e2%A@;=JLDMDATpRgS#n!=#)}#f1QeESCk(eD7zhYhmAii%e zF`q$9E@AsKJrf`W2jgWVU`n~=gb(yeSl&K|j%>gk9&mb&40lF8RE1)!A5jJ!n-v;a zXg1cnv7|7+AGr54e8`WM(R<(o*4fD%lS!L!U>$&S*CL zqcP#;ArMf4>#BJJsgC1k;>qFxKk+-i3g471zRlA2d7r~q>kLDjrL!3mlT)hK)$8Fr z)?#a2chA}FdUN#D@uPc@uIXD@#}2<|Vr>sZ#k2JDbL4R5wf+`BccJ`^u4DhkO8k9xH{#aN@4v z>hx48Vdg$phyJ?(q0-T^Qq-(*BE@ETe&YB8uG#h=-qk7U7^C9i8u;Tm(eyoH`a%^k z@%D&gHO~CWctcgWMoCyB7|ZVjth20_D&WLDQWf3ncB{81+oti_5_aQV3tfDwHo;5r zQFSf$mlXYK299353&4kb3EWxwp*=dlg5Nib$#jwlwXDgN@A=JhYga6a!gVLgBZ8j zjOdjQ$Xl}XR=M7%kn^5A9NKb&GoG6(eTD(*sHhk^aY8@crCL>NN* zg&gC~&rVMJGN3?>!@Rt9Vmx-gxiy!WsC&~sTGkx3x!*qw{^!eDb~jA`*7^DuU93TpjQ0dHZuRMk>5kjDWZ&xj0b}2PLytunpNP4>0<;4 zN&u8YdOySb(yF04kKof~L)(F1agJn#YQ&3{a>lv|x;qF--YqDM!W5a0b{DpI{iy4* z9`UGp9%H*K*>s{I=<_X^aJT_-b*M|yb!yR+ntTiWcoVidOcvP_SVX{L@NB#1=o6=j zrxA3#bv~I{l8K;0mZs;8-tA(mHz7imo{A9SVb55Mk1O2mMCQ4*t8R#}wvZRT*$3ii zx#?12Uv*~P-YBdt)>c3LbQj;#x4Q%b9=@BC1HVqJhCrLYPPK@o{UVbDM6O<&`(Jt0w!nA6ev7|h}*?{}B=_8=& zeG75?zE!{T-J?H`@k)MoLe7tXfCSMWNAA6;VjPdz3x`&+ zQ2h>2npB0N8=72_v$<|$$!u&Xehk*4!9=lS$E#Rr)Q$#NEK)IeD(%715DwUE_{~TLS(@N^QQ zG=cYqnB9k!%6>*{1e5n|`w`C4cecxocmhkFq@tY{H&zwEX^kh%TOgI^=0v2Iih+!CU0zs$3Y z4mZMYUOU#oJ|(WR>j-NVU~8Or52H{nGuda;yRbG>>{CCOGr%9@9BRZxLeD4FrqzQSsDrL7Ng05FS2(H{Y zCceY0jt9{SypjDd^b$0Z+g1j$Onm!9gLB*7d$#oTg{{UB9ja?EQlek}$viE&A)3rW z&Z>IC*O#9-P=#Fg{bxaCwiS@G*F%QN^=>z4TTw(Ygd|0b`HDUIAkOI$y+T)2L^uj= zT~E*(XnV4PmKlCHDIsc(C$!kKd+0*L@d|+9?jWY$Nuji!fGn{WI%zVfF5%+-V))|I z^D3>Dg%h_Cz@aT+t6*Bc$LQx!M!WEuXh!t&>6PTQ<7r2msvM zCzuTn-4EwN4v$)*O-cOJ3$u&GagIY>{icB6hHBqfi6n* zq6LpyBH>B&nRR)lp}nVv%U#ePpk{u;mLQV_hP9pexO?18)NQBCDC%0L{T-81l1^ft zD(O#Ny(}hzq7-`E9kp%AA+FFJCvfcXtixCCRn0K@GGu7y;%{)0cQJ2D)($`V< z!j)W-4|_c>*~es)C@hMWM3oFoM1%m)!HHKM}OVS-VS5#0#P z-9H_%sIW@-eEmBj)s1F$pMfva$U(AAGzl*#?m9jCJ4K~(eJ1O9ny)+&(exUL z{FtaiaG9EcL3~Tnp3$RpKC+sDl*HtSBzXWeGe4S{9hu|`cemyAn^fJbi>81x!gLD@# z{9<~utT_#T1m=OiEbd{4lq2 zD$|j`GKBjMcH8bBQ^Y5*d$~BjN({4F+@MUk@^8Z3J^)gegklJ*a=XuHms)5Q3aX7G zH|;uqP+E-d;-RHCJ?~PpZO3_+X;N&A1FIGWXi-EQfcUoL(~5DvO&3P$n|&Wkl@my7 zog;(rId0*aIZ~3#tcezOvrEsFEUZ4gEzcA`XaZa>SNE;khV?s7PLkCs#>kiV%ymo! zat~~Q+42fcye)-{ZrsnlRRpe@@5`1057!Gmo6I`#LUlBrquVSaP~vWcmwW^zT#zml zOe|e(aG>cnC~i-AjiZs$E=5S7Rv1G0HD*fJnB$Ls-D(m5DnW=Bh=izZfFdu$zB@Kg zbndlCyq+kW%(Y?yDE(?)SZ2I*#Ce!C_Fk&|V6uhaXQ@VnHK@kb2!-Er)H>aKE1D=E z$;Mc@P_K>hMm{rOb&oTLc26hA&^Wwzxp{y>>GR-(vMe$bCA$n~XE>b|eV)7QJe?Ju zI&6B{4^0Z%De)0DouU=-XK4uk?9Qy8OLizNm#|_i8u>6W0(J(6IkU^oIqLfgp}|zU zYd5LzpLPi0=ciIJzk0Seoy|}9Di#hv?D{qj2*BttT-UUnSr!>e-#%*8{xqWX_V=-y zh*tCKx&#tEne58}&u4G8^HNSarLw3f*GZ|!gRcdIQ? zQDsVkAW8zh5ATNFQop}9|K9Vc!Ms==$E(=9-1>k(Anm5jqy|8H3U&{omGZq2xqgBM zn0?DH&{prJawX)#JKx>t$1$PN&T5oHROxQtx?a6W83QCUI}@U_M8uLQeUgh;7Kw_f z20-hI<8p~iA-)q(Gi|$$l%P;b)nps&Xqe^`rzkGxGnf_tEH;7*e}iy-aabpWefsQX zVRAR)vLeApARrQ)kxDfhGl6)q&QcpEcSoAJ{J!-6v2~VVZEb72UImI3ch^9mI23nJ z&?3c(J1y?+t|54_Vx^Q8in~*SdvSM)yTb{4@3r>#opb)?x-#Y*_Kq=MxgY%m+5xQs z-0jpK%_jJ;lP!g`mf+y?a^)CelfHdjyf7llrA^)n~kc>HUff=opc z*#5L7D`XYj?tl9NZZU5k-zR@ne~GxoYHG9)o#1on#$bX6`@^^N*D)rB%qsA8zJAT0 z!#8M?+xOSzNmi?yn`{x_1;eGuUMLXz*4dw|)g8a_@swO&JyQ@yvDg%02Wekp0_9SO zU-SPkYS5xQ&lDr?5`4mVUqdxg^(YjyG`WmI_emyN{X0qm9NTjpK<8NJl?xYZ;SPAu zN~Bq$gIQkfiwTd6muzqIY^$7!X(7OK3xoA%T_nv_as{J!M2eT~{N;`=QFZJ&OaXrf zDB-cf`u9k+WjgUexqiXRVponvzR_p^gppj4lA)=Ow+J8VtY1E@821)Ep7`ByUT)jR zR}&ja#cgrW`^9I0QpD)LIh)KrPK>zCWr5c#BDzy|b|Qt3%}=J%&5b_|W;_cuPuico zHhiG=(SBk4ZY->=!68J)c=zxS*#@UjLly(6u<3ncqRK85OHx5XqELqUMabcy<=w+_ z2JszH>f13R|_S`1k`^v}nNGQnlBTsRNMFjRxiT73JK~44X z1wAw_9a5i|lv8+!z037OLdWtO)}Q(%!FU#%dsFfhDzOjuW(A-NvdB$M*NYyvEO95P zCmc7pkR{r#^W&gRT{9@<11MRD?cVg3Ua~*gv;5urH-DC1A$}Qbm(OmLU`%!blT6aS z(EQfpbLdO>!7ucSA48U{)|t}Xtf4^kBCpoQA3Jn6Gr1m zRt#fxsr~ebpjSNFljq4O94U8BB_4IL8@|t=NN?GE9jWX^JGEHEyYlEK0s$%*AZ&{X zyusl8R3mdZenjK_T?eFmn#UMLVD*N3yFU(FuSQZzf?EvDIgnjSd6BneM>xBM=C(@Ylip%)DHxu zkP+_j%iu!ep;v(UyWZL#dc`8TDW#rH7}=uKLq1p1vqBdT5k;-;SV|O|DhqjV0-wK( z6ca#zsa@SDB87_kxs0 zweAKRX2QQ>@lnP{qMc)H#|!vxlYGmjOR-IX%ILrPwhtY&R?cU6gj9<@)g0qK2>XB2 zj2!0c)osMM^*{R&pEOj<%X0B?1*$r1K+6OmIhd)Ni@U=cy2YMa=d&d$IKaT2&S{Ps zt6!F=CKC!4%O!_nM7zFQVlGCBZ74@>%vRDO4~%Fv18%Dh3=&zk1_RYa=o@O?esNO? zOdWQ~(W^E@L%3-9VC8dg2#fok`wou@IwJ%W-S?;w=~tjtl?o!^2pT4c@V~@$VB+2X zP0Y+~-u+`Btzur#5FVZ(8j_EdRH!XlNxRB+-g(oxN{yZIJ|{BC0aGlW`l-@}o*};G zMFmU0vuRIMgh2NdCDiOUXh+yIw+*hFWPiV}UpbRqFF8%cbkh;BPke$StY)fdvp{ep zm#@Jb1}9mXPOUr&mB(&x{+X0Th)3bN@YKftaVu>9>0qY*g?L37x5}Sxs!XKa@jSi< z0jIg@$YHVE1iwnrK4)#{Lngm;PxUuU8~H9vb}m!=b-D9$_ii?Eo&S7SJ#Wpz<@-iBG{ESuVUN_aUXzdvCEdP~eg36$cvQ%IB<+Cou#Y z0cMtq!@Hecv|mj>=A?SXym;wY0Z9CC8W4RkSW;3_z~i0?>uA29D{9&Q7bPD1u=RqF z578+gPYE8-X~EU~DS+!<RM9vP|IO-T8;f`j#zOzKQNLdt6DTyfL|O8T&+F%^^+^=dV_fAAK^! zT2{vZEK()AQnhEA8?DkF2kD``uTTm{kHDfV?5^k! zUCQSGWkC6pZ(Z6nrf_ev?1G}-(P+G<{YwgD3ii)Tz=r;$bk_ckK`TZL;S}}Q;PhW? zKtv(ce~m~b7J7e%q&36fe8dB_Ma8U=K93r?k%>8sSA-u-`M9bT8n*FUNBNc=Li4<8 zuUm053&U9^@)PNQy4`RCw}3VEulo+Z1KidUd+9SvEjSv%l8elspR>(=uJ5DRr1Tj< zshvMem%khtZzJW%(UO5T&ck9p-&(YIoilC$~bOcDpQ!;cHLdB zCA9cB?ly;DBnhC^S%=K{?adJi{-!m^@ja$TBOxP0=nzZxClJ?lro5sfhnH9qpHCogv+X@Sex zS)jqT>b}iLK?L^ktBa;Jyke!71F-jd1et4$D*3tH1O1O_kd0`Is*YhXIC^unjI~#O zoMrNNc|Eays5zU)qU6+*62k83O_i&~ZpNYQEsbJcC&U>k?JYC}CwG)CvaHM}q;B_{Z zOJT?S(5oV{L{FMtU@HjdPuHDi;R{2K80~qR&6ezzc4oXgQoTO)o2B0KK0Q7rgOj$L z19pt!r*QwrW6mX^ur+>T>&+(gY3u=IrqUIcArQN+Z^9~2JDI6lB>6Iw?!#buWEv}} znW1CRVh}d9NfF9e#;1)8)AvzEpvC;2$f&|((Xug>r+TmWX;CYsJjZ@g9syQ@i~%~ zHLZ4ZfLXa?0{%N~@T@``eRIrS@*sq=RV|-Rcg}USvdxho0bim>1gLdi0+wnodL5Z$ zIeoJ3^JQaUIbMV+bYrzEz*uVJaOcrUd5~(7TCt5Hfs&_fkY|Atwr=SdwV_{Y=D9 zyxonmX9l{Tle_$Bk(NG=^|LKY(7C)l>mix^%uWu8tHn|CRQ@v7+fIPfxs!d#^H!_u86e@i|Jn$az)g*_%L)p<@x;q{iDAby&Z zpS~*H-HX}3d-DybCPX3r)2Pmj6PBJi+}8wmXM>k~OlkZWoW_ZP8L|z&A#X3saOCF_ z`7!jji5#rEqjLY+w_#6QQoJ+VR_65U92!2FIwRA4l{4Kt+l9>2Q_(-M^`cpg*3AP% zF|XMiA1d42DPjMY`H;2*P(ZozffjZQJKOEGvfT(zIX!o(O)RDc2RNG$vq;hru&mds zxx@mtkm7Ab_k2UWy26e7x+`X?+<6fkmZ$jBC8)jSDmch2#^Hej2h{89TRQpLg?jG? z^mr-etH$abIZ#y<2|%z_3iJPHu$B5 z1%d1SAyMGn>%!q2M7KK(iJ@@iYEd|WoINIH8)$*a$S8sZLvC$M&514=JM~pw9~!ox7m0A(^6uwsJ{5uz5M-QT5@hsccG%G*0zTZDlI)M0;!BMsjnd+M zz4w#~7sd5`h_-}RVZDu|74h5fXE^yonm*s$4CvztndA`S%B4#W(9;gE8cQ*mzRILX zud~VHdP*!b{wl%+o;R?`sjJ&70d;GtXU;g8$`dpkQN;f33lJJnp%w{zfw}i50I4E! z#|bNG$C#l$Y%{0rC4=uqwIn@%f6vTxcLE-^9dKtv5ffU!v?yDyMjY#{kJn1*;SF+fFFBM6L{T&uW|fxc0;Sr zKnSE=qOc2q%>+HOACt+q$=ltxeJo}XGqg9hw_AY}4=prq=WCYCwXV` zcVdNO%}iUhbGbc%@U>EX)=24*H!$e z&EBYmN*QEh`7&LqO&-Q4<6hVHXLX;D&M)GE5mBzpF6K6`P39RxPj9WNyd-nTG!CQuu|VVk-RWlfs5 z=AtM^Q~2b36cBj0-YS#OH*q2;oxnUXX4a44D`q2v>{s&_Avyo=a_d>aisKZFvXu%C zh{7t*r@cCRT8Md}`l|R(0w8Cd!;<4R9=Z(krkDryPl_upY$;G95{k&in4(U}Jip~N zOTNbja|g^86%D-y?gBQFG6|4=d4REw{ab)pBhUTHa7V-h{Z=VEY^3o@=C>ZTbWRZd zK^x^v0>@n4Sh=6@oJ3(FidSV1@WUIAjRW{$xh9FO7+Ni74Z;cD45hVH3b>Yu!@7ad zrzR16Aqh&LlFeGj>*9n8Mm()W)NfL&4+2*i8mowXUm5hMbO+9!joKb_PTCSZR%gcX z%?Nm8k)fc7<1-eFB*Sa(VedZrg?=5Df$MHz**QKe zcOc?OZXto2dYUW(`$u?wo|vnEw@PMIJUuMmJrj#*UGnQ8O~uVn zavu&ik3#j=W>Or3$(_-!@3B)?Nl+-vIxx+YEx=y5-$2N#0EByH#LKCP-E4PEA2Z`w{Uuho$T!PJ5JVH!K;b>AbKDz!G%fbJx1tpeEyeSW~Y*KP6QdY@n- z81hlk(|`?k)n-w7!w_&_+8tFoLCE%iwIS>!>S=(R3mr{*_=fVJaA~l`CZTCq$C?0K z+z|GDk$~XpKQhFYP^=@mnMfH!DK?fb8;PC_#1@?oJpih1Eyh9mhb=WA4vdZ646olw z*1^gXHLP}8xgCdnHSNbS`~er6WV`+JcZ&P-Yvj)R=m}I}-6?1BX$?h~exZRWh}yx# zbMr<_DFEnn^LkS3!%s6})XNq|W%>0SKedB`xkyE4nQ{FFXVQX3_s+yc@vhTuc{*iI z)Misu)LCLYviu*duA2yt0{1NTOO3T^A+Yb8Bbu3dA`8QVTr_B}SC_7*DVXj-3cR-?+<>(y#Ltz+EeIh>tJ4I-f} zp142KKojzTbSKG7vgiQNC#8Up*LulJk@);nra*;4pnR)ZLH;(Bkfa{2u+4TmM~Td; z6J3~5B@s!GrhY@}{%|iC3c)eAWYgk%<&j-p5cS#m_n%u>1_cZBMP(XJH(HgF$fgeS z%bUZA7IOa0a|e`+@4pnGlRvhtpf-|Mhn??Q)man7@e&S}*Hz8}1Zk-Hslp=w;$=Ca zAxv4U+pHISucvP?j%q%{EDdPUSv>~ZPn1!LDy650SrML#b%rMy>hJ*+GvGxtWq4P6 zBjT$;zU1TdA(gX^o-nMaDO$D4!sD&(rLDafg2B?Tg{&fCoD6fXy~r7AHXKr36bVp%(-(91h(H3*?G8KKs2}j{C+dZ=B zyXtmsH6TmbL*F_W%}pQRZ`Thq6um{!_g{yKeteow6hG%**grjw18Abt0)U5J5KAw` zRJdLy_HL3D);(PbgwDp9pj@9&_Z8vqW%4BAJwy>yhFqrBpA`;KY`R*ik?iGXFf1UX+0GD@E+S}70qVX?oqm0^ z*ogK-!j%}=op_x$G(cV<+LIuxT`rZwUa+dyWKp&Hr@`emN`}pISk4-g1DamKZRuVt z;Q{E>1s^ZnH3h(X)2z$o<=sKU6@0d9lB?5yPOiUO}k#0T#zg^ z+J!PxwJW^8^b_k2RAwmbL1YMUQ>c6Z#D!|KJ)mc5U*ngkM?_p5uGdj}D7@h|A1s7v zlO|QKsM;g(kFe&$#NpyvxcShXB=_V?rQQmI+e-9T(%(tAXx3Y1h-KqNd%Bwd=PBy; zqNZ16aB=95i)8zY)wp#WM!~(TiXD}+IJ0;|9LQ^hpppW6!$wpuAvW9*{IT%v5_Q_w zu+O9Ie_h|fq!vP>s;Ruf8m-|7;*p}#G^dR8F0j(;A{-^W18%1&G(+<)_j8j67q9Ez zVLZjF-!jyr53X^zTgA#$n8Rk8u^KnrO^JBiZR0W~CCd`I?QcANX!-8m`mR~&s+v0O zw2L9Zap*-9MGEAL^m$&;N47@A`K-n5h!oy^9VCdqSco!k{C zU2<#P_T{N^rK_L|twv6BZ@O@Tu=(%+wZ_S2rk<3Bb&7YD=O8Fc+?nKbd9fMHC|d81 zDSx>?^ZgO2aJClaAbt(uEM@9e#us) ztVq-$7bXQlMFxVQ4<~!&$@c+T@OV3R(%yDJSP48=Q9liy2IC}Zeri*3V9Edv#_&4r z5VzN_3xb1xZ*>^``7+bQQsa~!n*~fR)&OsNW8VNGq1(O8YS$0bAu}zOHU8NeYks~3 zE4O_~aJi+X_%!99x`DrJLpW8!&#GEv7)>@8W+4GuD+lX}m7^$<0K&G@>)PBxue|m~ z^b%YN=U*v?Ia-D3zve!J1ojzr*P@evcp;*wmTC76M=4S(At*ZH3F%jErjLu>GlGeu z=|GiWrJGmnx%dIvx`yAI_O4~G;9MhQu2C>*oc#Fo zBCHK2-lZ#I4;P!Jn0m;%@OIrJ@?UN+*z?N61e2e%$&{!!C6&W9h2^gff`%$79{ap0 z9xSLYh5cydZ_hy~qQajEa&9BZ9_LJpMaMu83l_ui9}^JVKJj)kK$W2Ny-mCp#a;Xwt=)EboMj@$)VFQ}jQ37Ef$<|CZgJW@)=is^<;BrM zk`w&T&MDvQl~Do~UYwBHjBuv5*t%cUlYM7j`K=-tR1@kVJXxt&XKpLjDFME|w-xVP zo9F;P%=RzC^^^2Z#jCUxoEA_!_}5{^dQVH&mGZ>VykheNZVv!k4T;t{=L7r&% zjlcVK27BCc5jkPVLE2bB?Vlw8im3=;=tQz5YZh<6g<3JijWZ0ahFpCp*lMDtH_(Ft zISm^WTBVTRmqUK^X#P`3)_jWE+ug~p_hy6T0n54V-HbslmuTY}^o;%?YW$1z$()<( zLd|^L*k%Zs4!188A8S^OV2c>+3V`Zis}sSL6$(`D12_H}5CmqL02t_AsejShT9{#d zrR}gJad-92^j9I84vz~Nvac5TMckZCc`Qt980MgP$s_-4w(xc=Id$%N%^Irfw2MS|GnH*DX?jfg&pL|A+h5K5S)&X?84+i%wRyAMQ z?_J+GU}gskg4gbU%sF2)KbU@2iC`B};hT`h>`D*MHKFgDvM`g+cbauXD3rWY>D8+i zs0!PK(AarvdOso7r}kJVn%rEE;RNRqKWz6_6hOe`ERSKA-%FLscz#l7-+GzJn^@-N z%ru+RGS*rL-x#Sl%1S;e?mpaIeO`d3xwh;66merRU*=o8Md6~BGfJOq{egH^ZfUC7 zRz0*o^uLb7GsLGD?ch=BbQ&tXYQEx6YWom5Lu3aYj6z>e0Zed@-MQ z4XBJP+y}MhGNW;8z1Q<+Tfyx~a?}%ZqG)Bvn5kAmyH^O7m3MZD=$63&ik~KcIuU}a zN08K)s+|Q{$$2R<+YE!>4GMo&azavL|Co51f)i3$d9M-aOIS+d6^umJ_8iq#zxgkE^2siwcwW2=K4m@4>uZgN?(!Ap z$~JPDgxI?xa)DM-mfIfxrI$&9sp#QncUPV2(C;V#x43KTUZ=#NYw0Y2)%l~}GF00& zYv;37)|vv;e1o|$ynsJ{2si-WT$v0SUaOn;E45+E#_Ck8Z2J;kpThNdt6gzJ_r;Ve zdAzd(m<}Zs;@6eqN=#8;PaNV$vASImD?521*Cs=+)_dx# zqunUlLUj)Gf6&EKK1$~s3ZUMkr}CF>c++QW%xBPN@{K=O9}MnVKiL!N17?{wK6f_- z8y|WP*6e6W1U|}3xy<@6SFjbk9iUbm0pn3O zw8a4U@`G2{ZNkffjD9we9YgIe8Q)hwZLx#;soNk$mpHSl6LXbA8@R;O7>xA*EG{}oso z5A7`|k(OS6AaB{fYtp}^;^P@I(n5o>ItKwWm2<$Fp--z7p9kX|GW z89!xsyhKSt)QgJXi7C!nyOb|%Z(H0&zc_xc0!^vpKNbMv3l1Qw$FH2K+vum%I1H#G zBpj&4QS9P#U-N#LEXAI#bY7x}-J3!q*Bw#a?K1z}im2Mi??@AqyJO^IrrpM^ zoVcPqNK1_+>oHp2g12(7f^ppN;krxviAF0Q9Dl~&)q`CK%5@c!q{nj$e#M4K0rsIi zs-M?K)L^W5i17S>sSkKyJ7f$=!)=xldHk_#4f#i$wE|@?sTZguavV9qc-(eZ8q>dFl;z zZK~8EWZ?^tuEWHV-eeKJBTs}(S7EEDqw%ug8{;RH6n4rYj{0#}@=)e=n!MGmZ+Lf~ zYYzj!w#Q>H)`4hndfUr+OKP5@m|k{k5VeR>kIC%CnQ(lcm$=GkCA!IB^=SDUAApBN z%+EBTo=9SBi@nJ%lw96Pr#q}i1h0Ji56gxEZky257Na^b1qjWR#nUS@Qnma0w?%3^ z)jPknVFOz%wH-*%8)0|b6b;SQnQ_w@CIFq7Npl08lnu(Pq9;veFGjMr=cMv>o)WYv zxEHU2<03-{f40hUdab6pkE``PkTv(n^AC^WmqEA;c^W8{O}Nmv&fCLmW7n6N<+Sd$I*l^91Ln=kv4Wr^dSJ4;Py&u4A^97ryt?Q=Z|+{Y z+^!Agg+Le;wW@dKq}%k^5`%7S)?j}@P!n)^_@b2ao4l)tnDm;H;}ZjDI2%+|r+#ph zt9p$UnrRnq#bG(3y+R9<;Lsz4A<~8lV^a^2z#2X0%#}Wi+drAa5D~EJE1BT|y%gf2 zh`en-;EZ6C@x#`b@h_4f!ZX?oLWGyN(;wDm>o=1pLQzlEH6*_Nh z=nnPWuRm4)h+pYBOE31mNDe#sk~SIAPN%#ia_xH$xbm=Ud*6bGKU=%rsi(hdaJk6>k8c(_l0oOhVb4`rci`W94>hU2(5gJ=a81Vaq_~ zei#l1`_tLQQ!tHy{jpVuK3?sFn3M9z3iXYli|}W8d3yQKzX0aUn9Hp{ zhK$B{%Z{J#CMG8>*CIybyI1rVBz~vjJ|jh(L+6XgyXQ}2K*6I(Sd2u@A)X(1V$AAMf()|; zgkm62$7$Ue3XGIE3j3>1xzc3^N_btU%YxbfDb_)Ar52?+a#Bx@YaF*6i4X0Ac4l7S z3Fi_f7eV58C${^;keH!e;*wGZ@xuiN)wB+qA3*drpq`sCzEw_F5nyMfYAz4)DG?j; zvh^5ElC&3FlkrV7NrNwM<3yP=fU?j}-D==V-wR)3H6KW$ zF4=)~1ie5-#|YIXFe(J*CDNva*dE7|l})QSt`~uV0Q=PNLr^ZO8{9cy?gKKs$12ca~b0L*0{O_A5Bm zl)PGdecIm(4>i=l3gJ-A>WEohC!;9OKJiDJ+0xvp+??w|vt^qJtG~k8b%GV*KGE>O zu!W=WD)i@gEmCda`Gvw5={JN5RZrk-9!Ph|bS=HyXj(L0#McVbhJ&PLE>I;%w`J!Q zq1ZL3PB%qWENrrTG9s5oF{lm_-ul|&FLdKf$Fs@bD&i2nL8Drcxxw_XGJr))YB_4h zBPHJXB1}cb43CF&2ZfK?Xp|&^-IU=$kn{wcA;=S|Ss^knH%lA();S(`ZM&~(+nD$# zg;#C`p*|jjA~67KEO*1p?Y3Z2{`mW^O#IUX`cR6rOa^v@U&DM?s_CfQsd0L(=s&!# zq=TRi^n_90uR!isxndClb+QV#KOhy2o?B6!CmbIZWi52(Xdt_$)_YuJMo=Y8_Ze=YujGYMDoQPa{0d^D|&xb zaAYaHEEHWYR*JfMUn6UD+2FCqYdmiev7+1NXN8d^ik)H|uu#}XW8sKcQ9KB&8T)o5 z(Rp^unACA~IYNs2?&kp}^jHk0;`Ak`kNV&_eyYpmPJ_Ww( ziVV9pZ3zk)t5glxVArC^*Y16HVakCpj?-gg;zo*5wBm->)JYEYv zR2V)54cB5sO-6RZqcqMTayX|oG%%Qw*J=I>2k)9|XLRmL)hdE))&6KQ9>yiRS+XJT zOUW(Y8`ovKb}qd#1}M{O*!p!Jbaziz>1k$8EOGBM0c@73d8tT7?^X|^=RL)?YYfhOm zytzqBlzF$@@M_Fq$#jEN4KH=*3sCx0`RnWNxjRQP&a7VHvA5t?8K{KjlydL{@I1v< zNh&IzRA#q2@S@;N*<3zhIO{!G_69Q%9xfNyd4u&G8KTbAS6=eOG<@a}cqR9q+1hto z!<~`yhb`9jop$qhUYXp@9Eg_71G_D8D?VPPzbAj z3fCVzI@sO@$@^H0vt0~oe&rOS(G^KA)Tm?TQCsUupp^;ncN+o|2_|#1jBI8mjm-=T zMuO$nekZu$(y?Ho0d1tU=a8J%XyjM}B3Xq__OE`^+4)%2sx55v(Ox%=_ruj+Hssv@ z*ooN|*4`DU7$k-vg<~J647uNCb#EHuX)u74`uJ<|VNo&uXT${@T*UXLW99nZVOh+V zl5DZYPb3YdY^O=aPBjrT1RU?kl%AZhZv$#@4&>q@j27zW7%LFT&RBaNR0Jo1L0eH? zwQCHx%v+w$xCT)Zg^~lfW}It#znQd~*nMZGY{00=<;ytI#N`s&&=^65lpq{C)2jEc z=0T6ItPxD#ee$b9x%;xir1>BU7)mFVa!)aBqaGIfZMUTl5_E^!)3%r|8Ism7X+@G^(8zbl`=^2h~3d9+$qFI8qs{8}u?P^SR)~ zQucvm>e*TCKhSm@qr1Y7*r12}w~yeoLlTftO6^Gup$cG)G$#83`GMc$Q+2N*-j|ns zEGJjU56Cq9ca9=Z-n`QdXrap=-1)QdaFcG&-u!Yki(?guzkLBYg(N;#Mv{I zi+mkOf@!`Cb*iB7<2CD$iu^+?o$w=P*X);SplLIhcKzsWeBLJL18f_UwnEZ26;I!8 z_S43pM0@~SM1mBpAsyXLKk+qSPUm<%8Ml-fo@N%q$%y$U{z zc3M~uwvuK)?4I0f;yN+J=kxHDTm71)YOx&dh_om@A+iHO#Sl#=ipeghF-p2n*ybf3 z>8lirjS=t$m@6&2=5r@IwgE0h98uz1`Qkm`R1pM5+*gd<-EZU;JbQmt+X)VzGnVMr z9$MLkxQ0g56x-!^nVx+K!`W>SnChE(ds&4XIkd-=EQJ*>YBuGI(vU+~enM5Amv{Jm zeCegcX7qPokuvM}F@Nqk6YN2lEEG1@1#}VsrRNR}OTHje?z{OSTn>xZ zqFPOapAbXZSz_DQEY6OH{#XPsf7hu&BIhp;xvxspCJBB@-ff<{FW%?s`3HBnk|N(; zIeRWnb9{LbHWVX%i+e+tL`I7R$gWFB7&e;~VT5GG?!4jS@VvX`yp~d>`>LWES|6~Q zf=`sm?>5TlKuw*k>^jgr6~T?>eE+5eIyI~hSAL>2jmT2;roDp8MAi7E4t4o|NpoGA zJc5fyjj1LYvSlhyYp=1s?-p6fA254(NnJ5C4@2SJ9pB_?sY@syc39^!G)_FnlS#Ai z`7Tmq-Gm)dg~d(kv1^{Sk=P7xo?KroYsiUPULnoKRn#VlKZF5alo9WJLri_8iaLMx zQdG<&iz(fQR9AvOu9Lg)r*^0^4znh6t(L;WZ0Co$YAo-OSt)0*Gl_@0ZVKcbueOvI zn%xPthqF3Ty<8SZ$G3XJb{;FfhO>Ru@vw`S%(ggQ$R1s9e@E;t!c5v=V$(G6ATq6Io#+FZ;s6|_0S7b@7_4x8cvb#ARt-806)gilw zIJjYes(B?pdHlA;CSnKbo`}=2{Z;W#?;?I_b(lq!4W&AEhvcau#Gk{PA#x!_cMT9Z zI1dYgN4bV&**j9ETsWLda&au6hQTu>o9Bch)n#T;NoFOPGqgU5V8`7tcYGA^l~j<0 zjYv9d9%j-;3?sC`W=oKXvY?mio|%Ucn|7^(ZMj=T=^szdbGFrq(eky=6-QfX+_^o! zxKS#4qXjqAVehq9GPJFH1lsH=Y|kkQb@XLk`rKXDcdPEpM(|I7^ad<_=$15SbfOF$ zs8dJa{hU-(Ixww58tEQ3>!asu>_7RkICA=8jKLyOw5(d?-C=fNV(r-_TAlRi41GsO z3V0v#1|E57%bt;QR4Ca!U()PL{ z^;ys)*cEOBjcq)pCgx#@)A<~8B|Me3bRNm;UvmrHimGh+?CR=fO3H8YDGz^bMPHqS zS@;a{>*T~Tm{v`WW!eCGE0{bDMFDZ}40`RCLG&^G_&NRL>Ir_2qL8+y$ehz5jRauGBvXx~;WZz^B{BC* zr)I{44EcU%)&|Dmt7wxq?n7F-#aTdPXl2c1)pSWK%xNy#jzzDQeXd>WNBuVXfj)J| zCy1)Hp7);TFn}m(D73NEkQ~~YdWbwV36vIo??W*y{^{iSM z&{49D=wWEUp~Pup=b3ZkM8yJd!uwjP@I-aXQ>xQtPJmYrrw?Gpl+)w-o0sHaq(wuz;YitsS-u5R6dJ_C43?wDC|N1CZX=ucg3%XBXy%sEL zg)(3dT$umOOBgm)`>Y1AhE@8LD~U(|+IauRu2Z4n)K78$qKSGU;?Oj>Ka5Ix$Zo#R zImCB)&R@P~LERWmq}JuOnx@qVw}rDO>28R>3=m0ix_xu)&EZXp_b75XsInXma<$>< zv=qH`{W1Koyl_ALgWG&1pd~EU?|-2fb3y`r=UFXkDXfK^$hID5 z2g^Cl=Go7UD#%XZ($^xs@k03j)=x2{Mgk$dhGJ2smCGIJx?H5EH^?yWOuHEQv&G55 z@5w97sG233h@1VIlX<+A*E8~-gl6l1K|9+^BPDcnm^=q4PLqwdd|yHe-r|OL_P#45F=Ygy!n3fX$XcV_ z?vCbdS>HTow(Ox6_J6_@d`0XQABAR&?IMzRZd5lvV};{MiCh1)B6hgc@+xy^z@SB= zIKgb_Hl^P6CjY%9)}!F_!$(X$zWKZGdM`e(Bv*2!Ej)1X8u9QsTalA^e9?P?FJIwwRyR|5A-vGw^2*(Z1OX8-U2b)* zX5iX>qE5i&^3BN5ttuT{r6mB*px~}Xwq0}Zzsc#(8a)3+*CGcIORvmblwRAf*Xdj> ze#jE@QD`Ik&KeeqhPNJaB_?@l&YYJV1}A42pQT>FA>5rY%#XzCE%CB&Dyy6AI}PCf zZtm~auZ2<5o8e2LT~Wq(N?YUjZdDraLi(IvSmO&Q4&9=3<$;WvPWDuj39g{QZ83-- z`~>IO(=ajZFr?aRipIkktJLz{S^vm!{QHHQJ5bZV{g2;{D{)aV&_mUU?(a?Wd*3s> zJf1kLzD`#m5vleUk{&vT$k`|Uk6&fNo&<)d?H4w-T}6GD&e z^V)oh3T#HDdGT`s10Msc2PGDpgql;#*th*U@FZw@8Rfca5{c0ns@z^s>){`bV`OO@RnUyjBEb}n3dCiHfDasHxNvG#YjT&+^pw> zA5C-}fBwz2#HFF7?VD+27dzh!F=N*U*nOX+?$7VV_)?q$A0s3x3;T@fRTP-vN;&D9 za1h_^wkG+|Kikw(2tmy=Xe67HDwwUrB+HyHT zfpH!o>#{Myq5fl#c8)&-m~y!t6VGF!J&3Xi0a@U5A|Y~pJq&4VXvVq> z`+5ADbHpH!wx>0jID|~~k?R`keE8-F3P69cm#c0IpUFpR)O7BDOyRQ)YyO6cw3kq1 zB>fhI+PQzJT|?Gm|IaFg8@P0-M+QmfhHR?9kuk-)aoiPL=DH%ME zC_hrre|Gsyiw96jN{XUJ3tc|pDae8UduK*fF^wvw5MAKtD9%EI4>`PGjy-X5a)m%bS zaYC2n867D}Y+(Cecz!`}F5!BQ+x|igrpMvJ6r5py?!kKFO{?`??^{>HnN`h#Eqvp} z8FJ?ufn^v0%tzegN=F!|Lk788E@{!&;7IR5LBvnl>nRmAF_i#?sn^N+sQ zU_YdnpNi?;aKfGB|DK_80K#ea@?(e(=zex(b2E%COyTn(5cBPi{yR`6BVsbbv+CmF zoqy+_nt=-EgXwzTO*;GK*05K^BPYJ3a4n-#g{gUpJpw-{oV3^78wq1 zP_@kjo%SWGXPq1`2B{FjoxfltpoAMP4zoO3zHIFK_DnR{t4RRLph(75Ao$-KS^!B9 zOt}fJfDjxKY_e@MH@T}uv-}>EPQx``Jk-0V@8xG(r7PgO!A~LXhS4gf2Eutw$vQC3 z|I1&n9{V&wo@&}|_=)U!&3~-V(EoqdJp7!gt0V4D@sZz47xQ^h`&3W<$o25k>ga{- zOm&!Z00FB`pidPUk|7#WY~sKEO{0!WQIrPKgpXq{MatU8p=sNnMcE!)QYtH=b3kdui zi28e`E}+hzZnS4FN2YfozbD z#N>NOC;Y-q`y{e4oc;d!D84p%7@} zyXPHLN9%h=kWThLPPTuUF%h_8QC}=K!x;@z?@4!8mwb?Cn-;^yNZQpVq3N4vDVBe~ zGY8z*RKl|k<@RTss=t+LbC``R<^J5gJ359XE*n?b-j;}a`3bo7R|D zJ(fpiZq~JskdfN?6$s#iZLr6g*_Hr5cb~+<^E(Jy&5 zAuKT)yokbQkal#$8O{=oVuOok-WR!`qP>z0cg^rLcwEN|JG1h7Yc~Z0epcHP*@*putG4dvLEWzuynolUEH`U04r|QoZ zTrp^j>EB`!9S z6-lzXeGOk`7`=P|td{cqG2FznU7f`QeM?!Ao*gGtYu=gvs#8XWPRRPLPcpmR))4)9 zNiuV`HY&t!{?ppOZPZf$l4bM}kc zt&{&g?Q&&lXaEFth`~ynB>%p|1d2KGGa=c)y+cjE2Wa0v-q+)k*gDd(ZwZ~KmnHS2 z#d17s`>tTk10ZcLpZ1UBlOBJ|NaUc3_^(Cs8Ai6(p%cgsd5FtJ6O_R97GgqA@H=2I zZCK_|Tgdaeqs&rf{!e#Tf&#N)R)-5+UwDX*7kAHQtl`RX*X`mfh+iC96wLk)UvC)| z*Ve9SC%C)26z&q--9jNDI0T0TcPF^J2TRZp+})*+-~@MfckPvZ&b#|`kFURm!EK~>YrFW^fRh;z(FMnW95| z$+hG`o6x5=&K)Aje-7YI(TF#8iS)sIKo>x>=w%`|%JHA|aP}(GIm!X)(*^>9+C(qR0vR&!hI&M1Bh^9Y|wu z@$tV`7X{Q!CA;m&f1TF`hA>xlq6uOZcBrpe-`XMyK;RTC#0@%c-1mOR);y+bUuN?Q zCH}8<0{qzdCE{yw%D-P^U^4@*yNE#q`+vOj#R?|M_ut^?KOg<@Uyo%rc-g$Zf40IW z;3O*hKmP1L=j`7AB>eBfp$WL>)F9OVf4v9@%3cuCh=6GApAFBB+IHyQ)9rtzBVW7z zcWMF{1Oj`bpZ_w>{|H<SMkb@ZRN(5mzIk^TA1W>N;+$(f;e=iL7lJ^mYB`fL6*aeWz-;Trt^i2tds=&i3DT=FSQQOp;`z&N>BFGm9}iEk-6CTIFOi6@0p^)GhWKU_D5_ z5E@Q3iC;(6O;USB+W}%TzySKIul2ljoNp;~Z1O{Bf2?06(QCqiTx69y%lI6B1#$K) z?C_3%8P^I|8Oh=K<+~m|2H0Ud1GiywYUcimGj!Gs#q#ey2jtAdKmS@_0}Hrxw&8Q3 z`M-<99S+J>P?=O9?D)$^Bgn#^x%1;hBf;&*2J8M2E{m^m7{cowA^oZNeS^tL1t$ir zU&~6`{pW6{LR=cX_NmC0ngR`7t*2aHpO!tBnp}^=!&B81z<1}Gcsq60nZJWWB!*Vo z90FMlt>+$}X@wd+aglEP&?7t4LOU{d2cr}iggouZJFNY9cECH_39ndC3Jk|J3i4y! z#0~U)o}nRYS6$GaM{!lhvsr>?XFI50P1Z|L!qg&c4uk!^;b1=FgR^>h2opWp=BhWo z1i`^WD^z(C1MG;Bs^}vfs?DOPS$nn<%6%DCD5ycWM1m(}}YqRi)OjDVBX zM+;=%z`8{b8(00*?c1(0#?ue-`1bdNME8Tdy=y zc==z^){9uw3$>kLGvJW;q+7cyLb!K!L4ZtQbD=8lbtu+Wk>N zAr~>_eMW%n?TK;URWU}3EU#VE;qF-1J4}@bY~OnGH*^*)n#}MLk{&l3C2GIP@j|#d zo+BpIZfQ|D8nvnQ+vnIT9el2Ao(KzFj-#09VkCz&B0LOQ!!%h7)R1m%SNn(3r@h%w!*s% z>uvtb$+)t_pF1Hy4t=AEKS@C98>PCH7Jq?waa#laR=|e_vG>&4I3N6Oipw9*W=1AX zmKpi(A>&h2!!#56qP`@hO`EdH}W=z*y;Xh|7 zFYen}nBR4NJZMF+^Osy94PSz5EXFK_nnzWt7vZtkT5PwW5*+&t>^;A zf9qN;3x3fX6cAw*$iZfeJpQ?~sJF2fd*e&ah-taxM)5GB8`N&dVjn8vw6mEYvHOU#NL=J( z0BMsIqkraG;tBwzP`8T7JzVx~vjo{)&fa9r&O&5Q4NdcsCc(tkx>YEOMc~M|g5^%i zJzh7=hcVqK&$0!Xu#BZVV&!L7`hedqxkV=skMPkdDTUVYdo z(=5_52Uun2LIF0+%GOLX<(vINfKnI1D+=cgKEsqo`-*ywTI@aIl(5b9Z#D>6@m7z2 zIO%BtZnt50>#6DfMFy$>M{k?qdc&ok3$Gwaw`lLB#wG4*b~LMRDTeg?ad2}WiHSGk zcE6s%tgD|Vu^J@j`}8NcUN_dqPG zer01MRwVjheKrujHp+a@2Sm*BAh>M>J2vm0LeA?ea)u_J)0;}v-3msag^ft zV20DKS0!_M1h+U+_bwAqA~5Un%>-oC629#B<>@hiyPv5O1tSPK^ggQ}?h|k{U(}jn>TN@ux0K z8$W*`;3XdU%w2@${}qM5VnA`azDoXz*7^7JZWTbtAI^s6Utx?of<%)gX+&?I8&p!J6LR??2SKg83yg!GzXD1mS7n3aXDenvV`PL~*5auP}gCS~?R((kSz{hFz7Ifr3@NsR`NZLo7dp^!&--rC23J zZuHBc08cba>Brj^ao^a)&bJ(fBPeDn;E{i-+U z@pI|={N~)hmbhk5N0;UTJDyxp$;^>M`Ad9&FT zzv@pxAMhBDH+xgOs(NtgyoM9pWm|yWs$~nQBa?)PRUihI^5p16^hl_i?P2wjjm#6q zAl1E|RqtuCnn1Fef(h2e*;`+o*Rp=6vBFdPP{4tB91UF*!i6`%;O^cR^+SDL%aCm+ zl@sW(4x3V^$?0{LW$@LS5Z6~9-`K1KEn0(z)wEID2>(+Hh;x^}%>^`j-@7Fou6rGp z;Wi8xXG^=cHz62A1PDNzPa+xk4jm;>xQb@4S!rqae!ST0Y}QT*Ca(2@AAStvWzDZp zShh|f;jb+mOF<3yz@`+R+zQ*+EeZx6u^D<#7BYUN)A8qJx?Z=KqkF=)4F$qJV(^`t zk#jUYGVR!O_xa@V9q5fN$dh(SYOxmnYgRSdjh+uUptd!ip!yIvn92^%sx-PwDV1Ct zYZ5w^;Sj#6&CWW&aNQE6?ma8zEpVCroLQ~xyTl}qyCQvrX1Cbws+DPoDVxi6{xA!XvFVBJ{8dwXupC{6iAwQ`VT%<-oF%k9#~= zs|oEaO)RlIGqCoX$D5r}Pn!;UNow}jp^#1CZQz1I!Rs&;KC6ChA7Y(W3|f_g=Z$u? zdW_>JWRyT-ahTz1`BF=mo6E~*2pc~!xsaDL|X>tQU^S)+r0Tc_ z0fLTF@qmqr!urZc#$3HO;fVtj^*xi{69Xf!ZAehDnxq31(GX$|OpfJ5+~G0j-a8wf z4JXd{A{ERfzI5>gtPom2-9C@9VP2_ zB6cv05{GDXT|20f<*G3Eo=S$+&^S~L$xWW`=Hbl8?TIqM29P^SakT`r)-RvteY3n$ zmXF$(J6f!pd<-#*$Qyh7<#)rL+xbyyZ}WQA37FwpZ0sU^y>8?{pt@(Y@}+iQ zCQwXU%3~TOd4hf4Ynw8gcN2QYu1+NEYfY=Ftl@dQ*c{ydNp1J0(dn4c`UnhYZ2OaL zY{u7)a|u=ogHNzG1eZl$-qfuQ1!jT7yXATtIlhA<^yzMn{jUh`l{2>zeL>F#m3kbm zI1*{H4D!X1Ga0g1c@>_w5;cx?l9R|Q%T`}X^ybfoL+VH*p|q5Gg#_}fe=>pAFx#`Z zG2ah&L}y%CU@BUwR9BYIvKmv(sf3?E@L%spd*-v>YyaII@9&GqH#VR6tIW=+gs3K{ zZ72i`J_3a7ES0A0fjI^*IJT8W`5ZxXM&FrE{ok`Sh3gAVTql=u=vo$CzJiNqn@>&S z+j+Mf-)st=BigSS9&ft+pY1bd;R?DP67xRNtT;Z7)ZaTT18DBD~SH_GxK=X!kNTh0l8fgq_W$Il_{$PC%YCWg@d0;^IPVw|gxY%R;tK z+C;X^k_^WVpO9ayo)$W!{8TCETO1%ZOX zLb87g0zkKTU`smN^!(x?1P#<>4H7v4cuSk1XjF5>LIB3|>^wSm>?m_>P@M?+z$btS zge|RA`CE`)rzwKOcsF)&qTSpD!HA~0_KX1__DKW=W@8;<3^VoKunX>r8|i$v78&2o zwEx^?xU@t?SZB2Dn5FAWu*IlD!m-&aO>hWLDejEozDF-;mQrfTyUA2bbOn3hy+T}t zO`9SIpl^*KL%4uxUdCv=kTeobu@++AuMe}k)$`R3)E~k3YKdPt9k9|Z5D* z=+X)4=>!lM5F-HLbSj@b>Fjq_Uzhe@df&Ge=?%)@9NRSHik>(3Ft0otkb)?Hxt;;j z{n716g84lzQnn250);$xjU9#$TFNd2$^mCbryb%9u+rgx9F?68O~HdQ3R^YeM^d*w zmcJq-whK5>q=T579Muh7wpjH5t&6#3!zf>;e8Hz-B_i2)#Y*G8zK3}(4*$gaZd^u6 zaC|P+jL~^1;oQ|9=1MW2m(u9y>qnc#k5}eCw?GLa5s9piQB(3ri{tt}AbhjZ_J$b- z;r<76*sIP8n(?2}hk0#qmI_a4V;teqAR*N0(v(+~;elO)pz%punyzfZx^4nv42)P| zw{(28$d-WNTpib7$(iP1vLgm2y!_Xu$^0K+>2OTwjZI?n_mHnC@0~wKfyEsWLSkoZ*Z(%|Am7;`1@S3xr^R+ zI~|^k6vTu{yoVrS%JD|81EOEY6xt&fN0dKKoOff%{(yoN<9MVQ0hI<|57hh8m9<#u zB;?_~i`RZvi^o%{n>V#ZIcS*s&@%9?MpmNFO~JMJgv2$#LM6=;01x z(N6E0csX}HQ9|#5XZIFz^&?;7qnAf{0wqF9=i^#Bbx%0U4ck#niIZKsl%OXEn7)P7s61!RQ;5ToLOe&t*yTk+y&SH}ncc>{0XEz%WYm-^s_%x7>cqG!( zEtY5jIO$C8^wH)RUiXw3;$T5d)-Ns6mX{Zkn^GA>$!D8mEmA>LxQv@+ZbMz678cqK zg}5sdU{{4#zz+;Wj{)#XdhK_kTek+)*}*jK23!p`_hd}+zQfU6crx$7e$+eL zK`QTtX+rl_hd~KuYX6Hr14buEg`?@n6UKd$ySKJ0oy{JG>)pvra^FCRfM6i%LHHrp zcK2kD(=$MsnwT<@%(0tFbZ%RynnHBig!X;J55xrsbvmSDUKl9iRJZc<#-+hA_G zplDLcEj^P@R6_!QXHv0d+GpT63~f2r`^2NmXa*^4x+W#+-f`X@ILQ>}^qTL4gWb*g zUf-3A$}MmE5HJtVh{F?FIKy*USf|iZgn-8A;r49+c;Tpe*Pgo z@ZViSM=g2W`9$tZf24@6xz6v!S0=LKF1N@JWzkZKa}c?mhQkSa=DEu5{3yE?aK+>p zHEa!A2FaKjBc)JF6gRA3JIw>%P{ID@QUi8PWz~qpOFYRCbwf?=1FkpZJl3V#)%P}I zwgcD{j-^RjRI;6QUoj7*dXfwhx*ez^H+1ZmVn4@8UpoBlUYWKmCUuF zrn_%PG+}zXyMx)}?U0b|VU-Rax~MyI7Mb!VJVam?|A2&_@K9@P+=A`tMQ}KY^G$(V zZuM!Y898+7)x0Bx#e}g65Ao>B4U>6{>z#r>RPeaxlWDybeywT7$EPjzLb#clShD#h zN$gM^j6vEcsV?~5>YjlrIU>4j<#9$myE*Yn2nWyvu&kD8q3_+FWW08&ADdl5C+V$gX=Cpmx`w(EHPWuk-m+W!nc z^)hNX?M5MDHT_}O?D8EXnIZvN0r4A^!|{*vE)zv}W`fwWKI)C}m1P7pG@08fY!}_y z7e^!oU$xLp2-X%Q!~W3pS05>M_YQs8yT0&1Nzjn8BTC}kLCy^7sq8acohO^Hi}gYj!KUU1b4l~|0G_7;(6<$me#gmzf|a58CFq^$74GbI;oQ@r_4 zEnuJ1oa!l8+O7YMFzr~U{llk1A&Y36VvC(|n7soV~?2$}vrIHU~JBkzjoFcz$dyc(xdm zT`tf0B5HHH{lPT({9Bdi$r4%<<)`^>hszkUm{>Kk(eA5i#y$rzGyXY%P|U&@dl{nI!B3(-N-Fe*&;+#16^K;v_^lvvB5XEv zM=~@|xyaU1)DZ=+Z7!~*5elRmy^*ogPvUHj zhRR1|bk|#Y2CMI-FIXst|D-pDlk$?Osi*Mhy3+Su&_`M)Ke@?8G;ZWVZbHcevrHof z{(>=2$!=_xqkuk_F=Rnw$uH36Awy&J({O}Y9Ab3-H66pe%>*aPwrSmg1!|lKSfp1m zGsqnzu7f3#Ak&@Ka%=xOs?YD;b!N&b7@lgViT+I4qn6f+%W<7EsqB)lHTcd8E?nVLe4Pqr zly*Hx zs@fdo6|ndFqQUi@)+yFIQKBASRA_PXzVCPBCy`;0Y#a$)rG5?buZY9QbvyK*V^#7nqH z#-y5+_NuLy6LfN;7aMWT;7(V1y<#M! zDLPPBh+WENfRO(Kx8HYCAYmv^1SMW!VSyC=VXpezjs1Ropug~C;ig;{bnn;vIa|YK z-QNBUCcc)9>4V)QiN~kF&z+H0Ncn&n&Iwmnj zs~$Dz19<;)qIcJ#G!Yr}90>)Ap&;d4c}_!qFE}F-{BAiQjq`*7Xco-Itz#J&O^QjA zFLF3Y)lP+tu+Lk?49D)#uW&8w?_yb8(9F>!KgYetZoZ32} zs;9+zatdC15GQd(-M*>b^fL#)sgRAbn*Cnpy(O;)_6d4dfT zF!!fke*HUtR`(jwiMW5X^-;XgQnEd2#YZH&EG-m7+CLs>$Yniy_?!-$f11-oR&Db& z$sfxgKgXhz7TQP(nYGRG&j@WbSm}@yUFYkWLMWNu-&+w*Tgb~up)-3e|9zt{_;k@C zfvj!kkw{rcM5hG5R(cHez0R;O<7@O3=8cGZo37l>hpyTR+_n^Cpv z!_FUFT}v$zaUytGMn8-)?OXi1dqxFcJfW0xgXnC1V#((S+4l7uv%sd)y9vTJH|81sgKGml_=jYeG=^0lN|Q-1ox>;_W}2Pe*OCblBz6SfMBJStA@GwOQ?ctY%9iT zDi6=tg`r4CP<;#t3K~U=+)@<6dRs08{f)PuD53KLwTl>^tsB50Bt13qsO=7;dmyP7 z?=I49gT~U4X@cdb_8l%KrS*jU(BRv3V>PB|TOtBl9|&cjrdZDSs6R>k7c z#R&4SuVF&TgRqzzj?SU0F6d%4Z7)02(F{PHK{yy$lkM+x>SazYaO0D(d+8^hxyfP= z?@M-@PsTEF(FVVk$@gC@I4ma@NyqMfq_naib!-@)S^9s`nZ3RsnAF1C~ z==bztL+X@xx+s4%I-Za`PHXE?4dRvNl*ALPVY*#7_(&(DhQ^nx-Lf0oT97BexEdeE zRmD#1+8MM3Fg4gI-~?ePDh0?bf^{Vb$pKd-^%EgL1M{Ul6G3ou>n>buS%INfF@A{j zPmPg&DFGMO?p|WUTqwZG401#zqEtUmi1UNXPpZunyk8XwBV!?&+=(yRNTT&BC^xoC z>+d|70d!SGDK#RFiIlkVVNe>s;t`ah1xH=yT3p|u*)DF3(wSykA|j!T+iXP0$w0kR zV17O0O#jL5V&>C=l3+TDL{9lfdzQFJc|C?J(QTR@W3}CRCu+te`k5`sXMr$Ukq*3P z=fH@|FH>G$>lJ0Emct(7;acAi6)I|nN|zEj`+y)pb>Ke3A9eo(IO6OdoE}i2AH5*T z@@MOgozZ2T(O4%LXEio|7!*x*AeF7ZHS&8ec`=52dk=rQVUaKuFhQE2uz!gs*7f;a zTtGYHD@MPvp>u%`;p3KkBBjg8($;~b3-KbXD5=Ce`P>|HFBwrc-wo3cjR8Y&8tA+_ z&YSV3EA(u~-T8R~b{W6jkPqF9*VdF3!U(Pj*gstb{Q9u_KN~I0IdIQ2y;8_NX^3dY zu}dQ*6>F031AWEDBMSo&kw%vtoB(Gu3dY;FBy4OBrHx9thBqm9WZTs*)qZRz=jP)z z{V4Lggcqp{u|GLXs%?L?vex)sRgl=F-Y5lR9I;J?q=IuChV%NP5S!!+{m{oDcKRLu z>_NN_RtavL{e0!=`|&Znc1ZE10G|k^XtTx5XmJD9*5@rc83jH2fMlQ`5`GM6SK3XP z!}X{Qi#3-!A7_UKLbF+BJB0}5$QZhC(U`=p1GZ{|rs17bI8^+h(m(UEt?>v?bc3C| z)ig>4|DBbty+()y8a$6%jCy;E0E`Xar{cwwISGU~=Y%4vq}0@G47vQLu=ei3G7?2C zJ_nL-Nz73@1(84Q7yHI*Kd44I`NGR>K$8ng(9>KeoYQ?l@TrImP?klPmr_ zUMxlF{E&}_=heztm=vIPz`^2o!X1^EsRod*6tI}fGr43?We*v*If^y7taaG&TX=0d z`v6wmE=&yU!Jw+I@>X>`hSM$~FHsp|YR{c{bY%?B$-OP~D7o;4Z^TIQNwL?0LwaxU zQ|jck;YjyYjE&3Ut6V_A%j~XiTOQUj>j*6$H~^3&WCoDfcR>i4~X&i54+KRhwDf%k8} zV73-#K#GdNpxV?^?P2YNbcrtfB&xg99ChO8IM@EVxc^AKoNs=$#U*lts4APvFP_5m zDGPabSw2rX7L74*m&!#UohM7T)@ckJM;D(I(F!nRB~zea;{&%UnWjps^2S3%`12HH ztH91>d8gAG8<+vNx9Q-~S0xn%%C#BPr6M%Vc1sT9ubqv`O$|MvyzmJ{ zh<2-stsY%(vmIWK7%LPHi%hfn_KIMvYA(6EmCLyRsODYis#wF5kew?EfX`zYYK!*p z@mve7NL@=U)3v|shFxRuJmXDikTY1Ezwwg^R=dK9;SKd&im_qR{Is3A$zHqD0)!B* z-QQpMcF*(k6z#?XAMJgQF{?KEir65NCiP4Pi2)>#T5!BG&iyfyrdd(o62;z~!8`6v zK1!32Bf)k}4M-CYIsj&5amoU?-+?AI7`?2gDQ(d&*>luIPbM)cD{BbfpIOh3RC}Bs zxi{_JRuypg5d*dyeYnxXtsGP~$Q#bP3mQ+&PJ%oMpkzOyKN{uf4|KFkbwN=^9hucVQn*UZQ z0l(=873hn$g!mu9qa%5bw^_1dtB4bn zTp6JawkDr*$kL|sz67zKUzWSeaZ1s`kImjVs^7(n*;@(Kx}lHe2qP2I;ZP+aO14Uc zPxx+Wp`>--1mgKb^B6`+Ro7b4ERb$lA$wq{w3p44oY18Sd`EBBzeYV_myW&_5o?<{ zUfZUg_IFZ#nUe}0Bq>qyB#~WTlr!a|R1&+$n~JJXDU!}Os})*k^CK@rB@F8V-I-q< zMlT=E96StQGhNgwTwSxw<75w^cv9E$%Y6ov}?#@oG>y=*UK;P0%=*P|{iq^7XG zQI(h0)r@8{kHZy;+BK>#dLZSJ!7ZCe2Gk)}2AI{zg_^27JR-liO9@d|$uiy=5lk)i zAW{tD4UP#e{F+ubPt?(Fz0~|qEkG6I07#5uV!g4M9MtCI5=6jF&z{8*BHcC0-~!kza7k?)CT4!1UX3Q9iCLaM7;+LB)Ih#09Xr>R=}DQ^_U zi%E#@Z?ZNA+I$YWf_)yZr)uNH&!?465Ii_JQ6^WVL2X?TIA4Mh9B)fv2P4R}1k2M}RHpQB@Njc7` zw?hj+4>1uB3oBt-0gFwfRE}2k1S;E!!YOzc6fX45C4Ls)3C~>-5}Cc~w-WsL zz#tuYNhX;4a8GGdPco3i%f`7oQq=Kf51+bF`E(8g)x6d50A>eFP$X>yWRABJn;d?t z6?e{O_ydMNI3)rC-hR#hjvgdtjF&azL~ZkCA>Zr+F&63w0!59N%l(EVa77O^`(o;CSqkZzzjH&9b!Q|&c zJNBgeU94G6l}?KC?VSw6$18{R$ZRL$&yiSt?|;hkcnGsV6^lOuX-6%uiYSehLx7^m z+Ky|Qd>D~zw!Q9_uGs^wNWZ9!1`qN&Kbc~mqk6&EmM`ul1!5I|4&K~IpAs+{EuD|& zF?>6IUY8?%c`1pq%QR`A#Bp(`5$Aj5o|Etbx>(v~+!GnjA2XnK;P!ZChm$AJ><_)b z`9?=E8dj3|K@dHj(u#B7iw|0+-ei~;arp8bgIccRFprkl>M6&K;)h~&bm?IYDXd+0 z2m7%xEg@g#(Zrw{W?d;*A!KA!I#+R&9yuM6i@S2VM5%U8n=QO@@y07&@of8!#;c1}C$rHp?2RqC)sg#JRR|2Mc=p#sx?@1; zL;Eq{&XXwHK8wt8miXTk>KJgDWjl!U^(&}HFk5PTzr1<7% zJwQbSMJ5v0gCL$A)9iBmO&3pC28I4cynH*KBR280TrvQTWv;xu>3AB zq64n(FY@+-2Gh=;U293%lQw5s==A_NcBbi*D^?&Atsf#lSK8n$Zv`m%SR_z1@S_wk zAJ>*!Mr(>rnHLj99V#!TPPaM-h51htiuLxc-(o;LfOAbs^;=LK)Y`r&WWx-PZ^juL1F30~0O zEfMB8P*l7LJtNwx4v;=53IqoYIEBSTsk(FZL_Ui|7&?c3U91lbF+Q)5rPxfGqk1%x zRhB%8+w4y)67Np{QViphxryIz^GD+_m))mqURET3@>+u~G)n_Iy>4AHQ!99_4Fd8- zqASB?mWW&qB8YNkrY=aY0$1JD8N2H~K!CB-zv_apus5M2VNg!y|LFc+Fkzz90Io>T zS0R_39A?7L^_HYv2hxVhoj{zxH?OJ!`jB9XNQZo#pCFYxkh}rPz`l!w#BRbN7Qh3+ zXZ1Yy`g#rsF~p&o1-wv4&H;xd;0QHt)lV|OduY0W|6?3qNL9&Vg7ze{Wb%^!+lElA zH{JGqVi>dLA+=io4S=YAi^coH|83@1ck$UlwaO%kvpm^G1AGJV%hd{SiIHk{ZaA%2rJR8N)8XG41xPM1 zP%}-J(=BQ%Bq99}lK4m<6q7Y@4rPGgv}D$ysxYAh8`=IGc9Tiz@A`V65d;JKnLoRR z9uPX5`!g%>j8X)BWM0@2>YE2D5HHb(mDVwc4aOcDhoR_4ZZzW8GshH;4HST_-ovbL zeal^{KEqbo2g2)SU_8ZNa@@G{6AtqStz7}1Bl>c~W(2-yz!#FNvVy)30nQe4$hBz) zba=*zf6(EzU41gfT8DcuJ++#gsABF7rF!>BL09ZJ;&7jM2 z??r6Jpv9vbMA0bJ>;(VFUvIF*2hS=!+zNef@$RgWG?qny0p=oPAR2ks;o#PAJ%^iL z!TSzV2Zba8SS`689pWb>yWpJO9^zSG)b1%bA<0GBpxK>_RWG?3!Gpk7>Y}-v$>;86 zEE||e~`iYg2S6#e6t`Yfc zPV&ceT=a5X%6SR5IuT!X5CoAb;!D2p{~lpV#SqkX{A^#^Fz~R_;)C5B^V?+Jx^bk+ zpk0#DN3AGV@6^!#^6^AJt|%Fp9}NZ8&o8H^NhsS5Iys<^VeI&{QEb4Lu!Za?^(*r} zNiA*_XBSLXWM?S-2EtK*lkca`N8mg18z3KUm1q%)v@%eIdEE$mcrMJ&&I%hGN@Ql- z67z^Rd7{P@S@TQPwAMNg=iWDV`C3(xu&l{2z;>wy^oMZ*vRD)-J07SRQGK7h)qmtt zf4jgHR8YV%IG~eH@N2ewljju@O-unE8B7%TTgXXA3eT09I&W#P?V1p7@sCqMxOcpn zmAq>;CiMQ(fS(de9P9+*0R0$&Xui6=zemqFiDMB|GyRPMkQ}e_wI-j7KUsWU*xVd` z5=zprPD+>DyEMq#$X~d)k(ue1Ry`4hNGV-_tygvYZchOhj5R*_OkkGg)9Y;p;JdD= zC1gy%>SPSSTM!(+yMMZLQ95uBTg)66ZS+B2nSS28v3Y8>3Jh~WKtq^bWl6xMtOjJL zjG+QgzH9hPExyq~fouWfBE2gk#14`Wsigss+jC~RmXJ03!Ux7kVGwBm|6o!POKyKu zuzTkB;9$ONsie#aSUhy{h?CznPTP(!_KvLAv3Ojx#&?fjylC2B3_A#x z<_WXgbynI>28J^MkseBdfFZ?vjai?gn;!k3k>DUl!x|0QfE3r431i#n#hLO6-(Pd} zBAH?R-yTSjw49$R1pTR3`#FJ9f@Z__M^mO8*lig5=h-e!nVG;Y-?YsO7>wB z{6#a*C;38)=QF{~NP4u`L#P_-$nUeep~A%WyLk7XRvtxgkg$uJGQ91sYICnqe|2)z_4#Kkjj}Bs z!uq>JK9qGn$A{Qe3U>(Agzj@5*tvO%F2?8-T^GaoHM{>&|L1>-?Xb{Mxkx zJWmn?2dCrTgr#YGXqWI;(xIPm9WGLR5H{y_aA_EU@!X(}8d6XOo0*8?`vjg^?SavD zI!DBg>eJ2LCtWld2wwdG##WyiOI+M_HgrfZnSY5CUAMv5Q>q0 zx1}AosHiCmo=6PoQWJD4kV|jIyLU5eH06kJ6@t-Gtmkp?W5}dG%(P8!e& zVB>bh#|q|QBYj5#{pBM>t^O4q0MrLqI@0-_bdkmQd-3{&Vru)7@)$GYW66Z6#T26e9?zF%FMiziVT?qQimh$ znkM8`J_|g*0mH9PVJUP6Lk*UQ+RBa_Ld9p~m_>(zA;ZYJT>AFg^&Ltnp7SIt=d!87U= zQ4WBSJ2^jw1XG7%#Cw$*6QBTU}Dd5S9nyi=+Ke#mTo^dEC@@bkEadH{v$HUwq-?xPw2k0hsg{K z&;pg@uKAu0YVnAqpLc^rxmf;7%7v@%4_Aqsg;E5wj`utZnm*Uyg=Mj;!g!_AbpJ}4 z>|Gryh{S~XMEflNBz`sEyR+thw-3pRdONv282TZ-TI>uH=E=A(NR(u_$wZdDX?E9E zu;1l#C|4@q4qvX}!pF+UL4m&a-+q@lA#&h(6=9zal8pI2_$CS}XZIr^V}J1H28l2V zJ|3SQaZSNp^*C?P%)LKeM9z@olk4|x9gO3#u+;*k<;5K(7X?eRiVtDw^~zdcm5|G2 zzbIX}pbn<=$|oo!Sil)3%!`A9^uzI@$f2w5Z_0D3yZ5TeM<)_O^C|xUVapC7{(B_Jv1+_(^61pS|2nM#Fw!92K-d&UGA>vmcyN z+)`oEglOnQ5;*+CTQ6+E!N70w0c~t*IZ2h7yvO- zSP9hG*)6-}N6(gNg$#qbX1r@i2GtATa9*xBPcB(|n|P1$TfNr5tOPkS6wg$nZkekQ z$nQw)Pv)5>9|$Nsyk@e6d?KnaF@7!m5$JF{V^gYA4--o!6vQ?tXmtxZk_G1Z7iUWQ zuf(4zT#~=+v^wN5xRe%+Wp2E?giG?QhB5+?n304l8()#q5z;rAM-w78F__I;f0BWT zA5XHw1@A4W8cvzD`lu2AHU=`SR&fL^I~D!^fwBQa{-i*RbmAmP*K~rt>z^fBooGH3 zh2HG!rtlRS-mi;MSztR^`X9%~Mzn8Ndx81#32Rs9d0K!8$;Xk*kky-GX(cw|p+p!f zQBM*8q?$)(X)6up$1tW~2KAB>lMvug<|x&Y33O09pTCfXMJH&{;>mNFOT;$}4=}K1 z@kiG=?S6V}u5)+Z_YQfBzE}tm^z4OwD@3P=5b^`^wK77?cz61&0gb>D@qpa0J zF-#Wr2m%h1;#|8MQzya{rjc{;6lRRmr%R|4=@(sqIa#$M?8nix2$qtLuF&_oxiZUe zQU2K|k;)#Z>IWHRO4`%5D@YtH6iE#A<=Vl?Q$@zu@;R{?b-j;uq^lCfIK9gAia#gw z`M&`;^$)eWSJqms7$sWSLa=lo8MOqGf?pc4p$>-KR37wT%9M)PHvpwrdIN{S{_w;G z!K%vf0jG2a#*TNeC2hsvr$WGGmOu`rPN^1mO5$hbf$d@>hRcl}uQ;B#HDVgZmGXN^ zq*N9*)kf!=sFr6ywX0HO1K+xt8Fgx$WvkcNX7)!eZVVr_yU0QP0W`zdYz72`FkCZT;rwUiku^oOTxkrc_bGYqD1iCeYE~?f5o-s zCPM1Ax%1vyi;uj-V&v;|L(f-Axh$bz*0ug+-6g@Jq-N2^6N+owOi}zU16ohxSqBDy>0eXToR3t9XnUIutK;Tu3%6)25y3yrDh&cn*V@N~nb-zXxn8{vX z+kUr`eDwoW5pP52QDrnBc--xPxmDu_mb1qdY#DPxv{}uMxt7yBjSl~-!Kg-`U7mIm zZBDW<@Cl`O4!yVpPG0$r4?LAZsa9!CPsavGApj4%hyqvsi|R9k?UB-B#`_&I?7Zzr z%dNzR@J|Tw4#N{Tm0sS4Xa0$nW(i?TQ$y-WtVRSr(&RO)lXSm)X5J81o6S;r7~7#f zb}uy5toOB#w`v-)q>hA_Xxd*MY16+T5*h{u{k9-&0i3vcdk=8h&B%&Nmcrt$3QA_g zmTiS8S7npyzY`Ahx}J*oVqM@cMgT_X)vqjnM1WG#=fQxdJ_X~wC26@h+OmEbWa{}a z5lYT4+_ncX%QB>gdzWtIdg25e0B$u^M2Z&dXH!Z|FJ~P@L%|*f9*sT6?c#U~xy!~HHy=7cg-TM7~ zOGrwW(y&Qsq`TR4h;+AUJDA|P%KbK@KuQnskbPzF%WrL`E|yr^!Y1Z)Uyks-pH9@^_L=z zLXsAqm!K-eLX+j-5$yoKqi&Vq)A@e&swjtN1BZdzZwPX!ku{B%!q(XH;X!Y0_;Osr zIgk3oYco%lDizE}wTloXy<0yNYu2qXh@J;tfZVJ&EPu$&I|@HQYU1X64Q3UKB3OAG7|Ki$V0Jk-BvqBl+MjYRLD)o48K0vmwfk%;Uts z5x}Q9Ox`_Vy{7a`ifzhv;r1us6Bz7}KO8VJ39&V5HQg0$R*QpGB z!tBb;DU%zwtc{>}%87{mO}hC=uT)yd{awF{;%|~!()F}Ba*1Y$*;vGmf3S%4u-bvm zoL38nGWm_f<`&dp*&~ARM_spM_jS5Ribjuo8XRd{#38o}h1TQ@XSY;tf8PFCBqny& z38JZl0|j;oEr{_Whed#7TB&p9J?=sjLGIyH*mdG&#?)>WJZs6Y0~_u~wB}J1mAW~+ zgt$X25K^;uZOnb&SHgwp55X_hySel<$EJcW;=>@{s)+a5G&41_f*pE0QyzP4=GlD} zR5qtQyr{{|7zu(_A^f=X2W;BP88LA#>h5*4%1TfE=(S@jAg2XX!tJqDn=YIhqh}#N zs`>(s<2^Ii>`dcNG|6xQLT`8D-`7kj3(-{ru{oC2fBE@cpNp@0lnRFWaAvRdFpJ7fJs}%5MCLchAKjZ3cwhHO-c< z+h&A#*d&XKbeTmZbt-p3$81+T=TRfD4++uldGKq&U;7nPCV#+R2LuL@i8Ni^l}gz;Jvz{9Vd*15>U*=8W177rT4tdi#T8*6 zegF`A#2ZnC&sM9-!-uLQl(st3_n+VIe~^TslGtH*;EO7=h`w`q1DP=_J=}cXgRogB z6Zue6e7%Qc!8JJ{I9bsIMX&oHh`RpiYz9s5L)qOS?FCUW-YyOs;k%IrA0L`l1p5Rph`GSa?( znT9#E{o}FS=nI+YJ(cvHErK6HY7%}`T)a)M;Bi&7CY|iZ>dUW;J@?R>aQ6%g#Ir*Q;NObjQ$oOA2I2!&nmD zFNs*)q@P^<;9RQDY1N(g{dq+gFiGkghDO<+O?6#Q@B}Z)QL;wHVv5Sp@3Z*B&E>sN ziZe;^6jGbFnO9&muaoGcT*}SG>=8ygv`w^j<7Xj(f_d2EMgM za3|ItAeSmAv@?Bj3x2Lbc!cg*f(iMm(ai_a@s(uiD_p0GXfJH#KM}Javf@!=yoXl-my3G^6i+f2{+c0zAON6s83~qVpluR`B8ca`-d}*{vL-h z+TjX%?Lv)zWF5GzFljF&*1j*=SeWBM1VPWZNj@zHI%BG2H$KQtRyVyCiA`wd5t0s3 zy}9`0WRI1Ru34U!)Fk_OmC8=4_JLDG;UVD!pXlS3S5de3vUUxQ#x~oAVF!k_7=r+;dDu+aWk(27Y5 zov^rnX6A@lpm0oF>}EY85LwI%#@8Vcv4SAf*i& z1=Lyeuj9N!=q~P}45Ubb8wn*j8r$@=nyqh*xREdhb6dRs?u)kQ)IRjmt4&xUCo)zH z_U%E9rGCv;qmCPs!>XDM20_$H#H@#hkP1foXIW!+;D(vMFl^Dps8{Bvo94v5W*1IhH3VW+rXg)|&{C~tp~QhPmzRwo-$9zCrcRgKRW zzbrM@AJ@0l3GLASV7N?O|wgYZ#;8t;q17n3L9?c3BK@}bYoE^jn zBIQSFKNR1d)u(uYYe39)xx{5Amp2}V4=E%#R}{YxqgGKVm^+ZrHuYl?m%;4J5V_c8 z)Ro)~-#JzE>N;dH9kkN5tlkwL+n`#$j^n={ikC23D8J-Bq}nG=PLj0mOiS(~-={aV zB1~pNTO>mWRfZ~FZPDFx20UF{TuU^iH6~Yl2xGN_e6r-&U&ChPm1%t>ftxb2Hb(&O zRVoj~6&mN&s097D79cZ0BcV=?<=}8auQ=qT71M&}&8n7II-r(=Gwgh4Wmsp(sj#<6 zE&m`s^E<{MWPFQipJ5vu(*m9{|1S3#rA772VJyw22^-y9e+V`{{NAdc6#2nS#khxD z7%8*(5rh}d^bt4irJJ{3E+iAY25ZiD=sQ>fm8Asce22;YWw?L;hq=2 zzR50xi8?gi8uZi?oaZyiWlV!~$|Wk(2mUGd=n33%GE2DXv|d><)jxz>nGfJYQ8khMUg$Ssd*l0psNb zgdVOGJx$JT4|Vsn(w9jV6p)G4z)VG{91r35E345y8dTk|k@id|{gMu+yL0B}4zi)Y zjz5>ZB~OftewOkQZn=mWt%3 zsMq&<><}py$W83Idf%6QMWgDwze3_#MX-RQBPzCL=&wI9QSO0x*nB#jV=fT~r|9QA zV47om-~%m0r_it^i@q&3(}&K6VcUGCR`{ulM(a~ZMW}!THLL1L9XgE^>%I=C$NpG2R~uLu&TPUe+d=HT6CP z1O{}4*O~3sDqVqf;eC@7zHs}|(}^vRQ!P>oJvPrNr`ddtd7+-2DrymwdDck*dDkSf z#>QULA03$ox{Zzu9kxAPmcb3GW)V~*^}ery{EoLO*xr^%F}6->%RGZx8CmOPhMjv* zHiV9{aswZ_%DIo(+^nJ9F5$AIa5#DNlXt zj6^M;N?2rw0>bs&c3d3hJ=7+6IsL6pO@uxFlVgdWcC-q=NRI>^d@wP+5!|@RMSnV< z-r|e7je!SL7f2~@Vo)egaNxJ0bSP6t_FxFnS?s8RL|5(?%7`<86C4gU^~Q8XHY6&x zV#yqM@EeK3<@|^MH^b~cH}uO;acW)Dc4@e|hqqkHSa+++x;to$D#>^}E1sSBHp77@ z@j=GjC=(9g#0yZwky+|?=0sAc$~1~&-ta0+@>2o+YB3FfpQ1k2NTj_dUL_hIDWWHwR|p~MR_^| zJc^`Gr5Mon z$HEhjKhST}D$>>2X}IZ94r8at4JBp8i$&+fI?gx44!gJThdK@fR6(lo(N(07CW8eW z>9#9HHYnajB(YIp7>t)PJ26~CTB>fRnRl7oO~Q1}%lRRF?5%}58%|2Xc@E+_@%cpi z@nHn({BaIjzw>3sdYOBu^Koi)=)hRy(k*$onKPDY&tFWi@X4W<;#V>)D#%g%S9Io! zd~r{;>3arBL)q#>Ne&qWBe-_vFu}x8t0)ku4ce&6Fu4sK=fEztGA1HT(PdF1}GrnmYJtoQFv;}8i#|MwyS zEjL0KQ5}75FM?{xXyN^@97>gpe8Jjlt_^#GT3(Xm%(*DVUgNJskC}XJ#AHC2 z2E)w!|DDi(@qT~%e|BU5;*Nn-|Fh)+)|AUrX}318ChHYaIo^DQ?P?ml6|cr)3Y$a1 zuI3Fw^r|JC*095H7dl@I;}5x%0072y15}p#$RUc3Fvn%=6{;$Na2e)q~TSi^!phc)!l$_IV)Yeo?aTBT0K@f?Ubs)%cF* zI*gp?e=gWf8Lkvx-eU59a7KXk@+!QBORGxlhWctMo3OE!u-^VP7qHYnx}L1v)Rr_j zUn2u*n*f!A*RSQvw*AZ6T+5t+fk7`eo?Co68N6bC{zaFoW#$&rMSU8TZN9sl!@lk% zDo>Wj6Smpe4aQ0r^}7*n;hl)C7QKT=p>csx_^!@_g=hd zuZ_I9L9{XV4=4MZnU1_+azN|2}uvH!nu^M9KfcAxXtLlK&5b`?87n zSI=-Esv-Q(iEitI3XO{!I9x?$k-+Je=|s0V=yf9}zUw))zS8i-dW2w_G!C$ss|Ne_ zzdAaU#CQ2?*H>DM(2fwXVHh_#b@+R_zJ4K;^|sY%`EIHo)gM6)%hKj)z63hA)I89) z!W%a02Fm(prWGg2f^PpLR{M~Pi1?Q18MREyKXmyYs$*X4VHRN|nyxPdq9hA>z!g;M zCPk5iTA7c3@j&)v2aEah&c>=%IWYrWAV+F_W`gSj62%zUX$%o5COx2Iy$)EI@`{u zKOfHz$A}S8P+%jw^mX$%J3%W^r>nu~CF<)Pb!CXpLi}|2;+b=|&t^{zX1EHr&+B&B zSQj;$-HY{=E+ZCKHcI^>->`%_!6AK_vlYG3*0bHKHsAT*U%Rs4q*r)i2w}F*H5wAT zlxs##1*20k#JAlxsXwU|kv?l7w(zw;FD@UP?<|+=8{|dx=`3q^)rB+Q5`A8=k$S9l z$AyHt9aW@Pn|;=a@M3hHN=*#m;GZ-5M|bBQYb+@L&no$f{ue6wD!d$T`Jegf)e2`JeD)cy3}%zsRhwr}JrW*rIxTDlLrDn5p)?q22yn z7!QNek*OQ6GE$(&kjh@BQhpU?@(W)lT!pDo7OM@&5^{)lIO;ae@Xec^x}@EX*wnL9 z`L0-F@$eg(-C=*$rJWyNmq56)&RP#-4lVJj_whwjoY1O=?Z2mxd}?JUN5{&S3mn^| z$sSHpJ@4!wkD+-8SaZ{$rBafy6acPpT=rGGg*{W{ zAhc)zPKHi5gD+~g+?cuI%x4|)oYJa-{5fg>FCQnD2uOS$W zzsny_uny?%r|~&q$geO3UQAT_XpYPtZM2;63f+;J*-kzK2`M{%(sGc9<&|&p}Ts9yb?crb-j>9oo#CG%?O5!$xsD(fO9dmjYaE zxWcRs;WF9E#JVcY#9Uhv4~A5EA!nEC4T<{c9aH}~8{;%>S`YVfS|Gjj+hM}&Xb(Qa za9{G78XZb(ZRQrfXWp|ktYxMMD7?@A<|{ui+1Ke0)#F&m0Bt!6fMA&VF6{W!()^ne znRSiwRhMzBV{r*wr~DX|)>#sNxnt}g)Kn9r(W^x1z&5T*qoC(Cf$Sk(W%@l_+0-8z zTF*p5KvHzXQh?9jt7qvr+}Fg8MgrhpMGk00hAshVt`=wXCw{!iaUmZsoU+gG5!TV@4-EuFu7KiO3|H8`jN(3NJnpEiC0NHp^6#8wrV!nh~D zq#KckQ27fsH0CCjvcJ$s_~N)Za*->fHY^f#pl7#k(_x&C14@th0pSA0G)&avz*1;} z%GT%wDeAgO-VU3EgSIav61NRehN}qz+;EpS6o*u7sqm)garG37D|)Z+w&6O`$DGNy zr8-hA6I48`o#$+VO>>vyH8}|x`Vj2-W4Y-TB~w(^x0|nq^eSWBz%={4dX>+>O~<0K zbW%cQ;_JbqgN~HrO$UF zw$pDs!1#8!eTc%m?};iCm^4gFyHn5FZot6XD|xnHJ8#{2#?kcOTEO3Z0cQN96=xxB^Y`_yiQX7ON^ zC@07lztJ7|iT$u@4VnoWcPg@xeSbOYc_Qw&_C&D_m1`Il&7@O z1qVQ~3HlpV2(YA`Wl9Ru<@?fRzFd>-ydw@^23q)Mf329_R&u9{D2MGo13kIQy8+-L zur>L1dtqv=$BjPa;T>f-!d_}4E4O_f#8dq(Ts;2Cz;zn{oa}YNdhywz&G>K-@~M00 zf~zQ-eWte~ELM?o`RaOGfSB^7^;I(bebx4(Zm*2!gWo|nHAYPtciy`$!g}*tAoyuZ zbhNGqc*pbOrTIJCbuYjPjz6oA-qVGtZy?@0Gcx-DB?!GU^!btKK3U2d650c>CnxGk zGX$^;(Vj$|F=@#7W=b9U#ybMLeTAthxR~`i`Xo@kC3;R!u19-&Rs#AhA|u@`T%mj% z9GZ`}75e=Tn(Qo4E1JmtZyW4(d%{P{m1rVqPr%;!wKNOI8QSK_Y1@(Z#+$WHl~1=~ zy~opG+*X6%1Fk%Sf8Ca}^XUSbJ6CB!K9ltuk~=Z7%SD;?gKN(&pp5Pa0VUwXNSNewntx=YG!Qsdi?x z*@sP~UuOyDHXR3^)%i=>Fc0ScDGdwTYcK|Er{Wct`l^Ee-ZP)t+ zfWf_RT9L^USgI4kVfPbj6C<8;#rA#HmCz z(dB>Jec&yRcRQ#K0x&I|Z+8dr_g z!M?LLtv_GBg>H7rC*J?b@*!Ag;^}kHX|+G7sS|nFPKfJg^_??_I9?(#+MOFauCzX) zC0e~?7iN>BgN`XzdQsY)x*qOZRab^Kptw7}43KJYn&sUnHY$t|{YL2bc|qdbX&!*? z9-bRJ2_^8#Z(bWvR$ykgkmr1E(2IOCZg|gu&wpor(Nvvc{2)+QD?thj z_;|P#CIP+iNgLnoE6ZPJziD+Zuj(2-l5_=|1RfFBskgmk-s!O( ziU$+$vi%X?=d9=F1R)AnPoV}Ag7RNDkq2p#A;HM98(Ign9zXzzl5wq9;jjo$DW1J6d!B{sepy?(Agk>GmZ357kxEleh*(}fW=t|oOuf+QILUCtWV_@;q*1+gVAHaNe*^>>F)`?p&W^N2SV>n+)vvgnuo&5gi2B{cq)uZeuLQxIrTSg_6?Hr zFu~%jlSLrn^M)W1AC{kT8pxcI%*l@c*+n%O07Bk)Xg8h3RLR#`w_3%xDYJoT*Th?? z#7slLmVsoc1!>k~B6}ZNrc&wX@Itw0u2e0lAtC1yE4>8Zu4irqX!KBc_AS3;qbi&% zmJF*UzS~7V>K9cwiGF!0(Oz%5cVrE0u+we?au0%(7VbxTpaj!RJYPmKe&~WqbUe81 zbLs=IuR3dmx+JhEZuDIx4KY)||2=~*HJFV&rbpeyUX(AfXAlH2n+1cwTH{$b&v7QP7-N3( zGFXEfluUfS8nrNvlIXL?-q&}mw1w$hikW?KSiwez3z}1v0pb(t#!?&j3s;u~k%&~R zWQ>e?mQz*vEOt)>*4nLDY$B_oUTMw zC+XtWx6__hC`E{rW4B;z0eiuD+MGhc@*zI+be%NmQ=%YmK-{vj^=rrDEs?Vcp+3J4 z(Ui2usDZvVmnF>6l{)YDFJ*w-Z)5x_b^oY+qdQ44BLFZjGsPCAv1T!g*TvhMQdD${ zik`tfsz*O$9thSuE`N9u6+Om(D6N@wc#sahEfGP)wN&r)0N0m4km@XQp}6Jihrw;fHWExrms=fR}b>bY!*_DeA>o}6|)A0Ud)AAAdr z@wM|?3f~?iG@&$378>d@v~!S2K;l1TS~?2tOTL?tXf^;3K&} z9cLe$lNF8fhiORH`txN0DTkkdquPVp=v?eotzNS5Qgp16m1->oUZvhfCf1CD^}bd! zo(qFk$d`m6qm_mU4~8UO@BYJ1@u+d_d4L0N?$#qgy zfyC)@6S;hZq6@HFhutF=M-L;WwI7|k?G!fUGtzr5 zzgM@9faZCBaQz@zZjwkqURqm8Urg?N5h&AVK6-FrT-D*5CoNW8D42Tu<375KexCgu;TD=c>v!FQGqz1)2O0qxGCv>pnVJhx@_4x2Dq6@y z&{U7x>9l>mMe4j;q(Wi&vFY}_5lG~{@P{+ZW(;aTI(&SyFBM~dLP*GwV$v6lx0v`AIqSD_ zsy^XU70P+Mdp&|XQ*|13vhYS0+<^euOS(ZpLhDp`!Ap_MBpFZTMBua&JqXKP`K=um9YB)3of!Z7t(v%knwZGiW0HF8a~!+|)t^?x<0 z6>&gw&5*|Hgn`XhGx0|;lLtlXhBQF1dN+G9U~nL=A}euq&E-8(+;`90EF`EZ4a-R! zI;L=ADJiGTj}<`ZavQ;8F}LlAx&J#{Xv{8y4`tYFYFB13UWAl_+mK>pZL11A-nPeQ z{)RX5!)eIcjbOLM%NetBHd~V~4{odZn8b-+Agy!hCSR=t0hl7i;0>~%9@_K8=MFLj zN&4y1z>F!g?9-$Bq8CenhQyV~!_A99?3h86YI2#Yy>eRdo1QQHuNv#;dU_ZwMm?ea zGSlz5%-nPqO6QfT`aGpm$aAT6PF9;j|A5F`ZRc|?eV1}-%f%`ztCe%S;2BeejFH=R z^VIECO5tOz0qV2U6I>e=Cgp^t?)&^{uy3&mE-asxNuxyxKkr1O2Sa@V?Sc6Wq&Z@TjG zs*dsRu{aPtjOvCYKEK_VUG?b|RM2wH>z6zel!TE)RKqkMO(jj2jFwuhz{|Q!Mv_ip z2n=z)i^UdlZ+cs!Og*ACFq%Rsbv6nK98k|AkZIG#=18p-A7aq7567Nz2g#*~SHJ`O zG4%&8(uWs7!)L%jQ@p$1%zFXP32Z-hKwfl%>Drw?c%|0aOedT-a5mV{Go6pZY(U5g zBz(U%bqLM6{TJ(@J0+TTv2nJsv)0o%t#g?kqj$)szbnM+lHl&lAWViJ`%bd~{Rd(I z%{UrXVSl(Gp^+1Tm2WXzTcW{Y!#4h1{3=+dv^@u1duWnv{w{y`pNV{FYh8YO82z~K zut^L&j=7^**)cxzHj|%lKI+G+^m}}N!4PK?9b5UOjt=0d{F2gGdcp|N13!Ki?X23y z{4P@rI?GI+%L$J)43p6~^*6(_U)h@PJ=g{|$+Sge_&+)$r!^*j1=E?m~${4PXOGtWa9oJv$K)TYx z?63c=1#sBV*Ts?1sgzTMRgc%_F-~mscIO-SS6X**gZ+92A-V6jC;Nz{q9k^Xcxt>% zDo%hLQzi|jfe_v4IVj*vO$wwtUR?L59=&#(F?}-WxeYJaG-1zC=fYvqjxxUIei-wb zE?N}s;XR^wgD=b`2jnT4`SauQ_Sui?8?ES$HP3IKJBx+-@7JW? zdj^S(2S&1CIp+5!X)N_YM^ro?81-PB-V1^C?F0{(M$?baGBUqC3>ebpXVI$3)bXz! z93P@!hKXlfJ?0qm4NzFr#j(DW1YYgC15D9|Ow@-WYM}k__LNpR=A^7^VC3+}R_t1@ zmBINh4y9TVWASiI><#l>fQl0LlPk#o7sA*2uZMjN3X4$?`QY-*X+M7XvXJa8zUxB~ z)cv(Pc`_uyuk#dl44jLjkz-zND#PA~Ms23;RZNw~B@XV~X8QD8qu>Lk#heblUu3Xzd&!QEH{wV$ zs$ThrJ;l;Vf|RPZM*M}ndDRpZ1*lG*bEe0(jJKrnT6}#UdjYNk{_xj{)U57&n!?af- zj4jWd!2^0lEXZo55o~D|+z#hbLg<3l^T_Tp2_of2R7&UF(X{rZyX88aV!J()f;+P)>N@TDOJ1i z*1YlS0Y}y4nQ^7XsGW3%L-Bi}lld^0_}ichMyv`TzM@kbXrt3EYMF2Byo{zIB9k4L zxNSg#AksdCw%#q5>ohT5_p(V;^BUdh8(4$+0OnN8e#19?tAA2+$|;Sj9+)2k>ZKP< zXgamyT~I>B?DI-qg7ItEr4Bw7ot-?og`33PnRhziDy4epq>!w%B0R^Z%C0S~wz$Kd zPLAPGO6J<`mKUkCW43sC+n--qK8apPLU0W|y_O0DE+%#*T;~-JbKZl$hI&pI)CU9R z`^~v3m)bE%`!`lEVJz;|Mbo*=u#NO+t6a;|7ha|=NxEa$Ve`@78wWMDl9!1CYNgx` zQ>UwiQS_jCDhJ%bj%rb+ZyrSKA~4f7lRCh-pRYo)6;eS4BHMpE%;RLgJ6A0X68I#i zkcsG0m+$L$SF~6zAo!Gr=AB1@toG}`LVbr(G-oUUtats+?Myh1!Sw5_MCAAfiVVk` z3~E)g&vtVJ@{jLCOWn?$Kd84MdM46{_dbPg)^OX!8WoMPf`q)4&zQBIbw8KS{(}}q zs=;rI3hd<(^C@1OlGG`~z0WX*rXS`Etx{Z-db(Z5iMYRe*4x4Mz$$9yoj|dvMC-}B zm1uoMrhly_J6GgfZ<{U?-k$7^xrf79X-LyjOw}ie`(qRZ(tj3r!Qznk^;zm&9Z%Zu zwQN$dJdnq7ws>RnjS=2qw->>NZx70DzMfMwc2h3A(S!S{ej^q2^uvP)`@=P1h=*=d zF3UNp*A-&0i*>&bL_MdPx<5~aLumRsUQq4!az#3UAyC}#G^z~I3*@c0?>I{h0-;*U z#tZ)ml8=cqR%)x4-F(J7)|og18mIdJvqt3Rn5a}1Na@1peeaoi>?%7zjKzAhhEYl$ z>iKiCLELwtfroy^E`aFDKkX=dQvEBh_v2B@)SMJnx<4LPo_w%hATk*5$^MRO;INS? zvmSF6Fp=zW&wsLBM4FH`5(KJ$o*<#Xa~r|CB4cx$0-@n#wS#ALrRZJ32tJoP^e3oq zg-?@GamcmVmFldH`{g?9&FmBCrP}d{q4WG+Ku?OQ`(2`U@TMX`zdcVhL&&o$Q--S) zZmG&Ui6TlG=j|;5mC$Ed3L#V9y#YdF!HJv;>O@kR$=#1Fui4`Je^VyCrVEHyC~eQ< zKob>5@(Mc3zrMN3&o za1~2bGTBW1y>M9PFzY0CbG1Y)aL#-Fksdc@kNJT{e7I|)g#|5wrr?C2*$7v6#*c5_ zpN387%T&MQJiN902`5M~U(!Pn%PmR^z93SYtJhFGPiScgRqf2p1k;m~_7?U^<(H{~ zq-l)?A_w`@nZ=4jc%Ad+|D9EdU@(1^TkQXE;c_BA!NbY@{e)ht6&04w&aWH8LJ51sTyaq#4A*!wUm; z;mw;{!g~D)&zsqMp0yb4w)_Kda#wv3_~_e&oDMY2ZVxylL$|XpT>%{mj2CcGnZDL{ zZb)SkZ)Rzgb1BTyxI;b&@G=}M*EzuFM{xkrZ)1XI-%SPAdgL-BvkGBpH3NZZn6CR^eQsV;Ni8aH-D)P=oc$|;~L z7_zgwTQ@N_SnS&+PJ0HxNljk-Kyz><2(G6aA81zV%XRHdHf~^BveZBM9bHV&c+9Gc(MXFz)D%&CUg;3HvtYL>{ zFqg7{=ju|??b{=sIFm;tBf|iq8i6SiZi(?d?7<{7lsqjcnl8 zcesQ)e*HK5mpj2m%>kA2raH1e$>aEXVV^%y9UH7J-ak{Bhk-lRxLXzOTfh zD|8Z`wIHv!(=yQzh4kziHM+nCr0)Ksh`=xk%?DH^YlP4w4=RNO8FRD-07D7_;hs0j z`dNp^g(MABT_1DVUT^IA!_>}*jT-pVer?Hj%n18ZwS3Hxb zX%Xo|XzB5O5=$tHclu@FG*g7V!^MQd#ZdCVem?$==y$c^SwVh$;@jQ`kwwJ#h1oVb znpnKb&(2qWd2+JN9OmFSD47uyVVW6x8g5_0nWYx3S0rt}AV_YGy0sKOl*SViQTP*I zv&vM=EUMo&Blyv+`ZySj?Y};I`Bv8r(bzJTcUF%SRsXD=6l#3T%QsVTx0{*uss>Qu zIHi~QuOinQ9UKRyqOW-O3&ne7XuD6FMrveVQZU>ucx%cuBDES4x%Tybp2J?)9|?`6 zq9D+sp03m&1-q^M7)JAHA50!v#uhaFs3z$&mUi<~45oT}h>`H{*G#ebV^%yRr_|Y7 zO~D&55`Ui~S%wYs<3ap)EF~D4#)~g3GQvo-Z>X~1m|$VjlzNo;5vM>JF+(hUj4Qg#g(J-aK;mqh9Ep{XJ zZbBMdKPahlZW`2Z<1M31bQVIf&$rbxW*+`}mY157FS`gfwFpRtf%gygygkYua3JW* zGgM-kp>yex=EXvigz%zp&3n+|9c|}PW85uNFaIu(;c+Tbet&HBxl5q7#8`abu=vsC z*l0R#PLvQOfi|=cr3KJ^<1G3jq^_Te$$f{2#I!<6S=dWm~pB$Ybt_XKIX-4T>`hq5-8Ii|WSadya zzv(luvCP#P>awU%DP$DmkQ=0aizpCQ&k@}=NWvc-N6|XiB_C5RTor! z3j<(jQwl#Ex-@>8zHzx9 zRbQ_UIL8djw=-jweANWJu2t+tQhDENf2rtV#T+C^>b${b7$>psbyRrj!DQRAw0>An zBt~|KWhE*Z9QU|WXLY~GGAmoS*&|(9TZB6DZJ-hNya}t_NQo;sE3%m5ZyYBsZ>1gJ z+#ItM+NOJ}#mT^x94z$5FcIo24?#|7)V~{e7G(U-zfA!AT=%CrioD ziV3x5!CIHr7icioubQ>I*|H@6m{!T}Zd4fI%hvunU^s9ZM@1|YC1fUtvNKtwYA!Aw zEVt)RPR>`_9`eqyK)#n|xp^bd6R0YwKN$5^<fPR^Y-|r z3z<}n3kWeCd8qLUIgfPkqK5(V#zs`(d)15xw5?QLzlheT#e^kR2dCFHojkZA{4jQmCUyI8RD`?S68ra4UI0zr=fW=z)WGWIzq^Ue zSYF*O@^~9vy|yj?ZeNOyqJWo$VCSN+wIuyjkO$=`17y03lD=QEJ4D~;Y8GbwNYCk_lfIXKxOg;ZP+s|^{4CSmu zmFVM#N113qj}GXvg9?2dv3;MtLBx-b3`FH}f|z^1Gg@1AcASD<5E+&V(M9#^!$L;j zlw!nwNo?d_Ad_U!GZ4^4rn`lq_9f$xlPGv^-SZvpyNKvt{gvI8E2q>yhV9{a0 z384VJ>9J9%R@(^4@Gpn%k~Ie; zcpjNW9wvOwa;?xeI3zDS;<`q)hjU1F5$~hhj_Pfi1Ss`pLW}57k43&Y=P0t!MiOs2 zz+$d<#^eS^V zFMG1Jv|t-l9Q!juo>Ad*P6a$jtjY0$GdKE`4T4L~{=%H?j|()cVvsu*D)v>q4_0q4 z;v|JblJE_cCptI9E>ep-DOaOd&fHq0^S&KizFD%i8suf5fJq?KBYtA+I!@)R8fWf& zkU+7S_L%)7QT_yPkOHY6wkIzc{=pDw+knZ8{`&J;uH4mkM!j#d-p#hP`;y7A&f3K* z{%+sF=yMZA1_;Y0-my_5f5_r->GJN|1G-zXvHeBJKg|&@Ta+yqdtw^wb|;qO<~&lm zv6!6crD(@1jHx&Z1hS3Uo3R3!UEKx)auhTJLLX&vea^{`Db5vkmJAK)0GxAY`DiN3 z&T>8Lc?l+G=?Sj$Z@W8bud8Rpy^Aq~B4=mHL*|lCVR&}$IlUJ@&8XZ?WrkRSJ~LB& zBS*4Wc@O!1no2JAvp|yW?-w%g&D_ud$Bi@?|M5QbjXT;_N5*m*;$0g_Bx{I}2hQ;B z)0_KX0>0Ub!VdiKv@{D`2F;-lx4VAs+zgfkvmW25;v&2k>(_TPz1qXo^2EV7vA%k1 z*DP0EzKKs9_-y-#@gVFBK!Oj4rd*_C*aN3$gO*}*G~bHt0)w;)5hvgHZpSrRyWT@x z_Kz{D11{L7ifM$ER;>|v>lR3!1@YN+iqd{=feTAw3?{l)@baKYX1>JA0H=91F57M~ zso;!~_~1~^+IE?<`}R1(u83{(URz&n19pSV>PVA zLK*AZ3z?&y7v_0m&1*t_)KNMW+}$1?YV=3jkV-sEOr-t+DL-d7Warr2=PU6baw8%IlR#4A1GaEF5}u2XisNY_p=g#o8t zF!=7rwI;nob&PrKILzvAe!QrZI%#ehz3)Th=;&@5IA#2j&)t=G=kvrJK`J;RNKV_2 zE;NhcKDW9}6th{A#`?Bj^Yzcm>%m9+i~}KzdVwj}{1P>(8J$K9kvEc0y@PhXfx$E= z?>1;Qepyd#Bg*#tYMSLhm(-U(XNzx7(}q6Y8s9^xI=QLb%B7oG+BZEt9i z2wN)%CV@_HRcJ=OUybTzt~OiPq`xL4GjH?yv^>kcgo!zD@+$xTQT5hAZEoN9aG|&s zhvE*!p~bDm-CCr$Lve~0FYa2TSc|sBrD#a-;1ntD!7XTzgz(F~_w${3-#;>w%p{YO z=gB^2@3q%jTV7y*@29QWJ zkm}px$TM%dpaUue!y|QNw*T(OvjW3oudOO0e8s&;l-uzsak0kC&!|$4m$4=4(2GbN zZ(7`LA@jvGMq1vZIdXC=O?zAZ`k_ay`9}*1*e05)k1w%Y9+COXj>zU9omyMppjP4B9Ce!{oD)QT(yLSLwpM}6$6B~CXlFFChxFLiq&Wu)|hwG98+htnuraX^sR_D>9wkS!v{K@Tz@e)iYM zO!Yua6AS|X0AtjY?c?=LE%m5GU;o(H<;vsF5kLLna7^A5?RpRCO-t}6=oRq(by{J| zwK-1f5eK+b79OihlWfHRZ>1}U=|8Wd64DT<*2)4`OapW^^6@!j*ORc|8@|D?GyYJz z>sO>UsV3R&>e;WykMc|XN(Xz$Egp+p>2o6E(m3T%cO}-BEG!iqiSg(Xo~{Y$_Cy~2 z7G>Dk_E?>^BjJc3(}|ySa=bootllaJ#wMM7d@!mmk|X8^M+jyDb{NN8R{`A5*aJ1t z7QGzt7&JoIHZWQHwmT&s>pT5ztWd)s>Neja6nKvCSU6knGO?{+5Z z>0+bIPPyAFT0b0rV`{vd7ZgeG$>a5U-|H7`bi*P9=h7-=MP5DBKzi`bH>+qo;M3Zi ziTv0H@)>$?!wECISR?EXA%c)}Cuq4WcsVG@A;)VJT3MTINubGg^aY>N3V!dKws(s6 zMIg2Q2iI~-QbLS%Qp2eeZr{0BSl`%R zgVHVEC@SXkmuhS!Ctw~wCFQ7nL9@qY{Ot5hFzc*|;;~pcHEQ#Y|6s*>Q@qWMhoehO z{`16w+Hzn35R-I73k|%}H2=rIouzie|EWL8sMp{qEIq{c-@F+AwY>5SetO;R&;Q~) zha%$9!G5RLOtJ0*Gnql);RaZ!wBByQmG|~eMf1+asoopqh47j|yJefAm6HCH@Lp%b z&ielByD&$!fRVD2BfCmWo5&9eF(B!u7LMZ$ex7~dETi-(c`;D z%1)At(<$+j=pm%z?<23>*YySmq~%bSgorl<&jfk5SFO^S@fn1d*TF&rgd|-jquey)k9DAXdjQ6uwPEH4VvVPWGBaP z(DNxgGx26@N!M;=VI--p?fm^axjpSJcyzd{Kt*F0k;0g}cbmG_WF0|KdG%ywI8)Q; zl?$3l=s)y%IXFhx7{yOB%)bkJ{Vwnp zKGiL@j{8?y>77>AMSd;hxa!L!%8GBvQC;YW?u)%@s8DL}aE3(KMi}`AU;w;E{u$Bn z;?qE_KQOEcUjyT~2^29Dy3~xzvjEyPD3ciswN0{pFsLJl?nSv~l)Qrnx&B$N-Yc^% zwq3iKX~^0;W+Vgky`6)5z5x(=ghC&NOnyAOE}WSi7}S1D*zMEW{NZ`f*rPaOybb~u z$FoaQIp|Wu9r~$y>RHK0WXKELRwIFqEvzT+zK2Fyl_-Tx?%keoBk!)M5SMU|T+Jze zSaDP2=ANy}M33hh^$%+OQysFwCN~vt-n?Yc!kmG`+$fn}G2k38`%wZrMXmE>Vv*qu z)#fFPvlF}N`Td&IZIRd)$|hvu<1K~ABFq*m%(X9(k~fOys|7wu?qXg|u@Kh4NS4A+ zJcoci9f=(<8uek z-Lb&wH*jEhVZLZ@?nh^H?#(e&Zq)#X*=!`roL_?(w_H+4E@*#FKW;l8$Z=?O*NHe{ zh`4#0e-x*qD%UENNWn(m2Az-G^7Zap3#UUPq>2NCpC##4-y{iu>epZQ2F?xD37%f| z^qf_>cM%Q_K$Y%iFH@CP23j>m3bh9ZFv*F*jWsZhZWD3v&S#wVh_Xx677EhJvx9HY zrFcP{Au-9cZfDH3JG)r4Q9<{5|5VxqVdzx*rl$znUlI4ljAc~49yXQ}~3c0wu~-rOaXb7=aEaMsp} z?lZoD;T*}eSc{X>?i?t{R)M8G^zL$#t6Qxsc4vr3<5hmEe6;tl%?!M&sL9zPb=#nc+dB)aME#Zd0gR;3b}bb3q39?vA6 z%*34X11>ei#%@5nf06A)Toyk`0T@>FdPjU?`=?Ubh3!;?6MPe_1qu3 zCf12_*96)tWI3#7)zcR!GOTq{DJv3GP{?_yHLC9bEQoEq_j>44eUwdL_PEIPe%yea zO>8Ct*^u9isH7yBv|K|YZN0Fp5A%(QgJ{bRAF*tbq|sgI%^|1uwxxqy7EtK+caCo3 z2j8+=N4l|T4KHrmqcE3B6}|OG#e-G_IRy|l)S9-n$2cr(_>@Rty>5^tY*_y+21b?5 zQ{uepAa=`l?xt>3lTd((hY?LuTvu)K!*ze#nO9(@la*Dk8fCL{iQf;>O$$!m>&8EU z_Ey$iDHK-GmMYR%T4op_i1b~b%&09@w|js8@i<&X=wf8MA)>Rn6MNd%@{Y%v4t!Ha zF-n?Vpw@=Xam~_%;M|5wl{i-|SFaPSMWtPyM#KEKPAZG>U`OtCH!3KPxXm^*Q3eBe ztGs?NI&tO^1pkZ$_DvO6zB&K{@5=*O0oCBipiCDWQvtcHm7L=QDyS+(WhCzciE^rR zhhyr@TF7JlPM;(}$Ihdg6~5Zi!D$eQ^B@7YoI;2Kh}n{<>0C=m8F0gYzXCqbg!FOY zy_qIP-&1g+K~_(%U|i(Lb1SrbpBRnIaIIv362F=FF}BbW$hs|O1R82Ueo>LMp~N&+ zjzE-_&~gJ~4451grbh8~Y*<=>sbW!;+cckeTM~)|I9xBfe@|n-ybmx3V|X2Ap^$XB-c9wn5|lIv6$?L0iucIp(;kK#V#o3 z4i5%bGyUr}MS3H5opfyi^ufit;7AG|WW8o3tws)zWJGyrf*x&S=ikH>m*NTbECT zGL`Hh5oxsS-UcdLFo;B_?F>i29X+Qlg2ysAIRjbDe9PN?yXHqd2IR{#1eJ)cA$O(h zcBt6`KP^-yUhckW6n@JOGJrB~)JP@d@&dhB~SNz)d?0yBai zjF8svoy=%!dDuNGFkT|r6}oQ-gNNU$@Ra4BN`is2uMd{*+ z|7QA{0OTC)sa}Vlxs(^KF}wZFR)4LgFP>aVL>zSnmECtf6YdJ~lKr$gJ2kro&=Dt^ z55Y&Sq=>CI&Ui1rxXfF>7kjFWnB7#gf1=bvE47m7{pv%B+4%c5$fnAa|2B2j4#wM} zuNiOk-4(NW_b+;wR^}f}W`Pyl>iW-|5d)e}CXIoG#Lqb2qE49*T7_P`Fs21@bj}cirzl+~KUuBHiECnlcV> zCH!_;W>{UL3r~5l==tscTY(wx^M&NaltQd)VcCOsJ)^2cAU9omA8R#e^1Xb@s9{|M z>9JgN)!Rsb;ULa4i$#2L#Up<6^JggMgaNH*lo!SCp<(wD(yBtchxs0_(=T??W&GVy zy$sV9iG?*3o)>KtliFWXfRmU!;OwY@2VA`eCGvY*sVF3c&OWKE*ZfoY7fTq#;>! zUiyBzdnJ7~cG>n_ORB}hciFMl*%!Ybn8T^5L^7u`qUt73%87i%rJeIlT({%BFWl7s z`Z;z{g?h?(pinQX2s16Fblw@&H!G*42u|+dxhAsc*5#r0PkmK2tMknrU-oWz0eZpag|Y7KM+BevD>+s?(8SB=?UMj5#()9Rq3Yhy?OT%cTX(>n#p_&`n>{(>0Z<SIEo_A?LgUVslt=mxpT>lkwTDT`FI@-)m&*BWs z-U?(pzxcwn39oCIHbVR*NQ_gA#v*i+rC6*}(si^6+mEOH8FcX8$f|qcysZ$Tc=y$4 zp~G_0t9mB!;fxm?QRS@QHCICoUxfL(Fzbw~rJHa&QGOFg*^Bz5^hPga*;sqiTzqg} zV^Pw}9TOhC-6YPa%;0ILt<%o^Or+z}be!0vJ$~vGSz8B;$F@99WTC^x&*5{N#0CSO zAL;~WX!*=hZ*#xT+SA313vkc}lSR^F|6ZU9Lczv%npsGbU+S;293MP7;1<%zX_o-k z?x3MwFXIW5pUDvoAZHVRjlJT|7;a#~%kG)_q_ZEIY4aM18Lvh0j$`aqCF3F9ow`Z3 zU&{FU8(t-qh}fMk>!;i9&M<}~U>6-l9}OAb*Is?e7tfX%6x!!r)8*FWpEhDM`6JY| zdF%HSe-L~8?mZI^XiUbc;-@aQy6 z@JX~d*jQ%YYWnqpKh@g|QY#K8Q=(eae(e6Vl*U44_f~5q1G-6W)Op+q7$FfUkT-3k zuSr^}0E77a`bB~+>PP{DHkb9^QqR4Dc}?1X)#NNJ!5TRKBo?@bY@r->zNNq1>b-qn z2bI1Ec{hPg19jgD{F(<-YrAUl_C0(JthCo88!TT~8?YyETka`ZHeb7YGEg-iUNHF* z471*3pT`K1gQM3l1`NR_@r-7btKgC)(45k#+gh0DuWGXtR@$R7hTqT4qV;)MIl@9! zA323-Id~el6V{LTph3@wuMd+4`Aip~4JCA~rzbFiPsH>QL5ozs<~*Jpz)`bt2Zi91 z(RBUWqaJWS<^*s$pq=eOhPhbF9XcMMZua7#d}vW$4-rZr2iOqnkwEL~L9 z=-&!^drHIPUtY*RsJ9uer_Gn{PAJRi?=5<`ANe3dCD+-|XdR?wA{8R3{apAXY3`>C zcCzMUO#JU8oL;SRNDPLs2R`ZZ!R5Bd%v+b!HnK(TdrVGhJDyC9Jl8J4ZG4_)fQXl5 zBL!Et%cpf8=J?NwU8e2|H~wqjk5Ixle_iS#!C@+vMHuncp-|0&n2EZs_!M#`dwu3i ze22oV%x6@wTd!O;VH4(OIGBYh7N6+F44hCNh#Xc)g~#2XIIRmE^snn7jHl(gm*PsP zF!D;fH(z2iiAX4lg2J8^F}|eUIh?PQk=@iDNiJLPqKNM5u&wmn zqe8p?qBD~WIWg9mc(xg(-QVR({`bw@t(K%UtLP^uf0=}LVsf{FOTIyrsp%05OPh;( z%%Sg|i$%=uuxP9wd1b_xB~E;J#AE$GEZ__N{K_I$YS%p$8*;VUHU#h0hTZVf$QMQ^ z!EGoyvEGkQpINM2v?Y)9TnYB<8i}H-PobgV{2s)LuN%`O?JLIx^r^G&TkPeA2XTvU zmoFAl@v?cNC&)!Q>K~g!DzLr1(K+2XH+xwVw$x@imrBfU9J#i;w5CcKYfI~m!r#34 z&7pPv_Aw&BYd?qUeG9LWeySUf0Oy|_@hMPrrtg8Jxl`qpMuW%;M|ZQuEoJH9VZ;Nu z!=>H|Sw*`unAS2h5!2t0PXs~#ZfEhy@a4Alc3JqJW;ZDxd-{8kN!NDo zrg6lBoDhkgw7cJpjMM5JuC#K>wBwR4os$=;q&E8X_99B=-NE#nkZXP|`G%B;`DAJ= zlUTH{HN*3FTNGu4U9ln2oD0e|9e$B<_PxqWKM5xD4Yv_bI1g?7^ErzL|F*8BIN>$_ z<^CppJrNY}VI!7Ht%rn2pmcFJqn3^H(K`jV3M@g??AUeLFlkpQJ{z%@IeViGqspt- zK!j`A6esR!xV2dGq{t8h{$QIs&C8HuxR>DQeMXN$XcsSVI@{$(LgaH=*BZ{3e8N)R zytT%-$T~v|Xlx)YfWfEs%X?Ogj+hoDEZR#q1(p^>I2xJ7)5xSag?(#J8Jl73R=4hpL))0do&AAejWNE*{CI){^xTgIER*4KG>PoDVaFF63 z8Ry0Rj-P73!vFsF^Y`hkS2_|Z4Bv4AmRVC321Ud$rG_UtY=glk%89WI17sdRlodL! zTr_W8>>dZJ>Li~s^Fg$ZEI8BdPnOs-RKoyxneE)PJrpnM>aP|g=J8^uM4n?u}?ZsU&px%omM zJvK$%hbTjOsm;)(3vu|t!?8!J&nI%OLTco0fV^hcQ6+(2*U%U$-`jks6XUC)S>gL{u zt7CfNC;)}*z4$5`cpx3Odly8egyb|CT&0`8@D3IakrJ_dK<((B!((Fxu^GznhL5eE}*5$0tXX zS8$V!z9Ik6KTM`9e7;T5nap8tH=0kC5i8!_=fU}sbVMy#6OT>HxD(i8?+*391$ecw29t#i>-3g3+C{`^W$?>!-c37v_luY56;+A&ELw~hNLa)z zyP^nuXFRP&>xgSV-k}jtQEkF(ZR3bib|HETsD#=tfo?9Kxtf%Tk9I1d_^$rldja#j^nPJFJ#zaAFp}%VZe$URJ?^O20czDSPb# z+XJ7$9QD`!hTP4FV4YS963gjCvQC5LykzwJD7BC>V%1RnmaB1=^3es^%t$eP<9duc zx=|`hVT(Q94O+$>Gcwa?+DMv0zk3_(`3w)kqST0sGWuu@L3DpMOPcu|0Pk2nUi4zB z$R!qIQsit4t*xN#t?n4zJq@xzn&ilcSH-$WXJEugk>H3T?1~GCw5I%c9dhx}we;A5 zI0}^1YSTI^VlY?z4DM<*q(0KT{*-RHpVIjwP2_;KzhcybENPfCBMExB07l*)n5K#T zZhqdnPDX55x-6d`M#4ug>G4r7?Or=G)zz@4=RQ@ae(8=%cRS)&^($F!G{S#311_|n zO@69FVF{|7x#-~cx%y?_sWS}=!i%?QJ$VH;+*-LW(ic;&uj>NnR5?vS9$#r2ObhzS zIN{F91OYMIe4-e~89o^n1;^MW*sYqJ=j>)?9a}hz75KYeSW+2b2^YCJw}ry^+3YRx znavR$nA57Ca8aMGyvXs4r}C^E(by^@Y7LxWXi(@Kz}$+uSCbHRA5urK0mT=IF#@@F zfN*pJ^xz4=MewT`3beaQZH@!6t zrmxf6Y%1GyMY$0Qhef^XmV19bYg6%i=}@YSP)YTx0cP4WcRn`ykjga^NXR;y&1oG! z%aJUiO9Y7z3n($zu_Mv^r(urLYP4~jffYl0OL`EE}q`&OB zvdfe-N${NGdsfsdm+T|T0Eul(^JXg~lo}qPm9!9iP%B}6X$e)^k{~bY>+2QV-vI_Z z{N&$Xgb}U01F|u=8`IL)RY!LIde^&rM{>8t{n{H>EA%91^xoRiBn~;6jxfMX@106#c#0|dsV!iId zTxw%k&FRrhAgjilbHE^?a`=7Zmwy&YlMtQ|LGw#umik|Mz#Yf8JM#++fQ7jAW?Q3@ z#!II_vga!(lGjb+m0Gk0aOd~ue~KT}A&G_)$3$JkjfWCpw>mle<7F{l*O~|q=PW#+)3*SrwMRuv*%RS2G5Y4W zF`Or(#Z}ec4G>Gbv9R1VZKVA}re%!ynb?C=|KmL?>3l5)*LHd5#!D6sx8X6Od> zWs5Ik|9#l)i>*DxSLNfG06qDn{IgdnLS5rLvoMjx$Ng7ykEc8V#Ps!;9K5+94sIVi z8ja@{dY*19cJ=Mn@%(q&*-&Ij6z^l1-k}g;R+PiWpEEjVXW#$7KmS!UY%tb@ z-Ig!llbN{)#jaa7OAt{Ls>^yLlt?#in%eXmBKIZb~s}KKketu z|0wK?4uh_R=-tl_FHNIp3hw7}w?(KkoKY_MkrF%|7+UaBrzkexu(m#Mq+KLv@Fks0 z@IGMv(rzaalthIe`hY2HF}Bg(7<@_>Fwtl1m=sZvsOIH`!#iEuDK4r>dsoiqflO^m zdq#_INZs)t0McFl8Wo=!rSt+8d;vmH`v7^n?5lQ76Pi?hUVK0;SAb~Eo0V>NaTu~n z^?lRUtl#Aph6FWxmp$ed<_N(gL6l?UO?PO2>L)6JDki)C!ver-Cy{022VuhL?8~W+ z^L}g-4|&%^gmww9znyZppt12G(BgS=76T3}ylNeKd#y^0+r!5l0poa?+)^7v3TM4z zEm}R_LeQipKk@h`$Ei;+{_9i7xD3){(g zAND!?)(hoDVNCSfF>hu-gG2Q3;b@Y2_R{1C23^7JlXHm>^7|Z`8)}Pc;bA4vVgU!J zBO&Bsvca`dvKN<$ImO91W!Fj?ANewoG~~qCGN}2Qu?lb)`WP|Q2kSLdpvdHlZdHj{ z_EqeR8W%K_)7aLB&1(nGLYz%gQ$NYZ2Joof_PUjg`q(E$d=KbwM_T5dovXyj_y`X1 zu`&w{ZlHV!(^_czf#S~l&*(abSWG@J3{oE(w@wrpc!v_4EYsrdE!1tBt^T%e8vpog zve1%KM;>twu`1oL;j`&0Sr7Xy8ayUsySffwKEB>Cb4`<0+J?vX9!##MM5iO3I5>Nz z+4fZm$a;+C%N+%=v9oo{Q~hu6ev2cXqpsA<@W_HzMztY!#Rx5b0pA+rqc67u$hO-UIuu^ zNTIGgJx_M&1I1s#aP-Ar?1@&Ok7*550^s?^zrP?8oJGCnJ|>Nhu{mKjot&}^k7ETX z@Y-LAQ^mm;JQ<5nddtEjp`nZ~Vn2do1re9fB5%m1ztV$)*hX#bs%svK`NJkGj1& zpMLN7pZG*0T>e6Ahg~=CQIUfG6>DI_lh(+32R9PGHGGPY@d#SS|=VuF{H{Kzbl0YsY(|*8gd*$I-C>r*2UgkEoeHrzQcXDhpmO zXhFD%)p@Z_)l7UI8hD?aliAR3kH4vc7PvLox(FFmKM( zcE+7%cGOmsjM`i!;%#QY3=&Cl$eT!+>@RWUgSRsYD$ggxvG}zYGELguEO1Q9#&+G7 zA+_MnCE-idSS=D7biJhWoSvFn8e8prPVGi<%^)YJ1>&XK2f>)xNaY^MvaSMSVyfu` z4^4Gb`W&7GOVpSP)THsO7yW@|kOA9pkXoGIzkb5~QDV1E+r3l>Ymgd)l3U|gHC^;s?x#_o zlu-&^ooO0deX#naxUYnMk=A6xMij=_3^iFZ>Tw*I5rc-qJD6*gyNx<-2t=RsZ&p*< zqBO=q1z@zkD_S9!I;`@kQ?q_;XGy0%~BvDi24bUSCOAMw!Yum|0q1)5?j`UX(vNlIrO zpN5d@>3}|uL6cr9=DVM{m*Y4VFI*b&vpiS3tk}H0F+ea>E(e%oN1i#}83=nRog zorevb*?>B$K|Vb54)f5b@kFNZ*%X2@mzP}DB&G8MpIt}Y$L9ybzd}@^{<;yM27PKi zs`UT8jf`^*#4b5K^|6r@PI0|_QeYN{!1XEpC;Jx{K^GqWXvXhq-hp8d6B;wc2#Ecu z5W8_!TbNd<$tGPxM-N8h%5t-8A)f(JCrmK{Q$0}ZyYjExhJTuX8}AImO_#R{XrWZaE9+Xq@3y|MKtw?ma0~JB z)Z53kWA@DoCfoM4s=&X+ZsEs!?KK90=FKo)-^Yw)Kf>@yAzK?!^+JR4p*fRAyCiJo z_u~z>kYQic4-FtCZAg1_)XEqZl@0|ZQh<<2ii2KemBsZMYc{BX90A>$sxn)PqH1GC zhtCPlplvJGaWbAyE-N&nW?vsR?$*g|mKQ4DN6QttX1MJn^Ua0f!$(zH_HK3L27y|% z%;(8Mp6#pR^?|IR3?k2`u~k9@pCvks_miv*WeVErH56W+5;BcB8dCCO_;y zbu|IteAC@(qvj{kfg}m>t`Eq9@GmPhW3u={0*}8D3;Aya(5(QIPx_D(0cp|8im;jf zwg8M;X~o?0zt_3_^(byAla6^U;>1z&_L$6N9Yq4_8xx3aN)@p0WWT-m-4MbfaFW6r zr6_8(om8pB?fk=e&%OVQ0Z7%U;b);DktdH|2_i>d4n>MtRKIRJ}7H6WLrG zN_3efp7b0MU~u)CcpD)#27Rg~02zH7s^j{;`594Qg*NS&qCYC0{-LY^o^AXE2M()< zv{&N>Se2AS3~37Hl|1k#gywD9P2zHTgxY=jhF>CgOUMz#&%`~Yl1POcHiN9XEdI5(D1bym{p0B~^1Vf)i_l z;)}JH{i>hV8NOjLRmey!^=3hi&WGE^WS1zsn zt&DyQ*Ex@I862hJiJr+Olv&8hU=>)ogYfUeHeg^?sA-Vr7TEIpgv$)-JD z-wRyN*&J zT-`aIiM!oh?Z}Ew*5&O{C#aZ1+c3MJACmu)7k$DOhl;mylN4uOvzw-TsBzuNSIxZ}60gB#t$eU-5S$#!xqR0RZla&Tq9sE3qTtf+4hxG;-Typ}!M$dYH(^ z@}6E+YAL~&{+_*`2Q&Mobx1G6hyahsYPqev}}35vG2dGysjcy5_CCuTX>-8BQ%IXnBK)# zz5dOya~Ua|&60Tqs>1@rbGmoZKxJWqa{}+FlfoM5Z3(tg>HBm_mA8N~zGv$56KRcZ z79OAou@0FC?C0k3jLHPDSE%Ghn%rakFhHPVbs8P~K=UZ-hR5LU{lzVe#3@NAZ9OsQ zIwI%{@!)T}a8xIML3gbkMz9rlDLw;SL2C0f(_Cb@+DSQjqx={8iTmWh)9a!3ch@IX z*Xsnqw8a;}2XA6n*Ml*^+`P1`Y;3RU%Sag4Th_zyfang>so0%Mvf$ht>e`Zry5 z4vM!#^@8bpAjnDScrR(NWx&2{!T_A+uhlpL^ye}=JK*44yJa$!LHx<&`Z7bL<#D_( zKJtxm+=J?5ugjSIM~70K&gHy4R=T>inC&~wSkYU6rAM`8{S#~FZPfpD;`&IiY`!Vr zaAMhMG(Qapw|^8n69-r1K%G6@UJV*|LWmf9RVJnF;qJ@7b{hP8f{##Y-K5vY>3!4- z2d`->&9Ctm00Bb1EGz*EcDjF{v31I48In^u*^ocSY7j3*_>9Z3qa{d-RvehTl`FNe z=)OOMyyUxM(nu*dezF@?`Fwi+au-nW9S~Q1PfB4ND$Hi}Tgara zp=!JnA9QzbbB!5PEvF34Uih3y8ZVB=HPQdiHoPGsY1JL;fj%M#SZsdh1W~?C{68l zr8-wjF)!k+HK#@?@+Z#zchnxujpI4Zse_t`VowSThSJk!vGa}r*I>8tp4vbE4-266 zfGnAs+HO}y3hwPaF4lLCgxhitWFGX%f}0!GjiE=Ts|hNWq4cSMtLF({Uf4dgxUNSy zF0B#4qn?AWqgb6&4=$n#g@{NYkh9frWUi8sws2cYpkL^lF%G9isAwP4x+JOftLjLcWpgqkCtv|vw7;lBy`5Lno?uRjND2AGxUuFhE31k za2u6BH!D~P3KSXIgIG2Zgd(sx-7`of?sRqvhfpf6U^>D&mlPF~I(X43TByhrm9b)v zVi9E~r+0O%dHFq%;%SYX5%Qr+s@0Y{+7#k_cANk7Pwi;tP#%vM>yt~A>mNw_mXbwt z^X;G{a?JJD+p3qqpqA6s*qcvssYf22tJ#al_{wK(x(~j)1c+BI90ZT9+Jm(xA7(Df zZ`(Ws=+5`@3V}Oy?yk{o>rQ(r*)G<}^-({q4G2m96_N&^wypOcbr_QSau@sA2;;=< z0mV#0ESa`J+bw$H5~=w5n+0M;1c=#mc9Z_tvt$0CI(11kmGtYit-AqVOLIQmw3T}# z&~SY0u^a3##)~Yy2Svz*7TA|&y)Z%}h8-q@jdwTAJI|&xLOhuw#HieUgeggtPuARi zB$BO6;|0Dt`nxAFPn-(6CfcSWm-B*l-AbpNth$T}Z;@jH+_RTbL=vZKjhL+5)BKM4YF8+; zSco<3ORTsy;#DXe5V0@ArYhe(Wo%0T@3GLNmBcUr-yQ=FPT@=tvrcePy-*JCJ?&(R zGvOVlB#M2tHx~Vsu&&X%krZuOK}ZKSpjIrYSlbl#_>M>~^P$CR(fe7^9IKrY+40ne zwV~Untwy@68eNhb*_o%)j;2$T=VUj3W1-gU;HP~+e*3ufVRNQEGFxg}PtP0vgkI=I z{-kUJNtv4z@J|lFLb(vj$P{z{0rq^O3fd5ytZW`J9h05AEb>FKNuIVmu6a7rVq|-u z%8Y1fPERa1YSk*!{}3Qm#)$4$hW9ou)ma!<`(rq5D>xo21RF{?=$VX*sWM4rPQC(ObpCMc5?crhVMzG-)U@hzA^Z zGU*>kR>pgX;ZXhG&VdA(XHvuG0VWU*E3f2L0NOvSF0J?L5vEf9J$waE62kDncaG8? z{c+vd%Z#3TnX6M*DV?6H=5Ah(O_T7DkbH$sKNQm+5rCMP^!k_&lhvs`5_L{!1r|o- zb7v?zj(;fjUK)hv6%b_V98KulUbxN>(JNe-wfNvdyy+?*NTC?ucxM96ixY-JyU3PW zlSq258Z{pD_?Yr7t_|78hXArgD)hgm@- zf|RtpqeK24f-l>H7eAhNzW*GWcP-OfTH>{S*)^5rHg|zcX}d;Zvk!H!8&q6W6~LBD zn~m&iUE}t!Lt+lEYZa{yG_8%6DmIhFdNQ-f&xqXX+&}T19xoAUap9=v(IY-5DBfN! zdxcZuu9F7H_;N?rDWEXXfgXkPIseS_t+Iom3|4GE*OhP`?zd{k(>pv{var_&DqEkz zLwhgv6ePSB`D;&;l4gdr0 zA6|RHFRPVPLSj<7X>B>Xy-+j9y3yEl&9XN*YTP3i{$`!50UlQO6&v&r11D=hdc&3M zr$-r^4_6NaD>ElFDiD!HmBQ2`enpQm9O=q4r}KTnUgKxi{1IV4>X9 zLVqlAwV_e>O))-0l=oVF$zN_V;(}dc@tYwzL)~8B(p8I;=O}Ao`r`e);c~V>B#yVY zon|9SxMHv&3hQbe)as}8F*+~!GCyWyfK$k0LqazDeYN$x0GMK<-_&w41Nq*b_6U_~v7=p4 z&la9oRqbRv{LA@_K1?&;X4$AMtIkwzU+(ocS{uJPn}kOHqp1bZ?(^rDQVDhRCOIk;(CFtHNBso z8&zT;-=V*6BW;WNr(1{nYB%ir3vFbt=NAyVDnWbXaTK%jj@%iYjJHMAhK$dXA`1Kn z&vlQ(#j!3m!6}m`{<$*J2MJVsxEi^0N>hTKB&1>FwRpdu89qLbdiRrvZ9u5~N8(Bw zYg+S%be-Al@1g$|f;l2+B=6?l4TZvf)i!1 zUEk9>P;~1qe|NnEep-$E>xJ}eTd(0??+n<|*BcX(CX#G+c$kQldgQGLqQ7N)c~SaI z3Fq$h{ZKBo4@$}JAtE;{;y6`u7QkiKzRIPw$(N?x0=sFn<0RyS*^hjsDE~13`#YTY z6wIFx!4UX96&A7+hCYVn{X5cTb29{9Gt}U*?00`FoBY)x7H5g=?k-rr*7joiHEsgU zB9}DQ8$3#Z2>ohl#mcJwOE%_4R`Pk zk6tgb)+E5^<%{_mD$Ne>J<)=((0DfM#fv?ac<-I`FK#bFw_Igj7`+CvD5cM3YO_3X zur=k-rN*}n`|16TRn1{_;vLViXw5tSgz|SNrfmiV&v(^4Z_mu0#`dQ4?bKkmDpTDo z1VJ>VD9#JLZ^89@iK0H>3HpULZ_FA7JL#1u}16wdLJptCRTnp}K*6=RH>mn_#A0bFo)^Ck?`SL>uXSLhlA7mrf z`wm{Zu#sxs)_}zeF7w~dlOXa%q(K)m->F3%WtU*VXnKnu7m#$6H1QX{!6612BdCFg zL&=7$b8$M2Ro$WMSJ`uMBhMqFqA<2!yruqK=fRNlZ1huL1}RGVlY2iL`}(ni&qGijUG*$ooH~84vG1}9EgHc$h$a7g#li`ssB&7H`VV%wM zhBpP10zP~NRVXP1s%A?4zP++BH|MFM{JufPbPd22q*Q3-bC>)^0=m6ITGTE9#6tgg z0pJYWA=o6SIEb1+KCEG@=3F8_h zHUrYuySds%XVGq@1=9*jr6PsdNSx>v3qWf>-JJBC$CsvyyHGz%U)-DgEq2PaLc#M9 zI$K=EN1G-H6=UKZq0*~e2}q|5Wf#zQQc#5K3I+yZXHzwcejX)+W|ym)HIM`D8!a3G z-gE^m?v4dNIsWa-n+2l}Qu87|YS(YHoIsT^l%(>au%vCh_g?RO1xQ3?C3=~~RmhX5 zq3LnVUQDtgbHy3@EKidwX*uxeGt~PjyGO0X;xqly0sT3$I5FW})$-Z@6F}bgLH=|Al)I|-Q8W10)j}VAl=Y?I!o>AhnL zrDu|*@twF8BDJJS{tflCA+YTfO(A-1LI)vr;v#j)4+At# zC7hl0RM5FiN>l@_fPMq~n5#@8%1z7UIy#@ToJhppBdp5fIWEfH;`8lz;Hpi6>y|1a zx+Yoy1G0q4RVsrX*GaLD^W!}?Js%`c^0hMzNJ74i)mfe>$m+x_u|iJTJa(H7j+=pl zs*7g;U4P}uS&* z@gKhv6&E9aWpB(?Jj)SQ9}eWLcQ;ND-yfRcdLSxbP*GAku8(0 z_wQbv7?S(PB(H`v;vmg3T}ZkZ0@ds_5~fTsNcp4Yqm}bC(8h^hsT3XX^1fF{Gnp*z zRfy$g;{`Cm_LqX2NHe|fuK2q>_jZ| zMYz3+RNbG*i~^}0$(*R!j^t{^mKYHan4s{K?B7-*L`x4mEWqVo`I_Lu%?Z+k|<^x5e2cm#y$d z4F;444aExoi0F+9*v^fu_AFu=PA#Sl>GDB%_Qx0C=42&7$W*$LM^w0*w8Q0fa7ceU zotltsJ0T}T4nz~#3`28)WKR@)D9h+UGh7nLk_6@Pdy-MPFyT1K;J3r!S_GWnU?rX9 z`i&`YD#y3g{R6Gzh4N3+NttQlg?8~GuJ<-i;|{yWC$R@?@3zn_v>PU=7>9VUi&UTj@ANx;fl>wQ&b{r0@s=*g zQ}u`g%C=4~MsiQjmYvgK2zn1FR$h}_In3QfkhBMs)wr~d1ZJiXB(+6hsOMd!Pp%sv zcl5h&*Ad(iPS=vxJ+9^<;5}>FQSNG%w7Wc}29lG>5&oE+$^P)LNSJji0@ey}1$r zD#;Q^*=~EhjGGcZQQv|MOIz~fLPJ&7^k^0#@R)C)&JX+{5y2c3bWDC*sKtROK~_s~ z8?XIUfV^*AaG9zHqMe*0HUy|f-D zYJrMI-TBybdy#=P1IZxkrGgI==6X6}3O_lT6_;l5{9U464;Vj2`L4~^zsEc~aA68+ zxu<%_&SIK$Rj(>uy}f{89oWVT;fh4N4N#{FYX!|z!mM6ju~6g*iW~KdVw}Ot5mXY( z7W4iU2lpBn;7ERjK31x9MK8W@=PxkLJEp8lfng+Uf3l~+a{S&Av)fh5AK3g?*cUfEX?fL z4yt>l0};t8wUEFU+QfqybJ$C;X}MXZ9K!PJjvyP#yXT)()u_Rh~y$?XOb;Zb2d;!mWQ zpu5lF6Udw-dJIJ}g##@jmb`D!pP;U8u$vJ)NW%hv@C$OCPwg>A6G4vC4SM{Oz2-4z zrY@?yy>vNmU$`XL3eJRK1p|3d*7f1WYcomMiA==Ek8cQe5HFWT4TJ(;)F`&NBK>G; zu6I1IE1BAZ?Y#&y|41gW=wX4uL>RnuA3=PjIrasCLVL%-PV>A!C}cQuAs?v|bwOIE zFNvDT%3}+?@o1U)i?dw(sBVMcNqqF^?g7V@=eQ_^q7Y}d+GBj_v>+#=mfz)fr|xM| zf6Ho3taoeY{h3gL!qJxkm0p!`C(7HoE0$WKE&&Ufc3rR_EH;tVtJ0ss7Hg#mn9fJK zrffdvF$HWUN;ckA8o0O77OkH(6TjBA+}dxQ_Ms&dsrU;#pzf|O$y9{qo2It=!v$@! zabB#RyO0hO1r+m1Nl7Ad3oIOjo*S;W^#@X%jf!9UrWi79Gsy!~zr$9a{S6X9m&~z%OzmFXjr@}J?*3-YW|E`%z99Y#*ju5O!u&3%UDasMXyXrc2G+eBuG$=37%`omhBiuNa` zf(^Rkj`sFvv#44Ltu10g1Mh%P8sCH^-DGa$l7}u*u&DTQ0A00c(o46WtsQKFc4INz zsImtBN6d@#GnG-wRpVMCLfKNg>1@FI6@5JpBP#sRPmE zJcQA+Aapt zUlithoMD##IG3Z?OP7oxNX9bGIXTcK)hrSLN*M?}xfAp>`uX+Ea}lpwOa<>FgpbuN z1Tf*rF+X18ibHHuyoXus?W~n9nQdFGvER@Qe>5Yy?jcFdVHK&x(CfLWQDfV6pQ(`# zpiYGj_tEEP+3FvV@`7dG7p+=zzY*0j9MNIka$nW59JK@oyV$k5zn-djY;bzqMimf` zq>>|DdFRkuR2g^mu$kGTeAsBc3NtRvbG+N-m0I9}aLbe1DK}B^DAr{tf{hrZ(0EH4 zG?W<)VbGmxAC0R>n}_;*e*tNi780M_B)AUK9#aRs-s{Q@n!{q&ki7bE9tO%gE11Y1 zHdnlAqn9Bk|9R{{hD}|^JfFlJkxAXB!Jr>yLB!MFaJ$iE?owkt_hQMXGk4nMp&J%} zy6i=-iLb~Z@82H^=tPO1!tvw~!gx`1!gW-}xT|k!sc%ZDQIs9u(V`wq2XzFac6eO=KwB6svT2wGOiH0z&OdQV;x$G=l`rm)1yVaQb z1~+~P#dops4C|{R`gjn=)F-^8GEsyCT4fcK3g=74V$D0$q$`*vM8{n+dk)vHJPa%x zp(U5i`x>CD`ht>R&H4*n!Nb#^czmM`#Qi@C{pn9MW;n2H>PM7($b+{$PUg#*L|jKC zG9x&;ulVXXx`l2+BX0Si%lgsrDU*(A@?M$MFc@q}{Dtz30kKJznA=6;O9D|gg*o4% z%NvChgu5hvj0oRw!65+Nt1FqS`PY%@9b*a{YKF5-vNWa7^t^U0C3^CF;vmyCRAy7BOc z@~9bdjZ&h20GQd7a~*Cz?DeDPF#;;zoho%3)<)_j!@~VFW-}N;0x01?!PTOT$3QtO zyJ%v5>9N6Z3yYRF4+T7JMiXJ{@Zljo1M9+SE?l)GTK+9GYSwBesI{d!Js+9Jr3A=s zEKDBN8%!Y{lBgvw_YJ&mYnTd(^xL$=9X0pBZRw*1H}T8m+fpH`Hz76*zv&T()E~EELDr)@u()LmhLi zlhbGbnKlXt?7dUyfV~qPbe4#rye3{9@+px?hW6_faJ@`$C)CI>sLa_HiJmo;h>I(~ z%L)vMj-(`m+E#_T+-pxtq_c2wQ(aaXtJ@`7WWJzQJDK96P%38YPTnL%bTohXxQlvj z*@*Qr7dYk&p(#0E-(B-rzns&V$GW{ZoQ~>hdGI^0w(ZG}WNyxL+F$32D-wGB_Ip34 z3ghj*Dm{q~0=;x>JphbkQ#Ded95N-9@k7hXT_!-kaYm_9m{L^HBVGW#$E!(iTOZ+s zm*bV79T3Dlx1OZ68vz2twU4^xRmA1#Eiao+o^0rDtt@%@|LDS#vIZNa?Sbnn!W@$% zryO=7QV6-1jpq9Pq%QR0LA$)m1R*QYF%m;A<~ABiHD4UP(~OF=zDzLJ-g3KS2zFl3 zbeWpi2L}SBOB+Lw(ed`X#4*}6Y9$;-zQt^}F~T?a;m(ob@=?=uq@@G|5cfRu^(G`k zH*hAuy9idm!f+j1Wz@l!PrU(S=XM4hzIuhZ;(ZTc(%9M4-jM1T_dTP(=(lgWZykMAJGFZJAi`8B2KJQJY&hlLN!Nu5l zm6iEkq5+lYoS#9v>}N@@ysfe}XElOCt^NZeB9#jKQ4e>e2`4g43X}%NT*(q|hqb5& zQgjINtn1zAYk-x5fdgClIY~#{&#!O;89WyR!2Kr+2F;852;V#9kE* z)oC8v)-(?D*Rs*N->n5-1~3dHsoQSS%;^rcLbwzSGFxp$fw~dj z#xJ_}bbFr1MqMp&lH1zcI@J-vh4vU!qzbR1*u^+te^n{ajYAsGx`sgw-ZrT06iUj) zLhm}b>S*-Jk=W3T=qd5QxqF~PscH$XXraGdb#9#6ggLI2&vZ!ehW9~{JH3{1KOVZ&a;Znt4g4i#7ZU&vW@m?HO!oGH+w(-f1RcAgMH#{Wx1o1 zOjYnd`ZymllF&O>MmCl+zqj*MrQ}*~M?%IV3X(086`IVtARV}Dh`Fv3gEx2OjIn_S zYdNNAGwO=|xV`t5)I8x7Yc$=>$b8p6GO;{Ug<^Bfbntnw(a4AVHn#4HiGuNlb>^NG zHM4|3_XKy^k7ir&kyu%dmEJW=_eZUL8I25^# zp>|FxR`YAScbnrA-0I`QR~?6*_d*otPHA11`o>aN>f~94wQNKqus)>Yqik8`$+B76 za45r?<=Oei7l5Am&BZoAOzfC<^#`Xt1zSXp8CPJC5G-a8N*lGOPQcv+5>pp~8YZPN zN%!?kSnKkD)CtZeFHccTG9k^!AeoGN{D^PoE)aqWFHl|hB;h`I_s3g{zLk3UicI=I zIPkcWt_;q9(Y-Xy(s|pT`0N1ttmX2!bWc#sEDDaOl0mBhWrxkwv_tg`{M}Z40SKr( zvB&9obc?#A;r+g5=Yf7s{X*VBUm04gi04}^3ar=t*zHyIA<|WZYv}W=mLIsgleZ7Y zvWYjUIl6sudjrilXdo_)3jG)(&`2WsVPho3LRM!5e}iJ~_W6qCLY}$RbsPy0v?09pnvH!L84WMWLU8YL(e-1+9A?*X5Gssl3Ct zw(fORuAxeQ^tc)~87=6`!v0~}<@*~*+yo!vQb5VzW7-UJ1p@xzO-T~7A(oU7!oGSJ zjOBzcsKL&w@%$6hRa2zeTr*W2eMv7%HS3p46=9SzvLwz3$Wy5s>@g0drQh_xjLZgd zO%}lD3wp&1aDcuQTy=J>Ty2f$RVGPB84|igzwD}*;$4+2ptD&Uv z#{ox4%C92&JNHO;-gA-996Go!Qs8NyNoAx1N_r)5p)kGUC|lR{d*gqYQ|a3vcFl2j zZ-uFwGM#zbp)$3>N{j+&+4RMWE7F41dd1nBP^lJ2UqZ(P*r;qb5@iso$ZXZ z({Kd#nxS|~JfhOI@56nZH&{yAFWFBl_67S`rJVcPP$tv~`QwBHa@AuUIVmHG(FZMG zZDJ2UH@UKS!<5IKvXnu-Q*0Wa&81uTg+;fXn}H8q)-A$R4VB)nsPz?$5i=9}Rp7-3 zRCDq?$wo!oMF$J#w?68s)k`PF@_N5EHy@1$^zyOhtw3DCLhdtgREX$mnswW|2Wp!n zrUy9I<`*bTyJ;?WT)Fs!0uCV>OFh)2*B3?%cSdPR;osd2$_DQ;Z>?wmIkiPWpl z+yc7w#7oPW*&5fK8hP%_+3E`u@A;eF8%P-RAARaQu*)5L&bbm84Vw!i7Ace_)HM9B1gT? zzL}04SiQ|xyXz@Vtv!@`ypg$BfYy{F$aLFhm|t9%0bmnuZn0(GX{J?*j7OTeQ zN@i7m32{bnhW~=&I76f7PJzkoJ>0bfH-EvfsQqjrwY^HQMh#?q5K8xAiN;YclIPL* z<{sReXA3)l-mBo@m(1NHw4EHNw+Q~q9u(Hs)cl=kG;1 z&kS^EM^4qo`|8M2rN7I@m7cC{-Rz{*<#>q{gX?*&!$*!+0}d5SHDRiA6uE5L-zI?Z z62A+uI2jFP5u@JB$)4b-HZT8Ni=k+s)y(1Z+`No!%)1-pw##-*E;a3N!(~u|=LP)f z5lT9GbNxnjkEukp(W)h@yL1CI#)k%6uRH2AY2MYq9_-H!ZPXd;8V>@{(ibIaL07pF z$|N$>=%SdypTr?jF{s2WJ zQ;7t}WMFO8Iau1o#z63s=cwD(uSgdl$&e0WvvDIomDbk*O;Y_B6)lOD+gP74ootxv~B1OKmPV#w2+HRq|h1d@MW= zQD!X5^jbw62m514O~D?%2LKGAf;2(8! z>;y2rqKJs>r42+GH_e2Dr=OR}$0{ymzWi*2>Hk?8USO6s{iayOGV5i*GM!P7Qh7t} zRCq0)lt$V0^E(vVFX%_^{kAb#ettjX+GqI|pz0BE0{AL$dS^wH#2!9{1juCAv1*~-Yi z9Ix>n&K(u>sRrPW>Ocn&(8$8{4<=DZ*QoXn#WD$gSDxOMZ+@wk-`GxL=JDPQeJIUV zq3PClNV(rZlM(iIAVJcMi?)mz221aLFxY}%gTZt8|j@NL9&Owsg7wXkVK#2;d(rs-NvyXLhKET9&Cy{LFG-6IrVIPhqLvbU#AljD?2dx zN7HRN(=j;QQwd05?;Tcifxg_$Jwl6jbS|J zh%rG36S_Pi+&UXK-+J8~mt5|m50==HBzU1ne_p->x58==@=P_&?*vQ2YEU z;x<-JxnNxmi(I6O%Kr|ieo0`7A@Ghs`#AtPn}>-z{P4DHeaNNUS zJLLUWZT=s*SLE9V9*uOBin57pD~Jh<;V2^l(bR(1$QTcVbHzwqm%9h`#9g!w(pfl< z8<+e(qHSh`no{VRcb)I*@})i$U#Jad^bWqaU1+-ebh>LjC-5UO{rmXB{4qM#S5279 zn`^$i9Rm1$RSthPm3G=!8cuBcHqrMc#0yK0(2&dmn5la6P@21gV8b)e4f0C} zrdue5L98)KPliR^n3Jx=5@lSJ9(?W|J4NWm^Vpuzz|F=0gz%mv4>*PccQov2YIVWM zKvz`ZRXCpZ(2(-$umwAjRoL$B%Pv)pM!1pB&C13keD*kon?q3rF2j;uj#j3= zm{R&ubenRC-Ezl@Szh#){By8xHcR<>h&?_rz0z8M50wgy@ggznT&I7F=gYTSQzzB< zrq1v4fZ7HNk&f;DIed5od{Qb|4$&{RPiO_A?1s7Fh5(!!2#ArSb4hg>(CEtz1 zDVu&3KdJMuP(k7EoXe3PNgIEP2+hCFkM*cu?n>xW3iJb0OKMj65m5t~5)v!pVy(v= zJ_y_lYm7Y9~ zc$F$7zm+^kZF`5kSjQ954kip|RdIlTr#O%A9z$%okcYZCE+05dg$!rFg@z(vy{OD( z3=};sQ~O3FY6Fd%YV)1dNO&870^~E-aesM|L=S^L%tcUxd0>j@@5@KWY-w0)5mTU0 zxj7K*RxNi@?Dg|!Odt1nMIBAj+hXOZBx5*(3 z5e%;eaV|n5lu0!E+7xP>2dTmg08)hM*oE|>f5NmTO*{N%u!?FR0tg9;QzaSsl44;x zn)CTdiqtP)IH*%cux<{?xTnoDer6I~AGV~v=0?IQf6zC{*iBQ?4V6|hR;hjeOL7#~ zpXP9M8A_=Z_0@#rxS*G_*SwZOKnTg+r=;zd@>tf2+Q*SvmVm~=3HcG8K&qE|y5V0f zN1_E0#siOpT5G@KVD?hxK5{P7!>E55@g%Wv=gk(TJDHh(wbTcKJVrA3by_71)yjK{ z$WGLec8+CsDGaeBLb0$}r^Yxk2Xw^J6W*lp0>p}?xd-|OqyE`b=@UB9PwUbfM!Vi( z8CZ@nMfrDcaKwlam^$nyY_GjpU=lvlP{{CCDh(Enc$DSQ3Af1w^d0reei3ey8voh& z9aMSL77bcA&m7_XHT$p7`|xX&*MU4t zWleE3XSg&PDD9`xlO>9QVKz!aaV($d`x9LavCX?W z3`wrc^!V`h`HSAJ9_y5++!rJv>^SI=c@sN zF;q3)B+V9-djWhRRAq6&Yt-^9QXXkhOJXY~F9$GM&UpHI@^edwt{35@Xs+Sf<0zKU zG$6->C)~{>S_RAHV&MkhJGt8g-z^p(;%Y!Txzc{2NLEjLRR7}(SbyEBQ@c2^hA)|% zSu)Mws@~H~(i10NI~na5Z|OF0Hf|M4Y_s^bR(kQ1e7nf|f#$2gZYguY8qc_c;!cFw zO}$6>X*!L*T?dX{S5n)q&ryd)-ss-8pY&+QndP&!Y41J@!b0B7O$5qRSNA9IK;I@* zGwi+splaH?1S*u%6Ug;en0g?ndsec@tX?=trz>tEEWa|NB)0YSFrw@EWG4SDi%dbU zmq&^yF4?hKCQ5m8)ku@z;BZ7=!Rk{DnGNXCGPzSFgz3{O8~xR4^(&XS_v#UG zB}C_feJBuZ(rKWp!a~GXBHBXISWqNa^{H$-cwCb1pzAt3r6`7DOF|CL8ChC5@KSa7 zBi;8|>&$ha2rut@B-5ncI(0^SAV|%PfZyq*DgKpi@(ZA)t`XkU@^1ha-*5m~$wkae zDwzrb(bp!X+U#W<$AqPNcwYAE@s5#X$|an>gjdumR94{Ss8_GDeNteEW2glBSS7pc zq{ZZ}M{)ayNfDQDcU_(9=f}M_`mXw&|Y= zZgAtTlU5BVlKrgQ@Max-vW{C9Bfd*~Rnd9Sug=UMJN!2b`h$5SpM?CgNZOSlKs|B87ei%}Gooy>Df0@VRqtl8{C3A;$Ol zBMYsF02uob3cAR@!i4^T%5!CnskjTQVsANgIPaLyK0%eUm&(3VCwIzfF| z^ig+HUReiYQK!97Syad1zVvgypRA24TB7sE@G%aAF-y-9;yQ6upoX^Yz6!XyCWF1{?9uf(_-)_( zP6NfD$bR?c3C!>JS%(7x8;aHG){uFZ#+dTW+H5oCqNn-zwhDv<&9m>A%WK0Twxvip z+V_M&hC-X+fbGtWlF%7rUKB39Id>!6B-ELpqp-KB3v_$w2SiuLsfN=LLw8hb;qk`U zkjH(v&U-$n#l#|u=304o)n^q&%cZWAYb}_!_R^PB#j-GUA2)ljhne1St9#mr)|&KCcw6C)UQ>gU1GT3I+CwZ|QnwY04IEXnBi9Tv_CP`? z*p4#$T;=Z>{qinLg9U{EAeKiVaw9yzrh25-&4<*T z>WMZHVr>2l4XLYti9B&jma$p0N+LUZ@SOG($=g$cFXRnG1^y$|-$& zk_8bkz6`EQSByN~hcc_?5?Ou-)vcG)XxA!10oz@#q#v@kNXnPX>`2cst`*I0HoW+l z^;=^6hsquyeFwhuF1R}zY?fv`ew^#7blzVK6bVLcTi49KUN-uXss6JXfy>OjsO-N# zP3DCtX?gk)Y)8(#H_+yCdp~tF9BlnSXXV3i`Ft?-lAyhvjFIzBeJNZN*y3<#_3&S1 zI)L7fh{>|^|Db3+HBm`X?tExvu~h$@*U9qna(;N9%i)S-WhJ^JJ^|W=X&`@8T1N;# zz|t0~`&ffj!&r#FD{}+gXnu#THvaGKp04e& zq5NqaBoH(|KvxU=pZ|Z!^w!S`;K2`H^uejeRd`PArMSqKq z;S8UtU9lXA43<%WY)_$Ep=?wxMoyqY6A)fSkzpKxoHtf-LA(z&3-=K2Nz%9Ko9w;m zC057{Y?KYhQ&R*VK8pX2Ev?5 ze&gc&q7Wf*YTz|-Ytov(2K;~o{X_hZ&i%XdR&PIG3Xh@2Z^&60A!=m*+2mik1{g-& z8GwU>M#Gf|y429~}>j^XePC zY5m^~J{bZg3c$KmnH13e7AxQtjM4FbP3ZRnnD9v=MLlD`?jp%H`X7UPYAaa)qGTEP zUmx6+UHrdZYVAWX4f#DjO|~a_%l1P(=J)gOCWSsgx)uLZY}(j9^=s>DZuWcBVDfD9 zf35EChbvql==6$7sHHLd$N$)|UvqdGogP5201;c_*U0>zZy z#4i7j*B)O&eklCcXuF?SqT8Ch<`*Bvj3IpS{MX|CemEi~1(w7+?-NUY>WBZe_rTn3 zwlPOv0DBLZ)d}j#yML;w{D%&>vY^?ReowY;?I}&HkG)Vu@*ktylozu9m$^{K_Ox_n zwMCP^*x#lWn(eQIlRw*6SByZ&M9m`V4v+?^W0pxV0*eXo|M&jHEH+kf2)3Np-CSB+Gf{Y z1#S`mDa@>u!WQ?mi(o-1p~&C%qA#*+>*{gd!1uhoJcq6c$=~~C;{`7&AwjOQc-MQ& z^nJemghV1LT~b<>OE7Urr z-6^r*bZ*8BX>+;1chJ}SX=@+dFuy?j>dygv^v}8>VAP#PP1dS}CzrNHWw@geZFDa- z-B##L;M{DA=N1vz75$3)`*jWhoUDRR*rS3;xHQy5D*qs8Y496L#jkG>96YW-w;##} z)*INI3E?E7h7td9`G;os)e8x>FWg}Z z+#Kh@YjE(2QG@-dG~eR&r?;T=1TuqD0s^3TWKM9EG8x7 z%Xx3QsBWTU5kf8ptZ2cpmttX9wLQRX`QNX%UQ+zAkSRPyFAgS9 zRhO;3xua+K*adw2LUXPf#3CjRySf$i54kdo`y{$?`yAGDWB*?6-#S!Z>6$2pl)!In){C^45RJ1R$pz@iT z$O^{}7PjW^5YkvoUa3FsFpBe4r2bldA=oFu25U{i{vYGy${J0PF0r*9&8A+{bbRf_ z+cHlqgxQzUNSPHFDPpkNb?Zq#7A&CnS>3{9jX(q&uM)3ym#E*9Pc_K-uOr81p_$2xi5bpK5>7mkr-G_pX`D-x&y+o zU+C870%9MkO~8hR6utC|>0b2DV^D{Opy^{kZD3~fW)*7hc~%`onE<}ad#$^y&3>M4 zUtapb@6674ki+|SB3@1+QRMC9B#f_=s}Bn}ksS~K4WbK=yzm!JVYo=EkGFURsJ}HO zqOTRNW&qDfcTmh2OziibKBB(Y$lSGG6BvST_$VA<66vtu{I)nkItao5`D9}#SpDa2 zws8&5m$s6+kMk;J>PXoA@5CQGU}92IbVs&5=F2oIX7Q6TKavOt5b-)6v|a$Yc%D6} z4VH7?^Z~JcfxS8E@i^qUxkRry@JoCeGDCj&C;k4RSwlt0sMT!Iia1jjBl7P>W97{w z?BI)?ph#QGcw{N$jzaw$hSD&jbZa2xY3A`LbVJB6R6!y13K{%DzcMriAAa@OS*jA>LOe z-siU_{-Z|0CuC?@Xu)qj_vh%gwbN)9Q?xJWZ6XUncdv9wXV26y*xuJL)HR_;mVF4* z#rA3I1O&!hlBHvxwntXUFcc{Kz1L7t|3I5B=|1&E< z)#3w$jTaXaqwAeKg2a@Q%d+~Fj$m#H70dU)gD;6%U-!a-Td`Uaghi+BH@7m6BjMn{ z#)owWM0VpcYW}#vWq3mXCjr2Z%x6kBq76AC0Ou9R_&-H;|GQH|ddLq$>#|^% zd0YDT-{Dz}<=X0wb3q#oWycGh*36bS6!e;G#3vtZCh6bDQrah-2KC8|F|o0t!!P6B ziUypy#brSzFqa9^v&o51tAd!xtNs4Qw*F%q3Ed!=%Kl{;0R|19%QJ%(f>8V=g|@7ASX?(M8>t`Q0?oePoTFA35_q?4P_&Cw`s!Si;*Zbv{qv2P3G0X5@UjJ(r z$(+6&!Kka=g5K6$Ex>JK?}T$`s8qA}SG>Fh!R7b#3(y>vJrb`HwJkXYS zUMgH=u0e8f1xk4J9#)QkQv?VPM}BnLUkvS%!CBVC{Sd){WDv0ctAY?3%4N3(Pq<0~ zB88}^sPH9miEHGtJA;n^9kHa=>4IAtd8OYO0I{!J3hLPCe>Ml930iX&##e`mR@<7 z@zjh$vie4V($xb92vSA?#+0!(5jdL=0ARGUyGws;rKQ69Q6S_|$9tq}xg!{FisY3t zRj(l4^6Q|hFL)`WA74lQ%WMUX5ws8`wSVbDUk41y6N=@n3i2bxdAgV~G{iL~LuFX) zk;IZlD*6@8LX6K4P@P1)uu{QQn(ZAOv>Rd_ibr#`o=Clw002bZwEQ2c z84zt;?vTF8&J)9J0?&JC7?Z<4lKlK$otrVqshm%<)}KnCt4+qisNVQ2KHn>tc7j^> zzPn~6QeRAFmKvKMi*DU<8A!JGLHxv5f`=Ku(A*q>Tn(&(?+Xz*CCFq1h>~B)X@5xj zZ-K;0MbfUlu|*%VzrjFIq1W*}!Bz2;wVQsg+;O#>G;lB)gyth9w?&tGHBX$Gx=P{cDg5f2{UH8hiK?F zSMYNv{}?O(y(Pfe=@UjBGc+KfdXqT?=jVx{!#ncKmh|_(|Ey(BUTq)Fm^*ICYUwc% z5o{mJl_>VUu1q8;dp_r1rMccGr*xP*b2zdS& zT{1bcg?2I2hoV?mCTjWcUMCt};mHib`fo7!v{9uKY5eVs`dQEB1-UCX0f*hk_Z4N_ zFs&O?HJy%fA15;3FyF;vuqaW`Ykj3(lWL2jlz#1Ht$4@!Q5nRXTN5(-3y<{Iu|ZNu z?!Vm3xc)+hhE!}{yxG@i`GKnOAtCTSWS{N?vfu+M*`K{qEe?WJ|Rt+_5p+}^zk!@k%;ab3p*^Qd-IJ`ue2BH#M zILgvQep8Mu(0y0Lj!>Ow5qa%w$?ZGTA}x;8@)ki-2bIf!Q9cVbfm$Q=s=(MhLJHK3 zZ*RNzE2m7;0g|j;YpEJ$cHS1%ZnHl!S8*oim)-mbmFi*7b4fTkk&9?r*J(1@Shk&BH$6#|qZo1NnAt2u3(sBv* zdc^8eS05^;wRY8PcdSc+V|yASBS+GyjDMX$Pr2tRtj6%gbAmlv(}#k&F6+=p~3( zS6yJBOIrx;B9F(80_7M(?s;o9YBhSdT8Cd=+(}8CAYpW+B^cg@+azA_xPhO6Gzrn$ zPjnk#Um5F`CvOJWpnr=_f0IS*TbI0-#7CbjQ|o7<12UKv5#sz&sQUJP>qs};|7p&kJwVJ@#LW&m!;v?pkv&^elz2bx>(Udh3J5}NH3MsEuA zT45{wMV5bEEV+dIyvJ&Zslz+v1SXBKhbq*bbmG2U_@25YlSe-|}uU5noX9?j&(8!v)$b2bf6 zCa%NfKd^|bfVv^41%Z0Ifn;MuZ7mH=lU2#a3GU^ECRfb8nM!;{yTvLq@}RRl-_67C zFQEW%xQ1AO*fve<6+j{WmhJP9- zsqfy%&takF!f!!j;`G#)_62fn$<~cwKuO-fOv{7TDeJ}{n8#ZPln&*B`q3T$o`jG; zj1&kBN7_HE+^=zZ&_UB+GMtH`YxS^4+*F|>tmO83!9O0h)ty)Nm|uP^ z=maDorMCoa_5;8%uVG$(zXD2qfLErmMiBOWfnYiL`-yTUN=n`K0^-$e6^5~@_m~!& zLv#jP(MaDU=THu&2u2nr5$_Kh2yUJBd?I+?{ZAK>kun7 zgx0C-5aVFB>Eh+VYQd<@bfMV$QE(HLaJmYqq1LLqLIjT4e#M!q(j51^V6886N(Uh{ zo`||}HI+(DPb~F1I<@Y1#~V((qSCebWE4)j2G@UQFMiA zh7~4rDl_Q~r*7qrKM^C0o0Y0x=R;f|V|D?hUnsLL|Bo z{3ZdH*qM;1TTWKCbqorQ5lLwf&%d*di@qR4;Ou8|@A|5@7$MaK@+Bz9k6rBMnlL)( z%oDw;K!MwYLpvIGd}M{2RABH0^+^yiC+=NUhJnFe1^INHB@zav;Sbog#-)K{i#1+r zgR=tva{XmU!s#YV0xrgq>rLXxL{6QEh~Xz6l&_4BPw>)Z(PVMwn%R-!VTLyuh>UfdSSzf?x7={CWa=>`jfir zX1KAN3Tm5E{>xn1RF+9^^1!yXvWwi9Ggy@UnGF3EYx4Bnu#1r1EdZ~9tUKjQAw2>l zyDAfmRE^gW>g7S0-z>nZZRGl1LV2xPxfti zaFuv?GwHLSjD&42MlQxI){Ra8Pd=~)2{&gTa_DFX9Bm5*L#!Z4RuqQm-e8{ag_3-H z^_f3mT&(vlUO4C+ymJA^vrK0_)$x(+ol{d(G99dZ2Ae?C&`eG&*cw}o7@uFDLkV#@Y9HJze) z)oHayPh|8ovo?k0M20Zm$4a)}F4j%2uH&xL_qNcV=|=@<eejxM}x-m1;a*GGoBMHMo82^+a9jz@5bysgTxlJ*Y+Fj_E3VNkH^Y3 z&Lg;J@vNJDJ(OuHorxgWsH_su_7}KS=v&%}J^=^73kdc@k0C&laP`02s>tPP>mup` zEhdEX6Cv65;B9hUj`ZO@GCx_PU*CP5Q;jQn`xW*ZFY<|opTt!L`J?PwZQ7w3Ez>PPr;3J}dr zmG!`ez5jnay;WFSZP&G3q_{(I4PGc#ic68=QXGoAy9EvI+TdCWMGD2;-6>WyxVr_n z{CWQ4y}xYc$WF4d)-~stW1a&tU)6Wn7b$@67F;J7#sQCK$kx%#_^<#+Fp2t;Qs{6D z{Z-C3Ar<7M9M3j_bA`4Kw~FMtk>u%B-@bO5P$&B5L(V``O?@}RrumyuQAIgnBZd$; zqYBY$Gh-Ur+V*TEXB!ZIt<_}D;^(sqwE805#o*VpPunYZ2C6%pMgSnbHGQ%7fbXb= zeYSR0|6@Fb!*8MZ?2WvV{6g%>jkB}KEu%C`q~>p3{$#i3DpLP;`@N>C#Ldy(n#l;4 zByyv;whOGbdSUZbehZdrcXu={D};lh1X>F#&M4i?PJStTjq;bo1^kg6OXtfkx>$(#F@wS-IR$ZjA4^J8E;+g z(CiTp?%FMU$^1QspUOs3bjnC#j)mo&K((0op`z>hI5(TGR|;XxwZ`}(`#|KSVZGi7 z$$ql|Uq?H2r|X;oWpZnYoXaCp8MFoowK@|Joo`m?!S$m84}x{yzW|OutO-93iABmGRuav-O&6g=s)Lz;%U3SFS?3^O@nlaKnDH4Ikzyu_p8>7LtiEC#$u=dknk%Kq2FizJ34po1n=kcP7BArNFLHw4>)>cxDf8^O}>!(F8o<_kqP^*}m znG;E$>=@ko<%%dmMNdzkl)C_@ky_t5yCXL(nbp!04n_7etg8<1jOo7#$0QalQLv5~ z53A5KI{^m;+sEe!y1S2K_5H71-Z{X}23ZsA#s_ zHz+ko3D3(xH}TNC3tfBD3PX#3<&HMSC8UoHli_RqXI+69oj<`48W7@#Wlyxh-22PO z+dBmdL^qdn>SyN_QYCnPqm}>&ZEX4;Qx<134d&j~> z?#nt=uANjd;N2nf<%41X*Iwvd_0B#_f`ce-Q!BmeT3IpO zM8SuAE(Rs)Jb?)nC*C81;k;UOEaQv5JGm6$8oEPlX5}Y-$LgvJWsBBK`Yy?t%k9r{ zltne9Mp_e@g7l;_JFR=AOV5KFH76AY_xxBe3uBId1gv6j4G`~k%LrP)?3?nJ=+#5l zxc$keOGeFPR`09E|L8Zy`E{zE+Gj1_ro>JwaWA=i0o$t;?!Du4S-(9^0%@D!KC{99 zChbRj8_|E~nL{d0{$^GV&kVF{!vsmT#U9^;K6OOhb0|h0I#yE6RAwPQpEU<;ONmF=w$caNGIQ82g1GS^@7~am-=nD&7#<$&@WxjxEh_$ zi26+qI5JO`gS^A#BXvWdF}sH&#-9cJVmRVF>oq4s`L}1`!6*5~?XMVvS1WqZ{d|#z zUWsiJl4Tae(Ow!*_x&U)d`Hf7QO4C~^=B7%jxEC}@8j5URqEwv4==on92>l<8AsjPcOKfh4@MH(+qsx+ zc2?(Fm(#Zn{D=Vtu2C(^UNSN`bMvtC5Ja-5$B|tlM0DKNit5P1+4@#)28&&N{6@pN zweH(8O4PS4j>5M4eU$of$@rh$5aNC|l+hSBq6CE~o$=no<{PuB@K3y4Lir0_E$-lz5Q&A7V67jsRs17)EG+L_72Cn6 z359Seu?uF!U}ig8BNfTzzLVY zA@Ktu4G!Fo`4n1@qatx{lrdk7#ENqJZU|?{QhfP=X*B`7qN?@nF(!qL$lixI3MIWf zby&AaJwAG0>-YFeOQ(AMuTw2{J29@=$u}WZe9ekPrySac=6u&FUut%tOsA>>W%Kql zrq{>sJcvPG()K4rmN~@>U1}dA+!5J#6#`J8IpAA@C)n$zA476Bcc++hT#s7gKo}gZ z^du)9x9=Uq-FfjN+4f}kZtl8D#ze$1fBd{1i6}bpYjeuu3;xwhb=JDA#z+7`*IlEl z5`mGe#gN@Bah|^TMH>*YtFCB$h)OsjK9*!N`)+L@Dc#rnb5rFC2sIY;iY}*AZ;R+d zW?qrh;kl%)WERjF_=MdKy#_am$6HZ=#E;ng&SF;K{eS@zoRMP?IiN^ldffPdq+$?0 zy@4xg%{6*#_0?xqP8zLg{3{`B$42o2YX{s3HL$Nc23X%0K$s-#h(4n(H(9BCQ6c;f~q=!m)ex>2)gVK zyN2wB&$s>$6`#Yq39(juJE$!ta#69Jo4N7cu?Zrq_R3d9v0rJfspbr01^l9kxH$|j zM8)kT-Hx@#B4B|d_wB^t?{kX%Vj-F|m#N<5(KC3QO+0YZaQBy=-g3tH0-3MqS?_|y zpd0%qtl_RkW)c~HXUQPz6S19K`=EcaMpo?DU{aN3gD{zuJd!UFUZ&33#S=tYISVOu{0R8oOS4_YQK3^aSucQ*buqr{l zV0^I-;3u{xfgz2!e`G$HWi`V-f+BVnyaD)-n?DPNI~?r)LTd~;g~0#A z5%akzZ)=pKsxxd7n5R@yee2UDmZ3~%MgNrg%#<{CYBqiy5SY(HHd)_>q|rqkoQk=p zp8)P6Pe_Nu>79OwCDks80v%Ko+hdC~Gbl z%snWfE-4a7B}%}fjaBrfJ#>p!8Ow^{#hg$ts`UNo({6UvQXr*lf#X`3Gk4sHm1)_anq>_6pHOiMD^VL}IwU~}h=KHG0;9|yPzK)0Cpe}B^{b}cFUc>NWGDp1n>ilh^D#z_Rko3uCzjrk;QRHDC*4vy5l=O_hFf^nsg!2C|jc6P1BtN?E3vfuc~4R zu0(=?(n=ftfM(3MG_9QWkKUSF($}62c#AWfcf=ifFGCF zMqA^D;%e+)j*S(DmQX6;d-L|S8*Vv}ynUQ!2DAuQycEL@_kd;5tsL&Q;JKSN=@|RACTHAli&ua7STx%OI4MGmSiMB#sfpP2$OQrPA+PqZ2h>4Q zYKk!Hm@VSr%>?9r%z{{n+mP@-k&wy&d<*r4&;16NP;2*fc~ z^^>*wXsBPJDBmD$p4k9N=vvcIt(^}@7AR<%`T`c*ZmzbRcwg~sUm33+b2DOGDFTn9 z`C7R-H?OLF%))cJ-at5bf5Z|C$M1AZGA(*r8?u!;Sp#{s}vypIo zL(_}VDUCX5ahH;oo-#s*g@UKhbAtA^a`zxYVrH|7D<55FDzjM^+httolFkw$X$HoO z6X9Pip%-a2zfUQR5DnA87V&!mO{B<#+tm5eZ4C#|r=O*r*Nt7MPV6lPNe$gL%Z`I_ zSDFwMW@#J8bpPMuFiB8&T$|Jt`zC}hJDqeI1e zC}WHW$~=cu4xoZxnyb2cz|QUQ?{)s+JGZO4?o^S@nm~rCyDsQeiIzWC7Jt=+&##6$ zM13V5y;g}o;EzN{I&wzjpMA7nwx~Z`c^eQJ5Uw+FzG)N?A}>~e)^uCt<5IIeMyS#I z93)=9YOcEIMIZ(TxsyF$5ZBVBJ+ykJ`P4ayPW|lbkk}g-O$+5Zm%~Y(p6(R0)OgU2 z1#bT^`15Ut3$ZHxl{m5M3WX;;64Gr;*x7fxtB5c!Zr%A@8hGl7#;$*m-z|o)DW!^^ zNivz)C%RrD42>R^zND%bnZF zaH}1uEpz4_s;=k`o7nXu1Tek~l1Af%3}Dn=Q@u&-nj)DNbnn4vLzvXmH^-`ddI`)F zq$*se3aW%hx|BOaGB476eCpGN=DZwj;|ivUSv@JOb9Tyrvz>1u5kYFtib)I6hB!O& zU4cYINWqisP%$GjSl~msvx_?f2f_LJ{E|1!JS|7?675(gdRvXQdJhiVsF_q`krhve zI38a-HP?^|dsN4}z5Mwz{Zz*}mADT|gmV|W|8n<5m~4)d!L!0BIIF+ozm{aqy1-^d zFL=77EGldRU{b**SSPEPoy^KF?4fj@(~@4UPh>37<$F4r171xNR2SCgI5OJJ;GEB= z%>7He$!Ld%tD4h($)Xlg^N{s|Sk~@NNE@@0&oz2`FSPNzn$uNzEIag2=I#)QEpJvf zZ~i&*=TRgPqfgWfJZYjawejF-K*wggOYH{JC*XDqy4V#!VL=IQK7zZwWoVQ6gq7 zREqs_9C_|~-yKLwINak4(aNq|b%7#L{Sj~-XjmvT8Bi!47jdA~xzbFE%2&e5M05Oh z>emn=QK}Eec(G^@8?j|XPs-;oqhC>I))0MRl<9ytMT#i1EM#%FxD`CUYZ#!YV|_Cs zO-7VhG1OIkHKmQ8QS`U=9pQ?pQ$-<~fbA5jn~kAzOop1Cxy^49Nl(=9>U`F5ITJ+{ zz}S2x5Cnyt6XetM>Y41aslompE`*(&B z9$aC*SfHZ)SUmm8&Rssu-`>9_pue-7YN}Ke^Uw{JbhcIJy%Iu?;wvTGRqin#o*2PD zdORnluFm|_U}^dYiKrCm?1OiNovF0E7A+IH3%`lPij0j%gm|4HYY`(yiMATmpnaUH zbYi@G3msa0och3L`Fe&n3f=Ur)ZcIR`hfx?fGr!$m?AB5UTMLYjCkiR!gw2d+Q+-? zLE2zIS~@khZ8}$1DnPFga`yRGtJq%ra0%ihzDy0x1Lp)!fvx|Lp^Zxblokpg>d3mt zNm}n8PaEUpf)I_c;jfm%xdfK>|D;2S`3o#|fA@6X#1hxop}^t5g-X9hC1C5!Dq$(M zaW$Jmw&%n#-N9&1BR^REM)Hg|H?BJv0VI?)6dR|e1lB_rcWU&A42x#X!Y{Et=gIiC_ECisb6_JYzI zIv5@H#X44EWZ5&|b;~v4?{O;gzWa6r&fQNVus!}kxFt|y%Quf%-T5IQIr^cj7N-cj zuH`WC>Ouu66PeT}6aMzykoHtX6%ihUCi!?!^YT=4v0#iS(Hw5(7OLH}4DA?A#df9d zlBz1zUyp!6?+~B+niJT5McE-u`urke2?phN2O7~kE!QJ(482VslSnubq;poh@PH2l ztcHBnP9R-FVp`1euN^jGx2NmOZPusKL2yyYj6Fk2mj}WKyxolvw$H_+>+os zFxldRWe0zy5;0QMuCxf?eT=)5zEpHz2v~lhCs(+}>h;+~cN*gz9ii@J)JP_wC5upZ zSA`+hIx|akLSPlha~lVD=D{BbI@J(z^CUc)M4C?Wgs%O+ zjhhWsZPZRiauK)q6fRltNs((iv@^XOQO({Bke?a%oq%8wCmJm=K?c21k5;7mrq*!< zA0H3@Dyz|Z`}S;-&bpu%@0EJF$@Y-oWTjmYkLrrT*g@dQBDaI(HZp1gzS+;Tv8krU zH!0)YAeFuE3s9}u;#2j(a3u_Ho3LNF*XT7e@e7q@hR0E4^$TAWY}MQ|GBN21Z`tmv zuKQCd>2~yJ4d;oAOJ`tTD`yt*cRmnP>^GfTo6rn=uBu|JFgDTJZ=7dQFdes#+ualF zLzjNySjGFo&HJ@c7=Re>>_|0Cje2_)yn>gs4rP5du4YcVn?Ha3OIagL~fHb ziYDHhQBmJ#SO)J*POv=@{R1Dg+eUc^zn%F{3*a4Kaj|6k$~D|WMP}+Ob`LgZ3%9{x zn#p02-Q?$o81@o#d=vdE#~pl-FDR#VmSK<=S);_SWMs*BS7P$s zH4QG(h|cWWCjJA#=Kmy>lrf%++GjuH5v7KDv?8{+6?!~ixb*fq=DWp(<~XE(zM3IA zFmu}r$tg#+A6WXVE9p;J#G#H`2Kr<5!DU-2aU&v9sK;g8>oP*>WNkG`X9mgEg3Ua( zD7l^*HbHcGm!v^3`HSI}%p6ObLy6iL$|c!3W9jh3$gKicGWZeVX?4&=d87%m=89_~#Z6AzwWX`fcou0erzqg~1jEOSuzdM6&u@*j+f_xW>vHU0Yc*qb;Mi7pedb`$Kp^ff+8Z%vzkr!eP)IpkAx(WUSz0)XxMJPG*;iK6KUa7 zOHUr*6HsG!qbGE@k7C*Lm^bK|J-C0p)^k=b^uh&8e;|8owktp6u&&r-u%e7v06kmC z95C;wt0+t z%A-ckUhqHj9wM^9gPTERH~!Aus0D!hdLw~5f`l`|FQ}q}nzKFUqPwfUsCr|UVGab8 zp@2Whnozv|K+(A=_#FEQ`Hd3OzCgG42*O?5FGHGJ99*AIK)ITE)FNI{ge~1lW5(Y; z#C(AF91%(eFGkuaBl^F2f9sSxb!dNe5oz|r#bTDY%sFv}9QeJfcgS=b)@VnjOot2# zAI1=Nz>^V7BVe{wy-I|cjF<^jqA~QSIJ%d#`qY`7k8bx{p}~tCmLKEr?Zmo3=8kby z&sy&L8xIht91@EAyvh0%u%iP)V~FUNcgrxaZNVhes0QLX(!Od2x>|7LrMh zq2NhX^`!$=9rll}2l$lBHLH*NlLVpT+}v;Ab2f|b21N#fFtz3EKB5@!ue6V;gsbUJ zHZhR*DUx@$-e%MJ?veyRsavqO#?!KS8Ys-iNxuuHE0H=naH3M;Si$nbBeIQazk~)% zm_J56Ch+(50*YG~(vre5<~t+4v1w@>Q@p5NuX**hwY`$_HCQ0nQR2{=NTuV7SFan2 z)yT-ES$#?&2Tyc8o3TWSTx@Y*K;CvZ=zVEr3# zIVoSDGI|ver`(7uM{AfT`4(TIAln7lj|=6CcyQ-Wl5Wg~=}FV9Tkk}kZ!?jlD-hLh z&nmCn`b^zf{OA{`g}vD_PaHcVYvHkkO|EIZk#Y6dboS!pU=TnEX@kG?lO2yaxti+(-J9Td6JGy&mKJn& zV8ez4IobMxtTObMPc*X0F%@p?I94T`G)KJ~YyKTi9_lRZLQa;1GWpS(0|@j1zXynD zBzfOmhpF5!ToU|nQlzGK;8}4S1U@sT_wrt!K z_aUvdA)<-$o;<7);}9Xb<5USfaull~{Gzk@-0YOQSc-vz+2o?&CG0w4ea()n6&^dLLoOXoXIZE_S*Tab$C+L~Vb zRM+`2u(SqZ1lD%#ft3nz}=t_%!X&i4tF>@&BGv6W03ohx8T1_+-WFkZi zgz#<h_*vgMhuRQR5AVl(w8 z@`KI#%$JRKZtbIcGZG(L)QX)9fivN$(Hv6_AtN|pcu@th!?CjCwgOq_Oq?&T6yx8G zCn*z_%wF4$g`nj8GmuIadvf)$xSHB@REh5v=B1)6uDMeA z9sx8nKahd@?nix`556!@a0t(}bCFPx;o5DadI5Wh2x3*ld#$Fthp^|<^@+EM;`lvx z8=xbG@He|r2a_7rc)YzVf|Kup|^?F6vTqP43-UBOo=+FtrAdv`c-R!aag5fxn zCa@H2HDxQJYIKYGAa3J6ABMYCK_`jUKNFwii1|855r1szQB`?=4C)GP`kh+-vyCcw z%+%JE={?e2KskGrb_2Ek9edxI+HUIQJhB_C`h{n4tEPQUFXZ)-Y8DxQt({Rym}$da z6C*U0QCTuo38qgnxx-Ph|JDG%mC(>GB6-|)$3vybW6x3EF2|(AM|B}%Y|DBm^Uk}3 zRl2Kw4Azl_`pD!)Kbj!opPUG+GbB`^Dy2PVys6Ob#Q3dQkv3gnA!Kb$(p=^$@2)$vT-wj_wEES2PhM#b_2Y8;E;^$bdre=VAXVokvDYRYy{rwzPgQ{ z0RuSB>oHRLe47{Z69Ub)NF0j+jNpOW%5Uh6!L!f@s22(ye8!}?Jr36r_m90l zIM9q8JSXFAZXNY-olb6Sw|L{HX*jK>=AY7!PPg*}CH5C3yz7;;G{}9#zF4XPZNUYJ zX{QbQjl|Glv|G76??g8PF(Xmv-3eK}XkfAChAI;P&gN8_f%U8H+p0!kK9T^#kDv5Z$ z;cPTPPR;bzexW=uI_zNw8!~k^xA3)E8lCKK9v=C5-k-wD5m7&!e~vRsd+w3XXh-f6 z-iX!imy$wA3Yt~nBD_`?^cp%%K;(P&_GJsAA}_=}$`w zyptPx(JahX(JuHp_TK7P@ca{bc}B%Q4=PC!Bj%C^ej#t$>+P|UY3Ka2{w8?~#0TF9 zX~5ltwN-utX>=)9erCXGpjL&T+ye%DVGMy^hyQ;76s3&QwKk-Jf}Sh#IS9mmf{@6A zgxf>Zm-&LP_bf69g+M?+2vC?UW3JwV7(V?|-k#Ta1!LmG06O?*x-{@3-0qHF=~Nk2 zVsGy4t=jypGM*=^B%l@8s-imLn%_m`f=SU-(UazQ%!nhx=h7VTIPO+qNi3C@Or`Kg z^7H?Hcd;PzP$52}X(zNld~Nk-wAB}Q$cDYroXrjp5XvjzIlerpvcuM$@1IjUGlZRp zh(Y}6MdPrB<9XS6#J6tU;!-ow z-@6XK*lYKl599k76`NV6RDGioK~F^}14^PH8?;72yl$aSXa0(*!5wU0Td^>{W@t^Q zWwFbyU>Dgdvk}Z^#GUHJ;z@3e@L?86i0tTMOnFc>P38{VZ4YgDDKYq?EsS)*!ef-P z`-0C{Fy9z(p1eUA#5i2!HDtCWY$19rqY`Lo9`*k1%D&*MDUH0_Yi(6>DC9&?yjO=R zmd@6_PP6ZQni70N&etalEy)HzkQ>dvV+QJcw)4+>e=^+0B`E>sAXy zxojCY5(w5ly_h+0Wr1g__(v(Zxp^Xh=h7Is1W0LT^^j&7_x<2z`sO z0ns)=a?fLaX_zW=@H$;a$yYjok9%Ggh~mG|g#&n!uPs!r4&+6h5>Wtk$B=*#uWe(P z)JDTGT6Apc5!*r~c4!@D>E$T233!7r|GthkKY+V#Fc#h#Rl2(5<&{w+R-1 zB8`*-QSwPnq98fha@d>nfukh(M$KpMPK}v%>T52m>ZFn03L@jJV~(-gH8iR2JhWbEot};;B>R8yT|!Iilz2C)5+Id z0l!zJ2q+lcHmEspo1D+#Tj;y;^rC|_wU$ImVPs}m>kI4>sKpM@TJW|KBb6iivg+Cd{d9p?`bk$acn*W%D767s0#IFuX3C;u|*b-CNtA6cXMv zO=>G|$1pxR14NdwsWF(Bp%ytbU7lX#$l;6a$Cl=l9eltFOoY`VKn17W42Ev%&5~>THaW zZ6h2NvUzj-Lrsr5%;Guf6b%>qi_KTO-o@3zj$F(RZxXe;^HAo-0(c1Yp(Y(H&;aPTK93yU8;V z^zv{`^Mv2Q_patJcWamJULQqv6JD~O(?sYFrcq+Wk|pKwhW`$_4-){{mKjEsoBIPS zX5^VJclvm=RM+fs5EN&g=y@qdpD-&VAT-Kprazm%(nNxwQ#tJB^6-G)fdt_*9~-q) zFY{4p)`|QjdxDO08?I3eTW(~(YZtIA|z0>v!)yXUjatM-g_KQ(Yg4Un=Pg! z1%ds%Oh+%gx$5<0VDzKq zRX=&Qgp<{HMP?P+G^frBUHY)@0CIcSquuW~>#D%>K&~0mv7u2`WFubWvsvX`M`6Bg z6_YnW5sVI+7<>LI087S@HC=Rdc2gx?j1yBvDNI0Eu+XL8=Ohsd9dhlIv*aP1@km1x z2@jT5ry0L@4v^F3YCK&D1D7OjKgO4{w%RYe>^|X>Ax%}`Zo9@?;L?Z&1qnALE%ALp zv1%k&yZx_ei%ooEh$g}R!xyT3aPtUhys9*6AUNmy9h=Xr+V2XuG&qqHEC0Giz__VU z6kL4l7I=J?`Bw01r$)wn`kJ%ae%Fn1sT2Dc1bcUz2-XX~SC^ahASy)f`gC%fIB2%& z+_iCV`)9Gv_uc%f%SGH}`{{`bMGjbqXwbcVF#v4NhdlLJ+0Bl1 z=CaN00kW6xsNS6Cv@jgfA?4Td=MTRi9kZTOL8`r8MJkMHyVIl!D_7wG>VxejbYz|3 z7ESnj&!p}B&&Qbp&P}xkfi`Fr_wX{U_mjPL<{4jd$58afuIwJYWa&gKZ>KO zm64$PPlTo68ia)^^P$!T|0r_htlnrj!*VK~3s%1hNUBp*eSlxoKmW5ueD+7*#ujSy zv3SsHa36Dm=_V|&uVPaC3vkMiRd%EMqdp&$`@!3Jt-og?dnbcfY9|%Xwr@ZhnGYNj z@7pf@jaIy|-gdyvXQfylx4F4RU7Phzob?(@bdX7v+kJh{;WbM%G-`BLpw(QMkC4L{ zBo-X%$iV~nUR=1Rfm_AChjjI#lAE;M6W$kzM?;9jncq%&wPX>)4FlaRG1n$iueMP6 z!98raUcSb!_aB>q8j!J#A zIsN)tGM<2b;l<~>e7B0t&inn8N!QET{J8VQ5}Nm)Y?P#tSEZBbMm5mdb46ww3wNC@$E!Ub-d?d3@{(uQWZLcY33WJGqb8`|?yU^$9*gxbl1ZG0RpO zC=e2Q-qX_)teKINl#%qa4#X&DW(HXN@nI)xAV%*Mk7{TE&<4KIP^=n)l^ z=q>=XCOl+4iCGQQ0%%q7l;&&%#!M%GE6Y`9sO$Vypr}3rRgRc%MpUMrK(!g!R^iW$ ztc$1q*STuht{RXqf?~KirnG=e)`Y}JNHwT`!np&=Jw2 z`w(8lM-Zg4&1OEpK<-v1hz;~kxUyd7lG(Sp$*^p5}i6d%m~umbOkd zzB{GInf72=i-=u|TuZ;ch-eQc-jx?VIh!pRDDrgd{X5_S%K>cf@(YuM)dB?33^iZMpB41-D4^3CDy z^;L%GQGUB(Vr*G|r8Ubol5-j8@kE@#IHAfgi%Q1+$u^5MVAKAr1#RCW&=+gzu6LH;$S>MBR>I76XaEEr9jG4!)MtI1gE0U6T zTq(fu83})21lD8G)0Md+w7)f8M=Nph`+VGYzDsCVsdqdUjdto}M!unMP)>_x{2uuo zS};*FF;7Uit)QzvDbcIFLSXYMi@UlJ>^Io=>>WfHc zOHx1ZJ`90+NU10iI%2#gGVhwRzBGIPJfXvVc@z9S0|ohKG-aseHg8&Aq}TJ=#L8QY zp8_}NPs4Cn5uW^*Gfn<;1{AFc`N~cJ%>IKh$cu?Q5?<{ndwC8bXfmwHrw@BdBN(J> zW%H$*o`e&g!IOUaO8yNt2e|8kiU0U88*ap-o)&!l^`0lLBj6t&^H*U=iw7Npn!>hq zeA=IBzu`7Y>{mCQyJ=O_>j9l>KLFCmu`+)Z(31z!H#ZD6z(|7`X#1F43aq)Yc;8x* zY#~If^q#2vIw@?wXLwmx`F>H8$E`B*qfth*-nxwtO*VmRLCbASaPY6*m3-0Td#yU+ z2uN}%v{)&{96J$ooW_pqeCpQ`=2g{+;|(|mFK`dBmEZyC@O}jLyfh~{oBsQ=3U`Kh zNoNyNeQ%!kSgX@FzCN1A-5u2|D&XDLB)WsZk9gO|6Ztw}SwCU#y%knUaUWy~{;Gi` zXbCIlaRxNw^(AUFiusB&Axil*;Dc5z`*NdybDX2Tr{sg%yAKO?GXE;IR7V@^SKog6 zJuf4YxSKe=3lzT`HZ zI#yy1V3WhRWhOF^0xOa^&2Qn*fD!4%%fd2$qjoPUr6)i1RxE$221vc^pZU|Gyt|SK z$)@S;ufLr{FQlsi%lW1}3{@IOkZcfjf1A>e8?_KuC6Gs2t@^1ydX+*dk%Vq(qP&?@ zB-UMNdOrB!WYxK=B$dy+=eLc?Dq_P;#?O*aZBaSsO`JRJHQ6+{Y~{1QUEsr(Rt~vinO!6N>#wO8*RaEbC`y2N4JE8 z1cTSZwaY#AHSO1@pRep{p>!0brO%$j-?7OD)2 zcE_X1c!l%D;EpYeA~H`?>Q?FmGJ>%#MHDUN^)x(TV??_CXimSlY@w6hh>RQKV_Jpu zq$|x&g}%YkFQ;tRMtDH8u|p9z3)x5=)Pm#gg|Fc1-TT{sr@o0kDS|bmLH{7Sd}Yb< zypA4A>voh*@rdPBq4vvN58ksGs!ye&hFvby?N?B>Ulvz?)6r<=dloPJNG*52eKz%T zBYGc)j+t&UKHjq7HTy$~SubtxU#D?#?YLe8f@Oxq&)dnXoRk~io#9}+3H_hM$$+aq z0A;eaY^wsn$hX*0E;N%y+JMvlNFKVA{W28-f2SJ9G43C>!gk}UMur`?7;vrFXgQwlpdkcP{(8-)Bz zbKNO(mtQ?sgABgJhC<(~J~p2(Mv;y#tO~PjE{7N>UU2i8CKPuL1^keX|F-eSDd(v6 zk<@|`0{&zyhLz1t(btucprWbbR28QRH$q-s`O#ZGv1*qmWTr6L1HUME0hYvHE=hRL zrxne#y8>jdLEgyC=k~1;@2P|fiRaXme{b(NMrtm;w!|$#pMFY$_Zq7)cG-HH4BpE9 z93g&;LV8aFa&2~cN^omu2aN605`MiyS%~(VcPL%1c)Lj5#I8rnuP{V=LErtU4EB+) z1(PILWzl8*ukz_r_Kp4&=$^#|vUgQ~`oyzF3d0Xvb;naKv81v4PYW=j4ziOb)u!(# zkdRPkEP;N|C+;gzk{Zk7EFg|o^MrVPj>bscFmZX4zL5E7|0GdmzS0DpN*yj2x)#>V zrW(1W=E2Gze|me0iu-nfYylUNKej+(aNfS0&7GF1C;IzohWBqx-tYMA-jRXSm@kYa zAg7OWBb{cJqrLbj3YVous?%wpzfBpxU<*tRJLcm=Lz^mz(s_OsD zVPrbSb_**sN7Lub`QT`;L*&tEXBKlccq&Y#2AS$j(V>u?_h~}Q_0!8BDh*_?xixKl zD*3wYh2W*pclQzjVpF0?Rg8_mc*7~t9scNDPJBAuVveg>^^NeCLW)e;cgye1GrvXw zpiab#i;FOofPMLxLGxuxkaz{88RMA$&tOEn{Hia;daWZpemL_^jC3J4zR%T8cxb43 zMBUt{+!MYjXBEI``k%1xtSL1Xm+Hgm3ncC2Jb6w$L?1MjMpK#CN7GnwalI3<_F?P< zc9W82Gi7l7|Nk1V&&zmRnQ={lU?%@Rk2kW)St%W_ zm(p3Jpm4ZB%8W8uXibc_hl{+2Ee=EbcU&GE7xjj%_9h_4BtFr;k!~xRaPZI%_;OMKvEPTPTM*iJH*X_DcK6`DCrU zt1?3Bi?*QTImGlJd&XI*BUH1APnX0M$>X{VCsDQgQ?Psdua3I7)%uAt8twT0QGdqi zZ#i4?HzDP3wlb+^LXFeH-qcu+*B_&MxB&1{uvmB|oF*O2f$Z~co+4j`!N1sKDolPu z{*&=nCLJ3FJsN=ABj^JEFbi-TdJOn9bn6MU=K?bB(Do*BD=DY-wIrb6)ufe}m}aQ= za3r67PA}7-kt*?z_U_7vXyx6kPh)K9V9j-JaeK!a;RW|UFTnGZoC#|n`BxRoweLir zJ3UGA8mtZkVp(_P9|R#k@r{(D(JYpl%GjM%?kOEnI)a~hZN2Gg&HBfy(7Q%}@ki?l z7#VR)MDLC9MN9wSJosY_5JoF8c<{ZasS+Z@!Lj+*LGnnb*JDW|X$!$~J&@XQ{2LO^ zb9XSx{drWbw5w`5lry+B7Mn=E%6Nh_E!*1}7nBPS+Sl5Pb!e}h)1(XGbC0m3Cg5F32} z4w<|4jBtpY^57}HGuT$`Nqkt0qVm+Ek{DQ*=9%H;CdS&O^f&Mm1L=bDvVS@aFliavBKy=tI%_ zU0x2C{0T+x5r$VgmwvH*nFto!Vc%_H6Z-by^wayU_iM*}GpPLpd6MRurwd!yKdn-e!5H=Uls6%do_x*`pFgG?0lK-FCZAOQ5xaR!8}l9MF@J1DpD~fMZ%t%T(+m)3JZ(V3otQaPKD1 zyI&;#jASQYiQ@+Rq*biPvPtHF^PIw#dlP4R8BT{JX0`+{kROxm3i7xk@F)sykjZ%_R=iVHO#aA=kDq%b7tVv-D>8; z==VOxAjeRxLJpmXRg>~LJ2wUn?waQbe>aL29`t|m@beJ<#z$4z$O<)CsqQqKHWm_7IE4Ig#SAW5f)R%!*JqkG&H1^UK zl+Ai}@tvOpQ~Bw|TMemLWE1Xg%7OKs1deNhnWA%aH0984oed(7U(+o$ON;`NM2*E5 z7Fg*uE;1ap{1;t2Q@Gxi6-hMmB*hDXBfX|2(OM*jy9Md)ke2Qq7`j7X=ritf_WsU)xM1FS-u0|?*E$nVXTv*_q##ox z1A`>Jh~{MY==;UXPz{y-cs)EjUPoh6BnX}0WWt;nl^r2rd`<(mn^*C%(K90BzOPrD zMpz=-hodJ`lrku)pqXDCt zDFL9jnKh7Os&>;6vdrkoC{+0?GdS?lv6TCmc@#bpGeJb-Nqy*9jC4Cir7CJ8xEqYd zn)YX8$MIZYwl3$C%dTS{$eX!V7hHs^aCODoWzKVFt2Nxm@R`oIx^NIm?F%ZO^YQX0 zp0S#A;NtUH4(vbkQM&nL)3HQmUO7^qkDw$I-I1n+uBBqZ>9T2%N23dPYkMl}vCsaF zyD`*89w!B# z@y4TP8(cqv|7r-d*^I7{Ezy^4H_if;zB}r=(WWf?%sPo*YmQuv!V1BU+0Kr=T^mwN zG-u|E1{1kQqK4|stIa5U??;bmDuKILBAmh{a$Gxt6#EM}!J$d(O{ zrthe_`f}Fl^UTZrdMlD#rAe7ts#8SKcJQp7hI=5_`mQhYk6cLY>M0y+5g(UrcN1AO zy{z)=7vS=kSgY{JRUjUC(v_y1ZN;YON+2OZtN9_Ym|qRhnGU#of_bUYM-s^$kJ}TT zyaIO_8d4J@NdREk*zECGbfaZk3O}^>hcaaEoXl6n?JMd~`wMTO9Soy%b=4P`-ZURh zH={bO30?I&-m%sw3pZNL5U^x6OQ$mH->GJtYmK`QdB=UQMmdcXA#@#wwC z)VZ7>!$2}{_+q_=QSD-wtj7N#d0oCpNG|cc+8W`^Bkic^v~@^&CoyU7sGTbA|t zr2n9B-W?EL8<^~V#*|l;<-b+?LHCv&zOW)wjAuq^FQD|^-`Z<)&EyP&H#l0yz zo03=3?< z_|ew!LvhQ{)oVec8!XvW?ClC-nUCy4Ewg|(tZ)nelY{Ug7dlk_)s*bd-u?8Kwmren zZ`cIBJt1MP{#}ge9JuNM`nxU_%a$o%E)8?^hOM<7S>Zu?z zv!zKjter*;^O!{!@-$4!{&4uG?QfzmKbxS>Oh2_@Owek|Nh3{nl0eB+f#Sa0*_wZ| zjBa>aBTcQ7CHh)1DVrsbUj@)f1o-`X2sBbBvD|3N!fmhjrZpUQzlqYBwB3K>p;xFS z*JwAR&+jLx-Ja^ARE^IUYrW7Z^z&;)pkUjL884f)ICA^US;`=(_91_&K~1lT|L54f zoE%+{BoC&7bbFsT526+;HFbjB-x8mXiF41mu{9HKkv?B@p{M4*Mc4!jHfd(0p%$&w zuX!{?Oh()!`T6=_Mo&OAwNN3$iRfy<2Cq;^IXU+i;^z)%;f|+9;DSY_vBI#?3Wv{H z#Kk6x=*-oJ`knEtnk~?g2?=+$DS*o#lQn?~bcfPm!D7g1{vw7B2aAfkPHs|hJjg|c zWvrmM%<`*~QKne`9*F8o_XXN;qttlc1FLy3o_N`;)e%G8`Mtl^cuaCFXKr|jW9*39rWHAw zMcyBr@56fE*G40gk>@aECF^sG_PzD?(7?aJPJd1P-(m1j#Rj2vt%pYCe-4%|*X@BF zTdEH3gvMn~OHmorc9rjG>_L~muVI5;j}nBC85e)iKe65$ydDMzC(WTMBRFk1K5R6Y zr5F>W<>)2+NCE90-^~M)vg4f05V&NJLo11)qby>!fS!fdz?lL#Yrn8+x?JxIuawLG1C?-U`)>w#xz76IVwFK; zaQJ;7rLo^^X9(7{b^juMxZGWPECiy(sKX3t38DPp=H!xCiGQ}|k|+UO#UoCSWR!pg zltNl)^G`MZGkZnD7-V0`AC|}~6r&jId&#_8E6@IS5ZK`aBjt*PnVwihtfYp??rL|V zi2F@n*wWtG7JqtiL)!X(ajF9ZnabX1&CbZVn5EZ`}5%$jIUJ9N>ylUlJ3L`X|{B>i-=e|NAQc zfAeI3IF&k0ezY3E1OTh4sp;WmA|`GGrcA7=E{LUK&A^5*o zz$1Zp%I8limC}09$r$zhk2Iv3vAIv=Wm7pJTYFI+iHZPNX{Yv$JMTacVyYJrN&5t1+ z4-AgB+M!p0gR`S%1im9laKRtf6q_4jQEl+D{qpOJUSeR(F^^bOsVxlko8#*av0&UU zXuK*YC6JIUPv-mg-kTB50Z#@__JQe&kpKNz2qx8K5P>QHmKtGXz~2{F91CqHG+Yco zJ^mp?)>%6gtC>q&@G%{Ma+XQ*aZa$9t^_7(Gx=IUPH>Pt3WHkm$BeRo3P5cCN7=8t zhvSCSz`H3Pu)myLNEFtW;nUamK&FrQ&?}f;hKie&zA+w&I?#R@#zmK?JkVH^ljq6CR5WUrxN<=>e?F0Ag8OT5!ivS;AkwtPh6h1FtsspDec#YMy9^RgD#h1pVva@Q+-XZB*TY$dxwym@Sjgf)j&;!pvajQ zqzWv;cC4$LeLpl9Nc8S`jfa{u484bR@<%Ag)u4Av(KOfPPgp;~?56C_18%C2fPBdO zajxkO%UQ^r;N<)GsxH={n>x$Zmkfnzt_@+!AH(7Ri*{&Z83@#`%DRs~`eZc(7q=FI zHQoA$3m4p26->Uy7}8sG*^6ri0tW;#a*P2u=ro;9qTxAAZwAULt?Q_7BP*INm*5I+-W7Iv-4d z{rtDi0EMsOty#*K&Hj6l=C%)C5lk3>n&y=i)ZJ#4<69wiA$1XJo>rPlHX3h zonen}0!-FYayFl8G%!FN5>R@=+vCs1%?de5;BRKr2?7f=Z#Tc0%FcgaQCmh>Nyj1$ z9xqc;({BELk~moG4%^J47j3-O44RDuM@0RA8!w61MM9y*Qs#U$p9JkzpDhDj*(p$K z{a?Oiue2b;roH@m2{bV+ECU_2!4ZPeg|WF^F0LL#|uLN-M*-CR&np@6@mje zC8;mJU}0s##EpO8qd*P8l2uR$h_w6ul|hG?&v{o|nkUAEj}Hp(ii=Cc$7ALF{Fx7e z>NtSBe7rLbEdG}2DZXERzdRW(H@cE*{L=ohV4c+d)ur3)#R=+$TPy5GfG$MY{gZLU z`3+BKF6U06iD~bDulK*Ik_!Xd9l$kBcY~9l!Q=6YzsI!5q&eOCXI zb&1{m`W=ny<*KrtGjpp!0Vz&B0Lxs>ndiy6hy8^L z1w@yYAw2fbNracbFK(n;q*SS|tgFL#cCAL8SY#+J&rkODm7^5R7ZvyM?srWR{SH|| z{%FrRJy)QBX3Y+A;sIBj^Lnb^qXY8}4Q(%s6-h#1huh9UWZsCNy8IhU$-`-kCP&=$ zm54LRhlN}_b}B&z0IB~QdeWv3eiBko?1c!0vX@A|`@>kE(g z6YVprX`eTRnBQJ?e1yCZgniHOedwWIJEh^{rTeAfoA7Kb3+h{#8CTGnjFS*CpE*v4y25_4uyvcvFL`~%NRs`uI}IEv=kx~pH{?#Upa#bmUtICR&+#yof{bu6(td4 zrK+1VjI@0?`S740$f47RDBEqX_dk9vmGVW)fwshA#xd6{EZ^rl2M?n)m89Hu3 z2F*(rJHEpgIA+)tw=?;#%T1oNDFMLEzsks#kLKb)`+|Op)h_x>my^gKd`8hZ*9TV0 zXL%lK1PJzIPSooV1I<%&wQd-Zymn{3nS|07+(@cG9NP9}4(X!NdVnx*rzJd*Iun)Bb(Q%fKX)rX60j7V#ZIrro_qd{Gjv6Fze?*Dq!LtkCP~@fPn;@fD1Y$Azp=!2z5qA#_B3Wm zIxe_xX4_!Hz$Vn|9kO69*TpLNgm-sHGn7#p5IDh2=vMBdD-r+Kyea`&+gnF#Ak9{r z7%Z7hax+afiv+ILJd&_m;!X?eN$FL9QsT zu1v`I<#X4+*#rek1^Az8ANZFFdexPl%wFx1HgXh*3J~Gq_QmO3wqfmCw%#t2nI{v9 zEV^V5Z92AM!3jEY0ZHWYuz~Ga){6xzQEIP9l3`oJV?D3*0~PMfd8pKv#aUQznbq>y7$5Rdq9EV%5N zQH#VYT>?c5kc(_HM}gciw`W*c zEyRAFRcyHuJM*zex~_h&_)o>hvTb(<%I|V)A)?|o%=_IRiM-uyk~mM%GuTm#d$N#O z$9Y%pDPM)1RJzGpuBWyf0|1kdbRvM*S%3ouN^1EsN9uiK%r`Llmj{TDh zj>nUW%b9zTf`Q&8-p}oC6B&`@@&q)({NIif0^@ENL?S5{V3!Jh{fdyG#}i+6IPf|U z9`RNJ-l__E6m==t(qBG)wbAKGl>qIY!YMBGZHqg+BWAWuwLD6;^~_fn4O<(fNrASt z=jMHyFNPaV(|w?+p5FLTgF?r*z-bqF(Y=!IBf_E{H*KGksS(u1mFHY6+E-Ahdyf>0 zqvqblOood7BptL&PAjFCSGEmb%foWBJW4kW&3{z}^B9kN{WA1A^F`9qI<51@0_(xgH|Apkl_j_zi)WIX{*(3 zh0SfFuUHJ?BQ`IrEA^;LWYAlE*2z*O?L0z~fws~!1-67P7IS=3OWn5SP>ca%@CRO6 zk38|jiDj{T6b1{6_-E<=5&Tf32>|CpO(=zsy)}x<>;Es%#UMDpaI4jU;%V_$UusEI z-^Dn;^e#dVn>_6U%o~%WXjPKqS}Mz6K@2ID&&i@hl0fb$VnTP(TJv{kGqL=+efdnc z369?VOq3ykfLUUtPcmsWD~)w$Y-P@eQO`t@mz7Ke$!|)pDzq3Ys7hWoWGfOpi?lc# zyS3$J^TfSQy%s`6T(NB!XTUeX*3sjzi*;A6{oZ!9&4^g(Y$Jxq?`;iNiE|(*$l+>P zHJkQDjK_ZDzCCBTjXaBh?RV}%r9<2$mN>j}JYUbpr~4q=t#%ibW>%eOut3Xpb&m)_ zjR?-Z6SNg@ID6(>Z*}663!J1B5QmUSxtJ6;zN~Kt*JId2^u&#P$dt}E-;cK#Kd7yD zIFc*4tkc1r;_Z1_ZRxMy-6YW!f2}Az0lC+cZ?q!{Xs{;Tj^7U5A#b(9Hm@*}N*)|k zbY%+{S&tK$)lf~3NT)(?1WxR%jLXh&%{o;Wx=*=4N> z{`2oTfEb(SNhIPA9^#n&;~X6H5|{ zSyXV0L-cg3ntU_XEp$>bmPVtXv(R3FRm?Bb9n=dN$W-OMtYhUXe)mbqXAm;T)tm07|@L+L;`14KZi@i>{{YAc?%PR=>x3tt)GxW_k zzi`C!PXw&{CdWRVYgpYw4_m?oN2kjUk?5Hu0M^*2)5m-Vou=>C&;9{%$J|H4G>*ww zn3$LdnER40YmH#rx+A*6zwcsffyWYG*ef%`@1Q0#DVe^vKOb}p>ZTY$*#elXx%^^h z5URpaJL*5n4t#~>zIjyH?lsz$<4IeJp0|HLIQWUDo0hQtB=mEqxkqfyS<|D6`P!jb zlWaVoeH{0UF@k4HClp!d*sA2_nAaix2(}PJ%YPkcwJoUw(=5Qp;fezsL^>R|$uR76 z?VF>H!|Ke4mFPoq^lZp-8oHLIa#DQx+#?& z@rP0(#L*vMkW11n#9+C#AEi&VW)EB1>^s__uJoUUY#kAMoH0V~e|P_}dBXn*&srvu zuopQmLMtKe;IgK1lip~89rJWDah4pDFX-W9IgI9WZT2Ui&OYHks!H&er@N8{XT44BH*j z=KaDCsry|g)B*ZEN#5#uMbl0EiEM6@Jm^B0D45S!+NeJtb{R5U!`om?+Fer17S{b9 zydUdLnH1g`h%e$NBRMN{IY^SGUlzI3)L?!&{u`R53vIiz{`x-kS$r1wM&U1fY1)R_ z;ff1ws1ty9q;JpUbI@&2yR#dmqt}`jJ>iaB?KD3k#1?xy*_O(R-#eA4_q$!Cr2mlnDg%fEr~K0sV^Gg$Q>n0te(wF?u)_7$$!RfjZLP zz9nOs&jQ`#JS5CdpA5YWw}daHvZlFyuVW6F_2*KOHu0FOLdEFqIx-=MTLVHg4@0UM zr7C(=PcMXI-CD1&3K^RbuFqKeE2V z=A#dR!A(*N>@wf^jw?mnXDT;JELY~6NH>f(>>G<`1y|Nf02w|;%BgsiDKf3!?o5)ps;s%G$);vQCaV?*q{*cS^x zHTHv)-0qvaJ-YN+^I3svclP2B@kc zWAvy~17@-cU)R`=riiTb_4>ZFBL(R2Jt>&4;`sq6x=lVew#u3-?{4$0e+paepEnHV zxSd$4jaw}#J-YUdknhfj$tzQ;Kia|ksX%#EO@>=oRG6ReOW}LXldCZB&O7q)uL>XQ zipwk!N6cRe-HxzTyD?)pCPHzlkjMT0qq)nC9&m<0I;NcsH@gJHklN zK{Jry;X$b5>h>@popV=_lpy++i-eS0U6?~M+et6J{Q02ndL+y>UBWkK*oSpkmqgif z{WWFGV`Vn3hv*rJ;7Ze#Za@lMpyOoeOE@^)& z;w<7aKCWg3A7`xFCr4hH_D`h)717Y5jpJDB^{Nbs7#fsnFr(Vd6d_Q{#oZzTDBW*_ z8($4h^Kd-9Y`3}`!Zb-7m#bv`!*`Xb<7IiApg?HUrxT3;%9)LNU)p8c&1MQ~o~q=y zbN$ASzT09qem?#Jjfr-Pt!AdNlwSyb!!FA&Sac-NG2+JUXc|6-gey2L?V;rp?Ze=e z>vw(}ARQg(@M=J-%MDTdh=-M2F0Z59G{o=x;U^jtD*P|u;(>#ZYxoTa@K``Gue*D) zXEz3okLVQQwRa2Q-L5u*zaQ-@=0s!adm{$D^7q^USJ883TZzgV0AMa88;9VWgx40^FPd{{CSv2zG_gtMcSYNEJexw>8^6Q4OSU-dSG zCg}0(X@U;e6S>Y@sO9swcft zPQQB+FyFF9_)yq`=v%xV8Mz|v6}mjZ&fm=qC!BG^BR4KK#fT^wDr`Wu+b!nS_5tQF zwYMGRE~_ry#^YVM^3km1a){AjRR$!hHddCa(69re9*rCsBdD?nUWuGPqK=C=71uP= z0UoZ?>Q8($$i!w{cY`W~ih>%pGjyXXstDTkFk%Pj>+6rm{ML$*R#d5S!k4qUlCpyn zu_Mfb(T|h_j{og6x=Nc8fj92GT_{%9v{bLu@7k8-&gQM9v~RMHJSkHaS9#H>+=_32 zp8_8!J&+Z&*ayoAW8ejiL_OVK@g)fPOft1v&D$dcN1^VOY@b$>6WusbX7hO=Y}(ny zGtF<31g%c!jJaK{Rn^p*+-XM8C8`7Z7%ANFay)}m<{kQ++P zb=l}43~~0p2XQ9+&L&n@FCqC9L?swH?GP7nwdUtX_Fk_Es913HD6wZaJDd?QC1=fD zxD+y_T4PSxYIc=qDPI2CGLc6g*G3_)QG=+-#s&?vus9&L#7V2va^$Kz0YCY_iY->; zEK7t}Sr1>ELauI<9eKEjqDALeH>P8Tq6mca`%mMBjn5LLR|EcS%jFo*aE&a#O~yeI?H3mrtj}TD->X%new{^w@pwN_k@Jx423- zbK&5+@F979&v!K8S?)&|<`-2Ux3Q~Ha$^co;t%#3*@dLsTR7S+rW2nbv%GqRHlE3L z(}39d9t^1V9~0?zICQQ|rPcvkXKRN8bl&Bie!pi@^=L-0Q&dD10+UpsY4Imp!8hd$ z$ySlyEx~oR)Ln#Zv!0l8W&-`4G{b_TEQnmVu`S~A3GiMwIC4Zu0YnP7&mgw9(RFC= zBffiB5saL#?yx4zHqJd;sx0C`g2pRteAfEv>)^2Q4NDwmMFNH@Rdy3{XtDmcBZ6nG z`FBau@XYN*-=QpofZ-ciryj2>+}z_`zeFWApBmpk6upfKOYFt3uW-xpd0rJEd|iU; z#qRo3*vjD84Rjr*(a{(plp|w`cELTeB-)qdd4Kb;D={a{a=CbNVf0)+b$Jd_JzT9I zd`G~5W^QgSIUN(456b51Tm+X>JWZdV+xM9n;R>UzF=)Xjz2VgM#4-j`Lh~>~|;&gk*GJiBj2p_?9bhG(% z_{oFFYPNU-C*~bAv|(#x=J2Bto<0dToMO96lQi|n+dCr*rx92Mb`85(1pLowQfp8J z>Q;H(;mx`1-x8M>>CP#dSt)7Bk>Tld2CF+YgU+if1gP6yxuBm&(2%B-Ss&JYiWwvm z+e5^iUQ~R-^XzLWb8#-Ufc5W(s$nUOPLlzFOUvY!$yO*Dwy1 zweJ1g5gsupL*2VGX$Mwx6*^_v*H2 zJG`gGw2#x_$JIOw+e~0#ac>&S4@Bdy_X5umF4#dVyYa=b61cdyjzIuK>*%a9ddL8| zg2T4~F1<9S{&d-e$N-STP~g3S{yS>OC3VYH&70w@HT)GeHU?!GNWbDMBJ9D`XU@HX z-*~mL$M*x9LYGu$@{n3{o@lQMQYEtWI5m8xZ74S`(cJl9+7<8zfPyi^(j%X|`h2mo z4O?tPnHCsXi$F7ggS#`q4Rm6jeK&@aiLP5WY$QQ9Ii zO=7(1yb*>g=N$>4a|T=QoO+&87Pt!VM0pCmUC=XiH__F^U_;ckKTc>^o>EC#R=!dY~~2!uTDZ99{p zz_6;1^eBHxIRDJ%Zpzdc4nW(!5|x`b^8VB_p1k+BF_QY8dy~P{$)$OEehL4w6Hv%fe&BKo70ic|m2XPND@riDkS3MVU}F2L z8XBexK9gtUjlSjn(up8m*t)X@*5rB}$8q0Wk9Q^_)lG8lO15Isw#X;tiotFaawc6^`!1X+p3tVI*I6vU ze@Z!cgr$n(XwuMU(Y9pUO8|e3uF#sLCpuzl!(&HWj zgJLy&!8*X6mUg1E@yi$q}?iT?sOGhfj8JB9FAi!tHY zhlcx@kb6?|N&+CuTEFKI36x=+37G*~M(?5iua4F>)lE~CXaJ14rlu~RW48FjTieZ^ zOyqG>?~ztG^3kb)o8Y4#C-xb%eGpF$Ly>E6QS143L*PK=>zK@g%er^+sTM_Y#$?Ow z8V}>R(4^j6{nHRVPq;e>ynMM&!p~$AvRwKCdWWKLGN5oio{c_e17)xm1;6r2?aVkbZ zxZ#LD;NDIX<6or{pd5P4ynd+30jlr_ufLs;gsY+IQZ~WT+bbf*PF9OBlN>(%FBZ^g z%aqplh>fbp1A@e!;aR=f&%EIuDk))!gBI~cvPHbKq`A)L@%JJv79)9a#Hln3#4SWU zMr5y*&R0=Bhs<*q&4j=s->nt8A|qSyC*Y>`TeV{V@iZsjP^|slZmC;R0mA?qjgb5> z%Q+)q(APlC$mve6ZL;0mxHB?&4vybX$+{M@fa+|48!DEgHphuA;4zdX>V#9IC*@NC z1Uk@2o@VzfC||F|9)rqRz`rO?TwENb2F)gB3`aWB>-?0FLB#a}Ysir0daG_y`Vlz&AhEzr~q9*1Gi?(tH>^_Z# zOxI~2P~)p5Nz}>6$hR{-@|18w<6r9)0EWVH=jvJ8Y_bPz`eYC9GBpJnB50c`XrQs9 z4I?k7=S`K%-Ila6a!bYDm>womuoU+S#T{6qi}qWpLsAJ-CayN`cz{1rDg(a#`c?o) z2}V(hc^od1)lo~??RgQnDEM3i1UU|-*|<^Hzacd#SE`&S>8aFzLq7}&gwh>mEq zpGe9eSGsxweJhB2<-W;`b`&SHa>uiQzF%xf$lt%%uU59`ZjdSOmdRN#d|eRa{#F7J zip{^)o_gE!HtiM%83c=3XaSz9b(05Dp+fuZio6{)A za!7i*h3@soI27fMcvaPe)}4!R@{X3#;S~3?jaaA?o;J3cC-BRV58VbA31%C+&)jAI zU_-6&`8W^xgKxxeEalLUqII3w%R4guc1rhPxW3(jnRGympL4zGc;L?zD=ZFKo~y*4 zlV8j+8rhnwo8y%cy6hU}d8exL3H0OYi%-0CyG)!&hJtXCRPbbXG z5R`TRjo8D~F4{!J9!I!>3y)KD zu_;7l5{5>-5*=l;4MAwmrYFhCnDyjoI$X@@-*K;v1Zq1UP~(gvvzmyM?bRk{GbwH= zCKC=jS^C)M<_ITgux`0*2>}W!4&9@3E0KZn zW0d%3DS`P{k9&{~$ce2DxqpNS`RHYMDj{t!!sg#~hky89W-zpsaByrS)C ziMX6~A$Po&s59N(g4TqCugW%1va7)ToN7@mHVJC(K1Vj@Fy3X?ey!Og{UIgdYp*2v zicbTuxF7Kk)~kw)(1=9b8|Z_E-fXtU<_SL$iTDV{gJk^}6;N0+SNl zE!{^?Q@u_H%DYOWh?9;i6O4&*Z-+unAc0&lOV4N#*mA6R<(=Z1_s4$h9Y)N!nfV>eKKlX+xVn(<>e zDhV>wg%0|DL^59$!~6xKIRRcFIoEbn8KD#&IbNXKo#%X`3zgdBOeNx>=S!QD1MNCa zu%}^7)*p|ef~h&)2CRv6UM&teG&LKg7DG&Tdr7Jt3tw} zz@Sk@XEk3QW24^KYoa(c$RY z6Pf}CRGiB{LDKGScO@y%IY{fhV5~Bz;n3CFn9bZ1p(%TzZTqS4|3_N_M1jK4IHD$> zl!;B*+@Y)~^2k3};_1p1+aLQJLIK5j!?EHQKleD!n=~))d7NwA!CoPAh`Y3j!gzyi zR|uS^=j1xsJh)z5VvUH?u;a36%-MxDZwk{ZO1W2J8Ndn9?~syDl>IE+{HtET`==J$ zzEmlHcLt~z z#F#JDr1aqI`(BZhPUP1>Di8namsachfTL~4`j#q%TI)XGD9tmCL$Irv0bb6*3U?X51tonMQ?lS&tm(T9M z9t;=>$59uJTiX16xG>$ydw)o~W@CEdh0`qSqayT(>Ax!|~U=xrRm@5Typ843{bGQoFuazt$Tc+%#Y z_vs*bhL@8Q2T0;w<+#{Y3JoL5E&q>9!4hk_!u~qV#}Z3&J4h->9P3!ETOZejazPA&Q~m8p&x&e z)AYMN<_hcko==mpD}Xg+z{{dZCM_)`4uFM55$;auK)1=vOHA4MUaG~tma8_U>b@L` zgLSQlipL|&nXCS*p11@cd`bS#Jved-(9#SoHY@wk1n6*}MySpe4t3NM_>Qjl%=c5Z za?!)NpU#K#%^i*84I5dT%-Y19PtlOx*ptHEy^dI-m;`wx3YB^nF$=3-n0K^}V|1lK zXj|sqrJc8FPaJW(W3<_s|4`)F7cGY$UZOkwHQw8MHf_Wp6@c84qME#0_lA^+_3fBQ z#U;^SaqfFpS`Mu;Md!mz84>3#6J3ktW%3b`bhFpN7<$nt0Qe1>kQ!?=DF4}4b23*N zRD#OueB1|K|CHGjkQ5cw*=k0e1H|ey*KF~W@BHNWZZFA6|3Wd(RDSsSE>`ZtWRJrh zV>2kr&kum!jw-gdElP{+DitvTF*;&IdvZbw!ycOGxZf=w=GS+`S5880h)Rj8A0B?c z(eOHtmoc|CihGnO8d9!YF>CR*N-CGA$M31utaEX?k}$y2!xAgU4{Wi8bwkd?T2>5M zI!_sQ1g~ph{K&=_J|f|ofFRT{h$0gnyY!i~7% z0h;&PvUQ zB7moA{bRD}bSi6xVy{$*zF7zCZmj3?UTi6_*sm?$3kn@3x7B?tqDGdCGp5Nu(|Cb|pW<&RVBx z!1=Ic#d|=xpZ#$W>?ARX={hZr_!?FELGo#n5=$<#jQN&uQt$ASb`8eOY-c(xnf`fu zJJqm{mdBDAqr6;6sJ-vVB9tS-u}C0~vi~GE*r6Dg`CH4+4?f#xIiDsnKPKhVz<*S? zWzhLQKR^(*=#qS*4{xm-ewDRSJEjkMjY2x}7P4luhTblV*0hEdawZqaDR8+t!UQ>p z_3@gJ$q==Rs>h1S=D?*Sto+hJGAx9O8i=HT=eP_Xh(@Mr7=l$ibUIrZNIxV;e+uN~ z6-uXT=zh0QS){+_RzBDM%jI^pIgNM0ektLOd>a~LeM&!(z3<3snH!e?q;;h^)NMFO z4$>ABRBcicdce1Au3%j;ZK@D^iY?zLWq~-_;OeD22aySTs#X}%3jYoT57#>1GOo9p zyaJ@hV{;N}EL5i#8l%nQPO|P#eSCdYqhzDni{~;44`%Xx>A5VnU_a?Jr`krEsyp#- z^i660#Jkp_!MxZ+@uw+Jl!SYy2#-s;$>)^skWtT|+aB%H^G%5+ih1X4Bo-x&na}C{ zr~orBz=XLoB4Q%p9+tS(d(g>2n@i81O8G2d-1p{`_*vK!&McZDP)>+{yL3ycB6wV9 zNR2Yv;{Lh>(1r`6#}h!pS@jsQ7*H(0EeM3%~O9eC!`z%Kd`K z>iRCOr7n>_K@v29vr4n*0xR?-l0$;}?=`D!5Iwxi`k+xCj-wZXkPqm99~|hL_wFKQ>>$) ziHaMEw~t*bzY~E-J=6bE@nrgc^P&G^w-Kksa!43Kkw=lAE?$RbKV70eB2IACL9pviae-C-sMvW(1w{;wzZ z3!~c>1MqY88KBdNxF3i@l$cPeYv(4uEWh$zc7R%WEGLq#V!5gg~3(iGCBxi|XvD+t~?S>#o%gxh~g?Qa60@wD$VDENWk>Nfw}^D-{u-WvYzRWudo>vUCBSK{&Hi%Dpwp4Yk|vZmH*JtI%8 zwf2}UituYi>U=a%;ZOfLn6CstUqi-c`tof~C`#xa(NCo0E6@F}))BypKRFbYk@U5` zdCsdf?#pWx-=)BHVLs6*XSd?98w=<4+QqWd?WD3z*`uz1;aBug))9u#hR*I_PYOTy z+9q}oupz`*N5_3-tHIH`o{Qtoc+6=Jh;-5kfLi+)5N1PR;*_5-PKWA}WO^xkYP%Dm zaeUTV4Tgwz>+NCF(^%{6zVJ|9WzaEEUK43Fys6ps8z}vCvO6~TTR{oUN;x9#bM^m;a{`3mj(MdJ>UT$tQANam_fE(YI^ORq z>J~@tHC`3jI@U=p4-O8kPP%TuXpU_X+m7cARYvDdr`aOm2 zJY%^$5me_21>2&&6{>((^=S65Szu&n+Dt@|1iPs^JkI;Zx zg!m|Gn~;%o+p4974S4)xp4yehEPxR3$N6SwV3s5X*=j3=h#wy@7^ypYPs9%yxER8I zFpLYK*<;GLB6aT4rS}$>5LXF^$o1K6?bH~QPQq?OC6HV|LjNVEb#-g=b6_0Q$*R5v z@f$OTK)2Ge*DGV5()ViuoQ0ba+>mWLilR^%=PTpJK3T6BnfVJ+^!RgO&^Ox;mZ;M^ zWCF58gvp|y%8?xi^-Z{%Rx4vd`ub+X3uulmb}f19D5=$B2STeik^{remqN#pgMhR? z1ijW1i%oUh*z}^64M;_CFkj`9YXG@lI8q-zr-|jYY}H9s>o>v}VESeON^QTSCh<0! z;dd81oo;r{0OyYPG(jms$oK;YK+-79pV6=vadm@v_csGNEF{KnKTKOaPRm_Rx}T81 zPhFBpX-sOY?$zr=qQzDk$1PP7NTnc-eSK&PVAMdsdB>gN{C1qu`kD8}`@N^>e(8JE z?E`=9p*2Bjkiyv?FTa5coJmTdpk7iQhp1T0U)qs#=943b?AJv_MI$_K9}`T4;RH0N1I)uhN5l#-!QiqWmm&zB(+4RRfk^NPID#K@BFOG z75gq4%zES4yX1{^dO!J-ZMDJ6`#;DHY1XJ?ekJ7&@@Y&TQ6Yvz3syI*OP+o$Y;Q5E zy9>X-23@dSwYos4x-$e}8_Fp=x6&T_7ALU8d)MeG8CRfOuyc2RN)mmq>*#OL{$Nzq z@oeWo^Qlff-7#0mRg@aJU@fN38$@dHBlx##!(B%kp7E>wRs&BxAuG*O0H5Rol!FlU z!UmwABh|ogVMR_|u$a#Na3$kyBt*GFaTyQ~5AUGwJQ_+UJy~w|rG@Zhm~!qI85{Su zv*`*ljSAy#oT6f26mBKUU)~7BLFK%oGKnh`6ax0h>u^bKok8(nw#4YSh4F}(C^_{z zAI1G7dN!!l0v;1nxpopjvuC%_9hu|Zywf7$-`{>)$?!JbD#J5vG}6uW!7o}x!D0=J9kTLmGDr%9qSu3kQ@IN(cjJYv4>ZP1(Ho%aPOZ8XpDOB^d6 z9A2#;2C)+l*8LHU2B3Q!m6uJ) zDL8GaIDosS`=xv7Y%_~@Zz1jK=C|?{e9G+;8&F&7>L~7}USOZtuL z`-0BT6oDDzLvDOHqw0;ioh@^i)i3FC5#Jg0B2yN5#bk0v-b&K>Jq}fR^f(Ln z%=cg}Vi}r76$jfvbJYGHw!S*9s;%o<`Tzoll5RL4Al(ffN@+nrx&$PoyE#aAHwXwS zjWkGe=tf%N5Yk=LttG_T>Uz-mv`1r#T$p74T3Q6E({s2dFj+SJ)ru636P zFjRYtr5!)QTxsw4b#-?#Rgo^WB7FC$zNV{9aUz5YcIAqK@(M+}v+txmt zJT1YM?8+KvsIu=cVlirDmDkNujKP$UjeKu1_>yPuZXmkq`C@Zx&Clx32hbLq!iCM`jqeJ>)5LAL z?(ViRfW8;<;UZGh>+ElpNf(ftcJqDhNmoAKk9dG897~Z3exum=x%TmCA!hZx3dLPO z-~P#kn#a~4p5BtgYUpLBy{#~}G_gR-zUq4*%L3UEByu zHS{Lb3NJA`nS*x8MQ@hHbq$9UIIIro4tbb?{nB~xjd1)>2E%9BH7hHlp7$es>{cIj zHMCIARTluPZ#D2{v^MLApF7L;FG}8bE#Z<|zMKph^@m|8zl^vq>E5*Q#My7AUGC{6 zo#Z?HjvSvru#*=L<5vLzZ<(c6IO??i($^(N(RwrOpPdj0gj$W9!BoYhj)Y;R0%A8? zwEo3(Y6|G9+X^==9k+COnwe94IkE-brUQggIL07B=%xMcJRj)z+AIrXgSpX0WD zR^@jmh3eFC@aiu$zZP;S2tD2prv^ziinwy`onjE))-cDK9saCk(JbM5&8`z6@V4cN z>tc%=v2?w?Vs(J)G4|yGj@OIcD)-GF_>1)ECEk};L=sHTOpn$dm#EdGh)FtMfiJ-0 z&gb87Jip&e3vwNua;_xwV3)?CcsdPuyWv?8N$`piE{zM&1U3W}t|#;B8!pYOXo%)j zFF?K&vISb_7V0FZa|wyOH<_U(6*a^430pz%tKA5`?OrtyEi{D)e&Bo+qfxs%4^rlc z)IM1BxJ(=^dgu+mJnYe>mqO4N7*{hqF^`!r`&c+)#R-R-bMCsG4+UL72_BN&S1Ex> zeeiAsOHmM`NLrsXyB6)d<0{M_SBiz|Qf(O&Nk85FxF~2lN3H@TfTZ$IpmvA$jm5X! z#o)GjJ)f&#RyC%njjrS}Bt&m{29ry5{~j!gkJUdph}tj4@kw>ul$7U2FY4L}@+_4j za*6}K;JO=Lky;^_dMOvAXsIkX`=yA9GqZ9-sz5R9dJMIsbVu3E>p~aGj%g4y|yqUHDS{u(V%8i1Zi&f)C`mfgE*F0IRnSLaSmRucn zvT;veI7~5@<~y1Pi@kpOBVceXUR<;ZhdM(2#fKLlFsY2M1;UGRsYWlS-gX&(xpX0l z9$J2agQ+sWA#m0af&VS|3l6IW^B_6GQw+(2s#ds_X`mVaf<1BXSDC;37*l+gBjJX6 zQ$lmvx2HrGESVlAP|+sqJ4sa3yp2N$F%tT zvM6cO-{84Oa#VDTfV@KP^T&AY2qiyqw%)hPC=eRqv)j4Jm8M20lq>g=N`TV$qhaHd zswb4a9CREx?i1o;EUNv_ADL=v6J3|yB^v^+G4ixQVeKU)3JsHo_URfHs|qt@fq_Ua z%3ZBA#ysU7;{<)#aE!SphoDV(IPWX2Z2PG7qD-%%XGzlirbUy7fb!j{j4V@lDm4Wl z3K7R#j|U9YMaAql7pRUR_2tfx;Ns$ru_Gpd0e~!FcPu~#Kp}P~(NcrpZ!CbXAB%1U z&>oTPyLiRF^BXnDQy#?a%M_HHTL~Nb%0$({+gv*!@rM-lS8Fv#7#R@W?Gnm3i%vVo zA;0t`PKX^d@4}d&HNCKFrvm*TG}KwX=I@?vri5w7Rz{ ztquY7yVTpfId7|PXyrzKA$2|eRZ48b?YYf*HNn{ElReL~)Hkz*&OqWIX#6dpS@ zZNH2pX}=V5sd&gT;M`k1&7xMt;}O))Gv|Z73XDVd&U_XOKT(N9nt+2irLEd6j&C`1pnNtqPo<5TXDHwFR`jZv=iUkZE(Ixc=210VWut@N(ahynt*(p&T|KH8%Cx#Lbct~b7a$DT-ON$T*viog?3TnS;@QHC!x9O zc|K?gStfI&6v0TY-e>K$&$?!#?lv)eT3<5&9w2f8^wHlLoZ<(sR$GkPKf{D*p1)}{ zyJaO%6b<6Cy!rIy4GJ4lcQq~tht=81gWKxe2NE^2eD6SP5CJ*Du&)To-WI#&oVHo{%%5p4N~8QM;C$exP8(X}=+Asoe8;SujWX*pZ~L~=0;!$|(u?!@ zv^FzNiMwsVxe?OckI=sR!*=c#9uopFr%lxQ+N3ku`k@DGG(ZR?x%aFkUOwPnrPbiYN!=rw4CN<2lWS*IE zGDAP-*XZZBSWQ@=lKw6$BvLHzXUX9XpE{M;J>Fw@15tj{hFjN9>Mc?m?WV@@lD9@t zd5%ero9=HjqVR01cZ>mx%E&b>dhNF5hF{Xl8TX=_`;rm8;zmJpY#{g*H0)Uthox%nP#^c`XoPIJSn z%!DfzJ;z+HZm#S`>717)W>2}#o$X_@G4P%yWC|qpjSo{jDJdtraaH~?#1$~ z4sCUX1)dr|Rnb_nd8C|Cob)0`WT zPkI!eKsp?kAzGO+F5h2UTX5>57EM_=2$Afx?OLYyMLtpP$%?XIFOO*eFkWjdRj%(j zR`f#kZ0{S1GDST!e646zrj5+!m&r4es38Tzk3}XY<5C`}99p%7>yhs9k?aZ)( z9caWcOjRxpo|-5ej{0f5g{jCcm_X}uu%eX8pcf$mv6><-`bp3xMkGn%ZNJ7?7%F0# zXKtH=wfOUNHUA0m6AtF{LV~OmPPJB_llPGAGHK6EX5rc>+8x{i)8R@3%84Gs{g?-U&nO3edTFs~EBcs=xTn*{8i#bJ66LfS-;glW4Y*Hf zkS*a%v|bD)i$&GPSBbCtbW6B?e4@B$cr~eWSz7FsxLGp&o_GhpfBTA*N7b+-F-i*F=B?6Y7xP-|h?d|z$Bgh?SHmX5#7KPDn;fG4mXAvd zyBpOO3>x}%iqE<>JhBiXM()>9O;ITjwP%QKI#h81&+WW&L}V^W7FE6C#0U zPNEemK;&@pUC+C)Eer?G5NjxodKKc*J2gl)ZVg1Axb6n zJzhBKnZ5bHc~Zl?*uFKn1Qbr@0Bwi$2Xj?a1ZHw%DQF8CDv(`bnb}-=T%C&(D3w z>fg+Syhve>J6HaxgKJLcZ@xYh`0Gg23svwJM@Qs5?}E-p6ElyoSt@E5l2p#D)U`e0 z;^Q%M#nFbEC$%MqFAJ*r7;IkZYO`CqMlo+~%ODa<^%9<_{>oZlKv-6DqHJ$uO6#lI zJ_Yo5SLFmUSr$LU+HM|)RBe6*ykCB)<-F7d%=B(k!GL$c-c{sRpQSE~txFJ(Nl)zV zBM!}|U@#@65=U55TR=@g;zMtIv9}eazp0|YSaN$TzIMec3PV*PiKE%XxHKt2DD~l$ zJLmI9oI}_Kw8oWT|lvau(<0 zPa64SHjD)w%^IiH5@Ea_+dJJj6n(G+s#uJUUY%}=rv`T=HZwYvvZV+3wy>l0*fhoL z7ONP4x6C!Z9N90KtE2j{Ll(O*VOrmcTbF)neltfFeybRh-zrAKT$NhIFr z&zJ`p-Lq0ojo~7R@P*tOzZ4T)x2$gx-|vLt2fBIosF^Htd)<_D82jNl&>GA+syMN& z4o^jS&zdqf0aJgU=wk!Xm1f6+Bly%~ozq>P(i?HYGd4xhUKkiGXLOdQK+ zFX$8y;ag7^%N7Al7W+UAV>tMh z%$7%p&f?LW?vUqOU=P6uz_f2n``(-rE$xwj+y3`=eSHcJl7lHvZm=;h6LY_QMFS*6 ze5XF@8l_0q%1ChB`gxE7M(H6`qV=Zma{1={=DL987asS1vxup?g5!vXxALpn>Hlsw zRY(Ou@?>@}hCf~5Q%%^aQTg20 zZW&$qzh`Hukqmz&bk#rbo3EqTAQuQyEO^dB54t}`yHR~4Mf?g_r~)REp8y{%e1(L#B=t!@Go`0bLB0mY%r zfXX$hpAxCdvIdAQTnf^IMZ%8E%*^aGGNF*W=s8}f?(BK{_VkM3vFN2Oyy8AHRBJZ{ z5z$6t|GgFWU15x7YqTe3Ne`c#{G?l!7eDSctkxwwJi&aOIC;-wkB=-Gd{%5D zLP?q3&c+)8R?RxB(Uj7z9@S`_DEqq;5vUXt!1I*u2nPCrjv{t?)z|#PMe7%AUeoDM zxe<2_UV+=65v@iO;=eh6rb**6G?#X3F&p@iHr( z^t5W#Q0p(Y-*6A?50a`dV`6YiUVKK1Abz5_CG}{O-Ds($k<$=p#5e61|A-nUO*Jr*%hPByV7r8u0;E@ z34wO%2%A<(#NJ%>bL4LeY-}0))+n5u6;ZD*^(U-HnMjhuWmagQQWpQS)Z&l_%h$fI znv$shS{oVuO7a+lXJ~wm>_E3V?lcHsBk8AUj`7vf$5pD|V+9VyJV-SCEzuTR?%Q`R zTXFD9{i6)=(I=_8r7i#_9nhrh+*!W%IGVQ6b~xy?2GKEIYt#DEC9xP{9b+E%?POEQ zMiPZWTp}DommW8|7wVa%t_s2lvJdMMrvX^~Q1g>y$;F8l#ph{Ca(lD2XaEbCH)Gmau~^fP=B0su9$j@#>c^;HC^{f>u{wh07HzQba>Y38Rgj%FT}_ zc%o(h!={51pN5HvM1S)dZL&3q2-&sPDp0GePP~XJ84K-Tw2_N6X!!;kG@6)v0vEwhP?hLR5_JTvu3o+nkkGYyR@`zj(ldwF^a1g$Y!}qzE*PE$mLUk> z=H_m2*rtqkmIJs6be>NM8qcy|OLz?L--^F1Gk7<>nMT0iUQwZD`iNJklblw zATftMr@53KC0BHv_36K$gnw8%KtMx7A}$3sSPT;x*|<}Qp;~E@Z}2#{6^z_e9=Kc& zS1B+Xh7<=cM`8rJ*vWvnkS?TRA*aMLQlMj6Nem1jVUZVEQgVVA!6?<1qlzM~u#ixb zxdGV*H^e7R_%-ji$L8W=cHLt^pkR6L5Ez7pmFUyE&3RX%VftRZoJ&bb$;aw#QY;HL zYpTlij}pV$M^2kVAww2pFBzsHUL_43>O(U7!M{KZEf#Gu z0H6sBZ7%lNq8?0n4$*6r;RiakY6N=LRXtLuM)5MT>W!wgp(kuWBL|C^o&FR7kHKj| zDteY8Jwn+y@m@rh3~~$nA__2hH0H@@k3~SbnH6*mCLOPLn6CRymYM^JUem8}g|hQz zn_n$=7(eh2>tT+K9ZEfYz4cUJeIyyf(D1v4U}DhMYwY(LA*{xF=Ejh7Kt5BEO)kCY z&q2Q91(gJ`{tuPo?-i<|1p@I=t>Bg2RG9&d>l-Fl%5T3tC9P&~8l8XA((_QFVG+sv zYKpe4W`B_Z62+juo-mE8N#q?!tw=KU!`bDR2KZZJWzXLd(Q9xC2%x(kEWT4IG=Ak$ z3_9_e)((of;;j=;bkt7hWUzQ_?^GlTP>e|y^?>OtUoGq z)W|ZRL56nRl-3UW!v~P-YA;LK{a5FVo^@_ZSoBi_iG4qsa$X0+z$?W5=)u9+xXw9Q zsf6(%O7qE_dhu(ni`clGIlr1GN+tQF0RiZ zUC(pzp9~eMU#Bz+g|qr)0qM?$#>PPH7Z69Nf>(pLn#A?^XFW-n{385kG+X;285HvU zx2h?deENs~jxWET{H_PYG6`^@1C=5I3W6B`kPl2n5o{w^F7C|6P(Y8L8z*%Q0%WnQ z@7M2@_)g5=<>mIqK{dV$z=T{KT~H<3K=MZ^)cmeQ%LH5;+u(u%hW7;p__WK~X))cS zx|-f2*B|%(YqJbJP&JYMMZdmc2AnOF6vARL+6p+CQl(&vfZkt&!*N#9s@B`_arMzf zO~0%LhmQAv?}pSkeNV2JU&e<)_`B?EgS>6k)Sb21cThPwdU~EUIudJ4Y~03BGv=7S z=@ek>zZ)uf&Lg25qDqoqY@I&w*TDp4HzZIetg0~2ERnAV@E>Afyb;90m?qJr2)JE) zKgQRn?NK6;KOgW0h0~lOPlj6;tyY{D^#JvIZv_AIN~`T$oiBS8p;RH92325Y6{--q zHsO|Mu{1Tluh31>rZh1zxP-ON?(VT$rh0O`<2)H^MK3_J40$ns z_DsqP>@elpAWXXQMoq;e@AqSV!f~K*aCVT=)FBN*L0nQZF?4vUP1FXc(muh=uhDKxCdgg1`e(5-MTpG4IAc=~SK984t2KdUw| zp##K88T@WHDA@HH!J)W^T^&zvDqU|Nx3|0QItq;I(V2oPYkSXNb8V3k&y@J+`Phl* z=q@!}xuF zktd)ApTP*kxHOsX8*iwxWM;LvlvCzck@=;vKBPp-qE}M!N#NStuKJxS$JB?a;cR;> z$>qxQP*+2P4pE;G7=U_wOdUGA4xdjP_En*b!63`BR9&&*VI(SlN|yLswSES6xjIktNQ_F)VpeBLRp3$H<*$N&pw->>4oS z6mDRVz%fZ6OPNGJJ> zf-1XlxtJNJ9#CcS$k(cI`>|L~A@X5!-mRlObr}j^VsTGw+?uD-Pu0%bhjcjySpS5w zqfv%D_W$G@fm@LQ;LTer_-F7C^T1!q$H4V3HIHw+_DSY?phW*8Iji;;XCHe<;>S7K zXiY-Rg$9nS3HkYS4J+=rx6K=?tKr|Ch~@!(0T!J+a0r=tvz++ZK0g@n1*3nj_Ehc2 zK)=C-gV-*ecQ)ODRkIQl@#qPiq+chEl;Q#Kg*x30SoxQ zB1eumvWbaFgFC0tMihIu@yb%Oabr@5X30PIC$$_ve{2V=1+NE~t_;3{{8VW}b(w&s zXh-aqlk3E$k{>KTv$2@?AxSJR$wROo@%w`Y&F_r!z{oK%F)Vr?kkiE+OVxsX;Zt`g7~F5a`@llw`y4hN zqvp^fKT8IdbA-&`Fn%cZvO+JWmg1%Huvd+!?**fy8ANvnh|L4BzG65UG2snYFpmkg zIC1ZtSU4a=(ltCCy?&$_rZD1upWiy$>W)EAPjjnc*nAKR%*B}iV!A>uXSDC%57Au2 zkxAwQ+Zg7sKJ8WOH;lp%suwYFmm&;YK6{jB`IErMR9P-b`0xu$PC@`R!o|i6e z298l52Hsn`=fAy!=N?_Qq0j7vthirey&lR6&iQ4S$Qd}A%%=UCM{n-^e|90AG%zmC z_?mcmtP;$~$T)GRfQ+w6H|uUJ2yjszKiNtSDpsNC8mN7q>yb>o+~?%tkmOZi)P}{o z#G+cn42!#o8}kO}GV!qW#IG-6wS}pL8b~m35Au1Iq->+EsbC}=*~|nkXfe5BLA;i# z`05QffFY9{6x#4*Rj~y~i;d6cH-!9;OWEaZZP}C2Rw^(~MZxJTVm^Dc0&f=rDsNge zP86NIFRY2luJ*WJ3jd`J=}(Ph5%`}i0N`ISvBmK!U%f1G#|NBk;^f#Vr83gFdwh;_ zG21o%0r%I>t;Q;mC@CMNkGNUH{rzt$sK^J4a$~K{D{#lw)|&Umf%Fb8E;8oks6egD z5&ilkN>R*j-Ss+yDPb%DpX{jG{8;87%hP+cN4Fu%4IYN+puM?zl&UK3lO-5>u*xxVYQ@#+Y&Zki z@Ust*Q4!s%1sLtH+z*&Q!oUF7Sn<&G3aHxC9FZjI&fb5bnX5_+n?;ov{-QGYCFOBf z4i@sWzvw*w9Av3Y**ueAuYe8`+0)md&6(G-2O}ymM<))lcWXWBt#3AlY+C-P)BpYt z9%5u$C1AJL*34Gd)`DI~>*WJ7?kq1pQO3VG24P~#>FZMtq<)5(%084AZbQ3`iq0*$J$fJH*Yl@Of7^S zdXS++QO;KaHj#j{Mn}iW10d<*do%VBXdz%ERsb4QLvx8B2!SS~uP`S?abM&0rM8lz2{%Sgg#s>Bcjoqn7r0k3#9Hh2*a@2QMw3nSlW&2n@SOOorW^1uOm zK1e6Cszeg2E_zW!Y9PZ#PwYN~(cGuV(AM^0@)Jt1R4prieC|MpCwE65YH?x#;cx9! z;2I)8dXtpK`#3@gs7z)BEHeHb0RB)?}6t z?GOziG&MuC(}4RE;qsfK(A>6r3qX=wdj0jC51M&Ha6z!xmPcaYQwxWtRw%syA;DTl zn#EvBSJrp)?^SQ7huNsJv$HHzFjJOYVn(A>;sevGUM4C3DS21aK_x=}$@V?+!F?IS z6lHn>(mK#D`m*?5l2{cuKd}9}cSBf9SpOag7IQ{Tvt=_ZCF<;a>UhL?|p-E)%EHzjT zre74HHCAPyz3t_;&p@NK>EL}GMTz~a+Y5Dr>Mfl>dRA0S^an6fu)WmF!%{{xAo+bZ z5!a<-i2k~LlHZ{G_4;(Qv~=KWoX!?ABM@)xrvEt>esa}H$w;y7;I5>3QJ@u}1`}K@c(i2*~f`IE^8@OBdbJEcv0g1dy-9y#C zv4Fw_Xt$}5%)0ln5?4C4TMo7EI%_+7j^P+zJhV3@)j&jV)(kfd>r8;nGcqE=B=Bw0u3K!=SN1UZ5Ch{&~zJOd`P|xBRhV-Gbp(aN< z;Nsx)%C=$8ezmD#{~TN}N!UsfKX_bf&^zw&E#>jAf0qAu76fRR5)Y)x&$uZ&9(UUD zmAs$|!FqHXo1{<7ONP9o`R98U!$%HuNBJ$Pv-XjXG#awl>`pRMZX^rU6biwFg)Ymt zXD=jVAz~e`*84+&Qg zGO3ay5i_he18B4EH>kQ5^?)FJt^I}uGpoP=)XP%cpe}hlTEONcycfEDejHMtDtNKC z5cr$@>GX4b1lwS8^1XyCnX0Pl`fzrv3lb8NpyT$5>;Pwcm?RDz6xDvd8W;FuX(ijJ zhZV0rinO$}XiO#RA`_FP>AsPf%m1HzrQM$tN$c!h1X76I-(ifVh-pGXff%^l2D0XipEMscw$Sa0i-^q~t zg0w{7Pc=1#j{N?8e1U_y%a89^o&Z-`$~>tv#6i7{aK~MvHjtzO=ZN2!GG6h1d~n6m z(AHokoSp5RNG-*C=~jrwU=+x-lud|G+peQeJ6IlF%(aDzAFGNI?-B(i#FU-m&`A{&6wjEtLXb8iosuA7&w5wL8*B4Ldn zpMFzd(h7k#@vGF>OjMFNZ499p2CyCSp41MNU=GN=`*MBroyOe~t5H*M&&Ir3jEMG2VktOllF+G#-k z6Jp!_k&v1s^8HybLXeJvO!5W_e!BL~KiCrpp_^)W!1C|`@Z&X;b`;8~i&Ah{On5I~ z<>QFhJb%~>fW=%B%Aca`DTCFGO@>#wNZDV~e9qPJgn!{Pnz7`?r{^!y|=G`Ul- zhgsaz@$vW|Tug}jAsxx1M-hNx24X6mP{{Q{=!)S9P}qg#@!49USNnWWBqF;~TGbl( zjT8OtC-#5rWPpYQE!Pq5BhGtl|Jz@@clt-qn-=dC?k?N>I=`bdgXJ0Zydv@CVT(*{ z*g{Twv_SNFycGEK#$j!WTQR3dd%0l!Ff?=(5J#MCv=ptgUp99WwaOi`o2$bQjivHP z`ULOguJQzi$82X?9)14C&fi@7rQUf^o3rpQ%=TTCE!>q%Z; zdvQR6#=j!le?4=1WUSO{&ipY{%7-xknHE`+CyRPZf$@>3!Q@87)L9b$o*(Jmt6L0U zxNz&q@T0lbt<&k4BlQ>e2)_P+~VhQFl0cH5tmgCf+k#NDwhM-vgg zJnlaiG4-1_b2C2ig`8qZa)biFI|y?_E3gBEt8#GAuN5G3G$0>%1AX}pwg_}km{3t3urz`S^Qo9{gqWM2TR5536GaLJ_kB8xMi;jmus!3 zskKFVtEr%`J?;IlMdDR$O$)QU<FVAhN(otI+Psxpu0SKl*vFp*vU}vM#I(niNQ)H?f zU{s{m`pT}-u4Q0kwCNLPS^8{$Iy((BHvxBQaQG;sOzoqoR?=fF4hwAnuqR~SkrPq`H(cqM4`xsa_erGmXS2oX^QYZqh~X8(Uc_x~*AXpJH7+0{A-Dl11Xw4S4>Sq&vyA2pIHpXbepf}+b%pBB_wgqNNU ztfBeQte)>`$B#$TOuM?D(k?;F2UAdhwkMfZ@}|q}RfTGf56g-kxC(kvlrpv;O0hFz z9VJpr-rm#0#9yU^U*6ZQq>l41{?z~U_Jry3s@4BwpPcN-EgFYEs-6mYSkd58tF(za zSaEU~ip0WTFg_D=`p1T4@}eFM-bWm=fG5k98KecKhDg0FVmZH(`qojH_4zZ!!D3@b z-_{YwS4v^0_ui@BCx|&T`Lr0EH~T`GYAN#EqP-maQ6GI|^@za-nr<=1pG*IRDP1w+ z|F3CNz?z~8AB2tF1H`LJ-^)jPv#tC~_BZ9j02)n6KsYIfeuAj^rsd$5$~k}+Hp{@y z$GZ=7Cb4f_4IsFlXxXhwUa{C$kA6#9&v=Q>~?AP>nh+M%4~oum)Gq+tb#}Df7cNI00qEj(jzaGJQfuYS%dwIh%=q4^4;A0*$pHSGf+BE$or0OZ4E&SgY?7myn)%A&ctQ_@M{++k}Sq}+`xWY zE)(2AD_L&JB{aJ~Y;t>5U2toK?cdOYSs9n#SEx7tMlg}QVo2lvKKb1wsHF36E(jI! ztzUC5PDZ|G;!858-^Q9iy1Dw}hgI?UcqmX3Ao=rk4G-f0o#g};UVo`>1ytHNE2SiJ zlg8>~wOS`-s}%WAnlk=#9eE6S4-b!a0GT^$>ddMT1vKcLc0*(r?MDUS`R*+stWM?`F}1uirE*js<78q0n(Z1h_ZM7sG~ zwp#s5-``WwfvE6li+W=;~Fm$mTK|9raW#7+EHaqknETRYD|Xpd#BLdN)%MZC?~oxZ|a< z_^HBj^)@FP)J*t5c_#M**|Qll@R$pgA3SDm$5JU)#lgYFN9hw>{uHeWxOn)M!nb}Q zUKAPyF(XXeQI3bb4;60YYpr0PnN`JV1k4>A+7FFXQal|qzYE-3{vb;68`Q#LL$1cH zFse5hXh5G74%M^B*~;0y8XaYx-P1i?@cA(%Kk)`|4oQur>M3~?eQbSr5QdF6I)xhl zVN%HVEUc`>2+tFxN^oLUK9Zr0=-vE! zb~8v?^SqD;lWwmkfzpP^-4yP2R#|v$(N+uZm=8M#H;e=sb-k`m}K zK5btTjb%qS@*B<-M?s*Ub+uf|uhlIx@i%%fnyO0j#Bjuvy^8)Y#T@)H9lmcp5+=r~+a_3K>Lh`{-+7LUGKa?SwKbhEf5_&K?R}Ih0Q_o9@>G zX;BH+OcRr`M}@@{SDXRMJ6d+3*%Unw1(1}9LKg(q{tF;>oV6`GT+eH1+DxIA&sFzd zG8fS`YOOaOgn+}sBdRw%NAGtefy%~Q6$%^9DR!a_Nb6I`{AAUz&1|k#%6_E6& zAr9GeJ`4%DF%BBKZZjAS%@bIhTOxBv2-s|B2q`0 zjd#4CI__L?4|a<(S!2~qGQ(CLIBj1Q^JSC|qM{4BTW5;Vse(*|Nn9?{{3A=joe2;N zPi5Y%o~l^AeFm6rDj2ztDBXfkCQcYn|J6Q0CkGByF;g}eZvsR&k$`GWDI9Pq1DeMy zw65vHl0Mm+hyzAR&#~!jCo=Agy=c3G%`&A}F&3#gC?#MxY$=N2SmzY|?vQ@M&+^wG zI@)d&%V@7f!?3dtp0u2>YoQ`B7`SeQk7HSBc+CcCW?oj>Dvq)T0wO^Qx^$@7MMtWuJ}7`0ouA+#xG&S+}v%hEZi;JhT|X@*uAP`djk9yffz$|MBrmLDrY zB$IYNNex!`8cx)iFevqbKNQO#ROzXS%vgL+x><4s_{tI=gooD!6nkSIv)^RA+tGRx zyqpO?oHd&PY=x584PW_9F-XuMEx6lynFf0@t(A)}02PG*6ki>H?ydTbLIdpy0GqIQ z<*h2~L6LbQkN3A8ObCDoTJ?GftJGlBo@syb;G0?oAP|fAc@9s^b38t_uG1iBZsX(`qC?5~1^Iy@jk6LcF2wmQ}@x^1|5@F=@2D8%wt zAp()>cJOqte92B>@Ak&O!EaRzmU70NF{<1PZHx%fuI}#X9)qId^#=-kJ(_f(%1}up zrUOo9BDYGHH6dbc$b^UkwMU)YhO&Yk0j8TR4l}<8w(gq(iF|3KL5l@H`2vvO!UBdL zvBrXtAKPWv*J(`-U(63yj&z%QVvZTHHtkJ9fSB5D&PNXsiO}b}QWvb_Y}7w-rel%B zGGAnqorji7&7UxDZ(iY;)gzbn$ip`8)7s*^z?igcL;RP*JIv)C?HM)6*W% zvAm<|v0OI-v0APL*O{7U!~EYgkp{1yD?UowS9mhc(AhX5BwmlLE6^DM9L$6tL^5E3 zlqTjI7`Sp-C-y@o;#x?NvcGyML*+Org=j&(*n=H)TQD6=L5TC&z?Ol9z0uDbO$G$Q zs=SDwwXzpIHg85(qtuwyp{eJ$As>m2wJ`ixSoLWY@ZYVh6C62I--dzBdr>^?a~Ca9 z9}@-niYQ!g0$+5)t-ylLyH3wkLuS-1nnF>iIrIJU9t`PviOdk0VA> z=eC*)-;aXlUkDNzN#zHd2w?8_*Jy z;uqn3Q6rGGxY+(VNeB>81&rR{o>+9|)@63t+>9n5y10p6Yav5ZxebJPE_Qsi*e*C| zt;7}}@^^V+N}Et#7si}bLTn`0#IE!~7sCS~;1#d&GmH&6EWKCe8VVnRh>#!CgIzd5 z9dws@yBW6*a{C#ss{r6sjW3)l?v1TV!jusBSvD+ zJ$H=hx%9s6^`*{e`-w4DsQP($dk%gDlM#ml{bBkbP}i3o6~!3IAOa#E61sf4^&mSA zp|hNQAx1uH53ZgnY)nk_L&Oh37N#Y!*S>;paX$=az$PtK3K>nY5%Bi~+f6*QE06H= z7q|~o-#XrQn;bFBMU^RY5mH;-!<1Q7|KU&F&Vch8L9knIHK&|0uZ@A=k+(RqJtxE# zP@(H%C>WFO2M8=P){`hT21wl2o05IETP8<%U$(d4!B>Y43_y5IY!=2#ECma9+78!4 z*80M}SYnPbxY%9s(YwcpP&4ipGriKE$D)g-o$+B+9vN!ci?t|iz89EsZrcHEU#}>) zE)J7plQB)|IzGK(m|%)oub`BCw-0?4^J9_P%*(B3jcn2}!v(sCz*aSgz@}4>M=e*E zupO+8Bw23+E4rS9Oc2+d?~z@_x30P%vBBaj)|x-fu-JBSN}Ak0UpfYc?{#>*(K!H_ z^R%1G{O!#a^LMc)Iy61YjXq=;FU#7CIWId3wQtOBf+X=hHh3P!HaHJj#L(ZW9DWbi zS{~{7agcrN*!G?DTRAaqnE}pyBAhOqq!SXTFm6LKLbtMsqf>vApMO+b`5A_y3JuAt zj<+>;;8NLNj3IWmG}EuJH_kqEwF(v=e1!Pf$jddJ?L`OEQqH(&N+d*`_FvKR-_!f5 zS(nT$E@F0>AlvXf(LMXPdh#*sftgQs-0bF|r5qjTO>KQSTW#@nQ%ean~NDA8H#6eJXFC|r>$L?UHnn}L=-ST zHqMpJh`Amg;}vyVNs(>RtA zmI%vWA2(BRRZgr(pOy3afa8lzbFm+20C*^d{lx#VDfOnG-ypS(L0+J=OEuSrWjEvo z6#EwG+ssRFIr5pP%MGMlZQQmZxaI6 z5D9{;q+*gBOuE0-4~;)Mmh>c`@XHBxx4zB1@5c~oF%geGG#NW9+z+hUTn;7F6I{jq zl!*7k-QmOr#ldtCf;xWHD-7!RI`qsdt9Rb-10jUwd_Tlh@;=O_SXH9X2%-=Qx08tP zy{);qFzzp{Xt%T21hTu;b_uAn_lKWgnSeq6=-zv_TTywAvytpjClk@P1mD=ZW*xE} zC4Ci+j41Pz{J(;rP-p-qtEHtjJpxNAtk5^OjGL5Ftz1d==RR-1g0YSc3x;K12mtvq zkxxdsOwLbFQvsCJcp9ATu@5zi^=~K9sODXnPO74WD{k_wUnQqzaLa%cIUccTAb*>7 zZ+XQPf8y@w7SD!Hxcxc|6Ov97dOQHNWF}GA+GD@eKS(+OG28$i;8sEc&kP>-|Ay`H zDk%ZF3!uHw`+mdU1Yq_sK5Lv1%4xrzJQPMVpZ9+<`Rc>Ne{9~{u|pmxM|>1}or_y~ zfATYmlX3`2WFM9%^{7z1f>PAqxGk$tndVgD;Clo5eNAzdXOD)DLgGk>k#g6t^VSfF z7vtOaip#yr{vCZWc3kgY=;;?I&h<+AbrrgQ?@b{dblA#}^eYY@tS^vXIr96xLXO4TqOwvRu zX=3cZvoP0=L&<%gCr;+JW!X-;x{Pu}F$e7r=D%ftxmY*FDA0?g`tf4Wv|V7`-Co$} zGpz-=q8qkFkRjm4^Lg41PVkqCCtNWC7O}!yBBT!Q6h2FWDz*`F{dG>+3bVSJy}99H zUzIjqC&W(!!xiC3zoZ@*lH@iY|D*>M=X$Mdh6U6Ka5M`E6_;M!CN|jeGge7mgt= z`uCZ4wx{%XBpI119fYPI|L~1P$*E`gF~=lMOxg7y9IZLV#U2cakt_w zB}j274xzZa2e^6f-0z#4Kbc7~lSwAo=bXLPdR72mHzhAYb{c!y^L*YiXX&f``BBE} zw9sma&otPON%53wr5=aZIPmS|@;ifwf6$%4TQbFNHu~=EmbJKq3lDa|(x0dZ zSlVM0YBAPCHt~{rydUT}2)OSDQWQy5%txBT1A{lV;5M-(bg6CRn=ywNViV=FQ=RMC zJCpv1lkMBq9}1hFY)cg;<$zm-^!4s1tojv*7Go}Aqi#%PY6P2t-|S%?Gsu*y&1C7( zv26htqAx!KVBAfqI6dQNgx%5^C);7M5`?WWma2u9J#phK{KT z=*h7f3xA1P=Fy#3SmnaIAj5E&E5C+h&7$C!x92#1R3;Z7%}(P$H2dSfjYYn( z>(50lD(9?6haB&;7BamC{Q6XK^M&2jFQC=|%WtDb%q@bk0 ztj@3*SqB5il8I?>z?Rv1%XQ*-)-c{mbR9)K7rn1cv*=M9-5lY~Y0R+~Kj(&@f=YOw zNf0!fm9ZB@e!_D-SqaM!-5P|`V`UCBcAy7|vNia8Q#eda#|>US1-7Z=&YpL05Fvc` zI`NOpl{^kd7L!EQD9`V*D-!OPFH^4;05+d6(L|oY^>MiAEK;=1@4LcQNU0SupUo8Z zNoJ0{3i3PQ04*TgmdCO?d5b|8g$@qN+d$!38VQkmj6=u4>N{v;u6KX3tTJds_Psj; zNkSbMnHWP*rMPyDjC9ot3@qTbKDP$tqq+CVHkEQ@|Ks-OB!FLq$jrL8BPqpmbc0<{ z(d1Wq+zDf>={;cE+`0xd8;H)6N#Um!S@0e!LLy_pv_}v+dK}{;jz0;UY7zH0O+ID; zKU&ajKiecpUh;cb5X0KrVkGPBXZ|C$s)rYfPO(k5&f7l7uznqFIHHwx5?|`fvyeN_ z@{Je9KKqdm#4_; zLZW_Wo?#C?i?mpfPuef3mv|VGL8xoxlw;#iWJ3huh47pErs63z?kl+GC6`$3!yR5Q zQl{=3@>n9xuzu9IXZ$nO?C3`v3QhELL6vR+0$uZOYQXZOM2{bG?IBJEkjUEWf#5X} z3*~OVhl`068?UQEj8?BhqJVq95Nx$mjI1CI`Vfmvyp7?q(bNiP?uh2a1j(#=lavgZ z$6kOC(<~$K`j(wF4K?miOOEjhJ06!O?8s)M#jXCh<>9jP;|?pS+#@OEFs)&&l_KgP zFF-mhoJ^i21NBT5N_CF)JW2S5JM0i{wqwqhF0SC&3GV9X9dtQ|llzz`_vMSGOKb6v zRp$Fhdw@Qo5tH}iO-ETr_JBkawx|ycqi$JqIVDHvZ60rFZudi)l!!mpmpCj3y968+ zswG0kk+_K-XXg~}9cHZZD=p3MZe-gm$64lJla)5ga&8@XcsK*_r{dpuRO!)eNP%c& zK0(JTwMPVBwQXi7Yxvr@GS!mrSJN^EUvigEg?p5EYTSBW8giV}pQ=AKwPUYH3UI#e z+JV9%B+==p0>P$l6E|M7d6h=_9RDJo1qc%&m9twi{NvA%mSCp;M-LE=O~gkGUZ@#) z+X}%wE!D}t8bdPA5-h78LAbmHNHuK+_An$WAfjU`+`c}OBtv(%Li_Sm`k-n|%U=a+ z_2ORv)8rJym>lVSeQ&Y@pHPh9Sj2+4FJg+W!=R5>OXfuEpR*={&dMB|9*zQ`^P$q{ z=dEs8m#@3Cc&2N>+rv13)>+p&^|uF*`B`cG5P5oQ}4!sAuUqy?o~%wwkr;+a3ce!Tp<7~JL#;>0%|>kn5}(UKG~sC*?ZhIfIUMeMg{PJ1RSacH{;Z-xS&X?p%GkjtDFVTc+b;}mE{_>JN_`xuFxTqVG4|HDSHmPH~y{BE;VRY-leKC>zoh} zm=++0H5Qez)%s=4CunRfGQjE{wx7t5A!#-!Ouxowh=i=MhO9CqtnuAwz40pF1HQNf zWtF(qfzeu=21=c9rMq5`E;ycFbOL9EE(IS|M5RES3F%dwtn`$DpY)9$?(!((Jh~oD z?zP>fUUN4u{qCCC@13Dzt+HVSat~N^_)0~0e(i65`SclUM0B-?zbL<0rdH`<8F!1M zgz_BU5vM(J4a42kIrq&Q3slZV^wP0#~HL-P5y z`gdZAxHmY3K%?e#5`hnxTz~_~$U|eg?{vub48(AsT2yqLv}A9!mixV78*%`-Z1ZQq z7Ofp>61dI~B=j&`E!o}qp!s%h-kbUqW`}Z)CaLjOSq3C&5(LxZE)#6B{)-BG4~F~H z;9j5FU;m{(p?3_se=@Ox87X81Cxs>;%$$BvAanZZfdPB0BnRCnQ7{-Bf{(c1cyD$R zk-FGy#tS!<$Rk5F?3bE@(fbIaO6<%er{1X`8esIWrdAaCchv09byJYfJCzJemZ{L? zuo?tMimI@02kcoZy)!-*kYoDqOSt^JfzQV8Fe zNhAIRNV%jdA|;Uu-l2j0ofr=ZMtH1eNcLx5KVzbB5ZW|^4x_9|60%>xq$94j&+dc$ zGwQ%^vu;i!n~{tMf=n6UlUr2xL}J^pQ@|Z~=)ND8E+3C-1ATu`lLvhBL+4_Im|m&5 zR`+*g*{5RG?$ve*mB(uthAh!;6~Y3?qHKoeTBE)^kog6sY-lp!w=~WKdobOQOXcn# zxr{Y<;IiFIR5n>T-b_31`T*p7Zu@})FY+y`2DTGE#$v>^;Qk_6ErHA5+v0A@@ZyaC z9HR@1CUrPm)Iq;_kyx)mSyx%V4HqX`*Jf=|sKZGe+J@L|CJ8s!s@;B@J z`Fe{)zG=%3Ymm)GHqV+7C0&anol-ny#xHl0p~;uO#0zx}zA*1&Y|H9(ggohR0Du6| zs@-J!oRyExA6|!o(*c$-qX$N)=EP#o+YSF(IQS=)q(I}HBsXc!^V4?CCqqGi?_izK zp!?1;FpkMwqH>Qo#$FBstB@jUXW#7rBgVIt~4-Av3%1AA&Ff(es(^VL^Mi;5Z zZi8M{*Py+ZVj=N6J{}z(XnOk!cy@>ISe36*ihHd_?u+dr%{eSkkC&@;3OX>^3fe?4&Am{S8~r?utS4<%F%$yh zk9{C@r#fdvB?va?(X{$SA%xBl_(0g^x|i6H9nFQ^=D_4=M$ho6NLqHzeifNh)A&U2 zg#n(L$6zn7R)JlRuuK}!CPI`0LXNlGd>3+-7a%>)(M)2#1vVS$+`hl{^si4`t)&Nz2rD``iP>eMXDr?m-8yvl zwza)NjI!Bgs&>E|zNGW-(KB0sQ%^?&$Zy_K^9q8w2*Xty4aH3+@&OKbDFv1}n>;Se z53?O!HG0@|7A1g$I?`>}V&lelHj_J??aaj_jZV*L=KM`T>Bx3Ka3~<`g~l)B5j^k{ z4IoLl_u6;poNz8KnE`TLnF2rD=nd5xG#z@~JlF4EPIQ#bmaqc>EJ7)V(oFPctV<~b zw-{iz0tZ_R@YO_>}z3=3cNYr+)$eSzWnxX!Snrw zUR?HQE1!4lTNSy4v&D$6j^;5&cl}@e`n;Bf7;)p{<}>0$Uy?7xY{YLz`=8 zUBTM>a%gv(6KA*(G~>X@zM1Nm7yY`A;I_E)ngoqbt{2lq#ne=dz8&jA6K&uRiwXI1Cd=hC8aHXU~-z5hY(^8z;DV1Ve} zZ%Gh%o)OX~<6Azt@9gX>xi0!Jn;oZORCuvq;{1KD1<`TT|Ks{IysNc?22m<7UUh;c zx`-uq%>Cg~mR0^e+_QlUH>uKw-G0&&d^F_Lt>Pot_qm#yMp97TURlD6E++ldqiSXi zcIyN6ShSQY%O}tl&>lTP`M^-)PqD zZ{j-KTP!+bm_l9nxQX$bxx}qE>aiLg9_ht7RDtlbd`f$_&-zW$24L*_{?VlYDkI&7 z#eZK}a+rCPDGh}^Cy3XBnaqsZ+-AeXh()~x6070w*7VzHy&Xdew4Sk#Sb?AtRjI=y zMdGy4TWls@6b|o_gwDw3w1^UDcNrm>kEdpXGo0^s-R;-w;^Tvpw02>#nOr<0F`ScC zy6QEmhGZo2FE?WW3bAo-hEW+e-p4X`2Ddn_e0`h^n}r@?;wF@KES?fP?EY`3AZY)( zG`d!$*R{7%DI&z8J5P+kvNQx zYX(WEYqJ=OsByyS8!Lot-c0rcSxw{=%`m#JlCvJ;K*y&CRyMWD<1x3r?Bt>(AQ$7ynl1`k%;gf31L2qKi%cnP}K8_ z_+c9T5M%!I@5`n}E0Y9;Mk9ZdqJs}D30@5hSgDP?05(RBSG=<|6ej1(DMLSFdPU)L z$`;eCGW=nvJe&7#`pCT^;6MM~COh*G)Bxk9%uqC8^c%gFaJ68>lw?u=;jMLATKi3s zk%`7gTv~B@L<5NK<&I1(pm5r0PUpH{#BU-byr>4$@bGtjtQq_+8tQs;PCHvhrC}ZY zF;%_$N2bYAw*%HGfJ|XN0TCo{$3S393(&@ihVs~ev^7LxG27&m)3`p`yrj1dLY8zb zajkkRXNkF{8AB{ub1h57MS_Mu#G8@$F~jF`y-?skp}dcRCflUui>PD)Y_#?-E-r4 zW9(x~arg{93Qxz#A4X12PGg=VC!S1A`FQ9DfQ#@+Ed%tP1mHPUY)+iYl0& z-Q!8fFw=j2M>+SP6dNVka8rO;s#x$iY4escX$w^pDCI#(maJ@xR(v=oJNCul7_s#B z1SL1h<-S+kb}J1^yyn}xwnAZGJyb|32RBf5rCd*DZV zEq?syO49AJa?9mPu_rynO{D;_kO0Q(!Vpt~ONF8Fd`CN1E?g-$c8 zx#BI>nB_MuZVY0g6;gOv_BOK`8Ws?-?1?i8|Cf4pQmV)6a7%E~Q>^=qP;!Tze#4 zB`@M3@HrkO@Kx$aqR#O`+SiZV{XIcpl=yV3uQi_B4$!@fQ`&T{FRkDg%ffbBqT9`N z$%-Ve!yD1b=zI#QHkltIIqb8p@=wy|E|_m@3B9+}a^2*Gn->z$gCgeb6v=Mm0qS&N zL6%_YgiQt${l9-QP^mAhnUaq0U;NRm zuyCrQzr%dTvV>A8dXf+$bUNmr2{GTy)xDA?w<)TR1Km6XSOx6OH#}FlG?_oktJOU4 za~3RY4)4b4DBVszpIE`3M$qDaLgNi zrBfd=V-bmV2o2I4U;GgfH+2NHf|HzoMRS%;@N8g141}z(`n~D3(p7U)u(lj3wU@TG zqJ@-;OCJ#XsnZ(iw$Vr?s3k1%4p*!YR-d0uOFZnc=D@%d=8(ZLa(tgt%AZmB7_^rI zwf4ef?Y6&p4oR8ml7X)zcvLB-I8k*KcJI(bq7|5mT~j_!^*!@++ux9%a~MX1WR50D zwTU(^#eSQ&>sM(6yMFnT8|OI`Ka^t}Fu0sK>kM8YZUtbRZqgtyMK4)Ok!zGE1I+w) zl054D$8A5{@2L$7C_tb;SqNPoTX!;`_pRq#8RcE)&B>+As|T&Bv?1Rl!1eYsff+Xg zo>1*n;UBq6%4@ZVhb`F2*iPORMqW2-JvaJS;Yv=#67NoqqjE$0%tbFv@8%_3kW!7v z6QY|P)HJj=Xhyzzy^kBcL)(3Q5c%>aBYqb2sa|q_ea(a()xd=ay1n@ZPr}%z%o!j; z!r4z>(UQ3l828!@%lXP4$m9gaLp)o?W%Xtrsx3>Yr|}k&y)CDjsewhR8(QJ3|He}^ zNAUJ-b{zWo`oi=?`npkn-V^BjZNiY~-D?3vO(ADCItWX|O)ugzi}stBIgfHdj=LqZ z&Qa}}(d=-yu+KpEsyn^Cb2gdnKwsoc-yL5D#u?6T%5t1Uh$$^rN9!-jQnN12=m zsRH9kIrF&Z<6V#wwadYAfPPG#5t6$z#XWQqC)+@Ch9d&=MoYfS5-<~?K1$Kx?-Bp( zmc$d->@xAbj)CglHZpyJuy}3_8|=-y02B#v)^DLjY_dh6C53K5{G8&(Xftgxa>Ubi zB3|!TJ4MSg_4P3hJW86ii{&QV&+iil@TDcsw!?No&C3mXatqv!p$5B3;9NXmQ{nV$ zY9V9`*3YQ#LiC6be@jW0&K4?eSvtGjAs>`P!$a$vs}GG)#b{d6Q*CMSndG1C z;CV9GStzC*(j?k&;gzISyOvK`i_H=6Sfoxw`!cySe(QQE**pP5+-M!jiL*!08bL*e z4Azp1t2rsyBWTOBC&P|Rtl!(TUP)QhwBC>E@O;uKHnJAWfBt!S zWUr#RGl~||ztfucrqevvzv7Ex;^PWbw|k%oxIw2p_PL+v;IGLjj8`=F=TIyQlz6~@ z^@E995*C=oB%tHUvASc1v-h@pxVpDE8g^g4yHweml4>{T|H&@GOUMF}boM)7{k&ZX z5D*cL?T`)uy6#W`wJ}^=h%8W(9a6KJC0UlYUQbU}@O@cAR^J`#_N0a4LpP%zZ&FVTb&63A_#l#`Lx>>2%>vkj(^I?(8(9!8+GO_T-bT*e)-uypI>S%)l%`R z;bqAKPmS})=rpxtmhSo<;CHz%cxUK))gG zb05&@eum!Z{Ynah-BM(z0?o=Bt35q9Vzc}#3`E8H1UuReBY2a`V2 zx{na6bF~nCeO4J@Kg#4! ziR%(#n>aWt{?XBoNJoaHmd9dD-xIT*-kUcupN#Cl!xXc@DLd-CYPF7TsQZ}%Ci(%Q zJ5_*`al7Ste>+bCzX~Y0hrT>If!ZH*O`5HnyvkMNKKv3N?4 zx*sw2k1zbIEy>WRGW-*_8Xqwe)a;PKPjxnP@!0?U<^Fn!`Fzrf#!MX0uw%QB`nX6K z;=l$(~5#OCwYsb~0T zqX$d{OQ+7S%eBER6n|JAfY9YVIbgW!oz7gj)bNrfQm|x$H~%_W>&KZQIWrSoTW6vVV9 z*e-O1Ow9Aq=gphqeS=&U3EG)%2a>ilfb2Oo7?wuw?}vSP(c^kU@IgnEV#U*OX#Kgv zx(h`~`@>*W+w6BqJl?iHa2#R!ox(yARbF9NSLaS;?;SQx3_u2wZx-ozesvQG2gC(p zV7Q=*dt<|+%*C*huP;A!|Kk)%4{(f{z3N?dEH!vf#4gbJ7XN<)mf$gb_-tm*`)UhS zJ?NFEmVe%5?;ATHgq&X_Cv5#G2!&GM;cnsPtXo4>I(+ZPJueoYXtt*B#M}SG`E0Sb zdU*voc^zZaG)UcrYbVx$c&AHw_1aZnAN9U?2vE+BIvh^Do5o3ehXOr5l+Ko3W(eyw ziF{~}x7UdzJ!HIqSuuuj6hiWW0RGiC1k#dfMS#f0N+nXU$J-|_zC2fn%hO2fzoj&o zS)B2+b}+^aN++ukZD%sw^)VN}t*l0?B?9T;wu2wkQ)s?|PLhk^SJvw_NT-22IGxX9 zG+t*566_&gj6X3?wd+E^xx~Ufw@UsUTfNQftwhA%N~%{zg&U1tH%U5`e6l@{?bXzn z7F)0y6Uj+9<+X%IUDqe*w93B7lwbhK zVz0N&DVMrsPt(~niFb|!k&jZ}pm;GI>Ik09qt!m&3L4#S2$HHoe&pr#7-k)L{59^` zEPv_3C-6g5esM+{FyWC>X8s>vz^`B4#K*jrRXdBmua{fyYSbbjWY;EU%Yv^muwo^ICg#Th>u1_Kg z-1TP!YS1rCx;ncHM8CUTJ0Y1tj+SB5gm}n(g80C~>>jj_#3;l8Kpz-uJ6cN@g~D&0=HA ze;AuB8WjQv#PHi;tF}xH19Ibtq9>>fmL+n&=(6$-s z1b$!le-imhE4hA)(_l2TP@xpf3ViwQ-z-iXg+SMBETzVI=QmM#lPe~6myLb2>DoKm zx!RSes6GVJ+nZXoEEWC_BOzFX;LRbn zb4$jT;fYb{a@NmWwlKoBZ@`PLmc$5kPc(x;Xw=g1 zducWLIlnT(!QA*9BJK5ms-vmz_KCk?dt9A^GFj8K7d%c^gNs^QS4YASdP+K7jx2q> zEa;u>o1Gz5Uw99(_08~(*W+=ikKjE`kQM@#w4J9vM$&8o2M4RFR?yqE72`NA9~*?Q9?X7?RVp24-MqRE8@ z4aH@DJ+^Z)?G42%v`H{>rn?LtaG2OX2ASyIU2=z;32m6r`z2Qms+Ky6aowgal)q4e z#>AidY6XGut24Ta%BuRLB;*uvVPRg*;_;X1(j3d49UjNnRPHt2MpF7F;T7{!Y$QWl zy^G5Rky0{H)t#M3sr7KK2z+Nh9G9bivcoB1@IPFR039pl-amGSQsr>W^PfK4gz9_J zN8LzhisO}OANns&^mjaTFLTRYIzOh%6$fejLJOn8kUke5W9yF-0VfS|AEhOtcuDJ^ zQ~jN_SwzP!*gCzDc>Rs`s@y+I6BuvXbhxNVz1{%u%K>Wc4M$!!$^P13Me&bXJQ5jl zh22oxA)spLL(QC^NO*-Fm47ckU&v4hE+&~^C$cf*dA~tAAg!MJMHZGOW4n)ox=$4) z>`T84pS98rTo^W(@&0Sb= zbM6_W2t$Efd|TNMFHAeY7OJ9jcP8@{Y>2sA;&)h~?qZ>#c(Jb>?+(^_g>RipJy7~b zFkW_8T?vpiA^eGxclfTxK69C!lAEp_-+xRmp}?lXese|`fxudfVZ+llC6R)rpgK3d zc;2zAAiT{XQx1@1Q|T4?%D6+Mp<^r!sLgi1Pp1xcD2$ipa&-+qG9L{)1lJ(h zGl<0GrXA556SB>fV==9-?&nx2rI6C(jd@7zsKm$qk|nX}@|~70DlQ4>Mdg%6H!m(V zdslPlpu0Te)^I96zzm+_T;_)i4sFvnoB$SDP5FT8)M8xullWR6jD@uiT`k!1 zeHV<*FE8a-sYI5*j-&6K<3!+;Ke&*~X1h=&4=1E5gJ0&Rn+EbrkJyAIgXH<19#9ps zN7Gmmj@q=!4R8!a?m&4)NK@6CoP6{@=hwzVo&TilX)`lhS%aTDes~)>87|*^DZBoE zq=^4;2F~vA5b&oKe|c>1J?qw{nS5_;ud86Zh@p6@>xRO}0z>&gpWr7;`ViDjvxooaE{yO?K(_a-84e=fq! z%#5O5MplqVD5g=|#yGp`^zzlN{inhe{;5$>Q?bZ7sARS;9SG_iKjm}Jkey)0|1N#?mWOP@n%aYUHEy8;DG{E0DxoE_QiT*v?2VSLpB&{= zzk>uJ&5}%iMztzYrED^eV!AVA>gutNww%{@OCg<>kj;=wlN>LJxM32b#!8Jw;!zDW ziVz-#3fd&#F*h9@<-1(=xK)-S&#!wP@XLGYS@or17pg(IuocY(n-yG9dI&suWQdI` zH@w8FF$5CaBLgRQ2ke6FbHv|D*?pml7MbA@2uyHEW6-Obw))A?N23e%=(Cst1JB== zIVch9y+d%SAmj`TZ1)ya($Bslqup9;etWe$da?`pWDBHPEgzUE2@E6?IIER#X5o-? z6g-(Dt1><%+QtapZWW^3Xr(@4QX5RH)`v<{p)=(lH8~_qq{!d($sCuzd(ldqVB9h; z|0V{5U2G{RDZXiu;&2)~n1wD#<5lZ?<3+orOIAQ|+~eMxT$NNRaVnagiWV9Q9x{RUn>1hr;1txD5$E`NDN_TVjjO_bO)~sD4{B?PcCRE!&?y`~+;#WoNAuMG6>btJ!wngzb>s~hB-sbUh% zY<0%Ug&G2L(QPy>nH0FaqOoxLE^vO)h4t@yUJ6y>5{Ws*ZW!GAQDb@blPYUEtDJ1ICby0p6d|s+eykgzwcoJJKViTu+>d>yL{$`H126IFr%^2c{mu#qTj}YeSO}aH(}F!jaF{J z0yH2u@`NM%Fs^>v zV-U~YGT<3b#4rlNiVW>N`G~opoPh0qdn+sBV`4g%ws*!i+Z29MAoG@_oc+V&4Kt-q zH!>Z_+>NqKES*LFZyK@`#X>MmzYUN|)@Ewf=jkWP`w0Te(SEWD{oIm~tw?$LOMZrR zDVrUi8`_giF4h>hu<5hz#(B26I%1Mj=mw#q&lk>jU2AtPX*WOiHWm)=jgt#XD8M3_ zG~LN6&fpCM&dki#D5d$SpcmQ2H4a=8SLw(@40&?Tb~&>`$r_nM<)>V{TqqMHkN*~v z46R<#!WpEPoV?B<_9%BUCg^Czl2a(Nn z^*g1IsmKX^7;#*5{1a>@HHE9Xi1g?2e*l1wJcy$L@T3pahk@4VK0G3LD^F6`*tp}- z;`JqNcFty=kLp@g)$1W}V{z-{`CN>0twDFfg1FO8L_EM&G~jt(tn+GnOGnV3Jj$(M z%%~Qpc~*fc!=vkoerid!;`uDniF+@b6F}$+Z~^h17_=hf_1wqCnw`Zc&h{C?Gps2e@rkB_<@!^V7`#J9CZEcFs?zUeu82_Ywe)ZYDYP|z2_!>J|upHX~pzytE$ zZz?d!U5+}(>&qp>Er2c=pDNr;q^VP{TpOrB7vixJ;zi+uGs@TEUxQbLL`l|9SZ z=n_(!q2T_Tl{JMWW;wTAl9v=pNE(FU)C1{*F7T1SZn0F)R@nB+SJedkpGUFoFPqZO zcNy?#t!L$|HFyFOL^{@YMos(m&z4cvDPFlecoqFw5YLXGPQ5Ti^s+crYfD9yO%>}PQ)_YQZ$E7#DN_hWUL{Dfp7MDV<2R zk!6qHx$eb9p252gyQ3G*D8f&$h=(7o5TCJ|YE{P4lTvn!^^;gFGgwTk<>J)g8Y$Vu zS$dw?+T2JK22Lu2V!8^9!YwMu%MQkH|B#vr9y|F+cVZ22nQ&qtoU z_or9esY|XPO@c7y(*2VZnQqAO3wTCkucH=UcH7zBiiy-dXa#S={hx;x`*7Rv@)mU`fc56pb_JN_x z)5f56mB({K%A(u1N_d=Jr&EP1Et}|61344Xoe1>)$OkS3W@Q1D0#ll#uWe$EIbujI z;19X)5FK^}jZF>{Ha6FosR#Z=ztXb^d?8@@VCUvmb`nWQEo!{6de$>^{rb`@OE>fg zY!K@;-3oN-{??StO!vdy9P#ez3DPS!Em)>c^SO-ORm4GNFSX>aH#AK-FT?_*1&J_9 zxoNgsCQ^PnwR3**GFzk_G{i(pE>s1>7D_z~MHaB8z6}KWuv8zJuvV_ zxOpNw)T?4ZNvp?L42T=(cgww=dH$XWp43Br_f@0Wr~?=M{5)wSZ8C2wbeHgdb^$SY z#$M#G&wHfpmh2_X+==nLWV+aAvm`(IJlbC_Am$TjR6pJNlsp`|P_gAQeQ z+q7`Y$a|%d1)I-<5-l!&Y5XpQ;`4-jGDQG>*p!|utd#29iT~BJsD3{lnPvW-n5jN! z@Fwn*&MN>!U3_=`ymfIMmd>>~ZN=@?>pWL(NTd7_lkQtpPaVe1_4)7ciAp%Dx_8l+ zW(diQIygPu(=>U5K=|ZaTZO{^rX}AaJCY(YX$o{IrT3ZT1zJpo8ed^9H9ERx`_I%D9>Q?g|ZW zssdm83k{dI65}1t;a|n5Gv}r8{jri3qpqq<$F0Q1*Dq!2gllLxO_3LJ3#JUcE}iUD z?%UTOpn&zpoAEMUh-oG9!~oV@K|mQi4{&*`Ny)f|Opi^G6svf;bC%hlQl@&V?6u|4 z(VLRjJ-|SvXDWTCs>5YLaL8|u+|!#g9s0q#q`h3H=MAEmfwy+M+7E9;yk?sS?NhRd zP+yM%UkR-8{zR+Lgit5`2g}8tud*W1F89y?(b-ZFqoaA0^r+SH^?W+px#}^+qNn4B zQbjAbPSqmisctdrkH}H6w46!9qD*7fjh|jW&fDdGj#SkVup%DPT%s;~e8?U~)&B>W z>_UHS*fC-Hm&#qU(aoUedB9Y-06(UaMB>rwXKl_}vEPgU@Vf3<^==RS=bL{QIs)TK z!(Ar3dq;|%_75<^-0Vcxs~Id|H`&;BGoA0KAE0Kf0J46MVM$vA_y(5$L`3p*xihH2 zVn;=s&{+9T+U;mtIrY`>mh;suYFXFf_Lbo*_gs~dHa68$kl15PdfxAW6FunWZS^_9 z{7xd$lZ8PZ;4WWocDHEegUI;N$+jnUlpj;z^tX`3wQHWLJ1;MBTz!@f7|b0OOAXJW4DUAl4=~zMKIH zd)it94sY50{`v4%2O2E6j=1t0l0LCSmJo1FX1h?2pLV3p4hb_de77qRcwZwn&Ku?# zzU*eXLlDbi4W+1E~9pE3D?!UDfrOzkoC75L6ruG z{_x27&g1r6vUHPS%5Ioz87U-G4Y~%Q?jHbukeDgp7xy`I$q}Mt+!~tZ)~nF4h?YRp zvRfoo^M?sLeY_i|sMW}A8oUa9GEH_j=WZ$OzFWgnlaSaqTs!~sM5CyCD^P7@DuMg* zyvrt}nQtsf`_P++onRJ~Bc0=xB<&g=0BNn2#y{M*ry%L8Ji z_J9{~V}&p9;?m74V`6jbKu462oGFxo-(I=38y7#*o=Ms7e))04iYLBHMe7Ho-2-8( zf7=uVNb%VEVwvnI#AM-0o;;+H&!7+;%Vf3e1O=f z42D+j&Oak3rO}D3guPiw8+Vm|C+%F-`_2CxTWv_is`p>`lA&TLM3&oIwB7I)tIm0Z zGN)_k0ATNN=~o7q0Df!C5R%X^hwel{u=eU)u7L1t3pN_=i42@)9NVD_hxWX@1Uq~D zW1Acwy;;7Rt`Up=`2W%TBu(*6LKvr6Gw=x+oPw%4+P=(}Z*lp+G;ix(yB`Qd^&&-J zKR{XVhGoVdPup00n8f@Vas?FW#Xte0YX>7Taz7eEacpHEw+Jn=g|fs$GrLiXe$U=TI!pLPRl}Cb^N% zZuC?}jEGHZ`E*m*5tZOi)H0)xxOEG-grHiz*FyC6p-<^d@<;D zu)piL4$so{sKo5Cc~vZJt!B%q*A~Q>3tE5i%j$viWmErwoV;|aZQ{rMx#p*ZB?85O zlcDhf29efKVDMqXLfs}&*45ckApZKxjT-hg!0j(|ho%efuhrVPrv;M%LsUjeqOLAT zRWu|r+Pds>a|rg=TBF=$ucLH{saRk>s-4ItSafpv8Pv;#`Wc3(Gj~dA#^liv+lgiw z=SWg+=wfaU5~?jyV(!;-{0{LT-!Ex->N2}nr+NL!*@TAK{95^t-jBrD84?*)RjyMT zJUB|M$d8OikHiKrwZPiqpG3jv$F@vngd3W>gml{V99BlOg@ujDJ_SK`z-BYM7tH5_ zzBC0gdyeUf&Gd-3y7coAVmH{U<%TO@%z^?I0PorJ4GpR;hPVFLQ+V_A3Lc^OD?#ev zUxtR1cm~X>zh&G;uNT_CY-iV*FeR4BT{nc_A}Oc!QYp>J8#;J`00t9wHnK0oX5?h& zM@b00=Z+A+MnBnsiKwr2JwYVO=G)m@3kSIUKBQNFrr45rro5XG4q4%iTrs#4_rI8M z3M}MrVi#v(;dM6p0g8(AeRdF)grupYEu0+O2V9kIOn;w{@0^U6ARUD7fH;sQrF6dy ztETDqIO2E_aXPsL1ni8O2~nBdiQar5pD!QlYopwHeZ=ee$-ZO*c1JlfgIskt9WKx~ z!OpRkn~%P;sR%DqJWQE+Wz?~1H>QQ}7u|07^wNr6UF?+^7YZoqy!cVBt1;e0^6nK> z+`y8*=fs+=G)vDOd_OsN`QGrBZS#3#)(!AnWwF2bbTO#C@e@-_$YfRcgNO*$&2lpY zl3Zds7@FYviDMz|@X;H1S^;=qz9(%M(ojl-{2Mb4Oz`2i)01JZj5G?s38ndCc!wPI z?h>;*Gd`Kguw%2yDG(ILBU}r)1PlP5VmnEqUFtn>n1CgWL)Xw^@5yzqyOy4*3JW%0 zQKu9pC!)ktHBDa*;}vNpP5ewVISnl$r;q8GiM}8;f!t(sWN!eR)h-~JeR&q;?rK13 zB33)Bu)KSKye;5;36wMaFtC@_jD$9F`)AMiTk|X1C#rb=tl_={2^o_e)}-M*1ttIm z!Ns#URgV}Y^{Vr#bN{_fJ9Wm-pWfO)Uc=Yzp|_n?v0z_&vHqiimUUS)p!_0|jTs}r z7q9#2%}4D*JBk%G)8?K`1$>E$JUw>(m5}Xrela)+0Lp}vT8jT36%htJEf{#J57;87 zA0_^J(clg0K9M2LWrqK>7H5yH%QV`^mzz(cf}bM>elNY1H6%C)Fxd!RQ&3fjC^?`F zLru&ZOAc1Cyj!Ol{^@4>W1sERRrmIIEjqWOC1g)YwPn2#H4hkXQAunDr$mE%P)*k& zQb9pA(tiEp?~rS){V<~EK1NZEV*l^S9nZY^ipLs$ja)`tX1KWm|1TjmTr8C%>GSl z0y?#RcXjk1Q?dMT2h5@gA&AOaAn4HbsyVL0&8QQK5juX4WdVpNySP8Pk&X0m)fFY6z@p)fh7I5Rm6W`GJACA{v+^BpWBS=jweve-N~e&6+h ze{=BYcCPK|$Mwp!_}yI~dX-+Pqer89y@#Qw!XVMnzhB4HkK1m1$8#v|EADkiex55F zHu6%`p46FP59WITnY*(nO6oCD)j!N=dVR;fjB-u9Rv%nVMS(?hqlvS{n|br4Ww}uE zs@AMoXi`H@yc4+`#hkeeIy-wGoXLlF-06#Sm^-9EMVI43@Dk-5L&a{RCtT9Im&m%* z1PckhMr!{kD60&WxxVi<-weQV)v+U<+@Zyr)f93w>Fri39;A?^M$FLyaT8t&$b4a? zF14a>zlu`#`uCJ~?BOC@s?jAbZ(%EFPI@ooHaD^ZKt(zv+~i%Z$HAA=9PXBvc*1-e zg>FvviA?7Qx8uj{UbmiSjK7l>ufgW>U5`v7e`V7*8BQ#$=iw)L-7xfImM6TG9X3JR zki^NJ*z%Nk_d1H#c~59!jwSwmb1^g`3TxBh_5>zHW98yST2xyIQpge6(BJ1BM?wr zsTCT1xd$?kE3Bkg#-siwXf=s6#si;&xBlQx#!I979W~#jiY8n3y@o0WvE7pIVt3sy z#J1=A^J+c4TBD)x5A`rgQD)FX2bDZbtiSZrkJ*mwIwu&}<5(!X?hT2S3~l6%2ByRu z@6@GrJ^icJ#p-=5E`;5~bfPB;?XeyUJd^D#dO$5SN`x!+tP zmzwPz9=uz*@&dl{2psF2#&k*TtC>rzWGd0@l=70Qr^jzZwuzSq=mxN++6e(RKf_T* z6W*6x*mBI7>GL^bUkn78u5{5l1m-3xruknm=uLE)R|XsxuQ&@t6R$&R($iV!`qi!Y ze)5@qjj@~UCKTN-ph=%5F8K?0kX!|0IY zH|ynpNWY4QPIuZUX%)Mb?|KDv$RTA|$3$U=suBcC@BV%e1~O13_;g9x?%vjvK7GdB zns!T6Pj}wsGZY+b;S~R$U4Xg$W~bZUBz%a9ffupNXJm4*k3#<&m%$S8#igB#Hs-Sj zyv*;&^n}Je6H+|xh(4$ONAa(t&Ht~?4Qff3e*kv=38x7%xaWuAzqg(y!`4U>3HZP% zf2kAxP!cVlMq1X`e<5IHlA9$b=q*g8qT0V%6-wnPD)eVp2QP93JY|@|{;|fvrPDH7 zp$$8o+P!9xIL;Aj@2wza9+~ovF23~hOW?;z*Q)H?KI=cm6Xc`q_TD3Y=t@Quv2r~6 z-)-8)98}WIzPV#a36`a#xhu$fGzMre)mvo?rlAdxP`K=2k?`tnoWlgW{4#%G%#`XM}?Ge)-;!hVgw*>+UNlbN@ z%!XcVad~u(Z{|1|sZd%b?}<80nDA*Nt&%o=*y{r>9pvUnrhZp?H|C7s+3&DprrR7` z-~78#*$5)k_(5bsJ}PJH|Iqc80aa~nyD;62bS_#-Saf%HcY}0ycgGUx6eN`nX{05k zm2QykmO9hD-@VWCKHvF%E`Cksm}89lzV0iekXXx7`lGhE>~4K$Ol&_~?(nk{x^Inh z6DMeDPY;4K_Sb)Z6m3eha=fbzG_(ez55J3f91X1hVOktet~{@uzH>!7Na#W+@Ga)t zqCK~~TCW+m#EdU}*MsyM@GSCAa4nvB4d%W-4;dzG=Y`WZeT)V8F-CK~nKo`0>P<*F z#P|64k_jBtIp!!XlrJ~(G3v=BCB_p_F$ozpfzs=CtP8kP2xP*OFKEYfqpZmC(297& zlg|Lndxir4bf4FVPc&S|gwF`@?pa~CdaZVNF?QL!5-_7}`SUuBh!Uhf<8bgM%?x+Q zV$LCss?)f!Xx;|kZ{Bt6n3Ivx&+N!cev#crBK6H(yjXvnSH`e@;9ZVgl*%uLKN$%i zWa^EYk(XKG&U5=PvMH$?lWU<+N?nCuvB5^C#=pBw8gJ+&V|X|3LDineK=Cc&Fnp$V z#)Dtrr=jt-o-RR|#h~Ya?!2Vi!f@O0!gfnSlTVIdjiZ?%fniYkZU7%eQbQzPawl^z z*Wi9`<^2WsTuskV3*W+0X{V7JnE@UOsG#VuG--sw^I6cV+5mQGx>CoP7Z)_z=3r)5 zg~cEYb0wQbj7I@E5{(Wp6@Be-GD{Zdhc0?;$7M=cpRiPn^-6CHO)p&9?@nK}L7GgE z_e3q8M8Q6%{l%4v0x?viK0P@(De1Uvy%6!+R!<#dqb~Y`_&}T%iX*&83|c&r)Z4fG z%gf7CrJgcy2Dl=IMtnmvm*VQt@3^Yvf-h#4InSc%T1a zQ~=iI*PpUG$8ns2 zypZK_9OHK%47i)Cmu($fJDSWg40_u#Ozs)Rh;v@zHuY-0@8H!(Uh+E|n%(j_2AzD~ zznp(Nqo&Gl(BbGfI3flSN=TjG_EBmd!&mb-@k`!-_r>tji~f#B!`gQ#mtxX_)}AfX z2A52B`}KEJ>T+8Ui+Qg&2+kYZO7*K1V`^UNGTm+qT?hl+OIH!8^OB|S(k}Xx+){bgXU;BQmi{j`a(mvl8{ag$E)uyzRW=B?$z$V_oFD#D6_Z7q2 zaT6(b@~*jScw2HA79EZ`GisWl!8y5(jw#K@mu=nsN!Xeq%%iL#WJw!Mmf}b>-@cij ze!HIkY6p-1^hB>cmJKShpR0*=3dPc01Y8an34$#ST}SO1}8A zF);coe0N5`_W*8l)4Zq1I3D#Cu5&f3lUoEiZo;@S>${{FFY5|-Fn=f+1$}N=@=YQF zHE+HQGyhayeD7j%US4Ezza-mh-6DM!&dNF217X(-LNpH+^QWEBbRcr(i)xXyBO#jK zS;ZKj#fbdAS^aM2Bu@Ra`2WYq`~(KhNejC*T<41#;P<{No?YvFYJBP*B=^n|<7Y{!a_;AE|sMx*@-Ho#C!x!)-p z?VCYe8Loy7j4sfmoKVdEF#Ds=$1mn80nIX}e&dva5|{0q2*(dQyEFy!qkIMOYwkD4|P4&{pk#DgIhYkTR9%&PdZOjDtyxqR=FOY+-c^ zfC>&Smjb!WQJHf0jZP5cA)=?bM|qJ8V0k+sxm%-H08`?~5tC{ivPTc6NRfS<%4c<6-2X_(~a$VxSGZ;$3#SzNJC# z>#ny-`a_UpAei-o@&0>jFcA3aTZGyJ6h2NM2*SH zD@S0#_=T@3ch@HxirP$XqoO#UQ#x;Zc9A)n$ zBPbv!iVZl~Cr;#NRQ1Vy7zoEHHMsu1eiAYlEf}c5l{DZ39OXQWZ*^NT#aqWiLkg1h zt9v@hH4@O3jIW4n;Ki%{!!-V%sGv2+^-`9@I)?!&Ww3t<-qtuh+b>%^fkFI*Q@{%aEUcMwL4 z0=DXa_CHSO-CwA>0pO(BjEhd?;g1NbCqGcY1<2dr3riXn$y1gv6}9E8T!ZWMzZ&Gg zHI9mpKm796eRMk#3&@6y%k^fXrY1AP2Fc1M(1Rz@tgWp9MvKzoFCZ3Dk!mdvVDWVs zQxj>ELPUD&ef9%Lg}spKT&LDM^h6-96jfBpY6*cXYs5q3hyMPEO-oOWX-4o_X?G>~ zU+;U-LTuHr|MI{`38exIek5n>aAmrwXX_gp3imzEuCFDE5R|6McA*m5Z?O{yxe->{ zt|UA8(bxC)wTc6rtf(lQO*~E)Nr1Gi3};?cuymQN%~U1VXU)&@{!kDshvnMW2)7hT zqA#LE+L~`zSd@}Jqak-v%BUS&Bi#8s6b7`SOv59j!c63qC!?2*!&zK5p%0CZGunCa z(B@IWI-`s+;zk1Kq$>EoANQYRZvZLiPdMKbp(~9jAmdoy--x}iVhWKNMFthnhha6} z;{YMfAB>--Iu$59Y?k0VWA_|>7SpyY8#a#MRmk?flR>x$0tWb3TRKU4GNz`se}ZuW z{V^rGgu{o?-&Y%C7`u3SMkdvw3;U7+ZrjX3@ZR=CuZVo?&vjb=vAF;HytzkGl@XoU zFPJ%W=L40`tlOX;@20&T`+6)5SPVPIIodjGv_wfwYIrGSSX7kGg!Wa7MII5p8jP|Z zK9n9p0d-sb^x)%l@#W0JLj_%Y*G5XN2;%$xgLD`6kSc;f(@#mp>m4&n9TLdx2jWuE zK7-H?4hD=!-3TmG0luoDtsB~iA)RonUSoV^)GxrG3lE0TB(fV_x_j6(b@=(&rNtD;W6Fny$9Evxm%n42+|Ub zppJyCIj^^hGQ8US zZRnJP{aZi&P3m4(Kpz%MJ=gae-W}WR2nmN(ic)}js~+%Re}_W>5vtIUdjytZxy`pB zS@hl|A1DB%WE94#bDcl{Um)6YMByhw$!Ig%E7k~6x&>mn>pJTdJ6nS0j1R#GuGHyS;<)#)Yw%e3K<&(0c2fC zNAkKkW(ZySxizZD$Q>6ynj#24jr|*2(d`%)0yY4tZUTA%N)SInuo5BU)YuPWt>X;s zYv6`nz)k-aFxw_{ph4Dn{b>0xIA@#=X4WAb+| z4yLA~i5N-a04~N*A1d{iytA184>N|}pUy_&V+4J1fIxdM>@pQOVDV3EI|S{JPMm+h zS!13=^D&_oLnXyy!BAe@Y)(;UUY#Qnt~D?T2OXLH`4V(K1yR_op)kEXk+^OYPI~a| zgm_|$54q4`l)X!m0h|~SA%YB^0S~<#cSpm6vd#nnoKBoK)h6Kysg}Gy8)7d+TFl74 z`aRn+Ki>Q6@{3s#%>M1beIf{V_o!24=jm}ejSBl4UF;7SQ0+;tS*@v*M9i6^R6n`z zQ6&_#$>75R8@E@2`?}ey&#qGU3miMUnq*|%$6R;jrM{Z+@ee2(zyHAkOaw^~!!f!I zWBj3iy3hhKSJ75X1Qt`%t@EAMBvh=CRQz-}ATt6NN}CU8*8adBOyrabH|K+Zl40yf zk%kWc(e+*CybYV!Fs=1wt?Gz#^1B^=pLnp&0wdgsA)My$zg2*$8#a=VD=Gcf$2S~o zHluVl{3}))bHt|Y!vxtO@$Jzk&>2>@X(60{TU!_TS#dkbmv;mZA_VK+xajiqOgUJG45U#d-N zYTy#BpV{C16_wuUr?3z?Q%2=8!5XJw1VWCv0A4|;05LRywN5G^Envz1B3^S6$ZokV z+i1H0y)&v6F=YeS1!TKIC1Dr(P~9=?yMJ_NUAJ@zgET`PU66wdA}EH=e1+o436EFX zje-_hczsKYi%lF3`DtbEsAgF4Q0pgi@piR@F2ZlmMRX~ue~I&8nrEK{bV*u_`*>J zVquM%wZCy$lHQlsV%yl7INR9XziHe2?dEa%$bnp9Hy4@}BWu9F)F$70;qy=veBM)R zn|_tjqNLap!Luetdth0=+{#hr;gZANWL=s&vqz0^&So-9@qqc;gQRuOHn37$ge8S8XmB~ylc&_DQv{<`C8A>+nn z_3rlY#cV4#Yp8KS+*7;I5B-Wl_>B1eV64a#j2>y#!0+t46jl7{v?MOz>xLyDr- z5P@1VNm^VyH{grT$*U;=fQ>W$Zf1&0Po~%e2;Q13478@&n^py4b{idMprym1vnR1| z{Gg-5+{jVzX%%?9z3=XSYp926l!ezh{Gc*y@kzP?l+Ap%$7|t3}5&J@NDQ4AR+U!zsl=BebHID?pGgbbUy& znQW{2@kJu9lx5wdjaf!Pr^;9&&R%AmYNpX>g=Jb_pq5XM`tU^p;k1^FdUcFoB z@Uw1U*a?iuY*xRJkiT4zXjZGI6}i}~kw=&m96? z5c;6s=(wwX8B)bL*K?=5Esi8HvG7(?~Z-ed4V{Q->bI;&`edB1R^T%U}rubs_@qP6AWQ3;J-2Ag}{qEnQDa6&3^j| zz%bOt!Kmm09_fCI*uy+qldcK=zkKKIw$_}#_6ONb2>PWWE1%ZysOBtkFzNH&i{$d^ zc8r4#)sz8nSQTkG3F*u;UnB@<{AJWU0Z*Av-P3@> zP*`*{eMe`9TGR;%!VMXMHN7=|&7sSIqD%7SXo0<*k0jxp1eqe+1=D06zlTJm8(wm9 zme~D$foHrI;mc6N`UP?uV{Y+def-_K_vkzIoVK&1K&S0?GSJw_iKOI`>Ot&yc*Wm# zJB%=~FyCqaMo*haPh1F)WKYJa{gX;98Y>}6RE*VfjEyCElDFJ7VVpE>)K;jN*JiWS z{z1qAz>oDleF~{v-oE(mZfx!U8&ls0uHdx*Y7$tnLsc{Rxl&>B`(t-upVe=5t%{zN z2?D*WEHI|Ci3lg{w7hh^H5k|0@)t|{%sv1f`GB~q^^jF~yg40zE|Yt+kW|v=4)w!J zDtAs*Fs%aYS>fPK_KufHT|t2Yp0`1_Uvg(u&K_j7J6gg$ZMOV6_&u=l_gCQwl1RUW zq92}3*FxWIemeI#&Nq`yK#E2;+186#NSLo>tIQUW`IgFLLSB^bhmc0h2?r4z8m~9~ z?t`QhtsVHgaH+e;Muujs9FZal(j`)VNwhEs_u=&t4ZBBWMaL2|J;(S~R+X*NY*u|4 z$e^Vt-}KxzDu)Ay@iejwT{>FtrW7JJRZFoE`^?NrP~JZr+aickCySC zVkjLJiiuiC$&HOumnA#ia+{GRgd;K^H#tPc5#IN6Fz8fpgFi{^#Y87L?1Ak#{UD?) zmln>07bUWB%?VJJOHVK`I~De%1b$#bqS>F3wT+$_8h?LY01Sl={S}xE`2{?c>$ehn zcsP!zgf};1b_53OFXy8ZSkFC5qTsy+TT%1T>KRjvqo%1y}@>2;;Pyn%v zUw`MChq6y}MKF3E3?JK{-+g;FoCH0d|FX|~nmdgNw>qcU9Ic0E&Ie-$e|_N|C+A0^ zJLk=H1k7HgG$jeu)l=$%`}`DNZkUqZS4WkGs|>_x<}SmPCcJ`CbjoulY+a~S@YZyk zN2))QeAR2lo}=VKZ+@JgVLTB2Au#q?vQf)%8ICx)Ff}xsrhwY;3IP^P+9EV*c)~E2 z)JwOl$0i~_x5uV&kBu-nJu^hXdV(r1h7Z4HwUlMKTsf2CyR2Lft(^ktc=bw1=-C^c zB*jr9FOIa)g%z?u3cpv7pv!P(nKXn%V1o4iOrX(>g+8NNuZ)$!q=Bv?;~^1%?YKd$xJr z>}<8EM(-|dRlC?1o18GeiN_o!7a2XFFVs@HOK38c{1+NQ3lFVSCNY%U$6Ftm!#SMy z=*DFy-&8q=%N_}Z=zZK@5>H@Sn&V02f+|>)L$VB@IHl@Vce>6^k+oP>gFp*B z?r2b~C3MnCfH&+#m%=MLsTAy>%kcK`j_mZ~#3Z)OOfY4x><2W4VnA=`W{CFd=@}J+ zl%G-~G2o83T`DCU_GqO+y?5wdEr-_{oQ}@AoIZOIkpr4_g$^6q`dP72Aa~os77qZndsa ziUthYtpeY>ujYd6!@HXUgP*)cgRMf_aA$ zoP79R3OqBz9{kH=HFdmM)An91JM4%PHI(s({YNx2D%^J&gw7>y$nKcV6nA<{v&wdd za&=P(v;!{#!eBF!3a@)I=i}x%HMV+!_W7gnwX;i zKw4g)j|x*EN1VVbpYfO+GKyw)ibFXr-TwH0(Y60U1OfQDq29&ilss3+UwUyWDux7; zBFJbEPJ}8~ADxhl(wGPz%_x5RF$){7iTtN1uL|FEG%Lj-A(fK~|V$ySbTkj!;5X_A!oK3O1n zA}7Pdq)GZ7KBtJZpPmmKv1@Wj86-7)VlQuV;XIIe9|LA&B-_=MSjrNUFcFDL6xZfwMnbv^$~yNgRf5R&+ntS ztoi9}8+X9y!zGJ%e0>|PD2K^GVH?>#%MltF$^8vG%tb({kZl}pMWgI6fmns{QZ@<+A{4CN&Go7u9=W zGz2(=R4O+WNb2mX5$B|*aGHS51OOtMcs9!9Ja#@CRD$C8tWy;I0b_1j+$t4lx<0c#>&9O$BU0Usw}gYCALXDM@s+=Pb6mCs+WB$=@J zhNy|x+MH8Y63(5!#>=A<1IqLzaxdXM%Jj$U_T^LeHQm%t`sj32VpiQ;KDl(8n^Km# zfLdq7b2Z>oN9;F4kud>cu z|6l_Gf4a~>4Kiw)njvU!(2w?w98q7s+v{9;E}$Aj>5UC zWxU?fm7jN8jsVT8;E@6}O@Yv}pQFpdg5GtO5+9NMY^=xi5D2BOa=S%K^Y3{;w^6jH zrUwo9zQd^heHjj@*>UhK(3M6QJ42;}%OoM14PU@#cG=KzI~l`{_YKEZ7rn*xI$4ct zMJ=^h?Ip@=wn6yCnwzv!fe!-pZ1}mt8$@8OPelrf6vkF_D6-iR3)y_+(3e{g9d)qm(mecKjR9ZCu>int(7-*@bF%^GF`^8;(_$_wkCd zZyDa3hMaf$?a036%&%Z*k)W;O{$0rvakv=8_{5m*Z&nJH8%$c|49@cs6CWgygwndO z0$?7+qDQ{ijo!t(vh%h(Luk4zyIC%P$6K2M`opE1n#C%g-z%6?u6IaS57K6D*%q=0 z@gham0#UK2rWm$1;!Z5S_57H@6&%b<+MT49dp<<><6Fx^!wm~}6F?bNR*;Z)NDx{E zZ1VUI*3X8(1_fCRZPRIt3tp~KwU#(jrxv6@TrsKI>eET8U_vCscUH@P#4=6Tw#{%po0ef zXKi4*cii4HI%6<`_hSo8ChUeZ7!DCFa~{#t*E=_3mmv-9yQfIr7GU7&z8MKy#9}wM!y;| zKFIJ39TW7*kIh>+jYnZU+PQH5RL%)&rs%*dG%GA$E5KfTv8Uos>Ohp%;o0;an2*}FV0_<{N^H0}ENOs4A zU6aXrBiBO=aohmfiA!QL84~?#QDZ3VC{n2$ohNtO7G_78gvQY*qn41X)K>@Ax=u^q z>2Mi;mdEM@|3$7TAHk$RDi%ls$h$)60shuluU(NX6 zZq7$}$|gag`If+&GwVkYtAU8R5kn9<^_*d0(8Ual%O1PkAuvleH4y9!bj)%4PNv!_ zM!uxLblo+BrMmNHoaF`#IbS|nd<0H)j4=aV)EC7^GIxUU?qrK-ENY4%yeEgD-B}>8 zwojkl)o!!!lb%VjqHgy)zNzr$sOy}Mu0_B0 zra#e3LkOeAo}zmo)&4p^J+9~PB7E8gd7Hev1hPylnZ{EN>C={04cP zOri(anp3$Q|4x&Ym+xrXG+-!P>Fv<^`Cp$247|nQ*&|CqUXVS9Yk2FPdN{oDk<|-3ic5;az=VK%&Mig&4d%_dh0y9|Bj)5$8dsko_f`4xKcX#mKsn4Zpjx9x||%Wc%!Zo*r{g+?=;u1I!ywKou8?KdV30$2_ zQFON5c6!YfQ6zf{t#2K>f7j~9oRo)8j{<<#34{5r2}+Osc`_vu9+|A^or_LwLwCB= zkh%nwn4-fEMBlR;C5xhzhK)@KucSwokXJ4J{~%;7X70XKzz{Zt0NJbxWL0jl=hXR^vnYm5vgvpZdOOAHS5XV!rj!)T_3hqeJLPcZ$Y`m zsRIH{{`8#3zgJjMK--CYhhr1S_QqlLB4QD%8Mlx^mIA4q8^V|UjPmK0Pl^*M(Et&S zFhTlYXiqG()fiO@gij}{26ayx<8XzF)@YBs+K#&a=@UM)gVp4Io!5wDyCM_SP9}2$ z;w#s11`!{%)fEJcbYj+sDAV))V3!RStTZh|rLvTbxAl3hC<4AXGN1A-Dg9rKS9AbD zv24iO(d`zQSTOf2;<%=K)zrpIxym&%Zi>w6F@}+z=U3O^leSo|bSi8)X6+XZzvT*e zBUD%`O8JQk-d&p{9vIB*cW-ZsQ3>fhU6!Q^P>>}mV4LCld-|nT7$I_1){uM<_Ifo+ z_Y^;wLSMi`SgceTeLO@p?GMF&Gs2TgaXzld7R(kZ^iB;am*N+hfx_mNN7)2 z|Nd(<8@fau+FuOl*_%=Af7bL*@1WNDEC`bFd13J@(NAO%W$m*OCX^dBkn?*V#fCmb z_YDkOH!*t)8mTDf^M}TR2)3CfFGv$ExUlf(hW*F+O09O)#q zvorGLMkCCTq980)s{h#MhUn0VEqOaHPZk6fhGne3lgOg;ZviYe$!WIp6*t1I&~>Ge z*IH9mI<_k%?akyz=YHH_Ts&fwXJV%yR(@u*Y^<2V>$p!T?@YfR%x_5C?N+=wyP5Yt zJAu8Gy9HF%UDmu94!ZOry6i^_1Z-9>*oxn`-jZT`J3}O|vxCX^KebTA*QMc~B znADA~NLT$*HP9v`9UuN&A4ry{v%Qcs6!e2r+t}b$*gn~$=<3VCT#ZIoz+bTP%qFKq zOST>!8xnP}q@j`!N9ljT890xT1F_beCR92|s&(@Iq&WS6iqe~V`t?uz*%99j1&6X1 zzb~hi>CWdp0lx$xr>RuAyMu)?Ah!^KQHHQLw%qvlDC7>1C1T5P*P9L+2Ts1Lox@(R z2j^g^eueoh{75Jx*X%R}(;?)9#;uf>ps+hGCsYP>+XfcW8;}WM@zPY7sDwbMsy5H) zB>qlHoOiCnjP^}qmqzu8Q>r*5N1{-Z1sq|{w;;vpc= z6Ro}JczHS+LfYS$g$t;-%>OvG&Ae55ACaeI_hZqD7m&QB`=U4&N*U(tdqKZtlfO5l zI+o{3B%hzU{-y|;Yp5(fX?wvV@>v0Cq5MZ!y(&^F8gO!eE*|+Rjq7HeRAs2La)ksz z5eSK!$I4|X51s;^Uq;D|yYPDin#5*oZ)!Ik0xlO7d^+s?6HcdDO>TX5n`9vnnf}&> zdDEwP>uAqf&M%v4;kS!fm^54uL5H-=hj@Z?wxuwhOsV#z;Rf_-^B zW0BK;MknU(1-$H{om(&1aujDDz~OQ|+LBnp*HhN`po^`KMQ7In&ZgoMvtO?r+I_G5ywFuneDIOzFgvC0cPa^54g$N{$LD@5ItvF>9n3r7{g8F)aO=^4W`b zD;DF?Pgc(Ptlr#WO6L3|+hJ-c_$&4Nc_LJU%0)OY*iZHg}PPMZZo zW}`Z+*jVJbObI7f>Jf9JPl+ZnW*#`O9@ zUyfaJ;a?Q0VvNf(jeNCNlvnxyTvv~Ygb=JsLBeLvo-RApbXwKinaSB)-IQp-2YNp6aQbYeG=}uzWfBno!Oh4n zx{pd_tgo_Pg6Cl|x3H-mKXco`3}WLsL{EK3&x^tsYzL4trwIRNVki@;pbx*#G|+;7 z^WEuG%6cYS5#Wi3$n_7MsS^FPyXurg6VR)D4;uNKD%LCl!><&sT!x5ixgfa4g10|i z;!E;n_eQ{LlZOV6b_E&;=x4cN&kE{I9{ z&26)gaw?;IZduy;`rze1SO9N)s@VTraxOg71tZk}_F^almnnIEbv{swtYUtLtFpBK z5sCKR2b+Fm>T<|zalO6xHl(xK9Yg=2lv4#%U%_O23u3*qH2k3us6? zo*o%8W6C;EVkh0s&m?C~go>-xR7B#LT9Z|T!XJ!%;2#gFRqo>mmG4dTp7oX`?jKC7 z#(5eRBHE4@70{vtg`utNevGWG1|03GYuPW7-r|s(Oz4FSt_ETDeegknblhVI=kelU zc034=%zc8TYnS~rYg+22^VtAXVo)U1jAp4o$Jqw3l4;<6t6plK1uYLFCS91DxP{NcJbI#<)b@;9{e3+YtHXq~@#qort^CksgJ>&xLY# z0+;p;H=m5x;UI`eXtGXuJGP2&_~6kK%95q^q_tS zR=PfKoOORusM(6QZ8#gg__8OuU1e?hnhK_YOe#nzYqa@E>{RW?~BN>&2EKXz|tbOKqE~EAGGuSMDubY4v9u+g|~Tc0rgh!fvUt8IWG!5 zIwcyBmR(_Y^CW3JJbJjrOhqUjto51d&3)eppR>-JHy$K>`Uk}KSC=jCNv_9G3B`*u zDj=BrkT!y%*Dp+?A`t9U5nSiDtgd{uk?0#%o$smpn_(SGuDo&bU?mbwipsSt zwl_vq{GWN8LDyhb!+eCiwvb^CZ>j*XJTkg5hu?g8)}l~;B4=0|FTHqm)`3U5)(!cc zJ(+c^Yi>KPYwZ97+m^|VI-dED4$WAq8%*_DtPRZf-DKMJv}W1nW21gqwxSY-G_Je+#@73|Ztl z>>VAAMgkMGIayP)3a7`krpz}5;!e*@#~J=QI%1|Go{=ph3P(hf$xs$@nK*l}6jqzc z=&pg!V9~&!j!KA1CP&NK2dw}>H1W9~6lLcGgUFiAp1v`V=_2fmXo)`gq3_5J)}CS2 zDt)p4Aq8}0+h1~z889|J&Fs_m=u}7>g&>K2)uyGT2W_hJVpn3n+b$kPQ?jx7S&T>g z(-{UNi$&|LW@$QHMPilpFUa@j9yh1%E=Cd&YUY#KWHi~4Og&So2EZn=nas=n%b>4* z4DYrSOC99CE?iHgJTf_&*b{SL3#R_Sdoe^X$d62(s2DR(dF{=|V1hBhH2RPm%_1_M z(-*hJOYte?qVdp*l*j;O>+bQ&-G|jz*_}(~w?kX?YoQVgUxURkAY3`q@U0GLreT%o zfKn*wIBjPESxEx$>cMa{oM_+Uwn1Xlu7Sq&l(!1GaKeCLB={rAN~i3mF$J1bwF+sn zmbNySevNYm?mT6{j9GU|IIe~5e(%=-2FDZ7@}}$GeOZ|<83_?t1;Vi2^gTX4ZXE8Q zg5W+DQCsP%3H~Hor+`WvKRnl7sVq~EWL!T)g=i`^yw5@C48544+#3WBxIPlQHM0s$ zeO0nPi%}?=lBKa}Bh?yS+8NOn9rQAyv9(#>=Z{NSP?D`!i4fGp|BqhjPc)A=JIv=j zlu(1jkSy8B%fTe`@9(9iQ!!u>#ZHTVp{ANL09OZA%NEwU+U)SK+@CSbodvl<#+&}I zfrdKo7gib?n#n$v6q?TBqXuGWcIV08?h|#PO{SO!n(%bu^-H%0*HeH7hp_Y zC45uF7#jOEmke)N%COkGZM7q>g}qJ?VnLro2|jqQxqV8(AVdAFUpiFgn4Nvd{r()5 zMyX6}QUwLSkApbDX1bin&+9b22Ugm2yY_+2ZI7^Zr9wu8(_u2g!G%>CgXhgBugiLM zzW;9g|4>m49t*oPg$}t^;C1DuIm&2vF*L_63>szCr=raYRE3$Mnoh zoz)Tov!NgXz{QrZ0mf+gl0FA<*+$hK*`;!U0Lxp7wk=(=QWd%5cz**KB+0t)zN2WU z`@Nw+bCu(W%fDLbKPw6>u;?&g%@}#s5sw*k_L}Zw5#nTVDx>{&TqjB)Ds2SiZ}27% zOZHjJ^e^DIX~65&y{g_TOxbGDVE^lIviiHN&8PSwIY2bAD>r{%+c}j_r<`h zSu{YLRJ+gYeAIEHlEF`3m*f$_f zBv5hU$q6}w(Pz#pKUiS)X*GX+@m@n6;7(F}EGml0olztA(?105A-ahp0rf}ZJ`EA! zIz352P_NyTYfTW)R2P zA2d1K5uBM;PyV2wq?BAUb93~QpqjNh_48gZ-3ywZ5b>;i0=dycLAyt%ZQhojn(*z~ zErXxOAuNUS+DB{Y*BYM`qaoz|U&H-f))}2d22NMHG|WZi6pl=iLus4rQqBH);sQxf zLBhZ4g}>*kfBqqPUYJLzwTD5$F#jk>nn_cYW+505&h-?Vy2-!Koj9G3?bB^D$9}%s zwI0jmAQJpoT|Tg>79;3v+_f6c=5*EP^SDuVHZP%K{3}23z-pPpypjekKAWHnH(Rvt zcjD_0WwiH$6vx0M8JU>NCVP~NlE{Rj%N!R1R-qEO_q5ORj40Y7el?iX=d)eX(7++M zEY#Cd0QUyai1egsfE6{g|7Rck-$(vyTm1Ry(oWee`6}47NTPjwZ_OJC;hG}q#!;Zq zZim>#%PkBGpOFDjfs{?;Q-Rr5^c(F>THD$Rwc?w~b;_XS(->h@RGfW$@4J~G9D9kf z%5u``>Qr~vtM(Ja@5QN?gaic(=SY~LbEqY2J zBF=qv)M<2Dz_>o-2AEeFG=`n!kH?E1VFYO}2ieYf5hd`;ZI4>x|8-9P&rcU7Y*pVs zAe%Qc3_>_`D0InWrJTam(JCVB117zBEg+eyLM9;4;hQsdMFDJ;u{J+5-fdCY&jBzT z9x66Dxu4cO6Ea|JK+VCig~E!vzrW8**ho?FlV$KLYUB=<-+eZ=QdkVas{FxUj?dsT0zPW&2#21eN_TN|h7yXPFPP6(y z{)Oc%BpNz8^SS)vKgpp~MO2octVbq;Qc~=2mdP^f;AMe>AhbP!SNxsE-v|arDcw%4 zvQhw-{DkFm!;|e#xTfBKj3>9<1s^ydN1qyYl}$Lrtie`WLsJr&?WT0CdiQOf%K!HF-Pii9Z)S<_S!O1WL$!Ka9$Op zQ5vMa{^$L=W2v_OKfWGsN|?6|$bUljFuNWx0qg#OpT{|8Yuh5g9q4pM;MF<=Fc-{w zHWy-&;@(rQ0yhJ1%g_m1vb)I34f@-O56XVK?{e}+zngHPKGGWJH%~4M>n(yIy`|r? zBP{0bP-+&?XlUuFIhoS2`UOXaQ9J`Iug#xfTutERVQvCaKU0I5fkzfA3qmvW)x=zHk zA6ZqRTdJw-kd)rh-JK5~zw_|LJ+JFQ3mVhsKh$#xv4_{Kz(I%*uJ$X#yK3%`mR%+c zAhol-C&dkKzjc6xF!pn?yp?N{+e{p84j`+G!r)h;TPzb0y52uhm+waw?y)fc*k zzqMJYWC120f7BEB2D^!x1w-8=vDMT6Pze6xLjf*nIvB<`f6Az8X-Y;$^{@C$5$`Cz zFc>t!WI`#Zs7Upfu*E9zC!6srsn8hG{dCr)6$t=Q$E^c}B|wiy5yVN#`|yDR<`LGd zJp>BatFqup2kySU6kNpsn#P370h{4d_P|50jh->gU;z>*QgcZ{+cDi9R8$6>&WYF( z-%NRjS2zNg`40;&)bYzE8&f7G|~7=n$0X zlbLD5tj~|x@JpGNr%IH^|Accap9dW^W4seo10wjj+B@_bT+7Drn&_`;0gwx*rvHa& z^Z&isVxhW%DrWXK4mMGOyP%Ljs;%l;XBDke?8z5Q&49wz2H5 z8;r{ooY8LUSO~2MB?EG*?Npkq$%#1=98YBAbHEKh-3(u4QXY_~amQWVo?S_n-59ag zo~q7%(kl}sTQwHmTm1q_WeUXoH3RV0Y*X;}X6&K#xt*zx-Q3)y;&Edfc}Xn_vV|B|%*Ptg#{ zL|O3hudUq8MTG^FCfQsElNNz1NB*X*E4`M5LB`DP4a8TX$3p?>k?B4cND*6Fe*!OeN2s}p3_wKkj zhzzd3e6b#Gh~a>`qT--44JHn)BW4 zZ=UCzM|zwToNmeaMRX=M*8`LJ=HQF~&&=I%3z!N9--YR1VSk(%Yvum*V-nZBvml50 zMudi4CBzhG?yL{N4+skBZy0V2{T3D$cztXrp7S0N|BND^bM$K;yhkW#ZUuZ;cDBFL z9&PWN=Gf{OU6z0Qv&CiR{w!wm%5}l9S-7;>(Oxv$uYAOv!*T44UThB^k?JSZVI8im zHWUW%SzGU?)W5#}P;*cL&i`|{sHnRwXRC#l3T=t6_=PeB6%-WG+~<)&fZAibsdWEc zT3+PA4?Ck72EJ`Qbq$T!Tmi~mDo(-#N(>x9XHy3UH0*H15)VZOPQ_QQkNwz{dR;I8 zC$s08E2GRJc!X;iQ^ zBBfH3Pew+b+tT&-S868atVi$W40XFg^HlOdtCSQb_k1Ns3t1_x^Qd4q~wQh0-R2!kY%FH@VFn3=zfi8Z2OMWwo3Rc0qiXrFk zeM^=UlG76cMPPl$RL0hVx)@@&d!YM9kp#)ZUCPaaQ+y&{%3PBs0L>4sh4Ba_Jny~Q zvE-M~r3&;jp#o!E@4Jd_cFJte$btE>SM}#9M^*@Ifu1YyhHBFZ@`SB&i@p{5UrIVc2ceH zv`^M8DCk*AEqG?yhKGedE%~q8ucaLjxOc+9a0PTuR*MrgvX}rAflxcx&*WPN9WzuXI{8G}Q*gLgZ?Cv5a=# z>a_%K^bcEjaXns}=clj(ib$0C9RYpmU0!`~{|{Yf85GyHt?l5A zTW|^P4#C~s0|XBq+}$NWfQH81H8=!^;7)K25;V9IB-ppu=j?sXy|=!fRCN`-X3sU} zkas+<|8A}8o%om@SIEU;=p(|73F}UW($~WPsMMd-mVA{XLw>NKQKW~OB^plY!P+T|?sX-9zBs;uuyjg!&OANG^ z8}0jmS^FBNQQb_C@aIds@l7CXjxW{w=8V~ByBv|2xNWjys^EKYMgPKw0EP&SCyDaZ zmae=R3Y2AbsAP78oR2WHD&DIfL1G&P9kzAbAR|fkf4!prx$J>I$pT=E7wg_g}t5oSt%L(cy_3r%JFEVm<7qnhQ~;tprW@7@F8$D7Nt(2%F5CW;pB zlTuL)jB=c32AV6RgkS&(6Xt_;V{B9P1Kn`Z5U66crd6kanU(Pj6{Kpmj{53dndX0@ zhV^kt(Ik0tM0`GZH4_Vi?-XtUhNaGbY z<*RwN>*ui{<}Kqj$}|(v(v&PxpSErzAF33Xk~$TX<+{6j?{}Q{ zEcD#IRSp0P>YNTLQmYj&dPu_IxLUd6$F-Nc&4g{E30c(@#X zASo*=*R5ENXN%YL9*)xW^jyM9OB+D%$r%8X;A}NNRj&>O@Zo!s<+`$0?@f%K^Gfw= zk(%4_ShA(eG-2g|TF5>1lDv7wzh2-5Q0dA)x3=RdrmV_D7cDS@aEFXbAxuu5@`Q{h z&SrD1|8TLKQzwzYsDAv<{gV3%*2L5lk{A!Gggv>>MKOx99o<5L8Ng3*B#Mmf4o^8K z&^^2tn%j#Im!2-q9(IomB^Ov*O*U@0K4Zs-f{w&P+I1AlDPXRKpWMs@j zsQgOdxZiaPurUKsiMYfn)7{jn?Im7vQ9o}qG7eSNdVtxgQx$bkH1nIEj}KAY%1Wmb z5pY}T-my6HEG&?AKeOs?tP}`b55$0GXJ?oCeo|bhVYZI*K@0LfGLDzukSIj7=rfLL zk-8KLfgoBn&8UzJJeIFId15Z-)?yo(+Vhei` z{gBGUX>KVY)2H7ypT%a~rxQ&qOp`*y?utT)S(cQR2IUU(2W4Og^X9|skP{FvlDW3_ zXh;QvI7l%UnigK6kO(4ChX0gd@$jb%Ukzt3AQgRH3sI}G4KsoI{suKNCPv!b9T%Xm zgcK|3cFCI25aTM%sFs=F066Yg@$V5aQSc=NSrm_HXItpGdv2|nu_4>(`@MBrCnty< zQ?J%I)9RuU7rx7D-V%O$k6Y&Z*X8uz#SsrEX#N9D6atPodBRxgQLU}TNDaWpYM^Xp zx5jRe6zN7{SDD1B@`>j)RFVF_9$O5=+txgU=_C%iy@Tr-Tn5-}{wLjk)lVzP17v=^h|pZFN6@%f7D??Z(3GeuKQR zkoGnUO-(H&E<0N*H*5nl&lpQ}Br1Q#h^4CP?87F+^=$Axm{3m2;lfoFCBafAqW-lT*J&tn>;8$8MI*&TK|v`-zVN#$@Om^+&%#;JNPomuF7pht{^5Z1zv%;^ zFiC}e;N-Gjd<|bv8~4MZBUQN?CYHlYosHoSR+5d&x6t+O+(%xogHW!;&%?F{Y@pXwjdjWRqcXiI453I2(eQ+VqXu>% zm_zBWt?|#nuwEsVYdyz+FKA0QJ1sNs@BoEqMiNkv{|1K+M~K11DZdJ z)N&%HyP`#d-R_qpa5k%h^_Kx-M6Ig#pPq{!K7&IslC|}nGMFA9@eD~{f)V*i zr2@{*gn=p}9DsX)!_EdKt-GW75^C*x8P3Z42$QNUV)*+RNCF-Tl@8G^w#YL}+A_j3 zOX7alkB-U8Xldc<8>~#`8EDUbdEcgUw;J6CBrpVY<%0j`4S^$DKRgWi=I2dDL!QLX zVnJ16nHTWW(9y|>g)9t-1p^A_Zy^Uz8pFTD9hdZ!O!b@Po6xYyFp7;V&!t4D_1!V) z8yHw|k4R$HBmJJ<7(5v<%>l!%2^e2D1J(1R{jXd}Gdc)OErSB9u;-H*e+$0v1 zg(lkuUnK(CA3=_(<m3Ejxlg5cuYJ2F?xi)2O!@C@D?qk zODnHQfaRxWD^~=TKZqzaP`&)`N=lFbG}IkA#9ye(1T z{xLwKrhl{OvKD}pyZ}kQJ)Q^XblCF&4aTU1ekFzS)vuYF(*Ha}4MkjbR!rfTB9)~D zeF@uNvF#juDQcmad4Y9hI{sU0kTs8OXd;uFKY%Tmb=w?hf=O7i?cgs@0(P4tEm@r1 zNOJY?!EbL0SUdFOib1~Wioy1bC;=2ntl(tZR-TeM)W^a8ev{$PaH(${7{q&73>Vr{ zt)jt^(6O^y5J=g_vW0gdjBP*_S3#Ra{A}3t)yCe@5lV=d%J{1n8?p4Ryj+-d^whq= zlm|%iXOwN-cYlwh+A~1Ynr_wp7Uyj=&{Y25=tZQON~d@-z+LlO93MxK$-|VTrub9523z{_0|gO%4$KA#lVYX-s6YUuVPhy>1y>nrkr%`g znwfBUkQPbo>fw@dE_I$7fees|5YSHggCy=R+yK{&EzdKx!lI(?M7sfi*BQwRxE&9o z;YHzZ-(lXI{ET^Lll)=nv(z-RL9MDkzWHEPWkj2Dp*~OwOtN96pzH;-gfuFvt3usx zI6my|?xMe#PjB7FqiQq*8>xpKJ9&kTmjMRo!4kD znO5$Pzz)>DnU*PLHjF9ykJoH&RhkQ*iRR!<_7|g+Mgs{6Jn>co%ktN7KtQ?8-u}cm z-u`P{$1ZaIXOA0UZY*#b(Wqveynx5YLyA3R&GL;GT-*iyuE%HYR3Hb z;k<)>j30u#f&dCUz}J(h0rvno)~BV*VvRo?3z;IFXhIGfwt$unx4Q&P$-s|wj_4Hs zO334htMPa-ntBv>XexN2LQp06HdH6G(=! za&<@Iup@9wN z7x_%|11+>>FC4Hd=fQzWT8fd*buHs4)h*%&7+Z0vi4lE$k|Wbha$jm9R9{jO&spL@ zn{+e-f$P8;FfLWM&2t7+!V>J0C}L;6ew-;mhI7I&3N~h9`vfJn$MG6C6@Qsd8m*&l zYax)wUN>rpjMP?fSyvV$8_&R~9hK06g2- ze6)9X54OXQl>|F8`aV!tqEvs0O=HQVdZx6`cdUg)3^)f_*chn)c`yIzBZ>xrN3>3`FI8XjhKtX1pFarZxnxZxo1H(+Io`zYi-h$)@!yluPnU}Hv zaQSjuYnH#u-I@v~gn$*HIh?eLoZs>C@eN0(tso<#CoPAav*`1N142kq5Gt@q_Ga^l z{#=tr3wOZhv$m~;bWu|AWy_$DiZ~UrStBR1r`18ylIV94u7000s#a+l6EGxjx_pvV zQ2_p;lC+}k2APNa*G=R>1N}wwe?1ou9+Za%`qd#PXtnJsxTz_2Oy7$C3_(IrNC?nS z*r6PWpj1Y1nO&$Ny`FM$a!T^{b~_CxUH!9t$XjK8$!*LLx64ss)P(uxh9DU2xD|u% zqog}G#4ar@td5M45gDQe8KUwkn2H#egypuLgaxW6dc^bp zrpGV)vsnssCL^ZXWE=bHSria}Y(fxd*7KaU0KeAo$)+1J01<@4pH;Ou57Y*^@Vf!- z^4!t`F*aD5mR9b8AhOGJ(CgmwK3K$^A~cY*A8#PFqCycs5Mu_VhJD6ic!7f5(OjON zOGr>4@^R3x;HLH8>R>Goz?LtW!FOg8J#!|LnniAg*ekFGDzWlm2X0rwx-L}m@;^e)Q1 zkxBQv3!II^UDjTt!!)@#L@8aI+l7z(Ah8yV_q4PRjH(wSnD!?ppet5tx3EtJeHC6a zj=#p}ee$oOUGKzjvsodL-2e^%1Chu$mNk+H2;L(b@@@YKe*gY%iJGv92LJwYswS8b zkufwT*2vrrtEzNBEUkN1UMa<_s;f(gM!XWGq&IKGF7jkGd>6Ir7^Ls)TsJl@LWW_$ z|6BBirDJDM#BBYYp#R+B(h{8FRhUd@kkNN$y5S|4lJ4zHz_dM`j{k9I<0MErCVeC} zjIDae3z=EwO|1RZ^)*zi?iE1fTb?H|X2VD3D3=V~)iI(NQX@qT|EoWe zXbT%3A7AslPI|ObkJ@%)-zA2B)U)5`a0$WZ=T15;-UKhvh@2eFQ)*lkph*pox-}W% zo3@k&*oJc3Q_7gn(C-+v2hYfF0CL$h5PQJIe*H>ss@E>qq1NOsafTPBkiuXZ#ZYSl z05}%Er~xA~@+i1%V8f75(~CpELp&svVjt*!iR;S6kTItSkP}}N z2)++nsF^~KDSO_l-8ZEci7LIz;jul*@~zj3VdsM5>-@7DNd z?brWM%8Dax9iTWiR`T~mg6i{= zjY<|q`2h7zX#%6jc$;$(0|*34biuJOH}B5n$+fS9Kf6Jvvv%ho>5N~llhSK$Zteo| z)QpjyYGfJ7Pn7&L@?h85eb;rhPyin#*8e%ly!CK{AV&K3?rt)% zt}kX-V*pAocoMAJhvK~wj@L&Y0njCe449;6>CzGdU=%(uxHt(LstZOTD+3P|T&u?Z zpX0+6Qx)#NQt-bH!%K{HZLOC^A0S($Mc7qb7F@_mDZx9KtqLccvkux_5UyAjO{ z3;^T}sOA|zg740`6JBZrbW))PfR2!yO9{(Nz{7#j+Wp#99HjY02kr*k{-$8K!FG+X z!FrbbqMG2(Z^BT#Y=06U!C=Cj`Z&r22+n|-XxBt%KonpYY5MDkKBWbS%RV3^jrK1k zU2vKFZrw@c-V*tjaG%;CG1r1IQ}-`v1swF3xPPAMpPTpPP;$hh?5aMxC>4ELhffIq zxWCUs90Pz)`MhI|)Rg7qTI}x-$+r(Dj+foxV|}-)u@@>eo?G`Vr2ym`ud|>mm~DF@ z$jzJN!Uc$f>SsRk%OQP|3Eez{ND#X+>IZpQ!wvj%x&M#<`>zVDJtu5p3sMjx&}Ygm z&k*qS^UYg0RO7F?O2XEU)v13!{>F+8U#-Y_&g7$_oRXNLt?P!qA{Q1G_U9xcYh4B` ztWEOJIM|%F41^VfOJ1a{DTrc?vxOj1f{c{6rziQ|5EP(6aB_@v0?uRhcX=rPmi`3A z2Lp-I1EEA-CdOTc(nibljQ>-xhefIBl7kr{$t5O*hXL=vsw~moI7Z6_R?Bg7p4U(E zkuZ!JQ@TF8cMRmP_UXqxwT}V($ePz697)f|I?7J& z4=J7FMB<>-{o>SBH!Z)*Sv7+A%}tPiup!#UW|@Yub7eC;D6e~#m=@*lT7cwnm*nkh zZEdmrFpP-U$nIeY1oOx6ECI$#CfRQ~8;ROl-swdKquc?Y6?XdM@x#Paqo`KTKZSkk zvw0E`NG+aOTt6k>hE_}4(J(SsE~asil3OY(2r5r|ZA^z<_Rp8S{_D&QI*bg&5C?;{ zAvP~ryZx7$nHfwRoJh*S;2P`i985+H_`ns{17t37@$mpe7w-%~-Zk#}ovJWl10)WUW z=nl@=#stb5D;#)p*TK^t;iO7mG>^G`l({G`C42i<(2C-cs)NTx-H&GnHBg@Bd%!Q2 zbNCZmMDQL~OZgAFn&c}h{;X9(a#*YgGEcWf(Xy=_@<%5CMp$FtHks8*4x8%hmF8%g zY50a6zie0z}Oon(B7TM|Xa>S+)n9D?hSP7)CO7#?hR;rGpAV_?ENYxnr z)$w{~6K~du_S<)uufAbSPAU2LO5!&%WvUeVfkM~y9ar%hFU8Lg+qpA;kS~36-t25v zGpoUX{#aX^?9ROWAi7fO?pG=5q?dWVb#sC5>2@o6q|f$-Eu;F~cjknYK{O#Y-heB% z`H4*U4=iiFFaxIZD!77%1@5(8BZWls@D2o445oiwMsWy1i_Q2i`I-yvSQp@OhUvOZ z1|}6yG+VbAOXmrT=%(iN;!kBk@9z}e+xwOwqP)4iO(CMc324S6rTur(I+-%%(4+6% z46>ACk#HFDO!^tTDmoesSXCUp+RPvVU5kV_3iNbtfdOQI1Tow`%Ljm6caYWQe==Hd z1rnVqM+WnMAGbgOp^N0fdG3o*16?>8X;;9{2lRlBXKoV-mLG^H-}*6i(e8|?l;A1v zh{cvY{uo7M){WNvT1^S+zX=`6iY?~Ds2hr8JUmqK;k)mj;A?^>=ekX*Hb&p}yB|kg z#^7zVL#FY&BlzaK&sT`a&Om0bW6z^oTRd7OV5!}dZz*HflL!gwJzUuMsUp&I1K5-% z7D@*8I2GU`tOC~Zlde1`*Sfr!+RePs!P-qL?5Dd&McfkU2xQ%A1K%&K@V>= zXg7A740|1Nd}YnZHgpy54e()XT2NW|7Ii{qfsPU?h)xZV=*p0V3^myaaK8-ytfMEe zAr6{lrjb^G$a5D69M3nsDwb=oN+K|rlq0#6BpzE)*{m1+@Zb8PNY@cb+c+1?ne5Du}Dd?0Zl!%E|(1)%>$D9uj6A%yK=oYVSV}Amgj-h z%GaS_q<_GYU3QMCJVU zNLX$$0n3^W-sW;jV;V#xcV5n)8TKQGy?7y#2o_?Ce+H485h}@iTvGF*?s#HgFP-e@_twvOjo z{vT$&VbiSG8#UH;6j~mS)HIR;SK#SJqTGiyAp$CO+7T=6-Hop;l;pxD$wp;8t@yv> zi0_$YIG0QX^@fs#d0iH<5m?SB++Tm4XY)6I9##=f*%cVbTW-E*)|J%)LHT$mPfQ?w zfJ|(;@cS6n+2RU7Vu1oV6KfWRdIBKmT-=jAt+iV|JCr%4ymiFz#7xg+f_3=CJKf*< zHioU3D}B7RF_~6I)$U((loQ8FUMR zr0s1g+of+1P;b7t8Y6=7P_zB0|q`u1pIFz(=j3RE?M-gUdo;tw|kma zZalwP4{>o~Zac&9cQz@ezklFtduHWqHRDhOiI~Kc=@_rz?Kpzx$=1XX_o+S`UI~DsbS2xT zp=RX7c7mi}xa?z9QbLq~_Woy;=t!~KB~D(KtB8IQzUZj#K}-^7pjaw9v6EtT5>ZS= zHRLLYzLr)HZvG=qgO)y4p>PdF9yBOb0Jc`QMG;rYiN7QRg68VW?!oR$9dphgISvlg zrT$P0MM+*0Rw*)eZd{85LA8Rsh0S>oFX;2vJC$b-mHmcyiJ zwl&P%iT8#A4Re?~3EA<{i$k)!YtsWVG7>+s5+#)a8z5x+I~;}a%oW;=1kv$5#@I~;RdQ5;ZetxdN z?aW6&WZy(kR>lFo+!W+J?F;o>YY?a!<>en}M&nZjkxzK|KID{K5-<1gFNI-%5vfL< zM^-yPXCXm=G!ZZzSb`>*NORv;=T+Y)_7NaU5*_ScaJ9t9wM!yNt=3_u-8d+#*K`s^ZwyuZH$%v7DgiD0qBnYSmZZ-Sy zI$E(#@3r<(Vyj@ud9P2BW{L#B7uycDHBn@^7+@K$%`~%ECt(3m!8#$P>Lzd}iy}$~ z?sjcOdAV!RG`kG-kxtoL%@zrGqY%(A#}*?$ox|M6$?-@MuDUu7-gZuibSG9nhx2tl zM5M-Hv_ee-TtSe4KT3VTAJU&9zj+M_XBRf%Z+fF1eKt;S)_T_7F*5hz?L$U}XPjEG z0YG^5&+|u4m367KsvO08|DU9(=c^06e#RoA+a!^roy9X76mI&v&llLjL_%ZfpDqg8 zvrF3j10HcIas-f<=ErNLN&ZBv8$bL$M=-ld(cw6E$Q1B=)d?YDtrhpG%D2MKBiUbU5qpvzFe4JV)5)tNv zva$RwS`3p%iR_gn$Rc3+_OY${>?d9hh1CpvD0VkT%E3vCzfiZkqk$5I?RDjQxA%{{ z>6qRRyvdI@Ji>&FM47+Ld+zH2&eZwOfWTox@`$)v>UFy>_3Ntw-Cll=XE2GyIb*Ts zPsd4kwI(A}l19AfjgaA}g!^j~AfzOq;Ip;HReZpE_WeU1jDC{h+~+>j=$L-sFl7|5 zzC1|UI4iQ$!~J;mpkX$VQx}~MKA8Cuv3vqYG4S-XO{w_s(~`H@p2UPDdr)!Y^zKQh z+kE5C(@7d_t=E*VEJxa?v69i`XS-OMO;7TFk&*LGjNYr{z7<%y3=;LbIFm^LjYn1C7t$sUr`Rszm|N5tL8hz5Fn4ljzN9Szvy zMR=u>5asGY#2%mV*q@u1J~CKqu8L>pl8b^OxjavvmpDgyO`i^U!@27AN7^jJ4=8qi zFAScVPHX3w4qi}8$`=KXX2_z$_&={3C>FbPA=Qz8idgLj2=%O|ZzxB*2hZ@ncGzx; z$kN7Vx$VpaG(66@j;Bd13Od*oR9uFa(5l|wBfOVXM}o}E>xcvpZ>>mp^P{PG*ys_Ru|!E49`acnWZfDp zJIr-t(1FDXYU8Oe-{Q9vp!L5J=Kh`&WkwNU=YH|WbrOmnUbrXV`Tn&Gx4k5O*8Q&+ zo)jffOJ?-_JBo7f8`rCFN5gLgK+?u(4GishW+jIwsT9+h*1+&!qD7Gaek13Jpd3V7bPW5*85hr>WrKS^-sN}85MJV;g!M4ifX+YcH8e=FtN0_ zK5?_@$o59D6mpIKn(dKp9q8k1+VuHN)n4ASlu^;=9C&;XN z`Pt4T#3s2=9}c!yt2?9LcRogMNzynse+NcW87M}ce4Y(LvDmxsYNEb*Vj>4T!d*t% zf+9zSF2drCe^!y){(khR@i``J6{%e*blmksfH2zL@Kf9u`~HTzK3y5#1SZQ+v|?2E1uaEqHloGltIDPsx`sms`%fWaQgec&w;vTD@-yA}YB_*5V%_>Iq<3l}TT zBYg;)mkHte7(zAX!73Eqe8whEgYkv{(Oyq3648D5xLnH^xq*|9BgVC!#4-eJ^RQ&l z^p}Ik#`ayk`};LsaXU8}%&gNj0b;~F^12u&UNXR(1A)em8+)lKVAcBJdOSmi+eNnu z5ArDj|J*CkC=tQviq(I@a$5zFEO>C#MIo_9q&#|QmPXNe_mEP zHt%icTWobCEygD24jC$QN$H_qyXX|Fj|H%`T~&p=8m_+cr`i?%nJ|)^wTp zh6i9_^lX@h*H}JRVWBDmeX)3r_>Etip8?$G54)YIciGu%fMF3#j><76oUNIK1w}G| z#j7lTU*Ha<&T#84LzXb^S61fRh+EeI>ee0{RoL0zhXd4Jj1NF>YqkHS@{eEs=;#>!i0`IcXBq8{khrV=^a%4cGvv>pK=J?+D zDzxP6=PwctAf0i~UpP}Ejs`k&u$4xPGF)l(^_bp&sKiyW;+!Z+fq}oq)9xNl^3<=U zZ{YdHygaWLKb)2O+tyDmrpRHC;DswP?B3o8_i-Be#)OMJ;G37fODI6)!5IDsfgTWg z#wtD)2)-*}Szo?Wz))=@_S`OHe)?iF64JR&?7WG;BIkMLceC|VNuXxk6;ymI66{mf z{+j985)`t%s1wXNs7&BQA~;w#k;9I&8%xrU9+hl5)xxH@>;gh>zx^VV5}WP$nm|sD zOk%y+vE}z{U`)okrzUFvyccsaR8j zZjcYHdF(#rBv-}rm#7mR3t2@7?X&RXv9+*<<{n`3V!MKj0Jlr%oe}M><<5u5_u=3f zCwI)B;|8JQFif6Rsc%VacE>^^$H^1pp7@SGunOVR=@rmq-=1j*D*fj61o-bazo|** zGs_c-K1zyDI~{8mGZ{XeSb9CJ^J(YY9|#CO4&#;nEF{SI;4ybNAHwPOgUi|{e7?Hd z<0>wg63*-N=^C#gA)&70q1_DUfXiAjugjTYy^%E)SxLrAErQZr#J&ZY+-RpzG2oU{O7&;)U!nw zua$bw+aN@s&lN)j0_X4sUtL{cMa4s8qpPxf*86wYU=#3d={nakW^?*WcIj#&Od#H-L1T)^7S zJk<^Q{Ve&UtjeK3%-Q^Dz*bpx=V0o>&(NrF1h+moiixcL$kk*u*fo25tF?Nb6&QtK zZAu|%=&AcBg!7F6jdPSD8xa$#)WXn7)e!y_m4M$J(T4!Uf8`OT`;xFlwWLiLLc=Wp z^dQQ5GvG#0yi%$pKIP#-TnwyMD-?KCW8Yws<2gMz#=Sn4@NNSWqlT0tb3`7M>QoEE zNBfBm;LLMkvm{wB^i#g^`^*z5c_|w);?;Z)ckz;Miz_fz5i-s4%pWTrt}5(JH>wVOquQAf%t@<(BsI|EkPY?X%y zY$A)2PjUdVb(6s-G?}E<-`#!6A=g=F57hzdS@fKfL2R6=GC^`8=smPG>gEa*7h92J zZ`GEmus>GcK9f>P=c#wV4-JilmN)U}ULTojrz`e}G}YUDFQ3@ES55vQ0Z-zi?5giU z%H31NNhu^TPta^Qe5}tqLAr4B&B^LV2W@EgEBjcSNaGU)yPg>ar|5AW!RlO$6g@7- z6_`DCZ5Fq4rDU7_-y8dH0=fO}^Ek6aZi%P!eu^g286y$RH7KLp7Gn~hd7z~-s9RsPI#v3PXs~ckvCuIbDkK8s3c6EE__l2K zY&PZRMn@-YzHU@9n}&ayt6*ZaA*Xh0->qlxz4MqeVp)~|8kF!;d_1$IK6CcAQAG11^R*;+hxXg2j*gf_>g1uPq$XYBDJiYyV+ zMv_RFjxDeCJnHtkP5O!)GvhAAUVtW^*%IRm3?@eB9pcuyNQ=sP#`5wUK#;Q?PL#SH zk$0cAb%k+CC-k}%-&r`tRyqB3-@stcPgYg`p>AAzJz8q&&6TivUU78lJGX5BXCAUk z{k6aR_i@mxfQE(TQ5ixap!5n1VKVNbCqiklW{@V5qWp-Z@{Y6SNK>s+gtHkt?ieYq zbM&$wRM+?4X(v(0v(*A6GQlRk1(KpJgV4ahp?5zR*DydqT^D>jBG@9nZ!Z1srNBLW zEgpEcZ@(pX{K-`>7&xOhfG6{!!R?ihsI}a6Kbx+wLHE>^**p`*roo9sDP1mR9+|B` z<#8DOj&J-48#BDfdS0?XISW$<%)jp1`_1l7oeyCZ2;X>x+L$P46(z^c+zqvZrd`sS zvAe6A(q)rH{7n+d=W{VVCDA?PdB+m%#EaljJulNUyO#)xzG%s;HXf@Mn@H*NdqKBp zS9Xn*CDfSTakR0}5Vwq72NHc%8=fOEFD;lbM_|@xVX?d z>CgNH_EOh=mXMGO#m6Xz2sl_p$#vd%3Pp9m+B$WAAil3_=PI}LM5++^w0^n4pG5RH z*v(O}Lcv{&yNrPF)!l<>65ax=iXGqqrn`VOJWL7!-_W`4M>etA~&xN>@9xh(~ zvxbk6uA?**@S3DF2Ks)!#~dpxw%0#kNO*?knJ6@FY}c&NE7!jAL8jl&N`5b#R(z;K zYxwcCesGz)8OD~Xu9yik6P4dJ6djTZDN!*U-3-$aHm5+tB(OJ8U1op)Yq8c z1RwVhBOgO{yE^KiIm^1$)-o+XxT=`SUM7X`+BQ@+sJ{feYSXKLI9LUME*$%$z}7iTZN|UDDAp7mhap6>^tjy<1A5!A$aoXo zK{XoCxzwIPgk3e z%gYQ%1;45^np?K+maFDb*e`@t6If1U4V(xG0R0qc=ZqT5Q)LRVi4`rW)`t-q*DkZuUNlcysgA3sJL!cDr$#TMSNV!iY5#1tI*7vNu4}|ZVa?ZDisyFA6A%@&x&BVI{zZ;8K}*q%l` z(g-{Ae2LbxLWWjwxfAc3r?ueI?KX@pnRu9a;pogp%7<p10ia zjs0mugfWQh2P=-LX&`u7bQRdM@wdEF9zR?^M*CHPv@?8$7jJ>5@y_X+173>HKIQ4!{(}_2R|+0?{#) z8G4fjI)XD5Ghf;jpHC8%7Xbs?Xn4`NzT#c+;7JG4j6Sh(hA_IiiNlUU3zW-4;PqDJ19X|vLZ#cr{X;7VCp66!}k zwf}fkmDOxxhY;H*P+$8sn?dFNZ+C(<42lvm@oig|l{tM}OkzvG3I{KCCAQ@Lx{vV& zr57EjnGOF8aA_!HcmhjzsW;Egn)MA1_87ZDWB*E?9QDICD3~zfjSB7aWcz59fEo)* z>RTzBp#}7UfhpO3B-Nc)!ob)RB5Bqj)$%tOA7^^OfDPhC3`9s$Qlwh%z-9-Ja4&YO z5IQS`d9Vt}U_1_TSGCy>ED~XF(6R?G&Jxk?BOToXQ|x;>0ED46@86W|w^u|~i@EfG$bXQKLi!S%`IT0Sh#CzT zG@COpO=Nxt{-K83d~%H)+2OxMSYg;ioY7P{IE5X)uc@>^WsUjJ+FlZ_9my#30cCT` zc;xCi!ZU|4R*Z)K=4d(c`!WwkkTB6D-uGft!92Dv_ASxwqs*%C|4}eDN&>j9*fVW< zyI%`-lM(zQf`?hmR1@hS41bc_nCIg4yNPd-&$a0J(m10l7QQ~OWqA5IpB_-r-K?X+ zL>>VL0kc5+8e)NC8j4%un-2z|Lo+Q!?YHIiv0M%j^qo%;sWohx4vY8(pJKW~Jw*Cy zWCry#razkvcOIRJQ^f`GZ?#a+y^(P)4J;fQOWGR|5C?_A=5&=yUOoKjFNuf&$t=ky zRW|wulA~3RY|=0%vr4;EZjY;$>>okVu=tWLns4t6n>iY)0Ch5aKK&XQo*`$qG|R{a zIG4u8k(yZ*d1*t#_sah}PGXwq^@Z_+VkwF}OX&mMN zs^Jrx_g?o!<};)~tZ;@v(DMDx=Xcw^EZM!)4mm+|I68zW6un0U>9@`3n*Pi7wjU?>;#5eU{&I>XefmEAd#eK(o=ph-NvD@ zJQ`QTNct!pfd*|&-4i^oDoRZ6t0u9%PESsPSV-Cm{8y#TRCvd8L~P`8AC{q^Jb2Ju zb6YD^zs1|eT6_t}*zo0hYo5_X39Z*;t72D@mRQ^WljRV|$y0>_;PXu>_ETT+ao&2G zS^m1m;76Ot6bMVQNv1fpT8`I|9-V8X(k=dv8dwxjoUEGOwL`|+8cAF^>#NLLt5saX zHQ|e2U8Jd&y^3bp<*}?kP)R>;s0hcDe0wH1edI*kGV(|LhE}KH|3tbQ5}aF-VO8LR zMvje#9X1w?GHLLdIEAZDO7)e;>{3xtq4B~O9N8kar&#}k_kwqw)lRH##%(e9VbYal z*yEVnfFm0hLVQ&4_Rn+aal%(wQy^L(c7Si ziQW)xL3Fpx>3I@v#MB5Tj*+%oUP@xm%inhyqW0-?TU%`M3Tf|l>046d@!lmqXd`xO zhTYJD{R}mBPf#|qCw?5Jq(T|HYhRG`$Z8ekz$P)V;~Mec_efTy>EF8bt7XB{P*$Gh zd1{v4%)oi@;9Pc^>yTKRxUX7tmt<;aqY$hu^#fptk+k)&2K>gAeOA& z-!9}_uh&j=gvy9K5lfI}1ZEcu=IVC*x#mR|2`?xKM8XVqRp0fx+?2X@js12hOnQII ziQ?xA-5T4DFlSrsnGk9>uKc4N?HM|nq3TypX_35Zu?yH#t891}qbCo|N`Uz-j+5ZX zIK$r20eqgCb~iaX=f3k|gS_Df>QKQZ;vempHYuz@cKh>9BD&Wn$XN*qkG{jLSwbD_ z2V0c=<0q>yCxRm+88Ux3IH#Sa`7P-YI6pv%xnF?i*zZ29GR@0_f|{dt*&lC=j=Y7_ zIIy=2{b2k~13)AQXtm*&pAzbks}tKsF=UHOX_pV0}Y#;T5346!6#s=fTKyFD&GQ#HA%6eoJ<2b!;UyI}-|xh609!A_EVD zp8P&_ajQcvSo_38L_~}s zUXpgU`b^RAw2QLp^Dc3+Qvg}{m>v6N{f;6;nZM}g7RfHwgsUM+%MrUPpboS}`{e$cxVt6=N z5PIwjClhb#k4RE+kaPMG27*BQ1!F%Q3q1o?9^Uw* zAV9HH8|r)Hq_JJ2RKbAd|3}tY$I~6R|DWj?6VsfD ziRlhpPD*Y&=x*Y$b^ z$E{4cWr4|K!GO_8N|_-pf=nKmW;KqcCYxg&K3M*4%nKLzNUW;W=`e(mTjl2 zid0GMMI`4NjcHIligrm$pVjskP_0dFjC2T6}s5Dfu#JEsEs zhT(4>`mGfnRFNGY!wzGqi$l>Duzrz{$bQkd#Gd{<-&Eso4}YiqH)8=m zl?wQu(lFG||DP03!OfL`lsd|bj&NgF_KJ{z_)owiIcFRd_EMQ_uEuqN_jL{$Ax4Oz zRdMEKpqLjazT4**QaRlIGf?~M>_lMUFEmPXFFPxNBKO_5ln&ipo;5t#CjGj}Qcn|d zG8&pVY9&&-;4j~leOz*-)z$>qjKluc6vH|Iobm6D0E|oY9a-s4Q|h8`($eaf1gR_+ zy*W`WHIbnwx5J$B{s+!_Iy#Jw#(&dC8I#L2(Jp^Ujda%_ZeB|4&(XbQ!4j!vKe%xo zxw(~#ds9m!`R+LRJQ*B4l$Mo%RL^?xiK`g=0*fU|VaT4?aD3d0bF?n$?==e+qNF!1~(Ub!A%*I&(R*05P}oG_BO>4Q%b zQT?2vTbf$(=!85w8yE+vDJU|uYIYT}HI4Ee3v?1nAlm(XE4{C9xvB=-lO+$mVYR>X z>Uw!3%W(#09hQk1>0;#{nx9l=EEn-9&F1b0Yt&waV5Z>G1usx9RFV({HnomgOMk?n zJ=kr0e*Q(517bs0Q(va<5FZ2fOo@B7oitLNG)S#wz%cxj+g5}0b#K1=MBEdmimBiP z_~dyi;t=aA;uO8Zsnhio(e9Q1UoXIsrB?m-1PNtrPLxG@o$dI! z(^JHC_DQS$2mMcPZx8EU4-k37Y7WECwVz{<2wO*z$8vT^@RK#c zo|~Bces=__IpAU~QZ_wIkZJ~cZr<{j*tie}(u}8#Uz`k+4?EjivA>^F?l!jG+L;Ds zEjRU0aH0d?`BV5X3Ru3y;n7$cubx-%LoW2FKXk}ldAPnW@urJku%&q^6fYaB`nd6p zrf}IYcNHP%99B0r-ddo|3Bj)V|yd=*F#n$Pt6@g8jmIP%Rlxk!=|1+I`E-9xYFtt{KdZUs;Z3 zMkfY-eKmOsZiE((mg;}cuvV}56;OJ8l8BPVZ_C4o5Y`co&g4h*#gHZ_n?rL^eSxir z?DwCv88{4^gU&2id#-jW@hTl|gi+zA4-cL1e<~o)2gDTo3n9uPjkd z^udd^UDe@_5?SH0y#6KYkPRGQ_d}Pk>-paKvf6EmOW?0j4?$S>{StPYol@ycQ?whmCteyF)r4=Btg|H|ZozE%*jUlE3r|NuqTagBe-K z^W5HMHb~|#rwCgjXlY$U*egjVB`-jPNK8*xNnooD==i=xI zT+U98D^0t>t&>GbamTVIrZ=y$Namfnt8C^dsNAxZie(hkgF~zr>RLqYPADtPhT?m; z93RLY?oRLLn;o8qxWMZpp*um|O+H=)>P5e=tj)!I@SpG=Q|zeYX;*SO6$nl2hlBs5 za?nMP>?*SOKKME(Fqt4{A109Ae_V$Wae2?b@O$c7T8tN{2zaa4Ai!ho80X3hDWHau z3#}E7A82%V*}q^6lyiT&=lsgh<$--DSSh=5XFb;dx`|WcNIK3qIlJ6?b;uYffC|Js zYG0iSRC#UZvx{C|aRhc|uh2u`_30cOWWL^uRr^F7sO}FoOMJMU%=a`o5kKLYCiT2( zS>i}PE7Pk$&H$4B_}!>Oy!la@ICrRYXZ-#3U&LyAfX_H3um6H2ck9P8A-~@%o{sGi zw=)pShb!K8zu%OqRAQx%-ZhzF5+qBv^RatJo1gy(as@8yjTBecvwsMq;)}peVIQ8X zy>EXyPvgxvydf9A^rvBpn=CMnL}J1Rg>2i42Bvvh?v=;@#;fD0Cewc#DQJSnbC2R| z#AEZE`SIw{TZ6o7*gD{Ih(Vg4Q$GnVj&U`Gve$G3u=Sb6>uoXc5>ITEXbgXlc{nbF z-SSUoWf|P(PfX}Ot+K8MwzNVKa}CQU~I_%q*lw(>}X(l zxx`mjJ3HgDmh3~}XKK_f>~3I>nJa0-akZKDeZJXxJ{LKom+$Sj1ei3b{>WO(*EJLM9UK3CdTVapbi21(vbDG~P4{zln$Vuo<7@G+gWZr&G2*6Vu6Q^s{urtAX8-K{kWWj?z!cK6n6wKwP)#QHZ7 zA09KR)y1{9QXz|Rh6aRB13O|n@WdVK$4I6Y<|p8)+odeRqW`<0u*@VpT_?{o2rJfB?`>v2!;LU&?48#T*oVq&OA zzr=GP@!)X;ReZHJib6Dpl!9u?pqM z_?Khnqa8B_O@kzo(6i?h>q>jJb!7!7AvRiEaeLL)+kDx@?@J)3d*g)(9d?2YlN-vu z-y{ZS;1}HXQ)1`}#!jDdrFHM9fA@6F3C0~K(qlBYU!mvZopuv+_mrV_oc%iT``lzM$HD#tSO}&=$tc^Lwv@b-E!Yl1P(&ZR+}y8=_(A1 z&ARy519t647xk3nH9yi(zmQ(l_i#g%HfmO0q3a8cr@FWGv%{qtcQ0_`xA`EP;_shR zbtNL`=m`Sx9pAEv-K<+>pV$3BRem&QxU6%myq-WloO^1EKbh~;T}xtpvFva#IN~+V z;Vy2KOKkP4WoucPlpE|1j=ClR4ST@OUN?&zMZ#?SmX_y%f>wrb_1()&$dIrI6y)f~ ztIZT$aM-~x@~A>8=5f5FWYyWJ*3nB;fxsW5p-B$2#k-$h!^BEV#4GC-BR=A?>Xi*M z5V0BdKqqDkW6JS~7-KvB)e+CY-$6^a`DWSA|8xvr{KGTr7I&DBsK98Z5cx{ZVJN;e zZel|K2-<;<#c+g#t$^ogz_cHL?7hN>eAE&5c*0-P#55==CG|ojgc^DX@vL4^q%~wh z*o$$hRp2HWwfm5Bb5Gt0TrZb--V4j(;SGiAzuhnJUmE-QzL4YN$HJ=g-nJU}I9Rp@ z1RqTT)qVc3p<7{y6E&kIV5e{X1ZSW+#UAwqs>-z|Fa$wNZVJYbQWX&vP zLlUM=|621csP?AH$7AD zkYeIHo<(^8MH(%yyd&3iU~!CtE8~QJE?eA~^H!SJ4|L2QBr=-3FZ1O7Jc+ICuz>zP zv+kYNhIXVhFH?0CkAy7e*f>BJZWDjPHc9H7PDG_gR6raPcKCg^gtY0_t29^cObra& z4)J762D~K9(v+>GLv&)8eDmJ2Z??%hZL~I0h3;vUxKna1;c>R%BG`M9NjAs?JQ#}- zI+QBp$*s&GqFzVeEX*Y)w>O-k=iyzxuq>qt1_8ZRK@El92POvq(> z96v#&vi+Na9gD)Vy?9~-UpViRm}5s|#;AVC@bv9B>Tr1~nu}?9KY>&63$mNvV+~3j zsazlLs6_4;QU|mO7~VQ!lN-<6qN5f_Kp<}S-^-1qaI9xP+LWxV??*;t3+>;LuxSiU z0mB4K$0xtr3GWHko4DTdh36(pFKAXVHIuhWF3Jsn8sUh=gNnd2-u2LvqV2 z1HtBisO8erje(;~zB3>-EPZ^o91VIawDuV9o=u@Cj`@0BmZfMR)qaW?s*(|b$1uy6 zA8<1zmz%Eui4z(TSEG5T^JZ$a!*i5?T@;$gu9rCn7JfQx-cbu7yI!$Ojyv{n+RUks zQyz=GlMIc^=8J#!T1msi60y;z19=WH1xQ|z8iukqO>sR7Lcz9Izy242NXCAWxQ zYn^}n$^KRH?BL&*?u)g5{eQ7ntyT5$?=%u0?X8F39SVPAU(xtwM&GCjt^Gde-yOPL zAMGY#c90RvP#r&|+*HmPc=b|tGHWL6t^yw`xU~`{BB+A*xdDCls(i5(&8xg}YtVVV zN>4qk9|zuN{<=|*o0`+Jig0F3%}^jxXzUOB&y}T%gYcl`CillthQ+2NB;6V*rmrR~ z9~!i9KGQou<~r_30@(~gBWC!G1yR1#6kXX_nIfK94?L!9*S?8&k1*4_3#pHvzrlb{ zJ~oq&(q8U#ho&zMkZkYmMnU9D1NQF;GVC$-1VCE314flxauR<@%HHOZ{sO%%ZYsx! zZ8}C|hm7%EzbxXO-3mwcX+K_ugdnd~__`{c4fK^33vcMH)5Fd9bUT{LXi`>DN=?iBb$ROi5%A zx}1s%(A5z%+(h;Ly@RM`*7At9&YkrwBxV505 z;2@roltWuIRG9dGy#VRRFk_raPf;J=+s?>s>ML!kw!4fne&vU(=I)CJn59Umo4)WbPrJ;j@)Uo{soUa(c?`J~jhm?5 zDZibzf?QD>*p$b&b5PRw0?R6)W@*eLxZ>jCi&iTQUxGh0*!S|#zWNuTy^v77XerV- z#d8qQC9f!w92DTvXS0&$7*Qa`j_LZ61)IHSvY`eA~X^m zRr%Qe6!9qUjo&}bz|l1I-hV7ITJ6$Oyj_Z`(ptlfg6jn*J_7I1gbXQAAD3yGw1#9{ z1ZVqVR;{CJdMWa^KaA5fE7y!CUm6H))L1=Sq6bothy!T_3oW>&;r~j z(>xw9RJWZnj$DQwH z=z`Z@R+r5Ag6QNBA#2r5xDzqgISi6luQa?~RUMq~>JAVPOQS=KluvrU> zKcTnJ2!ONkN}hviTno{(CNt_zmhW?e?xiA;Iq5uqP3>NB50Tl)(O?JqP5j9SY-xWa z&}&5{X1{pHIhK?S=vuMg|B2(MXfHoMJl$RzFsP?$baVpC)O9QzNxpou;Z7*i_^6ks z|j-00tgG`7^&Llh1c#VQ@C#g6J@d$>WvC=|wG zH1Rnqcu(X&UR*5y6>D<0SS z;uldzJ>)&%%E~DTSzUoDKOS@o&y3E7uOvd6|G2&t$>%dGm3*^e*=I zKc<68u?mnXW}~nDuzl#$Pwx|>9Jb_hy-RxMeHB9CCVVl4$I#*0({2AQO^eev&TA)3 z)-)%s2LijveKyOFE^B3=z-fPkH{l7@{o6sT&jq8$ile|}#)I@g9V4As#7j<*{vsVsEq_mAt=d?mtOU$C^w1F$k zqim)&ee4f5R(wUm&+&6L**J&{G`{0qBKG%A_cgyuV-~Loy>*Wb{tb^(Il4TP)mBr= zsl^YqA78ijKc@7XQD(&8GFka{Z2AxvpUkoNy&9#>wi#iV^26AV8FnoatR=zvg<>tX z9-xuPA=x-Rzs(ib@0Xz=?i0S<%#qx#{{8b>46Yw-A%+pASzLSv7}I!0HflM(`MUBP zcnaBV4q2&<2K1(6=+6{JMBN`Sx7D(P!g&#WiJ`s(4slULKLZ_>>dAfa4Iz89hKD|JW59pW3)(3&ET2HM@x%iUhdXv59q{da7>4*hwLd}P zI)h(tXWqjVwW)-R++WI^{eK3!=1h2@z&k?mMIp1dr)#~wOIO8X|W`m)#0QXFL%_URs4j~PM?BWP2 zd9w{G-TPYlIc@&+|CO_y!JYo1n=+Pk{$}!D;^k!H&fK%D%erD)AQS>TtT6Yj)wWq{GUs9=Hwf`kga*3iz~<1MhE4&;0A^ zY_}YKd@;CRqXQL$P@s!W+Tum-wB82OPC$nI<>r-Xpj_&=3aQo~U+>A`gIhJQX5sBV z$XqzIQ!MUy$FAOK^#B}rWo~IFet#-vPZ5_Yf6&-=n>Ou4MN%pFT(~~w(JpRW@Oh-O z2uBY||E?eiuK{keZ`+$VT`3MXQ%ai5fjRkkWHFVBG>TlAr^x-?P91(6ND+ra)(>*!w-z22;(>*iD{~0sfa&N8>t_1|5beCp!zJR# z0q`#|aMRm|^!XN7R*oFuP}I*gOXH7MnrCoL1}qDJ8)usTPGUtG-^*XAMEhc8`-KI&!! z9<8fXKgo{ugA@#Y`p9`WpHme_;2~~L2+&(nD(SNI4{AZw%M{s@*)(J! zsiQp-LE%mgOV5Bwsi^J`Cui;7>hEzv*p80p+g`E>K@|>1+?>COpP!+^WnNsKUz`Ev z%NW-J2(Y^1$_A!NHhugYPtnk>Fva(Lr>&vaqQ!_iD?Ub5ikO#wQt22r-zYPpx}vcIqVr$&!z(v%OBC+jD5^6kwCZWKaKHw=}w93O*FB<$yT-3O5FcGhfM24^sG-Q zRZ2a_Pbg(@Gwe?)rzsAW#vcH_8;w@ubTA=C?a{#xtlED0@+GJyhS$&$#=%b%_30nv zX+{6JJgRV9A0U{$YPCsgFa>y6hG-xYlUmy)^1f)22HnA>CCV~=w+YXA`=ur{90lU+ zx1JQ+BbjkB!`odeJt(o1{B<#r?a6Xdgu8%8;6D!K2mmRo`H8DqWBG`Eb9bBXJw59L zpp6U-*>2+6y$E$&(a;x%TfI(O@%|WAQ2=J5q2Wr~rdJQU+S|BMJj43%*a|MLaN9)KZzoR2$2zI4^pd`lqHwx&_j7*6U~->+$iMx-9!&$+aZ zL&Cy@11kOuo#LceHmS}cqbrpxmuzl4 zd?HAo(-Vn=Qy;rXDMhNHh zo?~au_eGS;?ZMM?=;23(r3|@Yjo&jAC_M4K(;Xc z=WlDNoQ}v>Q)5d@q;Tbjm3#{3De~MF8t6t$k@`A$7LIL z!V@T=;Iz3wH&>0*&HA1!$8UpNn=ZIYZ}OY9a)?C-93$WIQfN(>U8^LaCNdZa$IP$6 zE+Vd%7a=+%PdEwah@CEO)|bjth@$3R|Ad~KUqMuQk(rsPkCkP}C zAXl~Z&M)atOVKmb1Ar4kFTu%~tVwQZ!=r4PU#1aSY&}&exHo4nU10hP z7v_p2&M{bEU>-ewzbxTBzjU;`B03O}VZGRB@f*4iKn`02T6yL0hL5qgX}PP74B(7_5KR^uF9Fzu>2C3vvek=ing*Y#(o*rJl{Tb-EWy=63KS zYQ2_#m$UYI{@Dg<0j#?0Jph`!)@!`({N!YF#anLEa~h3Ymd~aby0pa5K&t5R~QG4300P zrf&GWNeET?8oa@aLHH01g4YmPgqJ_gs(Mzx{;%jF#jY? z{V=A^E&uN+onR8Jwb&~rP9)R6BE1>Qtz}L&>)h;(Z|z^7@AB8Hb7Iut%#MF-sbAOM zc^~b-$m9q-*ds>d0KNxcWcnYXs^gMV_L6h};Q1(p87n~(?1x2#{W{u$KY>t;ZL zO3*_-X4_Bq6;ANO{6jMN)5oy~n?-bliW-p-bEDU($o8Zmm-}`{8X(KddeOf(uhWPjPrKhUZ>8_!k-iQ>5JkON^5qE~h>N~0RTG<$iHX{8`-Z^IxCU1V zuG}{ym)Sy<=>FZV6HJeaq{8~)nj!A=aUK=cBL z7;eX|Qc58N`-mX%vB$B<$X8KM`nWH_o}mSswEy?_{3px&_v{Q{o;o?^*TruE%Wz9g!=^hAya*0{V))j2xbY59ub@mKL z&Qu8N=o4irTWuf0|qISQ41PK*M9)bVb3`>?ZPdahYUxDo~%X-pYi z`X+klH0;TArY#e4~ov{bQi06(uBu{ggS^aPz?xtt$$2s}fakxQW&fI;Vnvi`TpPgMpBCV{Lsm zT=V7c0-c@|%;IJ!UzPN~ydQz891+!DL?pN>EW`vj9&|1ZV{8p+PjpmxUfj@TiTG1_ zp1IH?Po-`HUUS2FEMag`L+R)I7J#trmI0i{sq{w13!N9RRS4lXSrE0QG*mA|&- z_NoU~VGIRlBVFUPw?y7!@+y7}tc)Lby0ya*b`WpLC#PaA>Wo)+@$(P?F@K-J=aKh- zw%KQSixk7z>gA+}nLlyi&NeSzq*M*_VSNA2+< z4t4I2)>>b@*YZ^AZ`@7nR+=#Syj9_UqlRo(5m+}j9}r1p>=gij)G4!ep&8)J1KL$B3B2X5zq5ONyv0Mw*n z)y`f8*va_jDNy-Z{%*+>u>TMbP$KCT{NNoZ*`eEc#jyr??tr00%M1JR_c0#U)4x%g z#ZLKrrl`^cJOi=>eX&L0jg!k>kngRLy?uWo*_PoAs@MeH6&jZBf3qV*{@TQA|Px1!Z0|X)NBqw49LK-&^3l zDUc(*Puq0f-Dzxxi6dSOF9gubMhu3*T09o_d)*tows9{(ABL8{7+Cg7QTi?io6Vm1ttCLrX#`kFuKp*1c}BhiNY~|t zP5*2TEOy3#TjZf|10BP~@0=EIyH$nVlJTtW0t*~KD2&FABs+0kY!O|kVk!Fk%eFx; z24+#S3=I!1&vC|7?#Ao`+$>v-tKd(SG?hpMX-pL>enk#RiK3CEo}HtfpT`|WXhgB0 zmwUmLtPI$~Y?4Nog$^VwN_X%O&8%)01ee2c_$XVw_Z_^}>d`cu4~+?fc6>Dd@c_Np zb8VtrQFNaFUsz19MbWgw!g($uodMOA%1Di@FrmmT4g6ftygixJka9SE! zDfBRkz8b z&0V6krwvLKQv0N&q)w>lY~s7d<4)s9s-u5 za^8>sh_OC_o@pi-yy`UJsMWgA_^nB@k%eZGI6_YRm7B8O?4bW}af|)KVnES1*bjKJ z=7jeYDP@tij|N)+adC2p=+Wqgf#%9}nI<0p)TzqzJaB^nQ&FkKB%;}6;Mn7Qs}(m1 ztK|B)XGcw}che-We~?vo;C|b4iaEOIXW;x0`htWpc?ZifiSF^P2y8$APeV}x-sRu3 zo!sn9hgSrS+jaQNTcn}b#T~1Oovwfpu=^AH>O!&V_<6P_Hp^)RC~)_+&JcI3BIl6G z<4x|%3$MdKvKr@154Gp_$O>3x}0=lsfy41JLOmaRC4#V zk~QTOd?_Dc{0BO5u;tH@2S?9?C;p^5TaSB?)y~&{?|jT5eH4-Xz&DoNfV3#GN))@~ zCS9dzLGXesOYxzhD5(ty@Sc%K@m=%tWYW^IuXuQPs7dpWS5b(gK1B_@d=d6hCI;qV z!p2y=27xxTwfUb&!)dIc#WjfIPP6qnr`xmFjg8F(l1)R}bpDLYYd}rRAie4kmEvY- zOo;XMVO*lzQ$f1{wbYgC1_ue zT{Q{Ijhaydh{0b;7zdr5xp1|9vnd1aI5?O=j$>ITr`M55e^~9HlF6EPap*+sJI|A_ zTAj8kcTTvnt#*oHzQjZqi0qo{JO8Tez}5emu^VlzJ^z+kV6z*oExw4;bbIsDPU}Gx zuNaqdF)<~x8YE5eS29<0$;>5x<>7&w_pi`=T(r>k0GY_}u8&Z(N`J+~3PmFFAWg-V zAB}pxewHuPaMKDkvEw)`J1uHp<{sSZ>y0i55xR=-5W$_BfUV!jC(O zF6i|;ZZ`Z8gQz6NW4T~6d~RjNQTZY>2tl%@Y2Xplx^9K~z2U@T_&HE(#(i64K?|i? zBKJ8hh#S8L-$??-wHeQO?hE|Vl>FTIx;ac{y^V^*x|Yy_?56Tp6FcuHkcr%N2}lCS}N~5 z;R-6j&VYKbB8&aAYlH34D`#(ld|K1;h$t_0DuV}u1=gaUM~q~QM3Q6KeG%!?rwd8( zuvjLcjh(JX^&pQyg~7XP6*GT#-(8E=>wB`+^CghS^%ZB~#LZyI#WDGZLW@RTTq0#{ zM&Tl2+>P{i{&X`!PcmU)J1*%pW(8HU8`fm(-Hoer){e!lcv6-ohUi;FO8(I96A?No zDKm8+84Ib@2sabp*8`2erJVt#cN~Fy0*a}asceiDS+XNQ_g0wz8doI_F1Qk;sZ4T3 zI+y#Q(%g4`@;CmvPgX9*Tzco8$YIpxS~=l-odwFrGFS3=am30yhxj~^TaCg1-rD0? zoH80;Lhm!upqiRtBlde^3lbSu08am&P@V3;RZ--!OFculo4)(_ebom#sP$bbHdft? zs1n)50GYEV>yRt`Q_a_RgtsnesNd#ObB4oP`BeYtlm}nggF;Ip=cvi^^J;H&>RjB3 z->8$lj!B(*S`Izd+!Q{WF9sS?1)AZ%eGH9?0#eev9?@DyD4gGJMz^;(pCxykLTC0@ zey|X6d31y3o2)3ate=}kkc+hkq>mzkdwFT(e`)^wSJM5{y+$SmkvIArQPr~>2Bq%L zNq0oJb8V*6=)JWd0*^2Pn!hk*kY*_f~*E6-rnhcFukbdtP?%kMiw`Ed_ z+1Yz<@z~DUJ{;%RFi=r)T<&B9sT#!dxV!vvzgF1w0`sCEg^;=Eg~t|;N0NODe`(M9 z;Zo;Dgl3A!D1&s4m=}_;AbYrpkU#c?KL$UgLGxZjM*wY zSRG8)2mQ1gFV%EI?KSXTkZyb49+3OCEOjrtpsk(#(wb3qJ$ZCh(^#nE4!RrO+tqT) zu`6*bs{h$+Jjjqn1+BrcEkQ)KKmWXY)0!)AW<~XygY7G``+0?(B8!tT(=Y#&I8f-g zQ0=VuWg&3xQy<@w-2WV96VW=;Qrz`euhw}KCV2c(s47)ongvE?x^kwJmik4k^YB{u ztMop549QwYm&ryrdYu_e`1D+@(sGg5P{f&vh2`M=EJmxeTAs|S>mD@vz}Le2)&lzw zGjOA~)^C0|sv^syZ|uE*L+6Z{6tjcSg?^YE8Sv>1_D!BWw-C<%33Tv~~rN3KzYbfSTXsht!LHasZ$g9Ix zr8M^~${dF=!?}a8RT1$woBV!z!D~2yHhO%x(9QXZKvg_kop3qpwm?ycgp~p`^3+)z zn|3*kzlIoih`jQ_wk=jgA2(kXPgbmwVkx>`s4^1%HHyeX^gb5WtG2}59XnGb#hriG z#I}l~nstSaUD^`3Z1d6C7(DDzv9c>Xe2{?ge=9pDk7IdrkUb4dMBmS zqwlasA%KR9S-)9ikIyEY(Vj+XLGka}KKyCouglh+#m(V32w72oJgb?q6(qp?epV6`<3A@zQAo8~89=mo zf!|2ar>Z)3az2bK6ZlYrR6m0Kjd>u~Xl|#QD<HK}2;`;PrMu17o<1{j?~qI>uNKd#G6q&ihHmqMZ)s-M1uWVcj>XG1HOw zF!SnrB0?cKJTDqu>&anYW+z;l^7WP|*F_&2zs-q;4R>M4xggXV2H8jw8#l#^a&r3( zO@cfGd-}TdArlrRYXW-uA-n$1(bp@T0XMtDY74_h{fIMqvEvyMfVeR2xy@44X>x{V zx0naSBa%4E(A!Vr7lDjBZkak|($zd}A|!f&evcLpC%bY&BlWkTVLjLK()zO9sWN0r zRS=TMYeg3Ja(h|=N8$w%8uG5y#pi*r_kPRg3RHl|azw^gUx1duSTzs9m5iDx8i{8E zMO{QZoMMnEe0+WVT!#M}Dej_U8ZS>U^zfPJ5=tuZzQ4 zrdKIUKaC<=Cny8)p75BY%J*I^ZC@WpuF>x$4KqHXOh{7X0brlr8*phMg73%E`3>MU zyLNMTxKwfaH!0p6aGjK=n_>+5Oa9(=K7#%Wi_(1Ws-UT9zs<{s((_V{0T z`U+VD7ORyqN<29YC95m~z30<2a?A-jbMA%94^S)alrTqd>+H9nYf7wQ@pc3@*29t; z)D2VhS{*3U$OMIj&7phW(=Or6U-JV-T!(1?OeEuX{t4}n3%`5rZYU)447#AO0S3W= zy`d-#jrmqnv2Da#yiC$jIV$dTE|Mni-2B3`#N@A+GqTO?e5ct;;Z@iT8MVK_7`LG`3$54qJ`zg}FGzg2~2`BgLvB4|% z*ZVW18?e(+TTU1>Ka{}v@=datb>PCXU@&t=;I$p}YvVlgzp?HX#bq6mUW)`TF^e%p zdAWn9@c_yIEe8jQ8G+f!#fj{@F+&d=4&&CKfuES0xR|x~77ajKxnaUqx9i-{w0!MA zr%mp+82YGtPLA;j?fNKyZr&Bb2C#Z{!`2 zQWCliYvxQVdhzc*(&^9i3T+kT83doYcPw`Q1c5IOgRWq3+YR9+|IwC7t@SyTEX_cG z=xmTNi+0Lt#U0N`nNcA!`I;=CjusEQ9*|T=mvAziVd#7bD{1Z6%-fAFi_p=iotUlj z6juGG_#yIb3`qi~HNgxXY}TQF(_ijndc>Pq`{$P{6CPI~9hJ-iH0i@c52=tu;IyrR{^)$$>;lXZ62SdtDneor&-xT6 z=IDhA{cK{S7e{V=MbQ24UNasF1trF$6zXUDY}$IOA&v}yKl3LWVw8zQIFKRt|M*W0d z_>8pShZ(1bh3%~D-+q<#^{ujn%G}XxA$LOEsDgcs0>unZv{$Ng%cw)o+ES}u(nd^>@d%* z&bb~GU3t@wX6HOn$`NLrS;=84N~C7nCgv>s6Rj$~56z}nj2eO_Uo$ZSK_4Y)Z57^$ zG}~f)lYf;zt?h{5Y5NwI;untn@nSFb#unz$dUEA^1?~Xc&{fZ}9cM5VSq`ApXdQv} z1aI~Q?BjCb98>;JE40vkzSQn+?)0!bB__2H`^{62PfH{ZQX$oG?=stu1H(E16Vk@F znQMF75q(-u^iTue7Ih&5Y+cS_@Yb2?!Ai^|1Cp!WI-Lx+*Ms;?JXzd_7A#S8+)s{F z`DnwnxpF)0zlg6t9cCXz1YXDY6+7OEMdIIIbax~>EcIUsIjmT+pKO85x!vGmGlu|~ zGo&=edWcty1Fz)jVD>cbo4ROL*wnbO7aqO1557slyl^e_99(U2?(VO{B;P_ylxHT!F-U2l1xy)ev4^5v%^~F~Il7#(Y&?z^n#>{=V6ZWF<^&jB!o#!JwsK^1MI}o*4 zWuV{*2R@KlKHQ*4D(G#krBDmQ)HVd1_Z?ajB>BlrnV8?sIMN%(%4~c!du<%ckq}RX5s~8R8{vExahX~0{=6P=7FD?`SFpYC z+4FWgzQaA+8V&SCTY+ewVY!3Mpt%JRHlI95S5 z=;&3Y7N)R@r>WwoeP2B4Wji1LbD@}BIoXPqaM!0jlP+4?xFuqK$J!shTK!@A(A#5g zg*3qXtg}~FZumRoDdOo%iAf+4r$6Ft^!s1Yo133}muoTnJdMWkUd`;x8evecwBh9I za)in}55WCM36&_6V#~CJkL?P_eY2VLTR$<2VX}|;&Vdt8h4?{K%(34TT#=`6UGh_` z9Ft8SSFP>gO<#R0egZi4T?pE=1_Ql=p&fyM-~|q0ZuH;ZC>A{Vc85YcYVKx%9=ri} zfR{wHR<&C6z7*X!MxiY1Pt;TX5zJ`)U@zhpk8YwfUQDKMo4w0Ze~VognbZHWO!O4u zpBr9{o$jHwgnTQkVLW=*8Z_5V@pYMhGQ8V_*7>k-5~dM+unCbEVEx;2eGe++ste`8 zO$LPR_B8u;_~K1ZNb|Y2)vlLsTAm_19^!ZyxLh7%-j{}mf&4z>XI}2df5F2q*>io< z((w3>CES`2Wv=|gug9~O93lGb`duqa7!ftRzdd%s8X}*<+CR+=o8Sjy+@3$n{ASj5 z+_B5odYdL)Ecw^A8`v{#m!NMIaRd9>3haF+?K1f(Xp}!?!F>`_ae9z>oc9=mLZDp> z&dM@UZ}xdEg3wg-l}j2J@tdk?cAq=iIlmP+DQe$YhevLU`mPTmICrbPYAm`$7$)C) zwcop8#j;$^9tYVF^jx9Vw`j$YGkt@)8pFHy_zkDvsM(^ zSFAc+UW5pIzuq1%R4{|3Roc=Ix1RpB_Cd2{ znpU_EL{`RZ_^J$8?EE{Nda+u+Q0TsvZ6!AB8O7pUFlRFZL~V&0-a%=w+2i7#5SywDX@M2VqlDVUS@+k^2B^J zzT-~l!P>$7byu51s)N^dodB5myVlHDJ}Kv3i4$`?<%Qg?8Qpxx?|yr+^#0PjtkOr%j`$$F2VF zHmnw!pCd)9m#R|xDIcQj+irk>CEq>bdD%ay2M(!7u~m7?-jg{b^D;`w$bmX54m$X6 zsN<(?`Q%I*ooG@yOi%-7tJ%#qNu}sY0CN=paWtl)?g1vew}xxWDN6g zT(fkgrNL;E?}-*IFSc8X-6-B<2Id~iLh-?DB6K6)#J@X-w^R1^K`fHp-#q<4wyrv^ z>ZR#RNGQ_M-QCjNB_N<6(k@R;f6xs@d42)pS*Vyk0I#L(g+$-@{e0=0(a#`9xb@?FZ*;C%hEk-@bq$ zbHy%aB#O=+zlUVR=<^m(a(U0&=1`i@4zs?`J)26b3cFduXCaV8FbLh~ORKUsH%ZwBbcz zdolYOc9l83!==J${E>Jx%O_0iFM_n6VMEjgg1Xub(IXa3N!g7uS9Xa&PZLTWFs0S3 zx}73vu0JNcn$cWO9MyHRSSvWKL@+uaVI_rPAen4GPnn?%fmKdUTWS`rJ4}jC9L10fNeY+}H;&_>Mkx=G zrt2@xA%|0=^-q{y;4hOoEf<3uKtvK8Q>~e1q@Q%eHq9+%&VgqT8jyH?q2UoL-QITZ z60e~3;)YyZ4zsqk^HX%0Ci_)!Hr8csDmCXADv`j^vYE?a*tv)jwCMNv6J^-f_VCe@ zTcPxw!CE*|OPd=79WM4E;ylgK-%}!kpMUopxE+^4T3yLY?53(oRQ#-&Ke2&`TyKyU z;~SP-D3JDyLjQA`5H^Figff1^JGZQr(cyHN3F;T`J82blglt+$scrbv8$Y09=w9JM zBY*l{idO%D<$JTDj;i%E0TmaQ8+g$MNOkKd7_?aPbl5+{21B;)j3IMqLRl`i?Lf*W zGvIAIsB}@@ymTt-to5An?|j3Yq89nE;RJtT5t4Buo$lG? zxvl;{v(C6q;cj@@HsKu14MbzY&p2C%acFTYbAv#{BJ*|T_*hJ-VKOSzx@0+tJSKFU zR@zd>{cQ9t2pP&%v*sS+_CR+-~O%U1QU~Vrr{9GFd10gG&Luo$~*77I2SBI(a~@ z>to-07;wJUa*)uVn=81cp0buZxCOjPa%kO-0TERlxmESoz+<}Th)x@H01@7S{}#n= z8wP}j%XjtA{1`V`JZ;PPvbi88^YO#bW-bb!H6xpdoITwT4ymiiuiBq29?ll4F?iI3 zC`wT%lA+DY8_gHn?K%o}H!%qx{=|uZB8}8SIKRB=2ovX+fp1D|_I8O(bJmS)3I!5N zGnvVH)Awq=4D<(mJDPh_%^$0rZq5Go!#8Xjqx7vXn4Md8nQgpp4b->i*BIA)7Bs67 z#C~BEMTsd$G&$P`Y`nT6J4mO@m(n!?piCAAL*%mCRyHoO-Rnc_DDtY=F#Vx z;#)8Gt19FQOEOW>$m-i_map-O)^{oEH!WOM*eAl*hf`AL7du=mmxaTuCu_u|o?ydo6-kQL-0w*c6p&Jxd(-WZgp!GoMnY>gZ5}BRtO~*Gk`E1C6*D-;mwx`7gy4A z@KWeY88?@@M2OEzTecYu&K6*tr}wk!y?u9#a+ybX^1)L>ilb0xB?yb+L6;sjXI9~P zw?oye)J_%M???0+c@*29I~c<1i?XUkdz7uH@u+b)_>0YmB@&D+e)rtXKKoT9O2SH2!?utDO5Gn>+th^8^8ky z@;=YY&NM=qLQ}1!X~w(adUw0W=+5EDiJ1EFMY*z(s^$EnVU*`@`#r|2OwLE#I&20O z1ABOU?Ny?XcUHc397PImY%gv?qB#r49A)wQu%9rc@>-oC4}A;*sq|&~M$yyYJS_0U z)b&a(=$y=#zPj)cXkcCFSva2)jBxia7!yh)mEx^3k8d93J#K#}Sk-_?9>|k@fpf<@ z`#upYCG1r z5)E+!KHO)Y#wE+hC`&yiu!_{HFd51zM@&j0YETgM74QaR>eI_jHwg9#o!sF$+_ZD| zu=;7!2>EJAbmo2YwX%r%;tPTS3{-=Q%`WvC+h>b1;cKIj<6W{3c$OE3`l2|OIj z0x`e2SlAPvbwYq#Y40Aw9;2T2WoUFPwIXfbgh|t}e2q6VcsQv39~)|-*17R}Hpnn~ zs_GuAo=%_8+wAXq_E`%eet1FirXKo(DU&l0`|Tjlff#jEYCQLdJ1X)`;X5rL8c*>t zXiEl3;N5oV&?ntnGLBB8Y*U=_UJf6_O_Sc^Iy?fLaP%(O3>V(d;vwHmRZ9?gD|f;n z>9dJLSCVLo-%Q4@11e0nQ!At%=Y@U6=PK?fe;QWmbVH|EA9KmxO~e{TXn2b+jK!`w zfOh}7#xDw+{pq#8w=x_iB2B@-3pjoO{vB;wTifFRa5I19m5BpnW#tKD=vPs;Ebi?z zc{R@d@7DQVVMSPoy4%=z_(9M6<8-M)NL#!PXyK~N1JW)9BIJ5Ntt^S$vVow0s1HEp zTG96!yhF_^awmlB?9zsY5#1jf(hXzH+=Fc{%b(gl!;BwFZKEw@IhuTcPW4(^dU$v1 zlh;T1mBLo%_gzs4lGM`KY)&6^%R|H?2E(v@=K=$cxWDXvD7s5%-4%iNxj5_?AAbt_ zap-}z0tHoP$3d0-jmG5RT%{>#HG|eRPB^TFFl`sDiYxduL`wMUlTkVeqo^gj3lJ|T zMLv0MYhr3=>_i7J1tFO9H(WJ&?1*TC@A&2j9^MI29D)0)QAiOTwgrz01|1_XmaFv&NUSqUcHDhfI0`9o0E5 zh_7!t&Mwa`-^J4VH1)@AddWto3Zw)d9U>#NI%800b+8Y&4|Yj_1$giFT3C+XtBn-P z@@%IFsoinDB^!JeC_+KF+3gflqy-NYfFQc)kAVt%DKl#v=)*4&mbovP6 z2SPJ53>v6Sk#=G3CUoJV=}B_H1pIcW*OL}Zn{q&=*|q25GV6UHVwL%Ksh-n_EFiPQ zbiVT0`B^WJs8MP@>~w>}wAN*{b2&cQWDL~z>%X9oH=$?`{d89xhPjC;flLSx!7I^EXJKdc@yai=pd|jn`{{+vM z+xC!~F0LfpN|FCPmZ3^dbwmf?CT2H&4hOzbtB@3M0D}A+&BmqNZitPDdjNE2R8efp z^CLcI8=}7F^P(h2u%_zisv&GH7hPQWib8&zK#H5?yU#}Oss);Ug7GTdYO8W}f~!7a zS1blYm;?g0>Oz-8tmg;kw4=9enu=OwaqhjSdA`Yf z9~%Zh_J#<%Ycimp+j8Av=|3BgCnE%J7zqRb+0W8HSMwKf#3^-4VUtlo1 zUp^GP_CV4;hhS80PZP%WsZ~eXD$igZ0@F)823c76<*~K+p^x3YmNUn!)_r3IZb4z1?3#143#&VWQ>5J7>UT#G zC{htU@Lr$_zL|@l<+U_wlu4_Pt@W(b(ZRX`tAzG;PPQvz4fw}hYUeh`IspF29ZK;^ zBbOP+VI0$w=6VZ7n;>{&^dPIGhsEid(wznt6zcQi_ytZ#_61Yg1gZBy-3lb@5pAmvj5m4Ujmq~oG zw*xxoo0l*+YZ>%21QIiReGibv?@oxly3E0z5um24%vW>oP6@Ks*E_INJ3^WoGGa0- z!sj0ad>Zc@wQlr7$p;Hwbq2o z0u}u_-qZjVoM9usc@|b-XeiEpI*FUXu_AKs$$W|wTpPnHL(~{r>l`E;4kC*v!iVt5 zI+!Q#Sv)l-R@>Yb*J(Ci6}^7E7k=I~Zz7cLx+Jzqzg_Efe7qVK zl-;Du$iuG9mu4B_Bg$V5lG;IO+@UZ*r(`rNI44`rs)an|MfS-SSe$nogB7J)$LZsz z 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 z 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 literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/config.py b/icesat-2_kdph_py/config.py new file mode 100644 index 0000000..a3ce3af --- /dev/null +++ b/icesat-2_kdph_py/config.py @@ -0,0 +1,247 @@ +# # config.py + +# path = 'C:/Workstation/ICESat2_HLS/Kd_ComparisionPaper/Dataset/ATL03_ICESat2/' + +# #US, Orgon +# # ATL03_h5_file = "processed_ATL03_20181206092124_10500106_005_01.h5"# +# #South America +# # ATL03_h5_file = "processed_ATL03_20220530041141_10391513_005_02.h5"# + + +# #Alaska Cook Inlet +# # ATL03_h5_file = "processed_ATL03_20210801125753_05941205_005_01.h5"# +# ATL03_20200805175053_06320803_006_01_subsetted +# ATL03_20210828231447_10131203_006_01_subsetted + +# # Hawaii line without afterpulses +# # ATL03_h5_file = "processed_ATL03_20220122044818_04721407_006_01.h5"# + + +# # ChesapeakeBay +# ATL03_h5_file = "processed_ATL03_20230825074121_10102002_006_02.h5"# + + +# # India +# # ATL03_h5_file = "processed_ATL03_20200331204156_00810707_006_01.h5"# + + + +# #China Bohai +# # ATL03_h5_file = "processed_ATL03_20191128115256_09560502_006_01.h5"# +# # ATL03_h5_file = "processed_ATL03_20190530203316_09560302_006_02.h5"# + +# ATL03_h5_file = "processed_ATL03_20190829161305_09560402_006_02.h5"# + + + +# ATL03_h5_file_path = path + ATL03_h5_file + +# Current_Path = 'C:/Workstation/ICESat2_HLS/Kd_ComparisionPaper/Dataset/' + +# shoreline_data_path = Current_Path + 'Shorelines/GeoPkgGlobalShoreline.gpkg' + +# #load the Global bathy dataset +# GEBCO_paths = [ +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif", +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w-90.0_e0.0.tif", +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w90.0_e180.0.tif", +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w-180.0_e-90.0.tif", +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w0.0_e90.0.tif", +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w-90.0_e0.0.tif", +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w90.0_e180.0.tif", +# Current_Path + "Bathy/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w-180.0_e-90.0.tif", +# ] + +# horizontal_res = 500 + +# vertical_res = 0.25 + +# # Use calculated sea height to determine photons at 0.5m below peak +# subsurface_thresh = 0.5 + +# # subsurface distance below the sea surface beginning to account +# Kd_max_depth = -1 + +# OutputPath='C:/Workstation/ICESat2_HLS/Kd_ComparisionPaper/Results/' + +import argparse + +def get_args(): + parser = argparse.ArgumentParser(description="Configure ICESat-2 HLS analysis script.") + + # General paths + parser.add_argument("--workspace_path", type=str, default='C:/Workstation/ICESat2_HLS/Kd_ComparisionPaper/', + help="Root path for all data processing.") + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/New/', + # help="Base path for ICESat-2 ATL03 data.") + parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/', + help="Base path for ICESat-2 ATL03 data.") + + + + # #ChesapeakeBay + # parser.add_argument("--atl03_file", type=str, default="processed_ATL03_20230825074121_10102002_006_02.h5", + # help="Name of the ATL03 H5 file to process.") + + # parser.add_argument("--atl03_file", type=str, default="processed_ATL03_20221001113813_01641706_006_01.h5", + # help="Name of the ATL03 H5 file to process.") + + # # India: processed_ATL03_20200331204156_00810707_006_01.h5 + # parser.add_argument("--atl03_file", type=str, default="processed_ATL03_20200331204156_00810707_006_01.h5", + # help="Name of the ATL03 H5 file to process.") + + # #ATL03_20210628230109_00811207_006_01_subsetted + + # parser.add_argument("--atl03_file", type=str, default="processed_ATL03_20210628230109_00811207_006_01.h5", + # help="Name of the ATL03 H5 file to process.") + + + # # WaxDelta + # parser.add_argument("--atl03_file", type=str, default="ATL03_20231103172707_06982106_006_01_subsetted.h5", + # help="Name of the ATL03 H5 file to process.") + + + # # Bohai + parser.add_argument("--atl03_file", type=str, default="ATL03_20190829161305_09560402_006_02_subsetted.h5", + help="Name of the ATL03 H5 file to process.") + + # # Cook Inlet + # parser.add_argument("--atl03_file", type=str, default="ATL03_20220507112145_06931503_006_01_subsetted.h5", + # help="Name of the ATL03 H5 file to process.") + + + + # #Core Sound + # parser.add_argument("--atl03_file", type=str, default="105430185_ATL03_20220423191113_04841506_006_02_subsetted.h5", + # help="Name of the ATL03 H5 file to process.") + + # # Pamlico Sound + # parser.add_argument("--atl03_file", type=str, default="ATL03_20240415083629_04232306_006_01_subsetted.h5", + # help="Name of the ATL03 H5 file to process.") + + + # + # #Cook Inlet: processed_ATL03_20210801125753_05941205_005_01 + # parser.add_argument("--atl03_file", type=str, default="processed_ATL03_20210801125753_05941205_005_01.h5", + # help="Name of the ATL03 H5 file to process.") + + parser.add_argument("--other_data_path", type=str, default='Dataset/', + help="Path to the current working directory.") + + parser.add_argument("--output_path", type=str, default='Results/', + help="Directory for saving results.") + + # Shoreline data + parser.add_argument("--shoreline_data", type=str, + # default='Shorelines/GeoPkgGlobalShoreline.gpkg', + default='Shorelines/ne_10m_land/ne_10m_land.shp', + help="Path to the global shoreline dataset.") + + # Bathymetry datasets + parser.add_argument("--gebco_path", nargs='+', type=str, + default='Bathy/gebco_2024_geotiff/', + help="Path to GEBCO bathymetry datasets.") + + # Resolution settings + parser.add_argument("--horizontal_res", type=int, default=500, + help="Horizontal resolution for the analysis (in meters).") + + parser.add_argument("--vertical_res", type=float, default=0.25, + help="Vertical resolution for the analysis.") + + # Analysis parameters + parser.add_argument("--subsurface_thresh", type=float, default=1.0, + help="Threshold for photons below the sea surface.") + + parser.add_argument("--ignore_subsurface_height_thres", type=float, default=-6, + help="Maximum depth thres for Kd calculations (in meters).") #5m + + parser.add_argument("--target_beams", type=str, default='', + help="Comma-separated beam IDs to process. Empty means auto-select strong beams.") + + parser.add_argument("--enable_solar_background_filter", action="store_true", + help="Optional: apply solar background filtering before binning.") + parser.add_argument("--solar_elevation_day_threshold", type=float, default=6.0, + help="Solar elevation threshold (deg) to define daytime for optional filtering.") + parser.add_argument("--solar_background_quantile", type=float, default=0.8, + help="Quantile threshold of daytime background rate considered high background.") + parser.add_argument("--solar_background_min_signal_conf", type=int, default=2, + help="Minimum photon signal confidence kept in high daytime background.") + + parser.add_argument("--enable_ir_ap_filter", action="store_true", + help="Optional: remove photons using IR/afterpulse proxy flags.") + parser.add_argument("--ir_ap_quality_max", type=int, default=0, + help="Maximum allowed quality_ph value when IR/AP filter is enabled.") + parser.add_argument("--ir_ap_min_signal_conf", type=int, default=0, + help="Minimum allowed photon_conf value when IR/AP filter is enabled.") + + parser.add_argument("--enable_gebco_filter", action="store_true", + help="Optional: remove photons below GEBCO seafloor and shallow bins.") + parser.add_argument("--enable_sea_surface_flattening", action="store_true", + help="Optional: flatten small-bin sea-surface variation using larger along-track windows.") + parser.add_argument("--sea_surface_flattening_window_m", type=int, default=500, + help="Window size in meters for sea-surface flattening mean level.") + + parser.add_argument("--enable_convex_hull_filter", action="store_true", + help="Optional: apply convex hull area filtering before Kd fitting.") + parser.add_argument("--convex_hull_area_threshold", type=float, default=100, + help="Minimum convex hull area to keep a horizontal bin when enabled.") + + parser.add_argument("--enable_histogram_quality_filter", action="store_true", + help="Optional: discard along-track bins with weak 6-7 m signal.") + parser.add_argument("--histogram_quality_min_ratio", type=float, default=0.05, + help="Minimum ratio of photons in depth band to keep a bin.") + parser.add_argument("--histogram_quality_depth_min", type=float, default=6.0, + help="Minimum depth (m below surface) of quality-check band.") + parser.add_argument("--histogram_quality_depth_max", type=float, default=7.0, + help="Maximum depth (m below surface) of quality-check band.") + + parser.add_argument("--enable_surface_sigma_filter", action="store_true", + help="Optional: discard bins where Gaussian surface sigma is too large.") + parser.add_argument("--surface_sigma_max", type=float, default=0.5, + help="Maximum allowed Gaussian sigma (m) for sea-surface peak.") + + parser.add_argument("--enable_refraction_correction", action="store_true", + help="Optional: apply refraction correction to subsurface photons.") + parser.add_argument("--refraction_water_temp_c", type=float, default=20.0, + help="Water temperature (deg C) used for refraction correction.") + parser.add_argument("--refraction_wavelength_nm", type=float, default=532.0, + help="Laser wavelength (nm) used for refraction correction.") + + parser.add_argument("--enable_post_refraction_refit", action="store_true", + help="Optional: rebuild histograms and re-fit surface after refraction correction.") + + parser.add_argument("--enable_atl24_filter", action="store_true", + help="Optional: use ATL24 bathymetry matching before GEBCO fallback.") + parser.add_argument("--atl24_file", type=str, default='', + help="Path to ATL24 point dataset (CSV/Parquet/GPKG/SHP) for bathymetry matching.") + parser.add_argument("--atl24_max_match_distance_deg", type=float, default=0.01, + help="Maximum lon/lat degree distance for ATL24 nearest-point matching.") + + parser.add_argument("--enable_paired_beam_combine", action="store_true", + help="Optional: combine paired beams (gt1, gt2, gt3) before Kd fitting.") + + # switch on consider the coastal water or inland water + # if Inland water, we should use one mask and for coastal water, it should be another mask + + # consider bathymetry or not manual setting + + + #night vs daytime + + #solar elevation detemine remove or not for solar background + + + # 1-2 hours + + + return parser.parse_args() + +if __name__ == "__main__": + args = get_args() + # Access parameters like this: + atl03_file_path = args.workspace_path + args.atl03_file + + print("Processing file:", atl03_file_path) + print("Output path:", args.output_path) diff --git a/icesat-2_kdph_py/data/grandmesa.geojson b/icesat-2_kdph_py/data/grandmesa.geojson new file mode 100644 index 0000000..3040374 --- /dev/null +++ b/icesat-2_kdph_py/data/grandmesa.geojson @@ -0,0 +1,8 @@ +{ +"type": "FeatureCollection", +"name": "grand_mesa_poly", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -108.311682565537666, 39.137576462129438 ], [ -108.341156683252237, 39.037589876133246 ], [ -108.287868638779599, 38.89051431295789 ], [ -108.207729687800509, 38.823205529198098 ], [ -108.074601643110313, 38.847513782586297 ], [ -107.985605104949812, 38.943991201101703 ], [ -107.728398587557521, 39.015109302306328 ], [ -107.787241424909936, 39.195630349659986 ], [ -108.049394800987542, 39.139504663354245 ], [ -108.172870009708575, 39.159200663961158 ], [ -108.311682565537666, 39.137576462129438 ] ] ] } } +] +} diff --git a/icesat-2_kdph_py/icepyxATL03.py b/icesat-2_kdph_py/icepyxATL03.py new file mode 100644 index 0000000..45555f2 --- /dev/null +++ b/icesat-2_kdph_py/icepyxATL03.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Feb 16 21:32:51 2025 + +@author: wayne +""" +import icepyx as ipx + +import json +import math +import warnings + +import numpy as np +import matplotlib.pyplot as plt +from matplotlib.colors import ListedColormap + +from shapely.geometry import shape, GeometryCollection + +# Open a geojson of our area of interest +with open("./data/grandmesa.geojson") as f: + features = json.load(f)["features"] + +grandmesa = GeometryCollection([shape(feature["geometry"]).buffer(0) for feature in features]) + + +# Use our search parameters to setup a search Query +short_name = 'ATL03' +spatial_extent = list(grandmesa.bounds) +date_range = ['2019-12-01','2019-12-12'] +region = ipx.Query(short_name, spatial_extent, date_range) + +# Display if any data files, or granules, matched our search +region.avail_granules(ids=True) + +# Download the granules to a into a folder called 'bosque_primavera_ATL08' +region.download_granules('/data/grandmesa_ATL08') diff --git a/icesat-2_kdph_py/kd_utils/Kd_analysis.py b/icesat-2_kdph_py/kd_utils/Kd_analysis.py new file mode 100644 index 0000000..6e28301 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/Kd_analysis.py @@ -0,0 +1,264 @@ +# utils/Kd_analysis.py +# updated to perform a linear fit in log-space, just like MATLAB's polyfitn(zdepth, y, 1) for a first-order polynomial. + +import numpy as np +import pandas as pd +import logging +# from scipy.optimize import curve_fit +from sklearn.linear_model import LinearRegression + +# def log_model(z, kd, e0): +# return np.log(e0) - kd * z + +## This is wrong because the input is already a bined data, +## it is not necessary to do a histogram again +# def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): +# if df.empty or 'lat_bins' not in df.columns: +# return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + +# # Get the latitude bin value +# lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan +# latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan +# longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + +# # Calculate photon height range +# photon_height_min = df['photon_height'].min() +# photon_height_max = df['photon_height'].max() + +# # Check for sufficient data range +# if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# height_bins_range = abs(photon_height_max - photon_height_min) +# height_bins_number = round(height_bins_range / vertical_res) + +# # Ensure there are enough bins +# if height_bins_number < 5: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# # Create histogram of photon heights +# bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) +# counts, _ = np.histogram(df['photon_height'], bins=bin_edges) +# bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 + +# # Store histogram data +# hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) + +# # x value for model +# # Reverse zdepth to align with the MATLAB approach +# hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + +# # Log-transform photon counts, replacing zeros with NaN +# # y value for model +# hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) +# hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + +# # Filter out rows with NaNs in either column for regression +# valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + +# # Check for enough valid data points +# # Skip the regression if there are fewer than 5 datapoints +# if valid_data['log_photon_counts'].notna().sum() > 3: +# # Drop NaNs for regression +# zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) +# log_counts_valid = valid_data['log_photon_counts'].values + +# # Perform linear regression +# model = LinearRegression() +# model.fit(zdepth_valid, log_counts_valid) + +# # Extract kd as the negative of the slope and e0 from the intercept +# kd = -model.coef_[0] + +# print('zdepth_valid:',zdepth_valid) +# print('photon_counts:',hist_df['photon_counts']) +# print('kd:',kd) + +# e0 = np.exp(model.intercept_) + +# # Set kd to NaN if negative +# if kd < 0: +# kd = np.nan +# else: +# kd, e0 = np.nan, np.nan + +# return pd.DataFrame({ +# 'lat_bins': [lat_bin_value], +# 'kd': [kd], +# 'e0': [e0], +# 'latitude': [latitude], +# 'longitude': [longitude] +# }) + + +# # one solution is to adjust the vertical_res to 0.25 +# def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.25): +# if df.empty or 'lat_bins' not in df.columns: +# return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + +# # Get the latitude bin value +# lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan +# latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan +# longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + +# # Calculate photon height range +# photon_height_min = df['photon_height'].min() +# photon_height_max = df['photon_height'].max() + +# # Check for sufficient data range +# if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# height_bins_range = abs(photon_height_max - photon_height_min) +# height_bins_number = round(height_bins_range / vertical_res) + +# # Ensure there are enough bins +# if height_bins_number < 5: +# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + +# # Create histogram of photon heights +# bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) +# counts, _ = np.histogram(df['photon_height'], bins=bin_edges) +# bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 + +# # Store histogram data +# hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) + +# # x value for model +# # Reverse zdepth to align with the MATLAB approach +# hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + +# # Log-transform photon counts, replacing zeros with NaN +# # y value for model +# hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) +# hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + +# # Filter out rows with NaNs in either column for regression +# valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + +# # Check for enough valid data points +# # Skip the regression if there are fewer than 5 datapoints +# if valid_data['log_photon_counts'].notna().sum() > 3: +# # Drop NaNs for regression +# zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) +# log_counts_valid = valid_data['log_photon_counts'].values + +# # Perform linear regression +# model = LinearRegression() +# model.fit(zdepth_valid, log_counts_valid) + +# # Extract kd as the negative of the slope and e0 from the intercept +# kd = -model.coef_[0] + +# print('zdepth_valid:',zdepth_valid) +# print('photon_counts:',hist_df['photon_counts']) +# print('kd:',kd) + +# e0 = np.exp(model.intercept_) + +# # Set kd to NaN if negative +# if kd < 0: +# kd = np.nan +# else: +# kd, e0 = np.nan, np.nan + +# return pd.DataFrame({ +# 'lat_bins': [lat_bin_value], +# 'kd': [kd], +# 'e0': [e0], +# 'latitude': [latitude], +# 'longitude': [longitude] +# }) + + +# another solution is to calculate kd without hist +def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): + # Early exit if DataFrame is empty or missing required column + if df.empty or 'lat_bins' not in df.columns: + return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + + # Retrieve latitude and longitude + lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan + latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan + longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + + # Use value_counts to get photon counts in each height bin + height_counts = df['height_bins'].value_counts().sort_index() + bin_centers = height_counts.index.astype(float) + + # Create a DataFrame for the height bins and counts + hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': height_counts.values}) + + # Reverse zdepth for model alignment + hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + + # Log-transform photon counts, replacing zeros with NaN for regression + hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) + hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + + # Filter for rows without NaNs for regression + valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + + # Perform regression if there are sufficient valid data points + if valid_data['log_photon_counts'].notna().sum() > 3: + zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) + log_counts_valid = valid_data['log_photon_counts'].values + + # Perform linear regression + model = LinearRegression() + model.fit(zdepth_valid, log_counts_valid) + + # Calculate kd and e0 + kd = -model.coef_[0] + e0 = np.exp(model.intercept_) + + # Set kd to NaN if negative + if kd < 0: + kd = np.nan + else: + kd, e0 = np.nan, np.nan + + return pd.DataFrame({ + 'lat_bins': [lat_bin_value], + 'kd': [kd], + 'e0': [e0], + 'latitude': [latitude], + 'longitude': [longitude] + }) + + +# Original kd calculation function remains unchanged +def calculate_kd(filtered_seafloor_subsurface_photon_dataset): + logging.info("Calculating Kd from filtered subsurface photon dataset") + SubsurfacePhotonDFAddedKd = filtered_seafloor_subsurface_photon_dataset\ + .groupby('lat_bins', observed=False)\ + .apply(CalculateKdFromFilteredSubsurfacePhoton, include_groups=True) + + + # Remove the index without resetting it if 'lat_bins' already exists + SubsurfacePhotonDFAddedKd = SubsurfacePhotonDFAddedKd.droplevel(0) + return SubsurfacePhotonDFAddedKd + + +# Updated function to apply kd calculation beam-by-beam +def process_kd_calculation(Final_filtered_subsurface_photon_dataset): + # Initialize list to store results for each beam + kd_beam_datasets = [] + + # Group by 'beam_id' to process each beam independently + for beam_id, beam_data in Final_filtered_subsurface_photon_dataset.groupby('beam_id'): + logging.info(f"Calculating Kd for beam: {beam_id}") + + # Apply the calculate_kd function to the current beam's dataset + SubsurfacePhotonDFAddedKd = calculate_kd(beam_data) + + # Add a column to track the beam_id in the results + SubsurfacePhotonDFAddedKd['beam_id'] = beam_id + + # Append the result to the list + kd_beam_datasets.append(SubsurfacePhotonDFAddedKd) + + # Combine results from all beams into a single DataFrame + combined_kd_dataset = pd.concat(kd_beam_datasets, ignore_index=True) + + return combined_kd_dataset \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/SeaSurfaceFlattening.py b/icesat-2_kdph_py/kd_utils/SeaSurfaceFlattening.py new file mode 100644 index 0000000..6b3d64f --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SeaSurfaceFlattening.py @@ -0,0 +1,446 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Jul 25 13:25:53 2024 + +@author: wayne +""" + +from kd_utils import * +import scipy.interpolate + + +path = 'C:/Workstation/ICESat2_HLS/Kd_ComparisionPaper/Dataset/ATL03_ICESat2/' +ATL03_h5_file = "processed_ATL03_20220122044818_04721407_006_01.h5" +ATL03_h5_file_path = path + ATL03_h5_file + + +# Set the shoreline data path +Current_Path='C:/Workstation/ICESat2_HLS/Kd_ComparisionPaper/Dataset/' + +#load the shoreline package +shoreline_data_path = Current_Path+'Shorelines/GeoPkgGlobalShoreline.gpkg' + + + +# speed of light +c = 299792458.0 + +# bin data first based on horizontal resolution +horizontal_res=10 + +# vertical resolution +# vertical_res=0.1 +vertical_res=0.25 +# vertical_res=1 + +# sea subsurface thresh +# determine subsurface by setting how depth below the sea surface +subsurface_thresh = 0.5 + + +# define specific rectangular target zone for batch analysis +# i.e., From subsurface depth 0.5 to specific KdMaxDepth depth (e.g, 6) +Kd_max_depth = 6 + + +######################################## +#readATL03_github +IS2_atl03_mds,IS2_atl03_attrs,IS2_atl03_beams = read_granule(ATL03_h5_file_path,ATTRIBUTES=True) + +# extract parameters from ICESat-2 ATLAS HDF5 file name +rx = re.compile(r'(processed_)?(ATL\d{2})_(\d{4})(\d{2})(\d{2})(\d{2})' + r'(\d{2})(\d{2})_(\d{4})(\d{2})(\d{2})_(\d{3})_(\d{2})(.*?).h5$') +SUB,PRD,YY,MM,DD,HH,MN,SS,TRK,CYCL,GRAN,RL,VERS,AUX = rx.findall(ATL03_h5_file_path).pop() + + +# initialize data storage variables +# variables of interest for generating three types classification +Segment_ID = {} +Segment_Index_begin = {} +Segment_PE_count = {} + +Equator_Segment_Distance = {} +Segment_Length = {} + +Segment_Is_Land={} + +# mean geolocation, height and delta time +Segment_Lon = {} +Segment_Lat = {} +Segment_Elev = {} +Segment_Time = {} + +Segment_ref_elev= {} +Segment_ref_azimuth= {} + +# relative_AT_dist = {} +# relative_seg_dist = {} + +# background photon rate +background_rate = {} +background_counts={} + + + +######################################## +#proc02_manually_select_water_forGitHub +#remove water surface based on simple 0.5 m + + +#raw beam-by-beam photon data after cutoff below the max value 0.5 below peak +IS2_atl03Cut50cmBelowPeak={} + +# for each input beam within the file +for gtx in sorted(IS2_atl03_beams[0:1]): +# for gtx in sorted(IS2_atl03_beams): + # data and attributes for beam gtx + IS2_val = IS2_atl03_mds[gtx] + IS2_attrs = IS2_atl03_attrs[gtx] + + # ATL03 Segment ID + Segment_ID[gtx] = IS2_val['geolocation']['segment_id'] + # number of valid overlapping ATL03 segments + n_seg = len(Segment_ID[gtx]) + # number of photon events + n_pe, = IS2_val['heights']['delta_time'].shape + + # first photon ID (1-based) in each segment (convert to 0-based indexing) + Segment_Index_begin[gtx] = IS2_val['geolocation']['ph_index_beg'] - 1 + + # number of photon events in the segment + Segment_PE_count[gtx] = IS2_val['geolocation']['segment_ph_cnt'] + + # along-track distance from the equator crossing to the start of each ATL03 20 meter geolocation segment + Equator_Segment_Distance[gtx] = IS2_val['geolocation']['segment_dist_x'] + + # along-track length for each ATL03 segment + Segment_Length[gtx] = IS2_val['geolocation']['segment_length'] + + # Transmit time of the reference photon + delta_time = IS2_val['geolocation']['delta_time'] + + # get geolocation lat/lon + segment_lat = IS2_val['geolocation']['reference_photon_lat'][:].copy() + segment_lon= IS2_val['geolocation']['reference_photon_lon'][:].copy() + + # get parameters ref elev and azimuth for refraction correction + ref_elev = IS2_val['geolocation']['ref_elev'][:].copy() + ref_azimuth = IS2_val['geolocation']['ref_azimuth'][:].copy() + + #get geoid for converting WGS84 ellipsoid to geoid correction + geoid = IS2_val['geophys_corr']['geoid'][:].copy() + + # photon event heights + h_ph = IS2_val['heights']['h_ph'][:].copy() + lat_ph = IS2_val['heights']['lat_ph'][:].copy() + lon_ph = IS2_val['heights']['lon_ph'][:].copy() +# dist_ph_along = IS2_val['heights']['dist_ph_along'][:].copy() + signal_conf_photon = IS2_val['heights']['signal_conf_ph'][...,0].copy() + + # along-track and across-track distance for photon events + x_atc = IS2_val['heights']['dist_ph_along'][:].copy() + y_atc = IS2_val['heights']['dist_ph_across'][:].copy() + + # photon quality + quality_ph=IS2_val['heights']['quality_ph'] + + #calculate along track distance + for seg_index in range(n_seg): + # index for 20m segment j + idx = Segment_Index_begin[gtx][seg_index] + # number of photons in 20m segment + cnt = Segment_PE_count[gtx][seg_index] + # add segment distance to along-track coordinates + x_atc[idx:idx+cnt] += Equator_Segment_Distance[gtx][seg_index] + + # calculate along track distance relative to the beginning of the cut segment + relative_AT_dist=(x_atc-x_atc[0])/1000 + + + relative_seg_dist=(Equator_Segment_Distance[gtx]-Equator_Segment_Distance[gtx][0])/1000 + + + # this function is a significant slowdown without pygeos + Segment_Is_Land['geometry'] = gpd.points_from_xy(segment_lon, segment_lat) + + # create a geo dataframe + ICESat2_GDF = gpd.GeoDataFrame(Segment_Is_Land,crs="EPSG:4326") + + #Step1: isolate water using landmask + # spatial joint to determine land/sea mask + Segment_Is_Land_Labels=isolate_sea_land_photons(shoreline_data_path,ICESat2_GDF) + +# # set the labels back to ICESat2 geopandas dataframe + ICESat2_GDF.loc[:, 'is_land'] = Segment_Is_Land_Labels + + # interpolate is_land labels based on photon lat + island_interp1d_model = scipy.interpolate.interp1d(segment_lat[:], + Segment_Is_Land_Labels[:], + fill_value="extrapolate") + + # Apply interpid model + is_land_label_interp1d = island_interp1d_model(lat_ph[:]) + + # Ref_elev on a per photon level (assign seg ref_elev to photons) + ref_elev_interp1d_model = scipy.interpolate.interp1d(segment_lat[:], + ref_elev[:], + fill_value="extrapolate") + # apply interpid model + ph_ref_elev = ref_elev_interp1d_model(lat_ph[:]) + + # Ref_azimuth on a per photon level (assign seg ref_azimuth to photons) + ref_azimuth_interp1d_model = scipy.interpolate.interp1d(segment_lat[:], + ref_azimuth[:], + fill_value="extrapolate") + + # apply interpid model + ph_ref_azimuth = ref_azimuth_interp1d_model(lat_ph[:]) + + + # interpolate geoid based on segment lat + geoid_interp1d_model = scipy.interpolate.interp1d(segment_lat[:], + geoid[:], + fill_value="extrapolate") + + # Apply interpid model + ph_geoid = geoid_interp1d_model(lat_ph[:]) + + + #geoid correct + h_ph_geoid_cor = h_ph[:] - ph_geoid[:] + + # Find the epsg code + epsg_code = convert_wgs_to_utm(lon_ph[0], lat_ph[0]) + epsg_num = int(epsg_code.split(':')[-1]) + + # Orthometrically correct the data using the epsg code + lat_utm, lon_utm, h_ph_cor = orthometric_correction(lat_ph, lon_ph, h_ph, epsg_code) + + # Aggregate data into dataframe + sea_photon_dataset = \ + pd.DataFrame({'latitude': lat_ph, 'longitude': lon_ph, + 'lat': lat_utm, 'lon': lon_utm, + 'photon_height': h_ph_geoid_cor, + 'quality_ph': quality_ph, + 'is_land_label': is_land_label_interp1d, + 'photon_conf': signal_conf_photon, + 'ref_elevation': ph_ref_elev, + 'ref_azimuth': ph_ref_azimuth, + 'relative_AT_dist':relative_AT_dist}, + columns=['latitude', 'longitude', + 'lat', 'lon', + 'photon_height', + 'quality_ph', + 'is_land_label', 'photon_conf', + 'ref_elevation', 'ref_azimuth', + 'relative_AT_dist']) + + # #remove the saturated photons + # sea_photon_dataset=sea_photon_dataset[sea_photon_dataset['quality_ph'] < 1] + + #remove the land photons + sea_photon_dataset=sea_photon_dataset[sea_photon_dataset['is_land_label'] != 1] + + # bin the data by 25 cm + binned_dataset_sea_surface=horizontal_vertical_bin_dataset(sea_photon_dataset, horizontal_res, vertical_res) + + # get sea surface height + # threshold to determine how much depth below sea surface will be accounted + # Output: + # ->final_sea_surface_height + # ->sea_surface_height_abnormal_label + # ->sea_surface_dominated_label + sea_surface_height, sea_surface_label, solo_sea_surface_label, subsurface_photon_dataset = \ + get_sea_surface_height(binned_dataset_sea_surface, subsurface_thresh) + + +sea_surface_height.reverse() + + + + + +#################################################################### +# Tasks: Sea Surface flattening +# I have a list value of sea_surface_height over each 10 m bin, I would like to +# 1) calculate the mean sea_surface_height value along each big bin with 500 m ; +# 2) Within each 10-m along track increment, +# adjust all of the photons (i.e., subsurface_photon_dataset) within that 10-m column either up or down +# based on the deviation of the local sea surface height from the mean sea surface height + +###################### +# Step 1: Creating a DataFrame for sea_surface_height with a corresponding 10 m small bin index +# each element in sea_surface_height corresponds to a 10 m bin +df_sea_surface = pd.DataFrame({ + 'sea_surface_height': sea_surface_height, # sea_surface_height is provided as a list + 'small_bins': np.arange(len(sea_surface_height)) # Index for each 10 m bin +}) + +# # Map 'small_bins'(i.e., 'lat_bins') to 500 m 'big_bins' +df_sea_surface['big_bins'] = df_sea_surface['small_bins'] // 50 # 50 10 m bins in each 500 m bin + + +###################### +# Step 2: Calculate Mean Sea_surface_height value for Each 500-m Big Bin +mean_sea_surface_elevation_bigBin = df_sea_surface.groupby('big_bins')['sea_surface_height'].mean().reset_index() +mean_sea_surface_elevation_bigBin.rename(columns={'sea_surface_height': 'mean_sea_surface_height_big_bins'}, inplace=True) + +# Prepare subsurface_photon_dataset for merging +subsurface_photon_dataset['big_bins'] = subsurface_photon_dataset['lat_bins'].astype(int) // 50 + +# Merge the mean elevation data with the subsurface_photon_dataset +subsurface_photon_dataset = subsurface_photon_dataset.merge(mean_sea_surface_elevation_bigBin,\ + on='big_bins', how='left') + +# Merge sea_surface_height data with subsurface_photon_dataset based on the small_bins +subsurface_photon_dataset = subsurface_photon_dataset.merge(df_sea_surface[['small_bins', 'sea_surface_height']], \ + left_on='lat_bins', right_on='small_bins', how='left') + + +####################### +# Step 3: Within each 10 m small bin, adjust the photon heights +# based on the deviation between their sea surface height at each small bin and the mean sea surface height within each 500-m bin +subsurface_photon_dataset['adjusted_photon_height'] = subsurface_photon_dataset['photon_height'] - \ + (subsurface_photon_dataset['mean_sea_surface_height_big_bins']-\ + subsurface_photon_dataset['sea_surface_height']\ + ) + +subsurface_photon_dataset['Dif_photon_height'] = (subsurface_photon_dataset['mean_sea_surface_height_big_bins']-\ + subsurface_photon_dataset['sea_surface_height']\ + ) +###################################### +################################### +###################################### +################################### +###Visualization + +import matplotlib.pyplot as plt +from mpl_toolkits.axes_grid1.inset_locator import inset_axes +from matplotlib.patches import Rectangle +import matplotlib.transforms as mtransforms + + + +sea_surface_x_axis_bins = np.linspace(relative_seg_dist.min(), + relative_seg_dist.max(), len(sea_surface_height)) + + + +mean_sea_surface_x_axis_bins = np.linspace(relative_seg_dist.min(), + relative_seg_dist.max(), len(mean_sea_surface_elevation_bigBin)) + + +# Adjusting the global font size +plt.rcParams['font.size'] = 18 # You can choose your own font size here + +# Define your zoom area limits for the x-axis +zoom_xlim = (10.5, 11.5) # for example, from 10 to 20 on your x-axis + +# Filter the data based on your x-axis limits +# Here, we're creating a boolean index that matches your zoom criteria +x_index_within_zoom = (sea_photon_dataset.relative_AT_dist >= zoom_xlim[0]) & (sea_photon_dataset.relative_AT_dist <= zoom_xlim[1]) + +# Apply the index to your x and y data +zoomed_relative_AT_dist = sea_photon_dataset.relative_AT_dist[x_index_within_zoom] +zoomed_photon_height = sea_photon_dataset.photon_height[x_index_within_zoom] + +#get the x index for adjusted subsurface_photon +subsurface_x_index_within_zoom = (subsurface_photon_dataset.relative_AT_dist >= zoom_xlim[0]) & (subsurface_photon_dataset.relative_AT_dist <= zoom_xlim[1]) +subsurface_zoomed_relative_AT_dist = subsurface_photon_dataset.relative_AT_dist[subsurface_x_index_within_zoom] +zoomed_photon_height_adjusted = subsurface_photon_dataset.adjusted_photon_height[subsurface_x_index_within_zoom] +zoomed_photon_height_Dif = subsurface_photon_dataset.Dif_photon_height[subsurface_x_index_within_zoom] + + + +# Now proceed with creating your main plot +hlims = [-40, 5] # height limits +sub_hlims = [-10, 3] # height limits + + + +######################### +fig = plt.figure(figsize=(16, 8), dpi=300, facecolor='w', edgecolor='k') +ax = fig.add_subplot(111) +ax.set_xlabel('Distance From Start of Track (km)') +ax.set_ylabel('Photon Height (m)') + +ax.scatter(sea_photon_dataset.relative_AT_dist, sea_photon_dataset.photon_height, + s=10, c='k', alpha=0.15, edgecolors='none', label='ATL03 Photons') +ax.plot(sea_surface_x_axis_bins, sea_surface_height, linewidth=0.8, color='b', label='Surface Peak') +ax.plot(sea_surface_x_axis_bins, [x - 0.5 for x in sea_surface_height], linewidth=0.8, color='#DD571C', label='0.5 m Below Surface Peak') +ax.plot(sea_surface_x_axis_bins, [x - 1 for x in sea_surface_height], linewidth=0.8, color='#FDA172', label='1 m Below Surface Peak') +ax.plot(sea_surface_x_axis_bins, [x - 2 for x in sea_surface_height], linewidth=0.8, color='#FCAE1E', label='2 m Below Surface Peak') + +# Create an inset axis for the zoomed area +# axins = inset_axes(ax, width=5, height=3, loc='lower left') # adjust the location as needed + +# Assuming 'ax' is your main axes +trans = mtransforms.blended_transform_factory(ax.figure.transFigure, ax.transAxes) +axins = inset_axes(ax, width=5, height=3, loc=3, + bbox_to_anchor=(0.2, 0.1, 0.4, 0.4), # The numbers are x0, y0, width, and height in percentages of the figure size. + bbox_transform=trans, + borderpad=0) + +# Plot the filtered data on the inset axes +axins.scatter(zoomed_relative_AT_dist, zoomed_photon_height, + s=10, c='k', alpha=0.15, edgecolors='none', label='Zoomed ATL03 Photons') + +axins.scatter(subsurface_zoomed_relative_AT_dist, zoomed_photon_height_adjusted, + s=10, c='r', alpha=0.15, edgecolors='none', label='Zoomed Adjusted ATL03 Photons') + + +axins.scatter(subsurface_zoomed_relative_AT_dist, zoomed_photon_height_Dif, + s=20, c='g', alpha=0.15, edgecolors='none', label='Zoomed Dif ATL03 Photons') + +# Add horizontal line at y=0 +axins.axhline(y=0, color='blue', alpha=0.15, linestyle='--', linewidth=1) + +# # For the lines, you might need to adjust your data arrays to match the zoomed range +# # assuming your sea_surface_x_axis_bins aligns directly with your sea_surface_height data +# zoomed_sea_surface_x = [x for x in sea_surface_x_axis_bins if zoom_xlim[0] <= x <= zoom_xlim[1]] +# zoomed_sea_surface_height = sea_surface_height[:len(zoomed_sea_surface_x)] # adjust based on your data alignment + +# First, we need to find the indices of the items in sea_surface_x_axis_bins that fall within the zoomed range. +zoomed_indices = [index for index, x in enumerate(sea_surface_x_axis_bins) if zoom_xlim[0] <= x <= zoom_xlim[1]] + +# Then, use these indices to select the corresponding items from both sea_surface_x_axis_bins and sea_surface_height. +zoomed_sea_surface_x = [sea_surface_x_axis_bins[i] for i in zoomed_indices] +zoomed_sea_surface_height = [sea_surface_height[i] for i in zoomed_indices] + + +#0197f6,#BE5504,#FA8128 +axins.plot(zoomed_sea_surface_x, zoomed_sea_surface_height, linewidth=1, color='b', label='Zoomed Surface Peak') +axins.plot(zoomed_sea_surface_x, [x - 0.5 for x in zoomed_sea_surface_height], linewidth=1, color='#DD571C', label='0.5 m Below Zoomed Surface Peak') +axins.plot(zoomed_sea_surface_x, [x - 1 for x in zoomed_sea_surface_height], linewidth=1, color='#FDA172', label='1 m Below Zoomed Surface Peak') +axins.plot(zoomed_sea_surface_x, [x - 2 for x in zoomed_sea_surface_height],linewidth=1, color='#FCAE1E', label='2 m Below Zoomed Surface Peak') + +#mean sea surface height at 500m bins +axins.plot(mean_sea_surface_x_axis_bins, mean_sea_surface_elevation_bigBin, linewidth=1, color='r', label='Zoomed Surface Peak 500m bin') + + +# Set the x limits for the inset axes; y limits remain unchanged +axins.set_xlim(zoom_xlim) +axins.set_ylim(sub_hlims) + +axins.set_title('Zoomed in') + + +# Adding the rectangle indicating the zoomed area +# Draw a rectangle on the main plot to indicate the zoomed area +# We use the data coordinates for the rectangle, as it needs to correspond to the actual data points on the main axes. +rec_hlims=[-10,3] +rectangle = Rectangle((zoom_xlim[0], rec_hlims[0]), zoom_xlim[1] - zoom_xlim[0], rec_hlims[1] - rec_hlims[0], + linewidth=1, edgecolor='r', facecolor='none', linestyle='--') +ax.add_patch(rectangle) + + +# Finalize the main plot adjustments +ax.legend(loc='lower right') +ax.set_ylim(hlims) + +plt.savefig(path+'/'+YY+MM+DD+'Track'+TRK+'Plot'+gtx+'_With_depth_colored.jpg', dpi=500,bbox_inches='tight') +# Display the plot +plt.show() + + + diff --git a/icesat-2_kdph_py/kd_utils/SeafloorFilterByGEBCO_Module.py b/icesat-2_kdph_py/kd_utils/SeafloorFilterByGEBCO_Module.py new file mode 100644 index 0000000..51a7396 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SeafloorFilterByGEBCO_Module.py @@ -0,0 +1,108 @@ +import rasterio +import numpy as np +import pandas as pd +from rtree import index +from shapely.geometry import box, Point + +# 1. Function to create an R-tree spatial index for raster bounds +def create_spatial_index(gebco_paths): + """ + Create an R-tree spatial index for raster bounds to quickly find relevant rasters. + + Parameters: + gebco_paths (list): List of paths to GEBCO raster files. + + Returns: + raster_data_dict (dict): Dictionary containing loaded rasters and their respective data. + spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. + """ + idx = index.Index() + raster_data_dict = {} + for i, path in enumerate(gebco_paths): + with rasterio.Env(GTIFF_SRS_SOURCE='EPSG'): + gebco_raster = rasterio.open(path) + raster_data = gebco_raster.read(1) + raster_data_dict[path] = (gebco_raster, raster_data) + bounds = gebco_raster.bounds + idx.insert(i, (bounds.left, bounds.bottom, bounds.right, bounds.top), obj=path) + return raster_data_dict, idx + +# 2. Function to determine which rasters are needed for a given set of coordinates using spatial index in a batch manner +def get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index): + """ + Determine which raster datasets are relevant for the given coordinates using spatial index. + This function uses a more efficient approach by performing a bounding box query for batches of points. + + Parameters: + lons (numpy.ndarray): Array of longitudes. + lats (numpy.ndarray): Array of latitudes. + raster_data_dict (dict): Dictionary containing raster datasets and their data. + spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. + + Returns: + relevant_rasters (list): List of relevant raster datasets and their respective data. + """ + # Create a bounding box that covers all points + min_lon, max_lon = lons.min(), lons.max() + min_lat, max_lat = lats.min(), lats.max() + bounding_box = box(min_lon, min_lat, max_lon, max_lat) + + # Get all rasters that intersect with the bounding box + matches = list(spatial_index.intersection((bounding_box.bounds), objects=True)) + relevant_paths = {match.object for match in matches} + relevant_rasters = [(raster_data_dict[path][0], raster_data_dict[path][1]) for path in relevant_paths] + return relevant_rasters + +# 3. Function to get seafloor elevation from the relevant rasters in a vectorized manner +def get_seafloor_elevation(lons, lats, relevant_rasters): + """ + Get seafloor elevations for a batch of points based on longitude and latitude from relevant rasters. + + Parameters: + lons (numpy.ndarray): Array of longitudes. + lats (numpy.ndarray): Array of latitudes. + relevant_rasters (list): List of relevant raster datasets and their respective data. + + Returns: + seafloor_elevations (numpy.ndarray): Array of seafloor elevations. + """ + points = np.vstack((lons, lats)).T + seafloor_elevations = np.full(len(lons), np.nan) + + for gebco_raster, raster_data in relevant_rasters: + # Use rasterio.sample to get values for multiple points in a batch + values = list(gebco_raster.sample(points)) + for idx, value in enumerate(values): + if np.isnan(seafloor_elevations[idx]) and value is not None: + seafloor_elevations[idx] = value[0] + + return seafloor_elevations + +# 4. The main process function that ties everything together +def process_seafloor_data(gebco_paths, sea_photon_dataset): + """ + Main function to process the seafloor data. + + Parameters: + gebco_paths (list): List of paths to GEBCO raster files. + sea_photon_dataset (pandas.DataFrame): Dataset containing longitude, latitude, and photon height. + + Returns: + filtered_sea_photon_dataset (pandas.DataFrame): Filtered dataset containing points above the seafloor. + """ + # Create spatial index and load GEBCO Raster Data + raster_data_dict, spatial_index = create_spatial_index(gebco_paths) + + # Get the relevant rasters using spatial index + lons = sea_photon_dataset['longitude'].values + lats = sea_photon_dataset['latitude'].values + relevant_rasters = get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index) + + # Get seafloor elevation for all points + sea_photon_dataset['seafloor_elevation'] = get_seafloor_elevation(lons, lats, relevant_rasters) + + # Filter out points below the seafloor + filtered_sea_photon_dataset = sea_photon_dataset[sea_photon_dataset['photon_height'] > sea_photon_dataset['seafloor_elevation']] + # filtered_sea_photon_dataset.drop(columns=['seafloor_elevation'], inplace=True) + + return filtered_sea_photon_dataset \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis.csv b/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis.csv new file mode 100644 index 0000000..d0e0bf0 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis.csv @@ -0,0 +1,126 @@ +file,total_background_rate,solar_elevation,classification,solar_background_rate +processed_ATL03_20200103231215_01260602_006_01.h5,2693.2626911948337,-14.366390228271484,Nighttime, +processed_ATL03_20200120221315_03850602_006_01.h5,13806.160938730458,-3.189083235595707,Twilight,0.0 +processed_ATL03_20200123102047_04230606_006_01.h5,40221.2978331275,-20.771891516072188,Nighttime, +processed_ATL03_20200127101229_04840606_006_01.h5,53756.80956395094,-22.627933479509,Nighttime, +processed_ATL03_20200128215639_05070602_006_01.h5,359099.1436096114,3.0444767585617476,Twilight,227345.78169107437 +processed_ATL03_20200201214818_05680602_006_01.h5,529435.552229354,5.779487614282246,Twilight,329867.47343444824 +processed_ATL03_20200218204918_08270602_006_01.h5,1184736.9505547313,17.405200287505618,Daytime,1666541.374866092 +processed_ATL03_20200221085649_08650606_006_01.h5,22374.124763767093,-32.0131039217493,Nighttime, +processed_ATL03_20200222204059_08880602_006_01.h5,688033.4751943491,20.51920772131919,Daytime,1861048.2517014507 +processed_ATL03_20200225084829_09260606_006_01.h5,38114.72681797276,-33.27572123209635,Nighttime, +processed_ATL03_20200226203238_09490602_006_01.h5,4792078.4466824625,23.537683123633975,Daytime,2049588.014623465 +processed_ATL03_20200229084009_09870606_006_01.h5,26127.755282484995,-34.3192597084936,Nighttime, +processed_ATL03_20200301202417_10100602_006_01.h5,889223.9040683447,26.674097898949583,Daytime,2245494.4969852646 +processed_ATL03_20200305201556_10710602_006_01.h5,3788257.105734832,30.298559347788494,Daytime,2471885.310625827 +processed_ATL03_20200318192523_12690602_006_01.h5,1351106.399095953,37.82273376543905,Daytime,2941859.6757638804 +processed_ATL03_20200322191701_13300602_006_01.h5,4055652.4726818614,40.80553877688595,Daytime,3128171.3976581595 +processed_ATL03_20200325072428_13680606_006_01.h5,276003.2899430346,-38.01975886027018,Nighttime, +processed_ATL03_20200326190838_00040702_006_01.h5,1214166.848817978,44.136398494099446,Daytime,3336223.2840271275 +processed_ATL03_20200329071609_00420706_006_01.h5,40921.18564560988,-38.085152261671595,Nighttime, +processed_ATL03_20200330190017_00650702_006_01.h5,2897362.4389916896,47.033739194511774,Daytime,3517196.7411376704 +processed_ATL03_20200403185200_01260702_006_03.h5,1422029.572889437,50.41658441740958,Daytime,3728495.7418974275 +processed_ATL03_20200416180123_03240702_006_02.h5,1212471.3817819578,56.88941257443048,Daytime,4132801.003164019 +processed_ATL03_20200419060855_03620706_006_02.h5,11336.364038336214,-36.11201312276911,Nighttime, +processed_ATL03_20200420175305_03850702_006_02.h5,8790328.564517578,59.43912149047851,Daytime,4292060.7122818045 +processed_ATL03_20200423060037_04230706_006_02.h5,13875.464784802263,-36.77773346454934,Nighttime, +processed_ATL03_20200424174447_04460702_006_02.h5,11769916.10352509,62.44312992182514,Daytime,4479696.84045018 +processed_ATL03_20200427055215_04840706_006_02.h5,24467.29998703863,-37.28700614391692,Nighttime, +processed_ATL03_20200428173625_05070702_006_02.h5,5890936.079037134,64.92542139996337,Daytime,4634745.527092652 +processed_ATL03_20200501054353_05450706_006_01.h5,27995.160394601022,-35.154712923723665,Nighttime, +processed_ATL03_20200502172804_05680702_006_01.h5,1858938.9999125663,66.71920158729003,Daytime,4746788.477978858 +processed_ATL03_20200514045317_07430706_006_01.h5,101200.1387867376,-33.12479663476581,Nighttime, +processed_ATL03_20200515163727_07660702_006_01.h5,4029271.209775364,70.89727247756439,Daytime,5007758.799128272 +processed_ATL03_20200518044459_08040706_006_01.h5,21390.274746852945,-32.48489073114458,Nighttime, +processed_ATL03_20200519162909_08270702_006_01.h5,11263527.80896702,71.30119411230662,Daytime,5032988.519136913 +processed_ATL03_20200522043639_08650706_006_01.h5,27726.586265306785,-30.78756402104017,Nighttime, +processed_ATL03_20200523162049_08880702_006_01.h5,2394186.0851803604,71.34785883815056,Daytime,5035903.287413869 +processed_ATL03_20200526042817_09260706_006_01.h5,192063.31330177086,-30.286723850078406,Nighttime, +processed_ATL03_20200527161228_09490702_006_01.h5,3866876.0375585253,70.91486510319069,Daytime,5008857.668266717 +processed_ATL03_20200530041958_09870706_006_01.h5,14797.137764492889,-28.866483673855846,Nighttime, +processed_ATL03_20200531160408_10100702_006_01.h5,2673537.075175427,69.99713837967872,Daytime,4951534.696959596 +processed_ATL03_20200608033738_11240706_006_01.h5,34564.247899867914,-27.469124403873938,Nighttime, +processed_ATL03_20200609152147_11470702_006_01.h5,1473215.054213498,66.15265682069996,Daytime,4711401.005251505 +processed_ATL03_20200612032917_11850706_006_01.h5,38634.13533752579,-26.62868586505384,Nighttime, +processed_ATL03_20200613151327_12080702_006_01.h5,6435067.604220629,64.68456579542953,Daytime,4619701.224083781 +processed_ATL03_20200616032058_12460706_006_01.h5,16662.513664877562,-24.48468769049549,Nighttime, +processed_ATL03_20200617150508_12690702_006_01.h5,8234690.942282691,62.90583281198949,Daytime,4508598.150412161 +processed_ATL03_20200620031238_13070706_006_01.h5,78310.58091236708,-23.989503564854612,Nighttime, +processed_ATL03_20200621145648_13300702_006_01.h5,2091374.7284403527,60.61197065362462,Daytime,4365319.120481279 +processed_ATL03_20200624030418_13680706_006_01.h5,1450.7135090318498,-23.243765727303217,Nighttime, +processed_ATL03_20200625144828_00040802_006_01.h5,6557029.969762381,58.23505245263165,Daytime,4216852.250830274 +processed_ATL03_20200628025559_00420806_006_01.h5,110170.96579499701,-22.114351442730076,Nighttime, +processed_ATL03_20200629144009_00650802_006_01.h5,1611271.1367206054,55.93990911496594,Daytime,4073493.195983019 +processed_ATL03_20200703143148_01260802_006_01.h5,1517288.3956790732,53.58790397706497,Daytime,3926582.44403482 +processed_ATL03_20200707021337_01790806_006_01.h5,45946.903156638844,-19.85720067705427,Nighttime, +processed_ATL03_20200711020519_02400806_006_01.h5,37795.75206357141,-18.332053259394385,Nighttime, +processed_ATL03_20200712134930_02630802_006_01.h5,2751507.4577635746,47.60112804428408,Daytime,3552636.9369194973 +processed_ATL03_20200715015701_03010806_006_01.h5,177058.97577769912,-17.245845284873063,Nighttime, +processed_ATL03_20200716134112_03240802_006_01.h5,4225216.975207497,44.99416261486278,Daytime,3389800.876161126 +processed_ATL03_20200719014842_03620806_006_01.h5,84038.4457408923,-16.165504271212004,Nighttime, +processed_ATL03_20200720133252_03850802_006_01.h5,1086128.2890839668,42.32534367015925,Daytime,3223101.326206102 +processed_ATL03_20200723014022_04230806_006_01.h5,79140.35345762987,-15.127771424350552,Nighttime, +processed_ATL03_20200724132432_04460802_006_01.h5,3827796.7701561344,39.720189704580584,Daytime,3060378.412953644 +processed_ATL03_20200727013202_04840806_006_01.h5,62161.319765603504,-14.107249783170584,Nighttime, +processed_ATL03_20200728131612_05070802_006_01.h5,1088091.083936827,36.889148079226366,Daytime,2883546.1232297295 +processed_ATL03_20200801130752_05680802_006_01.h5,4673920.943899507,34.1490156007712,Daytime,2712392.193180585 +processed_ATL03_20200809004122_06820806_006_01.h5,179494.59699320886,-10.638800908295066,Nighttime, +processed_ATL03_20200810122532_07050802_006_01.h5,1068897.9927847406,27.84727919411428,Daytime,2318773.650787634 +processed_ATL03_20200813003303_07430806_006_01.h5,42490.099909907636,-9.501473152301626,Nighttime, +processed_ATL03_20200814121713_07660802_006_01.h5,5752663.929646432,25.0592073406471,Daytime,2144625.335429779 +processed_ATL03_20200817002443_08040806_006_01.h5,16617.049963783167,-8.673657633989055,Nighttime, +processed_ATL03_20200818120853_08270802_006_01.h5,1094279.5481663574,22.218095326033673,Daytime,1967164.0298782024 +processed_ATL03_20200821001623_08650806_006_01.h5,88550.37502800443,-7.514235541809514,Nighttime, +processed_ATL03_20200822120034_08880802_006_01.h5,3775479.618464736,19.388708499379472,Daytime,1790435.1020549166 +processed_ATL03_20200825000804_09260806_006_01.h5,89446.81397876945,-6.454590820296701,Nighttime, +processed_ATL03_20200826115214_09490802_006_01.h5,872472.4922581951,16.536142382767128,Daytime,1612258.3513240605 +processed_ATL03_20200830114354_10100802_006_01.h5,754567.2350125939,13.67799809981165,Daytime,1433733.177624752 +processed_ATL03_20200903113534_10710802_006_02.h5,581694.4312176822,10.853443807332303,Daytime,1257306.0991546002 +processed_ATL03_20200906231725_11240806_006_02.h5,33649.48062353326,-3.1481845660217744,Twilight,0.0 +processed_ATL03_20200908110135_11470802_006_02.h5,503253.43356873037,7.203728281765667,Daytime,1029337.867445496 +processed_ATL03_20200912105316_12080802_006_02.h5,341280.07894445007,4.380522070205796,Twilight,277428.3403222561 +processed_ATL03_20200914230046_12460806_006_02.h5,26186.26481486116,-0.9621860267135545,Twilight,77141.9540131092 +processed_ATL03_20200916104456_12690802_006_02.h5,125950.94852182808,1.6256601045111767,Twilight,174158.40681171417 +processed_ATL03_20200918225226_13070806_006_02.h5,125792.44703489641,0.31131358201008213,Twilight,124885.40938806534 +processed_ATL03_20200920103636_13300802_006_02.h5,210471.61413558375,-1.425258747820212,Twilight,59780.94674086571 +processed_ATL03_20200922224407_13680806_006_02.h5,172714.08971251204,1.1941339462355751,Twilight,157981.30216646194 +processed_ATL03_20200924102817_00040902_006_02.h5,5404.008946849824,-4.534453156049597,Twilight,0.0 +processed_ATL03_20200926223548_00420906_006_02.h5,319256.5753720403,2.0764338337093933,Twilight,191056.85539507866 +processed_ATL03_20200928101958_00650902_006_02.h5,42946.540686569366,-7.493123294715595,Nighttime, +processed_ATL03_20201002101131_01260902_006_01.h5,362.1598100051391,-10.500501094674165,Nighttime, +processed_ATL03_20201005215324_01790906_006_01.h5,295125.674828767,4.415555006044275,Twilight,278741.54800486565 +processed_ATL03_20201009214506_02400906_006_01.h5,331640.74092138046,5.289189014523632,Twilight,311489.24924016 +processed_ATL03_20201011092916_02630902_006_01.h5,3016.8440006209767,-17.102435897122042,Nighttime, +processed_ATL03_20201013213647_03010906_006_01.h5,974888.7458435383,6.2987469021792695,Daytime,972810.9947649338 +processed_ATL03_20201015092057_03240902_006_01.h5,96992.74215494073,-20.071210913659744,Nighttime, +processed_ATL03_20201017212828_03620906_006_01.h5,379385.6656480939,7.3146814146422745,Daytime,1036268.2129278439 +processed_ATL03_20201019091238_03850902_006_01.h5,30239.096275285712,-23.040433986865988,Nighttime, +processed_ATL03_20201021212007_04230906_006_01.h5,539059.9907695217,8.348818287791644,Daytime,1100862.3854504935 +processed_ATL03_20201023090418_04460902_006_01.h5,259884.82496922815,-26.032223481266826,Nighttime, +processed_ATL03_20201025211148_04840906_006_01.h5,2574614.756669485,9.36837614095687,Daytime,1164545.9244230608 +processed_ATL03_20201027085559_05070902_006_01.h5,469484.5235946693,-29.269784732699847,Nighttime, +processed_ATL03_20201029210331_05450906_006_01.h5,1521040.160322414,9.962021725053399,Daytime,1201626.1661899565 +processed_ATL03_20201031084740_05680902_006_01.h5,16340.668559343276,-31.71451310202092,Nighttime, +processed_ATL03_20201107202110_06820906_006_01.h5,674488.877680544,12.858877914241898,Daytime,1382569.3598001893 +processed_ATL03_20201109080520_07050902_006_01.h5,167326.14826736267,-38.60647640952581,Nighttime, +processed_ATL03_20201111201251_07430906_006_01.h5,1169250.8182872327,14.147239563596255,Daytime,1463042.8994357307 +processed_ATL03_20201113075702_07660902_006_01.h5,224.37694479006203,-41.561702853043876,Nighttime, +processed_ATL03_20201115200432_08040906_006_01.h5,1398742.022021409,15.108680614291737,Daytime,1523096.3514607523 +processed_ATL03_20201117074843_08270902_006_01.h5,18312.102258590567,-44.48965702690624,Nighttime, +processed_ATL03_20201119195613_08650906_006_01.h5,737208.2543954616,16.10340274771491,Daytime,1585228.6037444922 +processed_ATL03_20201121074024_08880902_006_01.h5,28627.621943633458,-47.40913550755529,Nighttime, +processed_ATL03_20201123194754_09260906_006_01.h5,682141.6288944753,17.083277940723377,Daytime,1646433.4876541982 +processed_ATL03_20201125073204_09490902_006_01.h5,45514.46755107935,-50.32221010594868,Nighttime, +processed_ATL03_20201127193934_09870906_006_01.h5,2059743.4233440266,18.298593901893994,Daytime,1722344.453507599 +processed_ATL03_20201129072343_10100902_006_01.h5,156814.4450448852,-53.07099330253307,Nighttime, +processed_ATL03_20201206185715_11240906_006_01.h5,4465255.531292323,20.777068463904033,Daytime,1877154.7282480402 +processed_ATL03_20201208064125_11470902_006_01.h5,36.89948285143027,-59.01391457703154,Nighttime, +processed_ATL03_20201210184856_11850906_006_01.h5,1565148.2148421055,21.865176377134688,Daytime,1945120.035448076 +processed_ATL03_20201212063308_12080902_006_01.h5,31776.705634769776,-61.83763375374974,Nighttime, +processed_ATL03_20201214184038_12460906_006_01.h5,6440840.810459436,22.93182274132584,Daytime,2011744.8131328654 +processed_ATL03_20201216062448_12690902_006_01.h5,7292.979228897971,-64.54162620939094,Nighttime, +processed_ATL03_20201218183218_13070906_006_01.h5,2698236.5121689388,23.989010371281957,Daytime,2077778.7801359287 +processed_ATL03_20201220061628_13300902_006_01.h5,10407.229098666925,-66.92680416509755,Nighttime, +processed_ATL03_20201222182358_13680906_006_01.h5,3179819.8703778996,25.082950329887492,Daytime,2146108.368075667 +processed_ATL03_20201226181538_00421006_006_01.h5,947034.319638348,26.143279988765048,Daytime,2212338.592231427 +processed_ATL03_20201228055948_00651002_006_01.h5,41673.45850649981,-70.68798426405911,Nighttime, diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis_updated.csv b/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis_updated.csv new file mode 100644 index 0000000..6223ab9 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/atl03_analysis_updated.csv @@ -0,0 +1,126 @@ +file,total_background_rate,solar_elevation,classification,solar_background_rate +processed_ATL03_20200103231215_01260602_006_01.h5,2693.2626911948337,-14.366390228271484,Nighttime,0.0 +processed_ATL03_20200120221315_03850602_006_01.h5,13806.160938730458,-3.189083235595707,Twilight,144592.35717088566 +processed_ATL03_20200123102047_04230606_006_01.h5,40221.2978331275,-20.771891516072188,Nighttime,0.0 +processed_ATL03_20200127101229_04840606_006_01.h5,53756.80956395094,-22.627933479509,Nighttime,0.0 +processed_ATL03_20200128215639_05070602_006_01.h5,359099.1436096114,3.0444767585617476,Twilight,145235.43070705683 +processed_ATL03_20200201214818_05680602_006_01.h5,529435.552229354,5.779487614282246,Twilight,129869.34051024831 +processed_ATL03_20200218204918_08270602_006_01.h5,1184736.9505547313,17.405200287505618,Daytime,1748940.2905502943 +processed_ATL03_20200221085649_08650606_006_01.h5,22374.124763767093,-32.0131039217493,Nighttime,0.0 +processed_ATL03_20200222204059_08880602_006_01.h5,688033.4751943491,20.51920772131919,Daytime,1864309.6321896184 +processed_ATL03_20200225084829_09260606_006_01.h5,38114.72681797276,-33.27572123209635,Nighttime,0.0 +processed_ATL03_20200226203238_09490602_006_01.h5,4792078.4466824625,23.537683123633975,Daytime,1983658.3052103017 +processed_ATL03_20200229084009_09870606_006_01.h5,26127.755282484995,-34.3192597084936,Nighttime,0.0 +processed_ATL03_20200301202417_10100602_006_01.h5,889223.9040683447,26.674097898949583,Daytime,2116042.6390513824 +processed_ATL03_20200305201556_10710602_006_01.h5,3788257.105734832,30.298559347788494,Daytime,2280416.8350887266 +processed_ATL03_20200318192523_12690602_006_01.h5,1351106.399095953,37.82273376543905,Daytime,2664819.338864546 +processed_ATL03_20200322191701_13300602_006_01.h5,4055652.4726818614,40.80553877688595,Daytime,2835030.833578937 +processed_ATL03_20200325072428_13680606_006_01.h5,276003.2899430346,-38.01975886027018,Nighttime,0.0 +processed_ATL03_20200326190838_00040702_006_01.h5,1214166.848817978,44.136398494099446,Daytime,3038283.9830246638 +processed_ATL03_20200329071609_00420706_006_01.h5,40921.18564560988,-38.085152261671595,Nighttime,0.0 +processed_ATL03_20200330190017_00650702_006_01.h5,2897362.4389916896,47.033739194511774,Daytime,3227154.257593272 +processed_ATL03_20200403185200_01260702_006_03.h5,1422029.572889437,50.41658441740958,Daytime,3462884.733692616 +processed_ATL03_20200416180123_03240702_006_02.h5,1212471.3817819578,56.88941257443048,Daytime,3963956.1596805067 +processed_ATL03_20200419060855_03620706_006_02.h5,11336.364038336214,-36.11201312276911,Nighttime,0.0 +processed_ATL03_20200420175305_03850702_006_02.h5,8790328.564517578,59.43912149047851,Daytime,4181022.0474315835 +processed_ATL03_20200423060037_04230706_006_02.h5,13875.464784802263,-36.77773346454934,Nighttime,0.0 +processed_ATL03_20200424174447_04460702_006_02.h5,11769916.10352509,62.44312992182514,Daytime,4452302.924574176 +processed_ATL03_20200427055215_04840706_006_02.h5,24467.29998703863,-37.28700614391692,Nighttime,0.0 +processed_ATL03_20200428173625_05070702_006_02.h5,5890936.079037134,64.92542139996337,Daytime,4689895.710371923 +processed_ATL03_20200501054353_05450706_006_01.h5,27995.160394601022,-35.154712923723665,Nighttime,0.0 +processed_ATL03_20200502172804_05680702_006_01.h5,1858938.9999125663,66.71920158729003,Daytime,4869548.371812116 +processed_ATL03_20200514045317_07430706_006_01.h5,101200.1387867376,-33.12479663476581,Nighttime,0.0 +processed_ATL03_20200515163727_07660702_006_01.h5,4029271.209775364,70.89727247756439,Daytime,5315491.960643039 +processed_ATL03_20200518044459_08040706_006_01.h5,21390.274746852945,-32.48489073114458,Nighttime,0.0 +processed_ATL03_20200519162909_08270702_006_01.h5,11263527.80896702,71.30119411230662,Daytime,5360737.751993225 +processed_ATL03_20200522043639_08650706_006_01.h5,27726.586265306785,-30.78756402104017,Nighttime,0.0 +processed_ATL03_20200523162049_08880702_006_01.h5,2394186.0851803604,71.34785883815056,Daytime,5365989.999505284 +processed_ATL03_20200526042817_09260706_006_01.h5,192063.31330177086,-30.286723850078406,Nighttime,0.0 +processed_ATL03_20200527161228_09490702_006_01.h5,3866876.0375585253,70.91486510319069,Daytime,5317454.551888833 +processed_ATL03_20200530041958_09870706_006_01.h5,14797.137764492889,-28.866483673855846,Nighttime,0.0 +processed_ATL03_20200531160408_10100702_006_01.h5,2673537.075175427,69.99713837967872,Daytime,5216046.879222733 +processed_ATL03_20200608033738_11240706_006_01.h5,34564.247899867914,-27.469124403873938,Nighttime,0.0 +processed_ATL03_20200609152147_11470702_006_01.h5,1473215.054213498,66.15265682069996,Daytime,4812066.45406627 +processed_ATL03_20200612032917_11850706_006_01.h5,38634.13533752579,-26.62868586505384,Nighttime,0.0 +processed_ATL03_20200613151327_12080702_006_01.h5,6435067.604220629,64.68456579542953,Daytime,4666289.948981485 +processed_ATL03_20200616032058_12460706_006_01.h5,16662.513664877562,-24.48468769049549,Nighttime,0.0 +processed_ATL03_20200617150508_12690702_006_01.h5,8234690.942282691,62.90583281198949,Daytime,4495646.639719844 +processed_ATL03_20200620031238_13070706_006_01.h5,78310.58091236708,-23.989503564854612,Nighttime,0.0 +processed_ATL03_20200621145648_13300702_006_01.h5,2091374.7284403527,60.61197065362462,Daytime,4284884.418061689 +processed_ATL03_20200624030418_13680706_006_01.h5,1450.7135090318498,-23.243765727303217,Nighttime,0.0 +processed_ATL03_20200625144828_00040802_006_01.h5,6557029.969762381,58.23505245263165,Daytime,4077050.837044342 +processed_ATL03_20200628025559_00420806_006_01.h5,110170.96579499701,-22.114351442730076,Nighttime,0.0 +processed_ATL03_20200629144009_00650802_006_01.h5,1611271.1367206054,55.93990911496594,Daytime,3886076.4388880646 +processed_ATL03_20200703143148_01260802_006_01.h5,1517288.3956790732,53.58790397706497,Daytime,3699787.295922931 +processed_ATL03_20200707021337_01790806_006_01.h5,45946.903156638844,-19.85720067705427,Nighttime,0.0 +processed_ATL03_20200711020519_02400806_006_01.h5,37795.75206357141,-18.332053259394385,Nighttime,0.0 +processed_ATL03_20200712134930_02630802_006_01.h5,2751507.4577635746,47.60112804428408,Daytime,3265520.353254656 +processed_ATL03_20200715015701_03010806_006_01.h5,177058.97577769912,-17.245845284873063,Nighttime,0.0 +processed_ATL03_20200716134112_03240802_006_01.h5,4225216.975207497,44.99416261486278,Daytime,3092994.3084492055 +processed_ATL03_20200719014842_03620806_006_01.h5,84038.4457408923,-16.165504271212004,Nighttime,0.0 +processed_ATL03_20200720133252_03850802_006_01.h5,1086128.2890839668,42.32534367015925,Daytime,2925990.783412471 +processed_ATL03_20200723014022_04230806_006_01.h5,79140.35345762987,-15.127771424350552,Nighttime,0.0 +processed_ATL03_20200724132432_04460802_006_01.h5,3827796.7701561344,39.720189704580584,Daytime,2771845.5833431105 +processed_ATL03_20200727013202_04840806_006_01.h5,62161.319765603504,-14.107249783170584,Nighttime,0.0 +processed_ATL03_20200728131612_05070802_006_01.h5,1088091.083936827,36.889148079226366,Daytime,2613721.4970187624 +processed_ATL03_20200801130752_05680802_006_01.h5,4673920.943899507,34.1490156007712,Daytime,2469462.715856148 +processed_ATL03_20200809004122_06820806_006_01.h5,179494.59699320886,-10.638800908295066,Nighttime,0.0 +processed_ATL03_20200810122532_07050802_006_01.h5,1068897.9927847406,27.84727919411428,Daytime,2167870.314943968 +processed_ATL03_20200813003303_07430806_006_01.h5,42490.099909907636,-9.501473152301626,Nighttime,0.0 +processed_ATL03_20200814121713_07660802_006_01.h5,5752663.929646432,25.0592073406471,Daytime,2046779.8760011417 +processed_ATL03_20200817002443_08040806_006_01.h5,16617.049963783167,-8.673657633989055,Nighttime,0.0 +processed_ATL03_20200818120853_08270802_006_01.h5,1094279.5481663574,22.218095326033673,Daytime,1930540.7399213663 +processed_ATL03_20200821001623_08650806_006_01.h5,88550.37502800443,-7.514235541809514,Nighttime,0.0 +processed_ATL03_20200822120034_08880802_006_01.h5,3775479.618464736,19.388708499379472,Daytime,1821542.1003826784 +processed_ATL03_20200825000804_09260806_006_01.h5,89446.81397876945,-6.454590820296701,Nighttime,0.0 +processed_ATL03_20200826115214_09490802_006_01.h5,872472.4922581951,16.536142382767128,Daytime,1718080.7773801952 +processed_ATL03_20200830114354_10100802_006_01.h5,754567.2350125939,13.67799809981165,Daytime,1620512.943928909 +processed_ATL03_20200903113534_10710802_006_02.h5,581694.4312176822,10.853443807332303,Daytime,1529735.0857654258 +processed_ATL03_20200906231725_11240806_006_02.h5,33649.48062353326,-3.1481845660217744,Twilight,144776.66851293913 +processed_ATL03_20200908110135_11470802_006_02.h5,503253.43356873037,7.203728281765667,Daytime,1420215.108060837 +processed_ATL03_20200912105316_12080802_006_02.h5,341280.07894445007,4.380522070205796,Twilight,138467.63856118967 +processed_ATL03_20200914230046_12460806_006_02.h5,26186.26481486116,-0.9621860267135545,Twilight,151470.7608601518 +processed_ATL03_20200916104456_12690802_006_02.h5,125950.94852182808,1.6256601045111767,Twilight,150144.69402303346 +processed_ATL03_20200918225226_13070806_006_02.h5,125792.44703489641,0.31131358201008213,Twilight,152119.1293011806 +processed_ATL03_20200920103636_13300802_006_02.h5,210471.61413558375,-1.425258747820212,Twilight,150614.29497198254 +processed_ATL03_20200922224407_13680806_006_02.h5,172714.08971251204,1.1941339462355751,Twilight,151082.12390992098 +processed_ATL03_20200924102817_00040902_006_02.h5,5404.008946849824,-4.534453156049597,Twilight,137583.17476423405 +processed_ATL03_20200926223548_00420906_006_02.h5,319256.5753720403,2.0764338337093933,Twilight,148877.46058688662 +processed_ATL03_20200928101958_00650902_006_02.h5,42946.540686569366,-7.493123294715595,Nighttime,0.0 +processed_ATL03_20201002101131_01260902_006_01.h5,362.1598100051391,-10.500501094674165,Nighttime,0.0 +processed_ATL03_20201005215324_01790906_006_01.h5,295125.674828767,4.415555006044275,Twilight,138267.9713919565 +processed_ATL03_20201009214506_02400906_006_01.h5,331640.74092138046,5.289189014523632,Twilight,133008.95080971622 +processed_ATL03_20201011092916_02630902_006_01.h5,3016.8440006209767,-17.102435897122042,Nighttime,0.0 +processed_ATL03_20201013213647_03010906_006_01.h5,974888.7458435383,6.2987469021792695,Daytime,1394346.0891712194 +processed_ATL03_20201015092057_03240902_006_01.h5,96992.74215494073,-20.071210913659744,Nighttime,0.0 +processed_ATL03_20201017212828_03620906_006_01.h5,379385.6656480939,7.3146814146422745,Daytime,1423421.0499189848 +processed_ATL03_20201019091238_03850902_006_01.h5,30239.096275285712,-23.040433986865988,Nighttime,0.0 +processed_ATL03_20201021212007_04230906_006_01.h5,539059.9907695217,8.348818287791644,Daytime,1453667.9109723903 +processed_ATL03_20201023090418_04460902_006_01.h5,259884.82496922815,-26.032223481266826,Nighttime,0.0 +processed_ATL03_20201025211148_04840906_006_01.h5,2574614.756669485,9.36837614095687,Daytime,1484145.3995965777 +processed_ATL03_20201027085559_05070902_006_01.h5,469484.5235946693,-29.269784732699847,Nighttime,0.0 +processed_ATL03_20201029210331_05450906_006_01.h5,1521040.160322414,9.962021725053399,Daytime,1502197.345648468 +processed_ATL03_20201031084740_05680902_006_01.h5,16340.668559343276,-31.71451310202092,Nighttime,0.0 +processed_ATL03_20201107202110_06820906_006_01.h5,674488.877680544,12.858877914241898,Daytime,1593624.7953063964 +processed_ATL03_20201109080520_07050902_006_01.h5,167326.14826736267,-38.60647640952581,Nighttime,0.0 +processed_ATL03_20201111201251_07430906_006_01.h5,1169250.8182872327,14.147239563596255,Daytime,1636128.0126327383 +processed_ATL03_20201113075702_07660902_006_01.h5,224.37694479006203,-41.561702853043876,Nighttime,0.0 +processed_ATL03_20201115200432_08040906_006_01.h5,1398742.022021409,15.108680614291737,Daytime,1668612.0336912915 +processed_ATL03_20201117074843_08270902_006_01.h5,18312.102258590567,-44.48965702690624,Nighttime,0.0 +processed_ATL03_20201119195613_08650906_006_01.h5,737208.2543954616,16.10340274771491,Daytime,1702925.5465857992 +processed_ATL03_20201121074024_08880902_006_01.h5,28627.621943633458,-47.40913550755529,Nighttime,0.0 +processed_ATL03_20201123194754_09260906_006_01.h5,682141.6288944753,17.083277940723377,Daytime,1737442.6729897463 +processed_ATL03_20201125073204_09490902_006_01.h5,45514.46755107935,-50.32221010594868,Nighttime,0.0 +processed_ATL03_20201127193934_09870906_006_01.h5,2059743.4233440266,18.298593901893994,Daytime,1781262.9064303343 +processed_ATL03_20201129072343_10100902_006_01.h5,156814.4450448852,-53.07099330253307,Nighttime,0.0 +processed_ATL03_20201206185715_11240906_006_01.h5,4465255.531292323,20.777068463904033,Daytime,1874209.24194811 +processed_ATL03_20201208064125_11470902_006_01.h5,36.89948285143027,-59.01391457703154,Nighttime,0.0 +processed_ATL03_20201210184856_11850906_006_01.h5,1565148.2148421055,21.865176377134688,Daytime,1916584.987327542 +processed_ATL03_20201212063308_12080902_006_01.h5,31776.705634769776,-61.83763375374974,Nighttime,0.0 +processed_ATL03_20201214184038_12460906_006_01.h5,6440840.810459436,22.93182274132584,Daytime,1959085.7276236292 +processed_ATL03_20201216062448_12690902_006_01.h5,7292.979228897971,-64.54162620939094,Nighttime,0.0 +processed_ATL03_20201218183218_13070906_006_01.h5,2698236.5121689388,23.989010371281957,Daytime,2002169.7726469506 +processed_ATL03_20201220061628_13300902_006_01.h5,10407.229098666925,-66.92680416509755,Nighttime,0.0 +processed_ATL03_20201222182358_13680906_006_01.h5,3179819.8703778996,25.082950329887492,Daytime,2047781.1142433893 +processed_ATL03_20201226181538_00421006_006_01.h5,947034.319638348,26.143279988765048,Daytime,2093013.3941425597 +processed_ATL03_20201228055948_00651002_006_01.h5,41673.45850649981,-70.68798426405911,Nighttime,0.0 diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation.png b/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation.png new file mode 100644 index 0000000000000000000000000000000000000000..75f4454da2028d47a381d71b6e4b36de4dabde58 GIT binary patch literal 47431 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�m=>+R zE0WmvoDx9J9_IhxM>IOglkFqrl=uHcUW#jx{rUrp$?O*{G3eU_taQYR4_dgoKj|U9>9?>|2-|TJejyz2e>4dzf;1u)SZLbnz+lGC@{IT+FPG=v!f~+Kec0w zje?pRaSlLd_^VtsFn~9wR2Z65=;L1Ejz4McV0>u{dE@Mol0WL)&8lc+Ih2beWroW{ zETD(!22ZRQFgj{qaz&v4#)EXJF~>!3JGdus>tM^x0|^;;;9{YAYVX6m5=?HfRwc#J zQa4iolP0`!VejG3eXzLzjMSI!`g2Bj7f@{8Kfslm;94?pm4c#7-QC?M;zLejW!4jt zr~Y7&_AZywd-Jtx1JU5wB-MzGne&W_Exj~x9Rg$6OjHb|yjzoAX!C`X~~PzjM(g-i&$bm|aO%8;QkV>+&FSN*U_q3s zNy30PZ}9~fuFLR65e)IjTRmM}SA_F20Q$9VSM+3P+M3MlvUhMWLoH8`%9@AeZl@W# zd%9t>e$r+P@)M1{`znDg-}Y|TgxTzx&o^(L9!}Xzyi%{T*)1?o;?+bh^}`8&@j-t! z_VUJry_vW3%F43UvXlUBrxbtm}P8gPz4JWJLH`W^(cis9Vz!&kfubFgge zf`ZCt(T+5nYaexR2NZ3` zNKfTfQ1_BbPxjj4J7(k949IyQdv(aMhBk3L74Civ^J_VTz=G4>lCT7$Yj?u0HAxNH zS^idsj{v~pW=!jNfW!FTo z??+cTcFh8@a}fv2+p|6Ii?#RCVL0HZx=FNq!9tanr0_5TR#e<3UXuGnkPTxxa?aZ682J3FxL zb!SO|^>}aA=ho?Uui3#nzQ9`c@>1(Q5pbvJRVe@QmqmRIpPqc}r3ab6nxq8becw1Z z^n<@?0Y(wr;TTu0B*5H~m?zRXa#SDkAfbn+IXkcc4rPoW0GvbSxgme-xbfV2BzT&? zE*yW#jO;~k2|1G683Bgxc9F<1rj?=q@s7&)Z+us%#tpOP_)-+mm+z6|a} zOQ={$r3PdLaGMaq>xpyYq0otQY9Rpl_d|TV?|Bo>er74;t5vS)bXyG9qR%N?p(0X? z^S|fuO0fM6RQ6nfu0IPO=zdTRPfT}EeK6F;7`aQNKprogQprmpGm*;d% zx&#%7d-aTrjAcLC#-eni?oy^b^wQnkom@^vXW=3o(-5(9^YUm$Rp5OtS1^zi(5jVV4_vi1Df+$jI?=V;LfjlxQXkQXd-=@5qP{y$q!sJ5 z&l2M~qM(U448}@q0PVMPCn-$@9C2H#LB+Qwx^0b&Ow;1R91kpcFqJ}C?Xbx|<>#y9`{I`guz8xGnJhs5(S@?&;zUf+)6;7$IG`1brTNp{yIGjCijVVv zG;u3&Y8wrITf0m-VWS2h(xCnDiXs-i6ptd7MCX4o1-fz=JLNiRSzKb>q>>tsl({o( zh=_cI+bU)$`F{sqWdovTk8I~2Ot0LEJB|oC(2WI6(&?6)I4oS5gn){kSuXJvjf*qM zk@{nBunEh~8mVF~kgLs@Hxj49aNy}oJ;Upu$5>E^CWJB%f>msmExU6H`+q+ou!iHU zn7BB|TVeu&r`rQfmxGzM7KMQBUC0My#Dp!=-Eo7199uBnlp5=;W}!qP{gozKJMpiA zoT|gaDoc@a%VG)@yYLhN1lgIG2=V+30?BzJ|%!OK>0(P)V2`y8kUAL}DR$fBPaH_L)+~=X7(U}Z`R3_Uo7t}3#kHGS zxJ%^mKzn{P&@&$bN%A_3mg;^x41V57uVQj6)r1W3MWN;am(wCf9|IDy%8;i&#K(nC z6|?Gx&mhP*K_IT)#E1V{Y70+!V=e(q=*lIIG)b@GI2PycS@ssOGOpaVw3@EyjPY*bQb;UX_0<=B~c@D2Eo zD6vu$90z4cLSM^g9JumupcYbxM1sslQN%B>Gryf>CBZQn&DAaWzJtFqIIsN?rwcyl z%Oye%W2V!svVC$U6opyN_$3xgsYO5Z{aa==B2?mLR_K-neV9F&p#pICpcXa?V5pIB zkDbf{OtthUQ+}1Vk53)c1~Ct=bD4u_oxN`r+}BCUa;(_V=qi&b_Sf|0CLJAOmPp(y zP7fq*{T%^~1{qs0H!>NFD`Wn?BR_Vi|u|d~5{-T>j%1FJAoo?&Dg*wUXwggy1SCU}a>)V%wx$y7W`= z*}3UA77&ma$Lt-NLHoAh{<%*ujVMep`aXC_H_Q+(PLc{RE?p8y%pW_Dh75FX_`B6) zS&-=}5Vx=xWv+cd5kni!#MG)+*Mn{eNj=)VBKCp82zVs1ptB8tdX`Y`AL2i%4jg

      uU5j}8FFlwiw?}ArMv!uk~SiC84N`y zK&Wwrp{A;)W<$c7FG-cd2Dh0gZD8q%{TvgJPyg}mc*xp*ytEGHAD#63W7tb@i-D1- z43YPE(YtB2|1RC^_n(+$RbSEvPjd&cvJUSP<+d zmeicAbaH$n_Se8t<|fuNad+Yz8$_iIvIBQXY&PcYUs z9nz6p>zcK+!axkNILj!!nniGma-hbd)P-tw8bTuy2IZpmg2xJA5ud2wslX-DO+S-I z!gNA{#AM(T<%>|5+>0AbE!i!0q^eY(u!fVO(xm=N_9j?9no>?-Fwfab)?A=(Ms|FoR)KoamS~_ z1eSl>JxiPtswA9MBBfSoz$6Vep(t@x;6Uc#!%f)!GF<@y7V}wU^vqvxk%=?d3jWNT zikKfzBI*E1j32@g7kj^bHw$$eQV_(mfSHAMUn{tSwWJGxQi^gs27WyR!_5MG;x`^XdGdsZm8pyy?np-POr8k#gWs3m$jyx+ z=HuuED_cpE+9Ii>G3&BM3oDa=_30_3le;m|n>LQfwWlJY{r=Gk9XgV%)aRpNa9+It z#$7*z1Kog+bZ>`C*kqfknp#ww*Vq=)krH0}v4cRbf#^IxI~!cqGk&H*p&K4TVmJ`U zvc|s+M1@luuqDky{u)|Z4*_kj&qC88v*u$F{o1k#e4YIW<|fFsaYYJ~II$@37Gb7j z#H$UzWNXy_v>u)a9s9>R{@-&U(uVjq-HU%tvKEb#mwCzujYr?1@W;x`mR4xu8uceA C@$usT literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation_2022_new.png b/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation_2022_new.png new file mode 100644 index 0000000000000000000000000000000000000000..73c29e5fc3b8051ff0d5f03d8f1a70ea7b8f9036 GIT binary patch literal 45148 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 literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation_exp_fit.png b/icesat-2_kdph_py/kd_utils/SolarBckgrd/Dataset/Results/background_vs_elevation_exp_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..56c02bf19d731c9829fc8eab7cd256ac34e1307b GIT binary patch literal 58272 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�&xE4x2iX9R8ggpTMO!( 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 0 else np.nan + total_background_rate_ocean = np.mean(bckgrd_rate[ocean_mask]) if np.sum(ocean_mask) > 0 else np.nan + + # Solar elevation handling + FILL_VALUE = 3.4028235e38 + solar_elevations = f[f'{beam}/geolocation/solar_elevation'][:].astype(np.float64) + valid_solar = solar_elevations[(solar_elevations != FILL_VALUE) & (np.abs(solar_elevations) < 1e30) & np.isfinite(solar_elevations)] + solar_elevation = np.nan if valid_solar.size == 0 else np.mean(valid_solar) + + mean_photon_height = np.mean(heights) if heights.size > 0 else np.nan + + result = { + 'file': os.path.basename(file), + 'total_background_rate_land': total_background_rate_land, + 'total_background_rate_ocean': total_background_rate_ocean, + 'solar_elevation': solar_elevation, + 'mean_photon_height': mean_photon_height + } + logger.info(f"Processed {file}: {result}") + return result + except Exception as e: + logger.error(f"Error processing {file}: {str(e)}") + return {'file': os.path.basename(file), 'error': str(e)} + +def fit_surface_model(df, classification, surface_type, model_func, p0, bounds, x_col='solar_elevation', y_col='solar_background_rate'): + """Fit a model to a specific classification and surface type.""" + subset = df[(df['classification'] == classification) & (df['surface_type'] == surface_type)].copy() + if len(subset) < 3: + print(f"Warning: Insufficient data for {classification} {surface_type} model.") + return None, None, None + + mask = subset[x_col].notna() & subset[y_col].notna() & np.isfinite(subset[x_col]) & np.isfinite(subset[y_col]) + valid_x = subset.loc[mask, x_col] + valid_y = subset.loc[mask, y_col] + + if len(valid_x) < 3: + print(f"Warning: Fewer than 3 valid points for {classification} {surface_type} model.") + return None, None, None + + try: + popt, _ = curve_fit(model_func, valid_x, valid_y, p0=p0, bounds=bounds, maxfev=20000) + y_pred = model_func(valid_x, *popt) + r2 = 1 - np.sum((valid_y - y_pred)**2) / np.sum((valid_y - np.mean(valid_y))**2) + return popt, r2, lambda x: model_func(x, *popt) + except RuntimeError as e: + print(f"Fit failed for {classification} {surface_type}: {e}") + return None, None, None + +def load_and_process_files(atl03_directory, beam, shoreline_data_path): + """Load and process ATL03 files in parallel.""" + atl03_files = [os.path.join(atl03_directory, f) for f in os.listdir(atl03_directory) if f.endswith('.h5') and 'ATL03' in f] + print(f"Found {len(atl03_files)} ATL03 files.") + + if not atl03_files: + raise ValueError("No ATL03 files found in the directory.") + + with Pool() as pool: + results = pool.map(process_file, [(f, beam, shoreline_data_path) for f in atl03_files]) + + print("Results from process_file:", results) + df = pd.DataFrame(results) + + if 'error' in df.columns: + error_files = df[df['error'].notna()]['file'].tolist() + print(f"Errors in {len(error_files)} files: {error_files}") + df = df[df['error'].isna()].drop(columns=['error']) + + if df.empty: + raise ValueError("No files were successfully processed. Check the error messages above.") + + print("DataFrame columns after processing:", df.columns) + return df + +def assign_surface_type(df): + """Assign surface type based on background rates.""" + required_columns = ['total_background_rate_land', 'total_background_rate_ocean'] + missing_columns = [col for col in required_columns if col not in df.columns] + if missing_columns: + raise KeyError(f"Missing required columns in DataFrame: {missing_columns}") + + df['surface_type'] = np.where( + df['total_background_rate_land'].notna() & (df['total_background_rate_land'] > 0), + 'Land', + np.where(df['total_background_rate_ocean'].notna() & (df['total_background_rate_ocean'] > 0), 'Ocean', 'Mixed') + ) + return df + +def classify_data(df, twilight_threshold=6.0): + """Classify data into Daytime, Nighttime, Twilight, or Unknown.""" + df['classification'] = np.where( + df['solar_elevation'].isna(), 'Unknown', + np.where(df['solar_elevation'] > twilight_threshold, 'Daytime', + np.where(df['solar_elevation'] < -twilight_threshold, 'Nighttime', 'Twilight')) + ) + daytime_df = df[df['classification'] == 'Daytime'].copy() + nighttime_df = df[df['classification'] == 'Nighttime'].copy() + twilight_df = df[df['classification'] == 'Twilight'].copy() + unknown_df = df[df['classification'] == 'Unknown'].copy() + print(f"Daytime: {len(daytime_df)}, Nighttime: {len(nighttime_df)}, Twilight: {len(twilight_df)}, Unknown: {len(unknown_df)}") + return df, daytime_df, nighttime_df, twilight_df, unknown_df + +def calculate_non_solar_rate(nighttime_df): + """Calculate the non-solar background rate from nighttime data.""" + non_solar_rate_land = np.nanmean(nighttime_df['total_background_rate_land']) + non_solar_rate_ocean = np.nanmean(nighttime_df['total_background_rate_ocean']) + non_solar_rate = np.nanmean([non_solar_rate_land, non_solar_rate_ocean]) + print(f"Non-solar background rate (land): {non_solar_rate_land:.2e} ph/s") + print(f"Non-solar background rate (ocean): {non_solar_rate_ocean:.2e} ph/s") + print(f"Non-solar background rate (combined): {non_solar_rate:.2e} ph/s") + return non_solar_rate + +def compute_solar_background_rates(df, non_solar_rate): + """Compute solar background rates for land and ocean.""" + df['solar_background_rate_land'] = (df['total_background_rate_land'] - non_solar_rate).clip(lower=0) + df['solar_background_rate_ocean'] = (df['total_background_rate_ocean'] - non_solar_rate).clip(lower=0) + df['solar_background_rate'] = np.where( + df['surface_type'] == 'Land', df['solar_background_rate_land'], + np.where(df['surface_type'] == 'Ocean', df['solar_background_rate_ocean'], np.nan) + ) + return df + +def fit_daytime_model(df, daytime_df, non_solar_rate): + """Fit daytime models for land and ocean.""" + daytime_models = {} + for surface_type in ['Land', 'Ocean']: + subset = daytime_df[daytime_df['surface_type'] == surface_type].copy() + if len(subset) < 3: + print(f"Warning: Insufficient daytime {surface_type} data for modeling.") + continue + + mask = subset['solar_elevation'].notna() & subset['solar_background_rate'].notna() & \ + np.isfinite(subset['solar_elevation']) & np.isfinite(subset['solar_background_rate']) + valid_x = subset.loc[mask, 'solar_elevation'] + valid_y = subset.loc[mask, 'solar_background_rate'] + + if len(valid_x) < 3: + print(f"Warning: Fewer than 3 valid points for daytime {surface_type} model.") + continue + + # Remove outliers + log_y = np.log10(valid_y + 1) + mean_log_y = np.mean(log_y) + std_log_y = np.std(log_y) + outlier_mask = (log_y > mean_log_y - 3 * std_log_y) & (log_y < mean_log_y + 3 * std_log_y) + valid_x = valid_x[outlier_mask] + valid_y = valid_y[outlier_mask] + + print(f"Daytime regression ({surface_type}): {len(valid_x)} valid data points") + try: + p0_exp = [np.max(valid_y) - non_solar_rate, 0.05, non_solar_rate] + bounds_exp = ([0, 0.01, non_solar_rate * 0.9], [1e8, 0.5, non_solar_rate * 1.1]) + popt_exp, _ = curve_fit(exp_model, valid_x, valid_y, p0=p0_exp, bounds=bounds_exp, maxfev=20000) + r2_exp = 1 - np.sum((valid_y - exp_model(valid_x, *popt_exp))**2) / np.sum((valid_y - np.mean(valid_y))**2) + + x_shifted = valid_x - min(valid_x) + 1 + p0_power = [np.max(valid_y) - non_solar_rate, 0.6, non_solar_rate] + bounds_power = ([0, 0.1, non_solar_rate * 0.9], [1e8, 1.0, non_solar_rate * 1.1]) + popt_power, _ = curve_fit(power_model, x_shifted, valid_y, p0=p0_power, bounds=bounds_power, maxfev=20000) + r2_power = 1 - np.sum((valid_y - power_model(x_shifted, *popt_power))**2) / np.sum((valid_y - np.mean(valid_y))**2) + + if r2_power > r2_exp: + print(f"Daytime model ({surface_type}, power law): rate = {popt_power[0]:.2e} * solar_elevation^{popt_power[1]:.2f} + {popt_power[2]:.2e}, R² = {r2_power:.3f}") + daytime_models[surface_type] = {'params': popt_power, 'r2': r2_power, 'model': lambda x: power_model(x - min(valid_x) + 1, *popt_power)} + else: + print(f"Daytime model ({surface_type}, exponential): rate = {popt_exp[0]:.2e} * exp({popt_exp[1]:.2f} * solar_elevation) + {popt_exp[2]:.2e}, R² = {r2_exp:.3f}") + daytime_models[surface_type] = {'params': popt_exp, 'r2': r2_exp, 'model': lambda x: exp_model(x, *popt_exp)} + + # Apply model + daytime_mask = (df['classification'] == 'Daytime') & (df['surface_type'] == surface_type) + valid_daytime_mask = daytime_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + x_for_model = df.loc[valid_daytime_mask, 'solar_elevation'] + if r2_power > r2_exp: + x_for_model_shifted = x_for_model - min(valid_x) + 1 + df.loc[valid_daytime_mask, 'solar_background_rate'] = daytime_models[surface_type]['model'](x_for_model_shifted).clip(lower=0) + else: + df.loc[valid_daytime_mask, 'solar_background_rate'] = daytime_models[surface_type]['model'](x_for_model).clip(lower=0) + df.loc[daytime_mask & ~valid_daytime_mask, 'solar_background_rate'] = non_solar_rate + except RuntimeError as e: + print(f"Daytime model fitting failed for {surface_type}: {e}. Using non-solar rate as fallback.") + df.loc[(df['classification'] == 'Daytime') & (df['surface_type'] == surface_type), 'solar_background_rate'] = non_solar_rate + return df, daytime_models + +def fit_twilight_model(df, twilight_df, non_solar_rate): + """Fit twilight models for land and ocean.""" + twilight_models = {} + if len(twilight_df) > 3: + df.loc[df['classification'] == 'Twilight', 'solar_background_rate'] = ( + df['solar_background_rate'].fillna(0).clip(lower=0) + ) + for surface_type in ['Land', 'Ocean']: + subset = twilight_df[twilight_df['surface_type'] == surface_type].copy() + if len(subset) < 3: + print(f"Warning: Insufficient twilight {surface_type} data for modeling.") + continue + + mask = subset['solar_elevation'].notna() & subset['solar_background_rate'].notna() & \ + np.isfinite(subset['solar_elevation']) & np.isfinite(subset['solar_background_rate']) + valid_twilight_x = subset.loc[mask, 'solar_elevation'] + valid_twilight_y = subset.loc[mask, 'solar_background_rate'] + + if len(valid_twilight_x) < 3: + print(f"Warning: Fewer than 3 valid points for twilight {surface_type} model.") + continue + + print(f"Twilight regression ({surface_type}): {len(valid_twilight_x)} valid data points") + try: + initial_a = np.max(valid_twilight_y) - non_solar_rate + initial_b = 0.01 + initial_c = non_solar_rate + p0 = [initial_a, initial_b, initial_c] + bounds = ([0, 0.001, non_solar_rate * 0.9], [1e6, 1.0, non_solar_rate * 1.1]) + + popt, _ = curve_fit(twilight_model, valid_twilight_x, valid_twilight_y, p0=p0, bounds=bounds, maxfev=50000) + y_pred = twilight_model(valid_twilight_x, *popt) + r_squared = 1 - np.sum((valid_twilight_y - y_pred)**2) / np.sum((valid_twilight_y - np.mean(valid_twilight_y))**2) + + if r_squared < 0: + mean_rate = np.mean(valid_twilight_y) + twilight_models[surface_type] = { + 'params': [mean_rate], + 'r2': 0.0, + 'model': lambda x: np.full_like(x, mean_rate) + } + print(f"Twilight model ({surface_type}) failed with R² = {r_squared:.3f}. Using constant model: {mean_rate:.2e} ph/s") + + twilight_mask = (df['classification'] == 'Twilight') & (df['surface_type'] == surface_type) + valid_twilight_mask = twilight_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + df.loc[valid_twilight_mask, 'solar_background_rate'] = mean_rate + df.loc[twilight_mask & ~valid_twilight_mask, 'solar_background_rate'] = non_solar_rate + else: + print(f"Twilight model ({surface_type}): rate = {popt[0]:.2e} * exp(-{popt[1]:.2f} * solar_elevation^2) + {popt[2]:.2e}, R² = {r_squared:.3f}") + twilight_models[surface_type] = {'params': popt, 'r2': r_squared, 'model': lambda x: twilight_model(x, *popt)} + + twilight_mask = (df['classification'] == 'Twilight') & (df['surface_type'] == surface_type) + valid_twilight_mask = twilight_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + x_for_model = df.loc[valid_twilight_mask, 'solar_elevation'] + df.loc[valid_twilight_mask, 'solar_background_rate'] = twilight_models[surface_type]['model'](x_for_model).clip(lower=0) + df.loc[twilight_mask & ~valid_twilight_mask, 'solar_background_rate'] = non_solar_rate + except RuntimeError as e: + print(f"Twilight model fitting failed for {surface_type}: {e}. Setting twilight rates to non-solar rate.") + df.loc[(df['classification'] == 'Twilight') & (df['surface_type'] == surface_type), 'solar_background_rate'] = non_solar_rate + else: + print("Too few twilight points for modeling. Setting twilight rates to non-solar rate.") + df.loc[df['classification'] == 'Twilight', 'solar_background_rate'] = non_solar_rate + return df, twilight_models + +def create_diagnostic_plot(df, daytime_df, twilight_df, daytime_models, twilight_models, non_solar_rate, output_dir): + """Create diagnostic plot of background rate vs. solar elevation.""" + plt.figure(figsize=(10, 6)) + plt.scatter(df['solar_elevation'], df['total_background_rate'], c='gray', alpha=0.5, label='Total') + plt.scatter(daytime_df[daytime_df['surface_type'] == 'Land']['solar_elevation'], + daytime_df[daytime_df['surface_type'] == 'Land']['solar_background_rate'], + c='blue', alpha=0.5, label='Daytime Land') + plt.scatter(daytime_df[daytime_df['surface_type'] == 'Ocean']['solar_elevation'], + daytime_df[daytime_df['surface_type'] == 'Ocean']['solar_background_rate'], + c='cyan', alpha=0.5, label='Daytime Ocean') + plt.scatter(twilight_df[twilight_df['surface_type'] == 'Land']['solar_elevation'], + twilight_df[twilight_df['surface_type'] == 'Land']['solar_background_rate'], + c='orange', alpha=0.5, label='Twilight Land') + plt.scatter(twilight_df[twilight_df['surface_type'] == 'Ocean']['solar_elevation'], + twilight_df[twilight_df['surface_type'] == 'Ocean']['solar_background_rate'], + c='yellow', alpha=0.5, label='Twilight Ocean') + plt.axhline(non_solar_rate, color='r', linestyle='--', label=f'Non-Solar: {non_solar_rate:.2e} ph/s') + + # Plot daytime fits + for surface_type in daytime_models: + if daytime_models[surface_type]['model'] is not None: + x_fit = np.linspace(min(daytime_df['solar_elevation']), max(daytime_df['solar_elevation']), 100) + y_fit = daytime_models[surface_type]['model'](x_fit if 'power' not in daytime_models[surface_type] else x_fit - min(daytime_df['solar_elevation']) + 1) + plt.plot(x_fit, y_fit, label=f'Daytime {surface_type} Fit (R²={daytime_models[surface_type]["r2"]:.3f})', + linestyle='-' if surface_type == 'Land' else '--') + + # Plot twilight fits + for surface_type in twilight_models: + if twilight_models[surface_type]['model'] is not None: + x_twilight = np.linspace(min(twilight_df['solar_elevation']), max(twilight_df['solar_elevation']), 100) + y_twilight = twilight_models[surface_type]['model'](x_twilight) + plt.plot(x_twilight, y_twilight, label=f'Twilight {surface_type} Fit (R²={twilight_models[surface_type]["r2"]:.3f})', + linestyle='-' if surface_type == 'Land' else '--') + + plt.yscale('log') + plt.ylim(1e3, 1e8) + plt.xlabel('Solar Elevation (degrees)') + plt.ylabel('Background Rate (ph/s)') + plt.legend() + plt.title('Background Rate vs. Solar Elevation (Land vs. Ocean)') + plt.savefig(os.path.join(output_dir, "background_vs_elevation_exp_fit_2021.png")) + plt.close() + +def create_calibration_plot(df, daytime_df, output_dir): + """Create a calibration plot using mean photon height as a proxy.""" + if not daytime_df.empty: + sample_file = daytime_df.iloc[0] + heights = sample_file['mean_photon_height'] + if np.isfinite(heights): + solar_rate = sample_file['solar_background_rate'] + bin_size = 0.1 + hist, edges = np.histogram(np.array([heights] * 1000), bins=np.arange(min(heights) - 1, max(heights) + 1, bin_size)) + photons_per_bin = solar_rate * (1000 / np.sum(hist)) * bin_size / (max(heights) - min(heights) + 2) + calibrated_counts = np.maximum(hist - photons_per_bin, 0) + calibrated_heights = [] + for i, count in enumerate(calibrated_counts): + if count > 0: + calibrated_heights.extend(np.random.uniform(edges[i], edges[i+1], int(count))) + + plt.figure(figsize=(8, 6)) + plt.hist([heights] * 1000, bins=100, alpha=0.5, label='Original (Simulated)') + plt.hist(calibrated_heights, bins=100, alpha=0.5, label='Calibrated') + plt.xlabel('Photon Height (m)') + plt.ylabel('Count') + plt.legend() + plt.title(f'Calibration Example: {sample_file["file"]}') + plt.savefig(os.path.join(output_dir, "calibration_example.png")) + plt.close() + +def save_results(df, output_dir): + """Save the results to a CSV file.""" + df.to_csv(os.path.join(output_dir, "atl03_analysis_updated.csv"), index=False) + +# New function to calculate averages +def calculate_background_averages(daytime_df, nighttime_df): + """Calculate average background rates for daytime and nighttime, land and ocean.""" + # Calculate averages, ignoring NaN values + daytime_land_avg = np.nanmean(daytime_df['total_background_rate_land']) + daytime_ocean_avg = np.nanmean(daytime_df['total_background_rate_ocean']) + nighttime_land_avg = np.nanmean(nighttime_df['total_background_rate_land']) + nighttime_ocean_avg = np.nanmean(nighttime_df['total_background_rate_ocean']) + + # Log the averages + logger.info(f"Average Daytime Land Background Rate: {daytime_land_avg:.2e} ph/s") + logger.info(f"Average Daytime Ocean Background Rate: {daytime_ocean_avg:.2e} ph/s") + logger.info(f"Average Nighttime Land Background Rate: {nighttime_land_avg:.2e} ph/s") + logger.info(f"Average Nighttime Ocean Background Rate: {nighttime_ocean_avg:.2e} ph/s") + + return { + 'daytime_land': daytime_land_avg, + 'daytime_ocean': daytime_ocean_avg, + 'nighttime_land': nighttime_land_avg, + 'nighttime_ocean': nighttime_ocean_avg + } + +# New function to plot averages +def plot_background_averages(averages, output_dir): + """Plot the average background rates for daytime and nighttime, land and ocean.""" + labels = ['Daytime Land', 'Daytime Ocean', 'Nighttime Land', 'Nighttime Ocean'] + rates = [ + averages['daytime_land'] if not pd.isna(averages['daytime_land']) else 0, + averages['daytime_ocean'] if not pd.isna(averages['daytime_ocean']) else 0, + averages['nighttime_land'] if not pd.isna(averages['nighttime_land']) else 0, + averages['nighttime_ocean'] if not pd.isna(averages['nighttime_ocean']) else 0 + ] + + plt.figure(figsize=(8, 6)) + bars = plt.bar(labels, rates, color=['blue', 'cyan', 'purple', 'lightgreen']) + + plt.ylabel('Average Background Rate (ph/s)') + plt.title('Average Background Rate Comparison\n(Daytime vs. Nighttime, Land vs. Ocean)') + plt.yscale('log') + plt.ylim(1e3, 1e8) + + for bar in bars: + yval = bar.get_height() + plt.text(bar.get_x() + bar.get_width()/2, yval, f'{yval:.2e}', ha='center', va='bottom') + + plt.savefig(os.path.join(output_dir, "average_background_rate_comparison.png")) + plt.close() + logger.info("Average background rate comparison plot generated.") + +def analyze_icesat2_data(atl03_directory, beam='gt1l', twilight_threshold=6.0, output_dir="output", shoreline_data_path=None): + """Main analysis function orchestrating the workflow.""" + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + df = load_and_process_files(atl03_directory, beam, shoreline_data_path) + if df.empty: + raise ValueError("No data processed successfully. Check logs for errors.") + + df = assign_surface_type(df) + + # Compute total_background_rate based on surface_type + df['total_background_rate'] = np.where( + df['surface_type'] == 'Land', df['total_background_rate_land'], + np.where(df['surface_type'] == 'Ocean', df['total_background_rate_ocean'], np.nan) + ) + + df, daytime_df, nighttime_df, twilight_df, unknown_df = classify_data(df, twilight_threshold) + + averages = calculate_background_averages(daytime_df, nighttime_df) + plot_background_averages(averages, output_dir) + + +if __name__ == "__main__": + args = get_args() + atl03_directory = os.path.join(args.workspace_path, args.atl03_path) + shoreline_data_path = os.path.join(args.workspace_path, args.shoreline_data) + output_dir = os.path.join(args.workspace_path, args.output_path) + analyze_icesat2_data(atl03_directory, args.beam, output_dir=output_dir, shoreline_data_path=shoreline_data_path) + print("Analysis complete.") \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/__pycache__/config.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/SolarBckgrd/__pycache__/config.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..877d5cdd01a1c5237154ed2f1b18198d89caec28 GIT binary patch literal 1925 zcmb7FL2nyH6y9C09Vc7-tany3 z&qf?<%q)aO> zEYpBd1<tZJ&;t%MgabgmaSm);V#&^aE*pnqmSmZHL_RJc%Yb}BJ}n?CfYixn6XeIrPX;KmdZ3yQVjPVW zMf=-3M_4*7^x)~E#u_46V$@?C2^L|Fj&b)i;A|KZw{E7hgo-W?6B)8tRUJoSak}5` z%(WV=mLG5&4 zmQiCZr*F3*EJ3B01?f*Xcb-d*yOI)ruf6Nexva@Ox*s4T0Q{55$hq@r{i4iZ6M87uxvQGN~ZGtd+9eA(5h6Me>M6vouomqob~ilYfGJXmWs27ZKN zQXIRYpQzRDobEMkGm}M^Od=(ZcprN!TFJwFM=-Xen6QF zdp)=q6Y7UMTicJ}^1{Xel@N;d6ljH8x6^Wrc_6qhG=&5}VBmkKSS)emL%iXiP$bma z-UX;dV9`)t{!AL}Ki02EgaWOEF#=O?ee158cbsRG%dnd>1z-u&S(69zG4%r8*( zX&Cfn&iwKejW~n14L+|)1ysf^j{MMVRVNP)`7nnXniWJf|d#9f~NBicrYB$ zSRU#rPivSEA67FgEeXlfQW(p$+>02N=}dM?ZxB#fD%p(xZ1Ag~)T_<^Q4WrDq1w`A zig;ZX_rkzUMrk#mG9%Y%7LT<4X00@1TCXd4e@S}X0ClXU<9i1SNe}m)S#n+a literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_nighttime_BG_rate_icesat2.py b/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_nighttime_BG_rate_icesat2.py new file mode 100644 index 0000000..bded772 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_nighttime_BG_rate_icesat2.py @@ -0,0 +1,520 @@ +import h5py +import os +import numpy as np +import pandas as pd +import geopandas as gpd +from shapely.geometry import Point +from scipy.interpolate import interp1d +from scipy.optimize import curve_fit +import matplotlib.pyplot as plt +from multiprocessing import Pool +from config import get_args +from noise_utils.interpolation import geoid_correction, refraction_correction, interpolate_labels, apply_interpolation +from noise_utils.data_processing import isolate_sea_land_photons + +import logging + +# Set up logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +# Define model functions +def power_model(x, a, b, c): + return a * np.power(x, b) + c + +def exp_model(x, a, b, c): + """Exponential model: a * exp(b * x) + c""" + return a * np.exp(b * x) + c + +def twilight_model(x, a, b, c): + return a * np.exp(-b * x**2) + c # Gaussian form for twilight + +def process_file(args): + """Process a single ATL03 file, skipping files missing required datasets.""" + file, beam, shoreline_data_path = args + try: + with h5py.File(file, 'r') as f: + # Check for required datasets + required_keys = [ + f'{beam}/bckgrd_atlas/bckgrd_rate', + f'{beam}/bckgrd_atlas/delta_time', + f'{beam}/heights/delta_time', + f'{beam}/heights/h_ph', + f'{beam}/geolocation/reference_photon_lat', + f'{beam}/geolocation/reference_photon_lon', + f'{beam}/geolocation/solar_azimuth', + f'{beam}/geolocation/solar_elevation' + ] + for key in required_keys: + if key not in f: + raise KeyError(f"Missing dataset: {key}") + + bckgrd_rate = f[f'{beam}/bckgrd_atlas/bckgrd_rate'][:].astype(np.float64) + bckgrd_time = f[f'{beam}/bckgrd_atlas/delta_time'][:] + heights = f[f'{beam}/heights/h_ph'][:] + segment_lat = f[f'{beam}/geolocation/reference_photon_lat'][:] + segment_lon = f[f'{beam}/geolocation/reference_photon_lon'][:] + segment_delta_time = f[f'{beam}/geolocation/delta_time'][:] + + Segment_Is_Land = pd.DataFrame({ + 'latitude': segment_lat, # Use unique column names to avoid conflicts + 'longitude': segment_lon, + 'delta_time': segment_delta_time + }) + + # Create a GeoDataFrame with geometry + Segment_Is_Land['geometry'] = gpd.points_from_xy(Segment_Is_Land['longitude'], Segment_Is_Land['latitude']) + ICESat2_GDF = gpd.GeoDataFrame(Segment_Is_Land, crs="EPSG:4326") + + # Determine land/ocean classification + Segment_Is_Land_Labels = isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF) + ICESat2_GDF['is_land'] = Segment_Is_Land_Labels + + # Interpolate is_land labels to bckgrd_time + interp_is_land = interp1d( + ICESat2_GDF['delta_time'], + ICESat2_GDF['is_land'].astype(int), + bounds_error=False, + fill_value=(ICESat2_GDF['is_land'].astype(int).iloc[0], ICESat2_GDF['is_land'].astype(int).iloc[-1]) + ) + is_land_interpolated = interp_is_land(bckgrd_time).round().astype(int) + + # ##########Debug################################# + # # Interpolate latitude and longitude to bckgrd_time + # interp_lat = interp1d( + # ICESat2_GDF['delta_time'], + # ICESat2_GDF['latitude'], + # bounds_error=False, + # fill_value=(ICESat2_GDF['latitude'].iloc[0], ICESat2_GDF['latitude'].iloc[-1]) + # ) + # interp_lon = interp1d( + # ICESat2_GDF['delta_time'], + # ICESat2_GDF['longitude'], + # bounds_error=False, + # fill_value=(ICESat2_GDF['longitude'].iloc[0], ICESat2_GDF['longitude'].iloc[-1]) + # ) + # interpolated_lat = interp_lat(bckgrd_time) + # interpolated_lon = interp_lon(bckgrd_time) + + # # Create a GeoDataFrame for is_land_interpolated with lat/lon + # is_land_df = pd.DataFrame({ + # 'delta_time': bckgrd_time, + # 'latitude': interpolated_lat, + # 'longitude': interpolated_lon, + # 'is_land': is_land_interpolated + # }) + # is_land_gdf = gpd.GeoDataFrame( + # is_land_df, + # geometry=gpd.points_from_xy(is_land_df['longitude'], is_land_df['latitude']), + # crs="EPSG:4326" + # ) + + # # Save to a GeoPackage file + # file_dir = os.path.dirname(file) + # is_land_output_dir = os.path.join(file_dir, "is_land_interpolated") + # if not os.path.exists(is_land_output_dir): + # os.makedirs(is_land_output_dir) + # output_filename = os.path.join(is_land_output_dir, f"{os.path.basename(file)}_is_land.gpkg") + # is_land_gdf.to_file(output_filename, driver="GPKG") + # logger.info(f"Saved is_land_interpolated to {output_filename}") + ############################################## + + # Compute total background rates for land and ocean + land_mask = is_land_interpolated == 1 + ocean_mask = is_land_interpolated == 0 + total_background_rate_land = np.mean(bckgrd_rate[land_mask]) if np.sum(land_mask) > 0 else np.nan + total_background_rate_ocean = np.mean(bckgrd_rate[ocean_mask]) if np.sum(ocean_mask) > 0 else np.nan + + # Solar elevation handling + FILL_VALUE = 3.4028235e38 + solar_elevations = f[f'{beam}/geolocation/solar_elevation'][:].astype(np.float64) + valid_solar = solar_elevations[(solar_elevations != FILL_VALUE) & (np.abs(solar_elevations) < 1e30) & np.isfinite(solar_elevations)] + solar_elevation = np.nan if valid_solar.size == 0 else np.mean(valid_solar) + + mean_photon_height = np.mean(heights) if heights.size > 0 else np.nan + + result = { + 'file': os.path.basename(file), + 'total_background_rate_land': total_background_rate_land, + 'total_background_rate_ocean': total_background_rate_ocean, + 'solar_elevation': solar_elevation, + 'mean_photon_height': mean_photon_height + } + logger.info(f"Processed {file}: {result}") + return result + except Exception as e: + logger.error(f"Error processing {file}: {str(e)}") + return {'file': os.path.basename(file), 'error': str(e)} + +def fit_surface_model(df, classification, surface_type, model_func, p0, bounds, x_col='solar_elevation', y_col='solar_background_rate'): + """Fit a model to a specific classification and surface type.""" + subset = df[(df['classification'] == classification) & (df['surface_type'] == surface_type)].copy() + if len(subset) < 3: + print(f"Warning: Insufficient data for {classification} {surface_type} model.") + return None, None, None + + mask = subset[x_col].notna() & subset[y_col].notna() & np.isfinite(subset[x_col]) & np.isfinite(subset[y_col]) + valid_x = subset.loc[mask, x_col] + valid_y = subset.loc[mask, y_col] + + if len(valid_x) < 3: + print(f"Warning: Fewer than 3 valid points for {classification} {surface_type} model.") + return None, None, None + + try: + popt, _ = curve_fit(model_func, valid_x, valid_y, p0=p0, bounds=bounds, maxfev=20000) + y_pred = model_func(valid_x, *popt) + r2 = 1 - np.sum((valid_y - y_pred)**2) / np.sum((valid_y - np.mean(valid_y))**2) + return popt, r2, lambda x: model_func(x, *popt) + except RuntimeError as e: + print(f"Fit failed for {classification} {surface_type}: {e}") + return None, None, None + +def load_and_process_files(atl03_directory, beam, shoreline_data_path): + """Load and process ATL03 files in parallel.""" + atl03_files = [os.path.join(atl03_directory, f) for f in os.listdir(atl03_directory) if f.endswith('.h5') and 'ATL03' in f] + print(f"Found {len(atl03_files)} ATL03 files.") + + if not atl03_files: + raise ValueError("No ATL03 files found in the directory.") + + with Pool() as pool: + results = pool.map(process_file, [(f, beam, shoreline_data_path) for f in atl03_files]) + + print("Results from process_file:", results) # Debug output + df = pd.DataFrame(results) + + + if 'error' in df.columns: + error_files = df[df['error'].notna()]['file'].tolist() + print(f"Errors in {len(error_files)} files: {error_files}") + df = df[df['error'].isna()].drop(columns=['error']) + + if df.empty: + raise ValueError("No files were successfully processed. Check the error messages above.") + + print("DataFrame columns after processing:", df.columns) + return df + +def assign_surface_type(df): + """Assign surface type based on background rates.""" + required_columns = ['total_background_rate_land', 'total_background_rate_ocean'] + missing_columns = [col for col in required_columns if col not in df.columns] + if missing_columns: + raise KeyError(f"Missing required columns in DataFrame: {missing_columns}") + + df['surface_type'] = np.where( + df['total_background_rate_land'].notna() & (df['total_background_rate_land'] > 0), + 'Land', + np.where(df['total_background_rate_ocean'].notna() & (df['total_background_rate_ocean'] > 0), 'Ocean', 'Mixed') + ) + return df + +def classify_data(df, twilight_threshold=6.0): + """Classify data into Daytime, Nighttime, Twilight, or Unknown.""" + df['classification'] = np.where( + df['solar_elevation'].isna(), 'Unknown', + np.where(df['solar_elevation'] > twilight_threshold, 'Daytime', + np.where(df['solar_elevation'] < -twilight_threshold, 'Nighttime', 'Twilight')) + ) + daytime_df = df[df['classification'] == 'Daytime'].copy() + nighttime_df = df[df['classification'] == 'Nighttime'].copy() + twilight_df = df[df['classification'] == 'Twilight'].copy() + unknown_df = df[df['classification'] == 'Unknown'].copy() + print(f"Daytime: {len(daytime_df)}, Nighttime: {len(nighttime_df)}, Twilight: {len(twilight_df)}, Unknown: {len(unknown_df)}") + return df, daytime_df, nighttime_df, twilight_df, unknown_df + +def calculate_non_solar_rate(nighttime_df): + """Calculate the non-solar background rate from nighttime data.""" + non_solar_rate_land = np.nanmean(nighttime_df['total_background_rate_land']) + non_solar_rate_ocean = np.nanmean(nighttime_df['total_background_rate_ocean']) + non_solar_rate = np.nanmean([non_solar_rate_land, non_solar_rate_ocean]) + print(f"Non-solar background rate (land): {non_solar_rate_land:.2e} ph/s") + print(f"Non-solar background rate (ocean): {non_solar_rate_ocean:.2e} ph/s") + print(f"Non-solar background rate (combined): {non_solar_rate:.2e} ph/s") + return non_solar_rate + +def compute_solar_background_rates(df, non_solar_rate): + """Compute solar background rates for land and ocean.""" + df['solar_background_rate_land'] = (df['total_background_rate_land'] - non_solar_rate).clip(lower=0) + df['solar_background_rate_ocean'] = (df['total_background_rate_ocean'] - non_solar_rate).clip(lower=0) + df['solar_background_rate'] = np.where( + df['surface_type'] == 'Land', df['solar_background_rate_land'], + np.where(df['surface_type'] == 'Ocean', df['solar_background_rate_ocean'], np.nan) + ) + return df + +def fit_daytime_model(df, daytime_df, non_solar_rate): + """Fit daytime models for land and ocean.""" + daytime_models = {} + for surface_type in ['Land', 'Ocean']: + subset = daytime_df[daytime_df['surface_type'] == surface_type].copy() + if len(subset) < 3: + print(f"Warning: Insufficient daytime {surface_type} data for modeling.") + continue + + mask = subset['solar_elevation'].notna() & subset['solar_background_rate'].notna() & \ + np.isfinite(subset['solar_elevation']) & np.isfinite(subset['solar_background_rate']) + valid_x = subset.loc[mask, 'solar_elevation'] + valid_y = subset.loc[mask, 'solar_background_rate'] + + if len(valid_x) < 3: + print(f"Warning: Fewer than 3 valid points for daytime {surface_type} model.") + continue + + # Remove outliers + log_y = np.log10(valid_y + 1) + mean_log_y = np.mean(log_y) + std_log_y = np.std(log_y) + outlier_mask = (log_y > mean_log_y - 3 * std_log_y) & (log_y < mean_log_y + 3 * std_log_y) + valid_x = valid_x[outlier_mask] + valid_y = valid_y[outlier_mask] + + print(f"Daytime regression ({surface_type}): {len(valid_x)} valid data points") + try: + p0_exp = [np.max(valid_y) - non_solar_rate, 0.05, non_solar_rate] + bounds_exp = ([0, 0.01, non_solar_rate * 0.9], [1e8, 0.5, non_solar_rate * 1.1]) + popt_exp, _ = curve_fit(exp_model, valid_x, valid_y, p0=p0_exp, bounds=bounds_exp, maxfev=20000) + r2_exp = 1 - np.sum((valid_y - exp_model(valid_x, *popt_exp))**2) / np.sum((valid_y - np.mean(valid_y))**2) + + x_shifted = valid_x - min(valid_x) + 1 + p0_power = [np.max(valid_y) - non_solar_rate, 0.6, non_solar_rate] + bounds_power = ([0, 0.1, non_solar_rate * 0.9], [1e8, 1.0, non_solar_rate * 1.1]) + popt_power, _ = curve_fit(power_model, x_shifted, valid_y, p0=p0_power, bounds=bounds_power, maxfev=20000) + r2_power = 1 - np.sum((valid_y - power_model(x_shifted, *popt_power))**2) / np.sum((valid_y - np.mean(valid_y))**2) + + if r2_power > r2_exp: + print(f"Daytime model ({surface_type}, power law): rate = {popt_power[0]:.2e} * solar_elevation^{popt_power[1]:.2f} + {popt_power[2]:.2e}, R² = {r2_power:.3f}") + daytime_models[surface_type] = {'params': popt_power, 'r2': r2_power, 'model': lambda x: power_model(x - min(valid_x) + 1, *popt_power)} + else: + print(f"Daytime model ({surface_type}, exponential): rate = {popt_exp[0]:.2e} * exp({popt_exp[1]:.2f} * solar_elevation) + {popt_exp[2]:.2e}, R² = {r2_exp:.3f}") + daytime_models[surface_type] = {'params': popt_exp, 'r2': r2_exp, 'model': lambda x: exp_model(x, *popt_exp)} + + # Apply model + daytime_mask = (df['classification'] == 'Daytime') & (df['surface_type'] == surface_type) + valid_daytime_mask = daytime_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + x_for_model = df.loc[valid_daytime_mask, 'solar_elevation'] + if r2_power > r2_exp: + x_for_model_shifted = x_for_model - min(valid_x) + 1 + df.loc[valid_daytime_mask, 'solar_background_rate'] = daytime_models[surface_type]['model'](x_for_model_shifted).clip(lower=0) + else: + df.loc[valid_daytime_mask, 'solar_background_rate'] = daytime_models[surface_type]['model'](x_for_model).clip(lower=0) + df.loc[daytime_mask & ~valid_daytime_mask, 'solar_background_rate'] = non_solar_rate + except RuntimeError as e: + print(f"Daytime model fitting failed for {surface_type}: {e}. Using non-solar rate as fallback.") + df.loc[(df['classification'] == 'Daytime') & (df['surface_type'] == surface_type), 'solar_background_rate'] = non_solar_rate + return df, daytime_models + + +def fit_twilight_model(df, twilight_df, non_solar_rate): + """Fit twilight models for land and ocean.""" + twilight_models = {} + if len(twilight_df) > 3: + df.loc[df['classification'] == 'Twilight', 'solar_background_rate'] = ( + df['solar_background_rate'].fillna(0).clip(lower=0) + ) + for surface_type in ['Land', 'Ocean']: + subset = twilight_df[twilight_df['surface_type'] == surface_type].copy() + if len(subset) < 3: + print(f"Warning: Insufficient twilight {surface_type} data for modeling.") + continue + + mask = subset['solar_elevation'].notna() & subset['solar_background_rate'].notna() & \ + np.isfinite(subset['solar_elevation']) & np.isfinite(subset['solar_background_rate']) + valid_twilight_x = subset.loc[mask, 'solar_elevation'] + valid_twilight_y = subset.loc[mask, 'solar_background_rate'] + + if len(valid_twilight_x) < 3: + print(f"Warning: Fewer than 3 valid points for twilight {surface_type} model.") + continue + + print(f"Twilight regression ({surface_type}): {len(valid_twilight_x)} valid data points") + try: + initial_a = np.max(valid_twilight_y) - non_solar_rate + initial_b = 0.01 # Smaller b for a flatter Gaussian + initial_c = non_solar_rate + p0 = [initial_a, initial_b, initial_c] + bounds = ([0, 0.001, non_solar_rate * 0.9], [1e6, 1.0, non_solar_rate * 1.1]) + + popt, _ = curve_fit(twilight_model, valid_twilight_x, valid_twilight_y, p0=p0, bounds=bounds, maxfev=50000) + y_pred = twilight_model(valid_twilight_x, *popt) + r_squared = 1 - np.sum((valid_twilight_y - y_pred)**2) / np.sum((valid_twilight_y - np.mean(valid_twilight_y))**2) + + if r_squared < 0: + # Fallback to a constant model (mean of the data) + mean_rate = np.mean(valid_twilight_y) + twilight_models[surface_type] = { + 'params': [mean_rate], + 'r2': 0.0, # R² of a constant model is 0 by definition + 'model': lambda x: np.full_like(x, mean_rate) + } + print(f"Twilight model ({surface_type}) failed with R² = {r_squared:.3f}. Using constant model: {mean_rate:.2e} ph/s") + + twilight_mask = (df['classification'] == 'Twilight') & (df['surface_type'] == surface_type) + valid_twilight_mask = twilight_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + df.loc[valid_twilight_mask, 'solar_background_rate'] = mean_rate + df.loc[twilight_mask & ~valid_twilight_mask, 'solar_background_rate'] = non_solar_rate + else: + print(f"Twilight model ({surface_type}): rate = {popt[0]:.2e} * exp(-{popt[1]:.2f} * solar_elevation^2) + {popt[2]:.2e}, R² = {r_squared:.3f}") + twilight_models[surface_type] = {'params': popt, 'r2': r_squared, 'model': lambda x: twilight_model(x, *popt)} + + twilight_mask = (df['classification'] == 'Twilight') & (df['surface_type'] == surface_type) + valid_twilight_mask = twilight_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + x_for_model = df.loc[valid_twilight_mask, 'solar_elevation'] + df.loc[valid_twilight_mask, 'solar_background_rate'] = twilight_models[surface_type]['model'](x_for_model).clip(lower=0) + df.loc[twilight_mask & ~valid_twilight_mask, 'solar_background_rate'] = non_solar_rate + except RuntimeError as e: + print(f"Twilight model fitting failed for {surface_type}: {e}. Setting twilight rates to non-solar rate.") + df.loc[(df['classification'] == 'Twilight') & (df['surface_type'] == surface_type), 'solar_background_rate'] = non_solar_rate + else: + print("Too few twilight points for modeling. Setting twilight rates to non-solar rate.") + df.loc[df['classification'] == 'Twilight', 'solar_background_rate'] = non_solar_rate + return df, twilight_models + +def create_diagnostic_plot(df, daytime_df, twilight_df, nighttime_df, daytime_models, twilight_models, non_solar_rate, output_dir): + """Create diagnostic plot of background rate vs. solar elevation, including nighttime comparison.""" + plt.figure(figsize=(10, 6)) + + # Total background rate (all data) + plt.scatter(df['solar_elevation'], df['total_background_rate'], c='gray', alpha=0.5, label='Total') + + # Daytime data + plt.scatter(daytime_df[daytime_df['surface_type'] == 'Land']['solar_elevation'], + daytime_df[daytime_df['surface_type'] == 'Land']['solar_background_rate'], + c='blue', alpha=0.5, label='Daytime Land') + plt.scatter(daytime_df[daytime_df['surface_type'] == 'Ocean']['solar_elevation'], + daytime_df[daytime_df['surface_type'] == 'Ocean']['solar_background_rate'], + c='cyan', alpha=0.5, label='Daytime Ocean') + + # Twilight data + plt.scatter(twilight_df[twilight_df['surface_type'] == 'Land']['solar_elevation'], + twilight_df[twilight_df['surface_type'] == 'Land']['solar_background_rate'], + c='orange', alpha=0.5, label='Twilight Land') + plt.scatter(twilight_df[twilight_df['surface_type'] == 'Ocean']['solar_elevation'], + twilight_df[twilight_df['surface_type'] == 'Ocean']['solar_background_rate'], + c='yellow', alpha=0.5, label='Twilight Ocean') + + # Nighttime data (using total_background_rate since solar contribution is minimal) + plt.scatter(nighttime_df[nighttime_df['surface_type'] == 'Land']['solar_elevation'], + nighttime_df[nighttime_df['surface_type'] == 'Land']['total_background_rate'], + c='purple', alpha=0.5, label='Nighttime Land') + plt.scatter(nighttime_df[nighttime_df['surface_type'] == 'Ocean']['solar_elevation'], + nighttime_df[nighttime_df['surface_type'] == 'Ocean']['total_background_rate'], + c='lightgreen', alpha=0.5, label='Nighttime Ocean') + + # Non-solar background rate line + plt.axhline(non_solar_rate, color='r', linestyle='--', label=f'Non-Solar: {non_solar_rate:.2e} ph/s') + + # Plot daytime fits + for surface_type in daytime_models: + if daytime_models[surface_type]['model'] is not None: + x_fit = np.linspace(min(daytime_df['solar_elevation']), max(daytime_df['solar_elevation']), 100) + y_fit = daytime_models[surface_type]['model'](x_fit if 'power' not in daytime_models[surface_type] else x_fit - min(daytime_df['solar_elevation']) + 1) + plt.plot(x_fit, y_fit, label=f'Daytime {surface_type} Fit (R²={daytime_models[surface_type]["r2"]:.3f})', + linestyle='-' if surface_type == 'Land' else '--') + + # Plot twilight fits + for surface_type in twilight_models: + if twilight_models[surface_type]['model'] is not None: + x_twilight = np.linspace(min(twilight_df['solar_elevation']), max(twilight_df['solar_elevation']), 100) + y_twilight = twilight_models[surface_type]['model'](x_twilight) + plt.plot(x_twilight, y_twilight, label=f'Twilight {surface_type} Fit (R²={twilight_models[surface_type]["r2"]:.3f})', + linestyle='-' if surface_type == 'Land' else '--') + + # Set plot properties + plt.yscale('log') + plt.ylim(1e3, 1e8) + plt.xlabel('Solar Elevation (degrees)') + plt.ylabel('Background Rate (ph/s)') + plt.legend() + plt.title('Background Rate vs. Solar Elevation (Land vs. Ocean) with Nighttime Comparison') + + # Save the plot + plt.savefig(os.path.join(output_dir, "background_vs_elevation_with_nighttime_2021.png")) + plt.close() + +def create_calibration_plot(df, daytime_df, output_dir): + """Create a calibration plot using mean photon height as a proxy.""" + if not daytime_df.empty: + sample_file = daytime_df.iloc[0] + heights = sample_file['mean_photon_height'] + if np.isfinite(heights): + solar_rate = sample_file['solar_background_rate'] + bin_size = 0.1 + # Simulate histogram with 1000 points + hist, edges = np.histogram(np.array([heights] * 1000), bins=np.arange(min(heights) - 1, max(heights) + 1, bin_size)) + photons_per_bin = solar_rate * (1000 / np.sum(hist)) * bin_size / (max(heights) - min(heights) + 2) + calibrated_counts = np.maximum(hist - photons_per_bin, 0) + calibrated_heights = [] + for i, count in enumerate(calibrated_counts): + if count > 0: + calibrated_heights.extend(np.random.uniform(edges[i], edges[i+1], int(count))) + + plt.figure(figsize=(8, 6)) + plt.hist([heights] * 1000, bins=100, alpha=0.5, label='Original (Simulated)') + plt.hist(calibrated_heights, bins=100, alpha=0.5, label='Calibrated') + plt.xlabel('Photon Height (m)') + plt.ylabel('Count') + plt.legend() + plt.title(f'Calibration Example: {sample_file["file"]}') + plt.savefig(os.path.join(output_dir, "calibration_example.png")) + plt.close() + +def save_results(df, output_dir): + """Save the results to a CSV file.""" + df.to_csv(os.path.join(output_dir, "atl03_analysis_updated.csv"), index=False) + +def analyze_icesat2_data(atl03_directory, beam='gt1l', twilight_threshold=6.0, output_dir="output", shoreline_data_path=None): + """Main analysis function orchestrating the workflow.""" + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + df = load_and_process_files(atl03_directory, beam, shoreline_data_path) + if df.empty: + raise ValueError("No data processed successfully. Check logs for errors.") + + df = assign_surface_type(df) + + # Compute total_background_rate based on surface_type + df['total_background_rate'] = np.where( + df['surface_type'] == 'Land', df['total_background_rate_land'], + np.where(df['surface_type'] == 'Ocean', df['total_background_rate_ocean'], np.nan) + ) + + df, daytime_df, nighttime_df, twilight_df, unknown_df = classify_data(df, twilight_threshold) + + non_solar_rate = calculate_non_solar_rate(nighttime_df) + df = compute_solar_background_rates(df, non_solar_rate) + + # Recreate filtered DataFrames to include the updated columns from compute_solar_background_rates + daytime_df = df[df['classification'] == 'Daytime'].copy() + nighttime_df = df[df['classification'] == 'Nighttime'].copy() + twilight_df = df[df['classification'] == 'Twilight'].copy() + unknown_df = df[df['classification'] == 'Unknown'].copy() + + df, daytime_models = fit_daytime_model(df, daytime_df, non_solar_rate) + df, twilight_models = fit_twilight_model(df, twilight_df, non_solar_rate) + save_results(df, output_dir) + + # Updated call to include nighttime_df + create_diagnostic_plot(df, daytime_df, twilight_df, nighttime_df, daytime_models, twilight_models, non_solar_rate, output_dir) + # create_calibration_plot(df, daytime_df, output_dir) + + return df, { + 'daytime_models': daytime_models, + 'twilight_models': twilight_models, + 'non_solar_rate': non_solar_rate + } + +if __name__ == "__main__": + args = get_args() + atl03_directory = os.path.join(args.workspace_path, args.atl03_path) + shoreline_data_path = os.path.join(args.workspace_path, args.shoreline_data) + output_dir = os.path.join(args.workspace_path, args.output_path) + df, models = analyze_icesat2_data(atl03_directory, args.beam, output_dir=output_dir, shoreline_data_path=shoreline_data_path) + print("Analysis complete.") + + + + + \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2.py b/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2.py new file mode 100644 index 0000000..3701a3f --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2.py @@ -0,0 +1,496 @@ +import h5py +import os +import numpy as np +import pandas as pd +import geopandas as gpd +from shapely.geometry import Point +from scipy.interpolate import interp1d +from scipy.optimize import curve_fit +import matplotlib.pyplot as plt +from multiprocessing import Pool +from config import get_args +from noise_utils.interpolation import geoid_correction, refraction_correction, interpolate_labels, apply_interpolation +from noise_utils.data_processing import isolate_sea_land_photons + +import logging + +# Set up logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +# Define model functions +def power_model(x, a, b, c): + return a * np.power(x, b) + c + +def exp_model(x, a, b, c): + """Exponential model: a * exp(b * x) + c""" + return a * np.exp(b * x) + c + +def twilight_model(x, a, b, c): + return a * np.exp(-b * x**2) + c # Gaussian form for twilight + +def process_file(args): + """Process a single ATL03 file, skipping files missing required datasets.""" + file, beam, shoreline_data_path = args + try: + with h5py.File(file, 'r') as f: + # Check for required datasets + required_keys = [ + f'{beam}/bckgrd_atlas/bckgrd_rate', + f'{beam}/bckgrd_atlas/delta_time', + f'{beam}/heights/delta_time', + f'{beam}/heights/h_ph', + f'{beam}/geolocation/reference_photon_lat', + f'{beam}/geolocation/reference_photon_lon', + f'{beam}/geolocation/solar_azimuth', + f'{beam}/geolocation/solar_elevation' + ] + for key in required_keys: + if key not in f: + raise KeyError(f"Missing dataset: {key}") + + bckgrd_rate = f[f'{beam}/bckgrd_atlas/bckgrd_rate'][:].astype(np.float64) + bckgrd_time = f[f'{beam}/bckgrd_atlas/delta_time'][:] + heights = f[f'{beam}/heights/h_ph'][:] + segment_lat = f[f'{beam}/geolocation/reference_photon_lat'][:] + segment_lon = f[f'{beam}/geolocation/reference_photon_lon'][:] + segment_delta_time = f[f'{beam}/geolocation/delta_time'][:] + + Segment_Is_Land = pd.DataFrame({ + 'latitude': segment_lat, # Use unique column names to avoid conflicts + 'longitude': segment_lon, + 'delta_time': segment_delta_time + }) + + # Create a GeoDataFrame with geometry + Segment_Is_Land['geometry'] = gpd.points_from_xy(Segment_Is_Land['longitude'], Segment_Is_Land['latitude']) + ICESat2_GDF = gpd.GeoDataFrame(Segment_Is_Land, crs="EPSG:4326") + + # Determine land/ocean classification + Segment_Is_Land_Labels = isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF) + ICESat2_GDF['is_land'] = Segment_Is_Land_Labels + + # Interpolate is_land labels to bckgrd_time + interp_is_land = interp1d( + ICESat2_GDF['delta_time'], + ICESat2_GDF['is_land'].astype(int), + bounds_error=False, + fill_value=(ICESat2_GDF['is_land'].astype(int).iloc[0], ICESat2_GDF['is_land'].astype(int).iloc[-1]) + ) + is_land_interpolated = interp_is_land(bckgrd_time).round().astype(int) + + # ##########Debug################################# + # # Interpolate latitude and longitude to bckgrd_time + # interp_lat = interp1d( + # ICESat2_GDF['delta_time'], + # ICESat2_GDF['latitude'], + # bounds_error=False, + # fill_value=(ICESat2_GDF['latitude'].iloc[0], ICESat2_GDF['latitude'].iloc[-1]) + # ) + # interp_lon = interp1d( + # ICESat2_GDF['delta_time'], + # ICESat2_GDF['longitude'], + # bounds_error=False, + # fill_value=(ICESat2_GDF['longitude'].iloc[0], ICESat2_GDF['longitude'].iloc[-1]) + # ) + # interpolated_lat = interp_lat(bckgrd_time) + # interpolated_lon = interp_lon(bckgrd_time) + + # # Create a GeoDataFrame for is_land_interpolated with lat/lon + # is_land_df = pd.DataFrame({ + # 'delta_time': bckgrd_time, + # 'latitude': interpolated_lat, + # 'longitude': interpolated_lon, + # 'is_land': is_land_interpolated + # }) + # is_land_gdf = gpd.GeoDataFrame( + # is_land_df, + # geometry=gpd.points_from_xy(is_land_df['longitude'], is_land_df['latitude']), + # crs="EPSG:4326" + # ) + + # # Save to a GeoPackage file + # file_dir = os.path.dirname(file) + # is_land_output_dir = os.path.join(file_dir, "is_land_interpolated") + # if not os.path.exists(is_land_output_dir): + # os.makedirs(is_land_output_dir) + # output_filename = os.path.join(is_land_output_dir, f"{os.path.basename(file)}_is_land.gpkg") + # is_land_gdf.to_file(output_filename, driver="GPKG") + # logger.info(f"Saved is_land_interpolated to {output_filename}") + ############################################## + + # Compute total background rates for land and ocean + land_mask = is_land_interpolated == 1 + ocean_mask = is_land_interpolated == 0 + total_background_rate_land = np.mean(bckgrd_rate[land_mask]) if np.sum(land_mask) > 0 else np.nan + total_background_rate_ocean = np.mean(bckgrd_rate[ocean_mask]) if np.sum(ocean_mask) > 0 else np.nan + + # Solar elevation handling + FILL_VALUE = 3.4028235e38 + solar_elevations = f[f'{beam}/geolocation/solar_elevation'][:].astype(np.float64) + valid_solar = solar_elevations[(solar_elevations != FILL_VALUE) & (np.abs(solar_elevations) < 1e30) & np.isfinite(solar_elevations)] + solar_elevation = np.nan if valid_solar.size == 0 else np.mean(valid_solar) + + mean_photon_height = np.mean(heights) if heights.size > 0 else np.nan + + result = { + 'file': os.path.basename(file), + 'total_background_rate_land': total_background_rate_land, + 'total_background_rate_ocean': total_background_rate_ocean, + 'solar_elevation': solar_elevation, + 'mean_photon_height': mean_photon_height + } + logger.info(f"Processed {file}: {result}") + return result + except Exception as e: + logger.error(f"Error processing {file}: {str(e)}") + return {'file': os.path.basename(file), 'error': str(e)} + +def fit_surface_model(df, classification, surface_type, model_func, p0, bounds, x_col='solar_elevation', y_col='solar_background_rate'): + """Fit a model to a specific classification and surface type.""" + subset = df[(df['classification'] == classification) & (df['surface_type'] == surface_type)].copy() + if len(subset) < 3: + print(f"Warning: Insufficient data for {classification} {surface_type} model.") + return None, None, None + + mask = subset[x_col].notna() & subset[y_col].notna() & np.isfinite(subset[x_col]) & np.isfinite(subset[y_col]) + valid_x = subset.loc[mask, x_col] + valid_y = subset.loc[mask, y_col] + + if len(valid_x) < 3: + print(f"Warning: Fewer than 3 valid points for {classification} {surface_type} model.") + return None, None, None + + try: + popt, _ = curve_fit(model_func, valid_x, valid_y, p0=p0, bounds=bounds, maxfev=20000) + y_pred = model_func(valid_x, *popt) + r2 = 1 - np.sum((valid_y - y_pred)**2) / np.sum((valid_y - np.mean(valid_y))**2) + return popt, r2, lambda x: model_func(x, *popt) + except RuntimeError as e: + print(f"Fit failed for {classification} {surface_type}: {e}") + return None, None, None + +def load_and_process_files(atl03_directory, beam, shoreline_data_path): + """Load and process ATL03 files in parallel.""" + atl03_files = [os.path.join(atl03_directory, f) for f in os.listdir(atl03_directory) if f.endswith('.h5') and 'ATL03' in f] + print(f"Found {len(atl03_files)} ATL03 files.") + + if not atl03_files: + raise ValueError("No ATL03 files found in the directory.") + + with Pool() as pool: + results = pool.map(process_file, [(f, beam, shoreline_data_path) for f in atl03_files]) + + print("Results from process_file:", results) # Debug output + df = pd.DataFrame(results) + + + if 'error' in df.columns: + error_files = df[df['error'].notna()]['file'].tolist() + print(f"Errors in {len(error_files)} files: {error_files}") + df = df[df['error'].isna()].drop(columns=['error']) + + if df.empty: + raise ValueError("No files were successfully processed. Check the error messages above.") + + print("DataFrame columns after processing:", df.columns) + return df + +def assign_surface_type(df): + """Assign surface type based on background rates.""" + required_columns = ['total_background_rate_land', 'total_background_rate_ocean'] + missing_columns = [col for col in required_columns if col not in df.columns] + if missing_columns: + raise KeyError(f"Missing required columns in DataFrame: {missing_columns}") + + df['surface_type'] = np.where( + df['total_background_rate_land'].notna() & (df['total_background_rate_land'] > 0), + 'Land', + np.where(df['total_background_rate_ocean'].notna() & (df['total_background_rate_ocean'] > 0), 'Ocean', 'Mixed') + ) + return df + +def classify_data(df, twilight_threshold=6.0): + """Classify data into Daytime, Nighttime, Twilight, or Unknown.""" + df['classification'] = np.where( + df['solar_elevation'].isna(), 'Unknown', + np.where(df['solar_elevation'] > twilight_threshold, 'Daytime', + np.where(df['solar_elevation'] < -twilight_threshold, 'Nighttime', 'Twilight')) + ) + daytime_df = df[df['classification'] == 'Daytime'].copy() + nighttime_df = df[df['classification'] == 'Nighttime'].copy() + twilight_df = df[df['classification'] == 'Twilight'].copy() + unknown_df = df[df['classification'] == 'Unknown'].copy() + print(f"Daytime: {len(daytime_df)}, Nighttime: {len(nighttime_df)}, Twilight: {len(twilight_df)}, Unknown: {len(unknown_df)}") + return df, daytime_df, nighttime_df, twilight_df, unknown_df + +def calculate_non_solar_rate(nighttime_df): + """Calculate the non-solar background rate from nighttime data.""" + non_solar_rate_land = np.nanmean(nighttime_df['total_background_rate_land']) + non_solar_rate_ocean = np.nanmean(nighttime_df['total_background_rate_ocean']) + non_solar_rate = np.nanmean([non_solar_rate_land, non_solar_rate_ocean]) + print(f"Non-solar background rate (land): {non_solar_rate_land:.2e} ph/s") + print(f"Non-solar background rate (ocean): {non_solar_rate_ocean:.2e} ph/s") + print(f"Non-solar background rate (combined): {non_solar_rate:.2e} ph/s") + return non_solar_rate + +def compute_solar_background_rates(df, non_solar_rate): + """Compute solar background rates for land and ocean.""" + df['solar_background_rate_land'] = (df['total_background_rate_land'] - non_solar_rate).clip(lower=0) + df['solar_background_rate_ocean'] = (df['total_background_rate_ocean'] - non_solar_rate).clip(lower=0) + df['solar_background_rate'] = np.where( + df['surface_type'] == 'Land', df['solar_background_rate_land'], + np.where(df['surface_type'] == 'Ocean', df['solar_background_rate_ocean'], np.nan) + ) + return df + +def fit_daytime_model(df, daytime_df, non_solar_rate): + """Fit daytime models for land and ocean.""" + daytime_models = {} + for surface_type in ['Land', 'Ocean']: + subset = daytime_df[daytime_df['surface_type'] == surface_type].copy() + if len(subset) < 3: + print(f"Warning: Insufficient daytime {surface_type} data for modeling.") + continue + + mask = subset['solar_elevation'].notna() & subset['solar_background_rate'].notna() & \ + np.isfinite(subset['solar_elevation']) & np.isfinite(subset['solar_background_rate']) + valid_x = subset.loc[mask, 'solar_elevation'] + valid_y = subset.loc[mask, 'solar_background_rate'] + + if len(valid_x) < 3: + print(f"Warning: Fewer than 3 valid points for daytime {surface_type} model.") + continue + + # Remove outliers + log_y = np.log10(valid_y + 1) + mean_log_y = np.mean(log_y) + std_log_y = np.std(log_y) + outlier_mask = (log_y > mean_log_y - 3 * std_log_y) & (log_y < mean_log_y + 3 * std_log_y) + valid_x = valid_x[outlier_mask] + valid_y = valid_y[outlier_mask] + + print(f"Daytime regression ({surface_type}): {len(valid_x)} valid data points") + try: + p0_exp = [np.max(valid_y) - non_solar_rate, 0.05, non_solar_rate] + bounds_exp = ([0, 0.01, non_solar_rate * 0.9], [1e8, 0.5, non_solar_rate * 1.1]) + popt_exp, _ = curve_fit(exp_model, valid_x, valid_y, p0=p0_exp, bounds=bounds_exp, maxfev=20000) + r2_exp = 1 - np.sum((valid_y - exp_model(valid_x, *popt_exp))**2) / np.sum((valid_y - np.mean(valid_y))**2) + + x_shifted = valid_x - min(valid_x) + 1 + p0_power = [np.max(valid_y) - non_solar_rate, 0.6, non_solar_rate] + bounds_power = ([0, 0.1, non_solar_rate * 0.9], [1e8, 1.0, non_solar_rate * 1.1]) + popt_power, _ = curve_fit(power_model, x_shifted, valid_y, p0=p0_power, bounds=bounds_power, maxfev=20000) + r2_power = 1 - np.sum((valid_y - power_model(x_shifted, *popt_power))**2) / np.sum((valid_y - np.mean(valid_y))**2) + + if r2_power > r2_exp: + print(f"Daytime model ({surface_type}, power law): rate = {popt_power[0]:.2e} * solar_elevation^{popt_power[1]:.2f} + {popt_power[2]:.2e}, R² = {r2_power:.3f}") + daytime_models[surface_type] = {'params': popt_power, 'r2': r2_power, 'model': lambda x: power_model(x - min(valid_x) + 1, *popt_power)} + else: + print(f"Daytime model ({surface_type}, exponential): rate = {popt_exp[0]:.2e} * exp({popt_exp[1]:.2f} * solar_elevation) + {popt_exp[2]:.2e}, R² = {r2_exp:.3f}") + daytime_models[surface_type] = {'params': popt_exp, 'r2': r2_exp, 'model': lambda x: exp_model(x, *popt_exp)} + + # Apply model + daytime_mask = (df['classification'] == 'Daytime') & (df['surface_type'] == surface_type) + valid_daytime_mask = daytime_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + x_for_model = df.loc[valid_daytime_mask, 'solar_elevation'] + if r2_power > r2_exp: + x_for_model_shifted = x_for_model - min(valid_x) + 1 + df.loc[valid_daytime_mask, 'solar_background_rate'] = daytime_models[surface_type]['model'](x_for_model_shifted).clip(lower=0) + else: + df.loc[valid_daytime_mask, 'solar_background_rate'] = daytime_models[surface_type]['model'](x_for_model).clip(lower=0) + df.loc[daytime_mask & ~valid_daytime_mask, 'solar_background_rate'] = non_solar_rate + except RuntimeError as e: + print(f"Daytime model fitting failed for {surface_type}: {e}. Using non-solar rate as fallback.") + df.loc[(df['classification'] == 'Daytime') & (df['surface_type'] == surface_type), 'solar_background_rate'] = non_solar_rate + return df, daytime_models + + +def fit_twilight_model(df, twilight_df, non_solar_rate): + """Fit twilight models for land and ocean.""" + twilight_models = {} + if len(twilight_df) > 3: + df.loc[df['classification'] == 'Twilight', 'solar_background_rate'] = ( + df['solar_background_rate'].fillna(0).clip(lower=0) + ) + for surface_type in ['Land', 'Ocean']: + subset = twilight_df[twilight_df['surface_type'] == surface_type].copy() + if len(subset) < 3: + print(f"Warning: Insufficient twilight {surface_type} data for modeling.") + continue + + mask = subset['solar_elevation'].notna() & subset['solar_background_rate'].notna() & \ + np.isfinite(subset['solar_elevation']) & np.isfinite(subset['solar_background_rate']) + valid_twilight_x = subset.loc[mask, 'solar_elevation'] + valid_twilight_y = subset.loc[mask, 'solar_background_rate'] + + if len(valid_twilight_x) < 3: + print(f"Warning: Fewer than 3 valid points for twilight {surface_type} model.") + continue + + print(f"Twilight regression ({surface_type}): {len(valid_twilight_x)} valid data points") + try: + initial_a = np.max(valid_twilight_y) - non_solar_rate + initial_b = 0.01 # Smaller b for a flatter Gaussian + initial_c = non_solar_rate + p0 = [initial_a, initial_b, initial_c] + bounds = ([0, 0.001, non_solar_rate * 0.9], [1e6, 1.0, non_solar_rate * 1.1]) + + popt, _ = curve_fit(twilight_model, valid_twilight_x, valid_twilight_y, p0=p0, bounds=bounds, maxfev=50000) + y_pred = twilight_model(valid_twilight_x, *popt) + r_squared = 1 - np.sum((valid_twilight_y - y_pred)**2) / np.sum((valid_twilight_y - np.mean(valid_twilight_y))**2) + + if r_squared < 0: + # Fallback to a constant model (mean of the data) + mean_rate = np.mean(valid_twilight_y) + twilight_models[surface_type] = { + 'params': [mean_rate], + 'r2': 0.0, # R² of a constant model is 0 by definition + 'model': lambda x: np.full_like(x, mean_rate) + } + print(f"Twilight model ({surface_type}) failed with R² = {r_squared:.3f}. Using constant model: {mean_rate:.2e} ph/s") + + twilight_mask = (df['classification'] == 'Twilight') & (df['surface_type'] == surface_type) + valid_twilight_mask = twilight_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + df.loc[valid_twilight_mask, 'solar_background_rate'] = mean_rate + df.loc[twilight_mask & ~valid_twilight_mask, 'solar_background_rate'] = non_solar_rate + else: + print(f"Twilight model ({surface_type}): rate = {popt[0]:.2e} * exp(-{popt[1]:.2f} * solar_elevation^2) + {popt[2]:.2e}, R² = {r_squared:.3f}") + twilight_models[surface_type] = {'params': popt, 'r2': r_squared, 'model': lambda x: twilight_model(x, *popt)} + + twilight_mask = (df['classification'] == 'Twilight') & (df['surface_type'] == surface_type) + valid_twilight_mask = twilight_mask & df['solar_elevation'].notna() & np.isfinite(df['solar_elevation']) + x_for_model = df.loc[valid_twilight_mask, 'solar_elevation'] + df.loc[valid_twilight_mask, 'solar_background_rate'] = twilight_models[surface_type]['model'](x_for_model).clip(lower=0) + df.loc[twilight_mask & ~valid_twilight_mask, 'solar_background_rate'] = non_solar_rate + except RuntimeError as e: + print(f"Twilight model fitting failed for {surface_type}: {e}. Setting twilight rates to non-solar rate.") + df.loc[(df['classification'] == 'Twilight') & (df['surface_type'] == surface_type), 'solar_background_rate'] = non_solar_rate + else: + print("Too few twilight points for modeling. Setting twilight rates to non-solar rate.") + df.loc[df['classification'] == 'Twilight', 'solar_background_rate'] = non_solar_rate + return df, twilight_models + +def create_diagnostic_plot(df, daytime_df, twilight_df, daytime_models, twilight_models, non_solar_rate, output_dir): + """Create diagnostic plot of background rate vs. solar elevation.""" + plt.figure(figsize=(10, 6)) + plt.scatter(df['solar_elevation'], df['total_background_rate'], c='gray', alpha=0.5, label='Total') + plt.scatter(daytime_df[daytime_df['surface_type'] == 'Land']['solar_elevation'], + daytime_df[daytime_df['surface_type'] == 'Land']['solar_background_rate'], + c='blue', alpha=0.5, label='Daytime Land') + plt.scatter(daytime_df[daytime_df['surface_type'] == 'Ocean']['solar_elevation'], + daytime_df[daytime_df['surface_type'] == 'Ocean']['solar_background_rate'], + c='cyan', alpha=0.5, label='Daytime Ocean') + plt.scatter(twilight_df[twilight_df['surface_type'] == 'Land']['solar_elevation'], + twilight_df[twilight_df['surface_type'] == 'Land']['solar_background_rate'], + c='orange', alpha=0.5, label='Twilight Land') + plt.scatter(twilight_df[twilight_df['surface_type'] == 'Ocean']['solar_elevation'], + twilight_df[twilight_df['surface_type'] == 'Ocean']['solar_background_rate'], + c='yellow', alpha=0.5, label='Twilight Ocean') + plt.axhline(non_solar_rate, color='r', linestyle='--', label=f'Non-Solar: {non_solar_rate:.2e} ph/s') + + # Plot daytime fits + for surface_type in daytime_models: + if daytime_models[surface_type]['model'] is not None: + x_fit = np.linspace(min(daytime_df['solar_elevation']), max(daytime_df['solar_elevation']), 100) + y_fit = daytime_models[surface_type]['model'](x_fit if 'power' not in daytime_models[surface_type] else x_fit - min(daytime_df['solar_elevation']) + 1) + plt.plot(x_fit, y_fit, label=f'Daytime {surface_type} Fit (R²={daytime_models[surface_type]["r2"]:.3f})', + linestyle='-' if surface_type == 'Land' else '--') + + # Plot twilight fits + for surface_type in twilight_models: + if twilight_models[surface_type]['model'] is not None: + x_twilight = np.linspace(min(twilight_df['solar_elevation']), max(twilight_df['solar_elevation']), 100) + y_twilight = twilight_models[surface_type]['model'](x_twilight) + plt.plot(x_twilight, y_twilight, label=f'Twilight {surface_type} Fit (R²={twilight_models[surface_type]["r2"]:.3f})', + linestyle='-' if surface_type == 'Land' else '--') + + plt.yscale('log') + plt.ylim(1e3, 1e8) + plt.xlabel('Solar Elevation (degrees)') + plt.ylabel('Background Rate (ph/s)') + plt.legend() + plt.title('Background Rate vs. Solar Elevation (Land vs. Ocean)') + plt.savefig(os.path.join(output_dir, "background_vs_elevation_exp_fit_2021.png")) + plt.close() + +def create_calibration_plot(df, daytime_df, output_dir): + """Create a calibration plot using mean photon height as a proxy.""" + if not daytime_df.empty: + sample_file = daytime_df.iloc[0] + heights = sample_file['mean_photon_height'] + if np.isfinite(heights): + solar_rate = sample_file['solar_background_rate'] + bin_size = 0.1 + # Simulate histogram with 1000 points + hist, edges = np.histogram(np.array([heights] * 1000), bins=np.arange(min(heights) - 1, max(heights) + 1, bin_size)) + photons_per_bin = solar_rate * (1000 / np.sum(hist)) * bin_size / (max(heights) - min(heights) + 2) + calibrated_counts = np.maximum(hist - photons_per_bin, 0) + calibrated_heights = [] + for i, count in enumerate(calibrated_counts): + if count > 0: + calibrated_heights.extend(np.random.uniform(edges[i], edges[i+1], int(count))) + + plt.figure(figsize=(8, 6)) + plt.hist([heights] * 1000, bins=100, alpha=0.5, label='Original (Simulated)') + plt.hist(calibrated_heights, bins=100, alpha=0.5, label='Calibrated') + plt.xlabel('Photon Height (m)') + plt.ylabel('Count') + plt.legend() + plt.title(f'Calibration Example: {sample_file["file"]}') + plt.savefig(os.path.join(output_dir, "calibration_example.png")) + plt.close() + +def save_results(df, output_dir): + """Save the results to a CSV file.""" + df.to_csv(os.path.join(output_dir, "atl03_analysis_updated.csv"), index=False) + +def analyze_icesat2_data(atl03_directory, beam='gt1l', twilight_threshold=6.0, output_dir="output", shoreline_data_path=None): + """Main analysis function orchestrating the workflow.""" + if not os.path.exists(output_dir): + os.makedirs(output_dir) + + df = load_and_process_files(atl03_directory, beam, shoreline_data_path) + if df.empty: + raise ValueError("No data processed successfully. Check logs for errors.") + + df = assign_surface_type(df) + + # Compute total_background_rate based on surface_type + df['total_background_rate'] = np.where( + df['surface_type'] == 'Land', df['total_background_rate_land'], + np.where(df['surface_type'] == 'Ocean', df['total_background_rate_ocean'], np.nan) + ) + + df, daytime_df, nighttime_df, twilight_df, unknown_df = classify_data(df, twilight_threshold) + + non_solar_rate = calculate_non_solar_rate(nighttime_df) + df = compute_solar_background_rates(df, non_solar_rate) + + # Recreate filtered DataFrames to include the updated columns from compute_solar_background_rates + daytime_df = df[df['classification'] == 'Daytime'].copy() + nighttime_df = df[df['classification'] == 'Nighttime'].copy() + twilight_df = df[df['classification'] == 'Twilight'].copy() + unknown_df = df[df['classification'] == 'Unknown'].copy() + + df, daytime_models = fit_daytime_model(df, daytime_df, non_solar_rate) + df, twilight_models = fit_twilight_model(df, twilight_df, non_solar_rate) + save_results(df, output_dir) + create_diagnostic_plot(df, daytime_df, twilight_df, daytime_models, twilight_models, non_solar_rate, output_dir) + create_calibration_plot(df, daytime_df, output_dir) + + + return df, { + 'daytime_models': daytime_models, + 'twilight_models': twilight_models, + 'non_solar_rate': non_solar_rate + } + +if __name__ == "__main__": + args = get_args() + atl03_directory = os.path.join(args.workspace_path, args.atl03_path) + shoreline_data_path = os.path.join(args.workspace_path, args.shoreline_data) + output_dir = os.path.join(args.workspace_path, args.output_path) + df, models = analyze_icesat2_data(atl03_directory, args.beam, output_dir=output_dir, shoreline_data_path=shoreline_data_path) + print("Analysis complete.") + \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2_Jobscript.sh b/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2_Jobscript.sh new file mode 100644 index 0000000..ecafb5b --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/analyze_solarbckgrd_icesat2_Jobscript.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +#SBATCH -N 1 +#SBATCH -n 12 +#SBATCH --mem 32g +#SBATCH -t 02:00:00 +#SBATCH --mail-type=end +#SBATCH --mail-user=wayne128@email.unc.edu + +module load anaconda +source activate Diffusion +cd /work/users/w/a/wayne128/ICESat2/IS2_kd_py/SolarBckgrd/ + +# python analyze_solarbckgrd_icesat2.py +# python analyze_nighttime_BG_rate_icesat2.py +python IS2_BG_Rate_Land_Ocean_plot.py \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/config.py b/icesat-2_kdph_py/kd_utils/SolarBckgrd/config.py new file mode 100644 index 0000000..ebfbcaa --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/config.py @@ -0,0 +1,79 @@ +import argparse + +def get_args(): + parser = argparse.ArgumentParser(description="Analyze ICESat-2 ATL03 data for solar background.") + + #task name + parser.add_argument("--taskID", type=str, default='2022_granules', + help="task name") + # workspace path + parser.add_argument("--workspace_path", type=str, default='/work/users/w/a/wayne128/ICESat2/IS2_kd_py/', + help="Root path for all data processing.") + + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/NC/NCCENTRAL/', + # help="Base path for ICESat-2 ATL03 data.") + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/NC/NCNORTH/', + # help="Base path for ICESat-2 ATL03 data.") + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/NC/NCSOUTH/', + # help="Base path for ICESat-2 ATL03 data.") + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/CD/2018_granules/h5_files/', + # help="Base path for ICESat-2 ATL03 data.") + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/CD/2019_granules/h5_files/', + # help="Base path for ICESat-2 ATL03 data.") + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/CD/2020_granules/h5_files/', + # help="Base path for ICESat-2 ATL03 data.") + + # parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/CD/2021_granules/h5_files/', + # help="Base path for ICESat-2 ATL03 data.") + + parser.add_argument("--atl03_path", type=str, default='Dataset/ATL03_ICESat2/Extracted_HDF_Files/CD/2020_granules/h5_files/', + help="Base path for ICESat-2 ATL03 data.") + + # parser.add_argument("--parallel", action="store_true", help="Process files in parallel") + parser.add_argument("--beam", default="gt1l", help="Beam to process (e.g., gt1l)") + + + parser.add_argument("--atl03_file", type=str, default="processed_ATL03_20221001234100_01721701_006_01.h5", + help="Name of the ATL03 H5 file to process.")#processed_ATL03_20221001114643_01641707_006_01 + + parser.add_argument("--output_path", type=str, default='Dataset/Results/', + help="Directory for saving results.") + + # Shoreline data + parser.add_argument("--shoreline_data", type=str, + # default='Shorelines/GeoPkgGlobalShoreline.gpkg', + default='Dataset/Shorelines/ne_10m_land/ne_10m_land.shp', + help="Path to the global shoreline dataset.") + + # Bathymetry datasets + parser.add_argument("--gebco_path", nargs='+', type=str, + default='Dataset/Bathy/gebco_2024_geotiff/', + help="Path to GEBCO bathymetry datasets.") + + # Resolution settings + parser.add_argument("--horizontal_res", type=int, default=500, + help="Horizontal resolution for the analysis (in meters).") + parser.add_argument("--vertical_res", type=float, default=0.25, + help="Vertical resolution for the analysis.") + + # Analysis parameters + parser.add_argument("--subsurface_thresh", type=float, default=0.5, + help="Threshold for photons below the sea surface.") + parser.add_argument("--ignore_subsurface_height_thres", type=float, default=-1, + help="Maximum depth thres for Kd calculations (in meters).") + + return parser.parse_args() + +if __name__ == "__main__": + args = get_args() + # Access parameters like this: + atl03_file_path = args.workspace_path + args.atl03_file + + print("Processing file:", atl03_file_path) + print("Output path:", args.output_path) \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/__pycache__/data_processing.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/__pycache__/data_processing.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f106379c211b88d29e5f6151c2b7b6d02480ddf GIT binary patch literal 3921 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 DYAHp? literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/__pycache__/interpolation.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/__pycache__/interpolation.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4e5d996d3e601b9637ef6413e0df757ddc49f68 GIT binary patch literal 920 zcmZ8fy>8nu5GElB@|cIwa<=+rwpuHBq)zvS`0yHnolMGWcn@9&czg0Y|E91_OZ2W0aWg=CUzmU1bi z_m!nW`Z7T6$&Nfi?aNReqYfk=u{ipL8Ejb43p?`A2#_z4%_|g^-S8XHu!c)~^_zDu z8iBdquzqqG?;16kskzNC zyY1-wv(lywW|dTW!+<*eGfI{fOp}FCV3K8$C(C>_SLcIw$<^hjQEmsx)o74SWmd0} z5u$*P#dHEPnOCJz*}|6EB>VDZH9tc@{e47XZ7NIc8XpDYeGX4h|2Gku4zZg^hz8AK zjq}^^p#vHVIL0t_VYB+$#kQhL;pcf>>s7X|i%96cabxH34DEu(z9WJ{zAN|w4T}XE zu@?89<&D>{H7)>pc(4%;u6rW(;VFjT2t^u9R8>j`>oJ@Yca#+sfGR9vp@tvYk2sv7 zSGZxILDWGe-=TSf#y>Q^vpmEVATFP9p$mXzpzrFor|vgA+Yes>HM1X^YuMdBs6)RW YxaEcK5z<1d3tEVw?S~@tLof9I0`&yT$^ZZW literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/data_processing.py b/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/data_processing.py new file mode 100644 index 0000000..b55bbef --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/data_processing.py @@ -0,0 +1,179 @@ +# utils/data_processing.py + + +import re +import os +import io +import time +import math +import h5py +import logging +import netCDF4 +import numpy as np +import geopandas as gpd + +import pandas as pd +from datetime import datetime +import matplotlib.pyplot as plt +from sklearn.preprocessing import StandardScaler, MinMaxScaler +from scipy.spatial import ConvexHull + +import argparse +import subprocess +# import fiona +import utm +import pyproj +from pyproj import Transformer, Proj + +# from pyproj import Transformer +from matplotlib.widgets import LassoSelector +from matplotlib.path import Path + +from sklearn.cluster import DBSCAN +from .interpolation import * + + + + +# convert_wgs_to_utm function, see https://stackoverflow.com/a/40140326/4556479 +def convert_wgs_to_utm(lon: float, lat: float): + """Based on lat and lng, return best utm epsg-code""" + utm_band = str((math.floor((lon + 180) / 6) % 60) + 1) + if len(utm_band) == 1: + utm_band = '0' + utm_band + if lat >= 0: + epsg_code = 'epsg:326' + utm_band + return epsg_code + epsg_code = 'epsg:327' + utm_band + return epsg_code + + +def orthometric_correction(lat, lon, Z, epsg): + # Define the Proj string + #To transform from WGS84 ellipsoidal height + # to EGM2008 orthometric height using PyProj + # proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +vunits=m +no_defs +geoidgrids=egm2008-1.gtx' + # # Define the Proj string for WGS84 ellipsoidal height + # wgs84_proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs' + + # # Define the Proj string for EGM2008 orthometric height: egm08_25,egm2008-1 + # egm2008_proj_string = \ + # '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs ' \ + # '+geoidgrids=C:/Workstation/ICESat2_HLS/Code/Geoids/egm08_25.gtx' + + # transform ellipsoid (WGS84) height to orthometric height + # transformer = Transformer.from_crs(wgs84_proj_string, egm2008_proj_string, always_xy=True) + transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) + X_egm08, Y_egm08, Z_egm08 = transformer.transform(lon, lat, Z) + + # transform WGS84 proj to local UTM + myProj = Proj(epsg) + X_utm, Y_utm = myProj(lon, lat) + + return Y_utm, X_utm, Z_egm08 + + + + + +# requires that the input gdf has ranged index values i +# will need to change if index is changed to time or something +# this currently checks point in polygon for EVERY point +# would be significantly sped up if evaluated at 10m or something similar +# maybe later, fine for now +import logging + +# Set up logging +logger = logging.getLogger(__name__) + +def isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF): + """ + Classify ICESat-2 points as land (1) or ocean (0) using shoreline data. + + Args: + shoreline_data_path (str): Path to the shoreline dataset (e.g., shapefile). + ICESat2_GDF (gpd.GeoDataFrame): GeoDataFrame with ICESat-2 points. + + Returns: + np.ndarray: Array of 0s (ocean) or 1s (land) for each point. + """ + try: + # Ensure ICESat2_GDF has a valid geometry column and CRS + if ICESat2_GDF.empty: + logger.error("ICESat2_GDF is empty, cannot classify land/ocean.") + return np.zeros(len(ICESat2_GDF), dtype=bool) # Default to ocean + + # Confirm that ICESat2_GDF already has the correct CRS + if ICESat2_GDF.crs is None or ICESat2_GDF.crs.to_string() != "EPSG:4326": + logger.info("Setting CRS of ICESat2_GDF to EPSG:4326") + ICESat2_GDF.set_crs("EPSG:4326", inplace=True) + + # Load shoreline dataset with bounding box optimization + logger.info(f"Loading shoreline data from {shoreline_data_path}") + try: + land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='pyogrio') + except Exception as e: + logger.warning(f"Failed to load shoreline data with pyogrio: {e}. Falling back to default engine.") + land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF) + + # Ensure the shoreline data is in the same CRS as ICESat2_GDF + if land_polygon_gdf.crs.to_string() != "EPSG:4326": + logger.info("Reprojecting shoreline data to EPSG:4326") + land_polygon_gdf = land_polygon_gdf.to_crs("EPSG:4326") + + # Initialize land labels as 0 (ocean) + land_point_labels = np.zeros(len(ICESat2_GDF), dtype=int) + + # Perform spatial join to find points within land polygons + pts_in_land = gpd.sjoin(ICESat2_GDF, land_polygon_gdf, predicate='within') + + # Update labels for points that are within land polygons + land_loc = ICESat2_GDF.index.isin(pts_in_land.index) + land_point_labels[land_loc] = 1 + # Points not in land are already 0 (ocean) + + logger.info(f"Classified {np.sum(land_point_labels)} points as land, {len(land_point_labels) - np.sum(land_point_labels)} as ocean") + return land_point_labels + + except Exception as e: + logger.error(f"Error in isolate_sea_land_photons: {str(e)}") + logger.error(f"ICESat2_GDF info: {ICESat2_GDF.head()}") + logger.error("Returning False (ocean) for all points") + return np.zeros(len(ICESat2_GDF), dtype=bool) # Default to ocean + + +def create_photon_dataframe(lat_ph, lon_ph, ref_elev, ref_azimuth, geoid, h_ph, \ + quality_ph, is_land_label_interp1d, signal_conf_photon, x_atc, relative_AT_dist): + # Apply geoid correction to the photon heights to convert them from ellipsoidal to orthometric heights + h_ph_geoid_cor = h_ph[:] - geoid[:] + + # Determine the EPSG code for the UTM zone based on the first photon's longitude and latitude + epsg_code = convert_wgs_to_utm(lon_ph[0], lat_ph[0]) + + # Perform orthometric correction to obtain UTM coordinates and corrected heights + lat_utm, lon_utm, h_ph_cor = orthometric_correction(lat_ph, lon_ph, h_ph, epsg_code) + + # Put the data into the dataframe + sea_photon_dataset = pd.DataFrame({ + 'latitude': lat_ph, + 'longitude': lon_ph, + 'lat': lat_utm, + 'lon': lon_utm, + 'photon_height': h_ph_geoid_cor, + 'quality_ph': quality_ph, + 'is_land_label': is_land_label_interp1d, + 'photon_conf': signal_conf_photon, + 'ref_elevation': ref_elev, + 'ref_azimuth': ref_azimuth, + 'relative_AT_dist': relative_AT_dist + }, columns=['latitude', 'longitude', 'lat', 'lon', 'photon_height', 'quality_ph', 'is_land_label', 'photon_conf', 'ref_elevation', 'ref_azimuth', 'relative_AT_dist']) + return sea_photon_dataset + + + + + + + + + diff --git a/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/interpolation.py b/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/interpolation.py new file mode 100644 index 0000000..59b04b4 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/SolarBckgrd/noise_utils/interpolation.py @@ -0,0 +1,19 @@ +# utils/interpolation.py + +import scipy.interpolate + +def interpolate_labels(segment_lat, labels): + model = scipy.interpolate.interp1d(segment_lat, labels, fill_value="extrapolate") + return model + +def apply_interpolation(model, lat_ph): + return model(lat_ph) + +def geoid_correction(lat_ph, segment_lat, geoid): + model = interpolate_labels(segment_lat, geoid) + return apply_interpolation(model, lat_ph) + +def refraction_correction(lat_ph, segment_lat, ref_elev, ref_azimuth): + elev_model = interpolate_labels(segment_lat, ref_elev) + azimuth_model = interpolate_labels(segment_lat, ref_azimuth) + return apply_interpolation(elev_model, lat_ph), apply_interpolation(azimuth_model, lat_ph) diff --git a/icesat-2_kdph_py/kd_utils/__init__.py b/icesat-2_kdph_py/kd_utils/__init__.py new file mode 100644 index 0000000..f8f285a --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/__init__.py @@ -0,0 +1,8 @@ +# utils/__init__.py + +from .data_processing import load_data, extract_file_params, Extract_sea_photons, create_photon_dataframe +from .visualization import plot_photon_height, plot_kd_photons +from .Kd_analysis import CalculateKdFromFilteredSubsurfacePhoton +from .interpolation import interpolate_labels, apply_interpolation, geoid_correction, refraction_correction +from .bathy_processing import * +from .sea_photons_analysis import * \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/__pycache__/Kd_analysis.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/__pycache__/Kd_analysis.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d16cb6e1026ee41e1f7b724dfb5c29c30a21e8c GIT binary patch literal 2274 zcmZ`*&2Jk;6rY*>^2geB(@&QQ@EQKdvxQwb>wT5Wd5&N}OvWp*6Z z)mj|dYbCBgk?bQUZv6|8_#fs9Qk6R=kSK3vo%BOutoeE$Gw=Q0d*h8;tpFRCMJGzw+BeQ62m}}72pcj8)gi16- zMTcUT@gbJ0ip(744!r^Xzmbw>-W)D3!The#zQ0)c)afGb8oeo@u00V+4qUg3X2Bfs zOVnFXp8(ZcP%90G`U~C+c>ak-u%JE%YVd{z+(2tUsm;->K1Wlp^oEUDQ-yOp^^G5; z50nY|-*Amz?Z0i_AN4z<3|K^`cf;SIeq7@h{1B}3_=Ii_Ks z+yLF-83;}|Ahh)qPitk(aA#-1mUDAN+XwFVSUv|T+&OH`&eK!0Gbht}B{ytM8|uPi zG;Nm6*~PM6Hs%DQvN`M;44Y^g!i|?;{|;E*DnsfVAUN+gi*3l;W;UIG1Pzqdb=2zu@QMJ78A6RykNQu^6qk7B(Ew@; zR`8tGwjO_N&0%bRq$4_++y7j7(@#I5{Tu9AA$!~=5K*3<^%c1=KP%R@#Vz^0w@ zB!kk522zak!j@If*8v1<0Ovy<^S;o5|SrfKqf|K)7LGe(4kUU*B(F zxel~9fHo;*a?1k!02TuT0HPWEATsFMbWdn1V4!Dr4D*Ij_ zZ-GhjQ#0H&gRx)xfGy)xp0k@o@FZ3ciYpr_q;K>J-;)5p4QmH--kP((xsbQbQS}p= zG;ruMi5NlsG76B|Vl~NOitjbt&*xGk@Gosdjza)7_ZLW25g@L!ggZ_RexcJQ@+;u< zur%*wuK`cec$81%1=wjnk2#GC>y~wS=WKD1!G{39n%NJ6sCo)aZP>)JXxIZ^v&!0M eQ=)bQv6L^KZ@w9S_V6S*ig3O7@^$x}MA45B9IgQdFY&YQ5z43}D$;}! zJ)i?Uq(dFkm;`>HMtV%gdO|0CJXBLXqqBY=t0O(9bG@JoozO%d)8n2WspZ>HJ5nqB zkFzM9{6r5?8vB_tyksSJ+@Fe14tU|%PAb6~4qRJ*di962g0rSF&eYaFDnM|Dnm+EU zcc>QWz@IeAxcfvUiX0eSJ#&<26@BtFXy!c@0KiOXUQJGHbWCg&i-%rtggo zPh^d$#so1_d@B^X;!UGE_Aet%?N@tYWXTExAPN_lhak{bzdxYyc=F^;`oJ&4wOIqE z5Z20i4`Bu{3=jtxA^7B@v@KWiGY>6c91@d|nBSI+*Iad0TA23I|NOu#NW;)!9$*n9 zt1Wj`cW|aZJ9yZ?{k}zT7HR_g%Gb~GcLwgP>n-Fr>#K~r3-;=DmZOKY(Kst<(cOkO z0`g7gDpO|#$j0S2*#$$<2F!;XC(t^nY|ilIq+{%9)A{LhZOT@O%W!WS?4FYqS&(xw GCBFgkpx8A4 literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/__pycache__/bathy_processing.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/__pycache__/bathy_processing.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9d071c11d26e80751ca4a3939260dc1890d3aba GIT binary patch literal 5188 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 rP~uFzC;>Rp$xF literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/__pycache__/data_processing.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/__pycache__/data_processing.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b7f182476a516612951ea405dd3c30a6842337e2 GIT binary patch literal 12306 zcma)C+ix7#d7s}Z$VMysSkY$iu?h^JQM}`5&=a}v@Ve5A@1)x zXJ&UvD|VNhnREHhcfR?~cfQ*hcWkVz;1?@PtMi_s{5w@fe>y6k#}&P;DhgAW8Yqr@ zs*Wn^nxl!Q?&#uaIEHu@oPv0ojwzl+rzoD5QxeazQxVUqGlr)Y)H*e%rb^u7ow_q2 z%6c%_nR2E&)6TT08^MvzQRip|cg#5^aLhO};(6RTE}pZ_ES`m6w)2$pROf_qLcp8B z)18yfNl`8a&vb0Z7G*1VwsXokg>s3NgXiul>@=&gvG-KxwD-LCJgfasW8?m3q>=>KD^F?-?&EokIdx4!`PXpo{JIS6w%XwzAXYrh4 zr`U6NzRc7`rE%slar<^dO)cieUhH?ghL+YAW4Fs(&K6s4;PJHjmfwBL-I6uHmam50 zd*0R;HiH1rmAl;SMk^uj0Mxj{!!>}6-EyNST=W936^9%R#vM0a#nW7PbMfkx+mErH z3aaXh*IOFVko}I}S;F;2T+x3PNi-5AR@bx#8lR2zJtKh->}!3!J59B?ux9QR6J=kO zt+BONO7ykzzN#uzjw^}2SKU`0sMO*seFImat@KT%G5tM7_Aa1*L3#IjzqoTc(UanF zg&DXC#}yS2qHdy&c2#*t=}sC-JhuH~6*X1)s*uO#MPEh*9*8*7QVpghvv{jYv8 zDeR3WMPJ$1u(%dxnC)8<-&#Gfjw?xla3|JfW#i|*k{C(xGH9eHW-~|1#z?s|QZ8Q} zp>JBqdM&VI#qTH_}m5k4Tc%*Gy z%BaGMW^fCVV{%sFyrd>64KSTNh)F^KN@9EuSeHM>)5BOZUVZ{r0WrXu0_#sd#`VKk zGj4wZRsoS=)i>rJ=^M3=t;=Do*?N2eRsk`<`dwgU8?3H0OuLee5iMB#!LE@lf;xjQi+Kf%c&`k4K<()KS)Y&&W8=>r85=a(Abe~*r$LtG zyli~HrR67ZNsJqC%HY4uX`yj~e?vZuNUEGqzLlV*urUW(e#z>XW2|3e6VOxYyH0VN5p|)FIMD<92i1iJjsu_F+V~L@C;_Z zC1*c~SI#e+c2=|>W9e%B>iO-}I7-XR3ou*ea*t!F z-Ka@SZpPa^&zX=7Q7?>}-ObLj$DQhOYrV}GNrfAwRm{*^-Hw{Akn`J4IfRYE4BeG5 zt-0Nn9|SJnZqgeyjyO{pHr8vldr{Ntg{@VmDqh#?(%ZM3ny7)HJQnp5b+ooyf#;N| zi0SYeS-A)2{=QQY?Y-!}=dC*eUJxN+xYx$JJ4J%w?bsR5*wv&4ns6d-7|fX#IRXYZ z@|=onlhapaB_klONfO4gzKn=$oFpTI%m^t-NRW~i??ERJaeD0a8XA8ZYwA?7hW;`a z@)R{Rgo)V3VtJg26`x0OvnTXSbJ=&P|EOfC-|1~)^EbJNrRsw8G2m>jLJ&f{Uk8BY zUdy}Cq=md7$`?iXmBx{@3<>RmtZvIoH9t(vn_qepZ=V{guR-#R>rgzY7DlN-3Mnmn zTRmu!%?M#uF$mjjNN8$^1-D2?b)oE1gG4Yj*1hd0wZ7s579H&g@HQC(B(>a=Gon5XOlJjl!iIkB1gJ2zlfXlLr*#we zs%~lg3f>#KR1ct(^Z=T5H1symS-^D_SM)Y+Qdv{LeGD0rrzptQk0LZahH$yB#d-o2 z&Wv@9Uu109jndA`B;m{syEf(*mNDqI&q1M*6||SV zD7H7_j_viL_W4%GyvKhJN*M-c30mHGH z7FL1~@~>leGz|VGA)wcDEX>hd#%@YWgaSI0eN1j9Ta@L1HoV`CnsEr7)zL9)R0jeD z+^y2u;m^Ru-$Gl9IGF#4&H*Gc_Bq=EEz>E*{zL6Mv;8&s~+P=P|_X~ZqUj$Ee z@YYH!>Up5SVJh{@NjWJcMd2J3ZvVP;?atzjORv&P%i=4aeeE-M8>&-sgZnP*!PYij zl^Et&D?IEpTRcijah{{$WS1Ki!3M#QRCOGKn2=TmKrlANuQXw_=0EEcznT}EtYCJw zDa+#&zCt{43SXti;azt$_kUFarW6qTOHh z;#CZSg9p_e0ML_eAE_$gnb|S-yt)666G`f?Dcr?_ZX_kUXad45owYA4Tz?Jjp!667 z@q*gHoROV7m0^z<!cxy0HG9 zV@h`%u%#aN5F#KR+PN%jzDQu-K$q@fCUL!SO z$~V0zEktXf-=*=)+k)2u$0sda+iH12*waFf19MsmyPibbu+pgkF-E;PS>zxC8FCQzsradttEM4!g}ZTX80`7J>=fWiN=FN-vHuM)2FQL_hrZRQ;I# zpYfv*Hp**8o-3d;2Qa!q(*6S8PSG^7==!t)JMfWV)U3K*)9HfMCL66;npNN(K(@#p z~_iRs(6A{&=jd z>7sQksUg{ECPml}4dH*8X+NwW)usIimiq&wSCTs9&ye!hsHAxN*pD}vmtreJqNq4x z7{)S(S4J#pd1DhEa=Z;Tq+^-PNT!0P(lv&~Tye&@x6*_ke^0p5X@#opj^EjYJ+4C( z(R|NqUb)+3a8*gnTVb%-=|-?xWJQHJNHvlr@=32#4BwbYO^l*;Hu&p!&SqD z^k2V@BN6B?ad7eT{$x!04~ac!WrdPN{i$S%;V6OWkVT}GE+dSW=_Pn8NMq&4C2QJ} z+CP%PiX)R5O6>qXYm_R??C%gXs2VKi9_utvUc$00Q}QgJ5qHA+D~Tf(`Y|} zG#=6ZOxAYv5UicGA3N0kY}P&lew>PpWLg|pz0rS;xC@>=hxXIZ3VHeY#7<7*@A+fU zDg{MyS;Bor(P7nar1KwuvDxwC3asetQ%e5@T8SKTr2R}>fCZjOj_qrS#h$|27uKL* z=zI}6_L(zPWITAH#OyGjuynw^`hr zDl~$yTu9Kgg^_k@c}@pit!_N5lU8eP4eJO!+VQG04SnTt521dp1)x%%)EajA4oysI zjh~>~H|UnoZHsQ(xB>kEE!NQHgj0dTY?>Z4xunsN)XA$Y80<)BMgi#m0?LAajqs7X zf$%{`oFHsAf`h?4Bcu$eAoa@obo(aVzC|}uot)#A7DW!rXXL?DK_t8n$-73KuM!lc z(cllPA~Ba5tq_@x0^H)Z$6a(dwI2KgSZEQtY;C928(uiD1HzP2_}WUR;Q0sJnOY}1 z4WBuklv-YzZE5d?&g646@jaT@gx-gn)R^a=rRo&&U2QlpQVK-=E#hlLNO>_!+TC1m zrUqqlUq}f2u2at&?_7hS*n|wsT!V?kad$KCSpfGbyW`aImRnL9#`F5ksCf%ci&M!P zZXqo-tUyGndCxVN)M4!|j_QXbDF>4?>J#+O~n98!$bM1l*+#gPUM^sQ3DNT~%Vda4E4kczNPXmc@3fscwk}x?XV3R_U z>OMna2s=tz(0MT zh$h@1kjpN-%qJM{scTyZj9ZYAft`kqD}*HNA}FlpIqxOfk>EJ@{XiqU=)!|Fg^t!mOCd2tHlw)n2OJUeL@hO69Y$^rPh%#vG9wL=Iut;p~I|j8R5`9k3ELQl<6bhL#a_ri{f}^d7FQS zdW2rHkSIdBzPHUO`GfF>d|NNID3L_x4vh*4BsrbAxTRA>7a|x)*Wkq{l!*liNL(Tx z>oKQ}pbA{_WW){rq*eI>O&TAi6C*W&Es|a<-ovqQ6Z55}d{H>c7?c_`>tSd0l$ft}=PxubTokW8xBA*Cfr~OB^!w6g3|yD&vuB3b&YZK)2#i!9r1ZRSLEK*x z_ltC&pC8;0pnT#G&@db+NIBCGqjomV4rgwB?kpx=V&AyfZ#2*1`D(vG4^%(t@nlfZ z`bvg~FwDL9xds?;8u8UQcuw(Fr-uMNEv~?)f%;4JUf65se35!Jj`RW!&u|`iSTLr% zOc7Fek8qq|P9p0QQL<4fmi3y-e~eO#v`+q`Z7^8#v#7{e7TN-ltk4YFdg1eVt4?Lg zjZ&U(=WW3%89Ujo-EpIJk+6^gDv}$}2GJ&8L6+p44gHK92J*dfdk;2KQwFdCS!&9P zc(+EusbFVxvpppvxeQ%4$QcJ#fi!QZAI3|m=4kyevnpB0M}6mrNtDM_$R2#8Y31J- zI{ypQTg0CHM-Y@KBX&hI*kZIjb_;vjzJfc#hD1MxYhQoAC^rrgXh_B<23icX7`ugC z1X#PpeeHcy)HP8zP}k!^Z0?%7`U52G`voMU@pT%dqFLbsT`K*D#>3(Yl4`8@o<-lV zQ6d^)VJV?6*S@`^y|2En>>`n{Zt(Bzsz5HglwoW%!U2aLWqh+$f(u_xDr*SVgd_jG-Qq3` zPf}VT(J1Zwp;%3%w)~y28zY>T3KoT2)j>lFm>XUfu4U}mSzbuyygawHY6H}ESD;jd zXpuZ+$J;Klt1WnLZJgJO4;z`iylqR#k!KcJ;siPg!{H*yGkE{Qk3Rb7F(pEUlYN&G zcJ7uRrO1iU`G)ipqXSBjph*g*Xw{c+6KCaj`}n+7CVvbF#Jb8)$Kbx;uF*xhbOWEc zq937M*1v#$a1<+&^=GLg0kfiI=j@tHF+#W~=SwCF=bx01N_B7p^j73s3fseffDS3x z(^R65GjD@leiVhB*V`Fq^Nd^Ow2$nlCmoId_Lsj5tm5Tg?L+JnWW07&oGux=x+p86 zZ0wSEL48_Y%3p4{1@m`OeOT!-NrZeW1ScZ%7xO>GT3C*+2d#e& z@I#DPq)knl4yS}4HOBeZ38M+6h)^cgJIHV99d`@g)%r-R`N&khL;(7Z-%HKSuD`MA zWs#7`UGndW-e|KU90wV&{1Mt3Rhf|^f;o}lREfA;?ws-L9R>|!Q15t4=rr7;v?Aw{ z6$C$sQzEAfiA8!#09g6Ha0H{If53l8(~(FvO8jrA{I_%yMEo6<{)%p7$N5j_CIm$= zi3BA*_35JVIZe+&z z^K^R_x746-DELjPKSwvRGETAU#a9=uznT`LJ4Vanl;HT&8M+&ZV3Q1;s8D3cX(Of+ zI5zABVT?}!@bw3k03@G!FNmEZ(K^0R;N3ao+cN_Wy}?Oka}ow;ENc0^?YRhtLcSYF zFVI4a33G{){c^OqoDFky$|n+XoTZ8LI&n1TOpZ`+-)9I;BW@Aq@sSQXa^m!zH0)DG zP%GGspo=(J5aee?x-*N5#o3NH3w7gRj#Zr0h=^Lo$P`5gpG_EXVV(r{hudnn15)d9 zCuI2enp0QrFPFSt-i&o7l F{~yv;sM`Pl literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/__pycache__/interpolation.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/__pycache__/interpolation.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d7571154ff5eff8feafe091feab1f30b67568182 GIT binary patch literal 934 zcmZ8f&2AGh5VrRx-EIh!@b?NtLY3$dRR}3Uq5?$`dqApITA8)eZ0lrKW2Yi$dkWV+ zNZyB&ubg-VPRuwB37ysa+OzY`j76`PGNjMh?c`^`*e`PS31jRXvU!CGK6gN;i1!3!QXw?f1fBd&;Wp^iyUwg}+}GX|YKXbGrEp|rYo zU9!aYYPPUbmr|(kufg^1f*bdK1J5uGgonP@1=TTxmGKlmc;V~1$No_s?}o2{n%Rxb gH|%fk)uG1-etF3$LRx6`mKI`Y`$>>QNti@`0Yv`PvH$=8 literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/__pycache__/kd_utils.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/__pycache__/kd_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e5b77af9a58937019042078937dddaf2546aa18 GIT binary patch literal 19753 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 O_o!F%&U)+KqyHBv1+@wQ literal 0 HcmV?d00001 diff --git a/icesat-2_kdph_py/kd_utils/__pycache__/sea_photons_analysis.cpython-39.pyc b/icesat-2_kdph_py/kd_utils/__pycache__/sea_photons_analysis.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..94d70d083823a5facdf6146957bdcf7eb37a6512 GIT binary patch literal 8406 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 UDgDmK= min_ratio. + """ + if subsurface_photon_dataset.empty: + return subsurface_photon_dataset + + grouped = binned_dataset_sea_surface.groupby(['lat_bins'], observed=False) + lat_bin_keys = list(grouped.groups.keys()) + if len(lat_bin_keys) != len(sea_surface_height): + return subsurface_photon_dataset + + quality_df = pd.DataFrame({ + 'lat_bins': lat_bin_keys, + 'sea_surface_height': sea_surface_height + }).dropna(subset=['sea_surface_height']).copy() + if quality_df.empty: + return subsurface_photon_dataset.iloc[0:0].copy() + + ratios = [] + for _, row in quality_df.iterrows(): + lat_bin = row['lat_bins'] + surface = row['sea_surface_height'] + bin_data = binned_dataset_sea_surface[binned_dataset_sea_surface['lat_bins'] == lat_bin] + if bin_data.empty: + ratios.append(0.0) + continue + + depth = surface - bin_data['photon_height'] + underwater_mask = depth > 0 + total_underwater = int(underwater_mask.sum()) + if total_underwater == 0: + ratios.append(0.0) + continue + + band_mask = underwater_mask & (depth >= depth_min) & (depth <= depth_max) + ratios.append(float(band_mask.sum()) / float(total_underwater)) + + quality_df['hist_quality_ratio'] = ratios + valid_bins = set(quality_df.loc[quality_df['hist_quality_ratio'] >= min_ratio, 'lat_bins'].tolist()) + return subsurface_photon_dataset[subsurface_photon_dataset['lat_bins'].isin(valid_bins)].copy() + + +def apply_optional_surface_sigma_filter( + binned_dataset_sea_surface, + subsurface_photon_dataset, + sea_surface_height, + sigma_max=0.5 +): + """ + Optional Gaussian surface sigma filter: + discard along-track bins if fitted surface sigma exceeds sigma_max. + """ + if subsurface_photon_dataset.empty: + return subsurface_photon_dataset + + grouped = binned_dataset_sea_surface.groupby(['lat_bins'], observed=False) + lat_bin_keys = list(grouped.groups.keys()) + if len(lat_bin_keys) != len(sea_surface_height): + return subsurface_photon_dataset + + sigma_rows = [] + for lat_bin, surface in zip(lat_bin_keys, sea_surface_height): + if pd.isna(surface): + continue + bin_data = binned_dataset_sea_surface[binned_dataset_sea_surface['lat_bins'] == lat_bin] + if bin_data.empty: + continue + peak_data = bin_data[ + (bin_data['photon_height'] > surface - 1.0) & + (bin_data['photon_height'] < surface + 1.0) + ] + if len(peak_data) > 10: + _, sigma = norm.fit(peak_data['photon_height']) + else: + sigma = np.nan + sigma_rows.append((lat_bin, sigma)) + + if not sigma_rows: + return subsurface_photon_dataset + + sigma_df = pd.DataFrame(sigma_rows, columns=['lat_bins', 'surface_sigma']) + valid_bins = set(sigma_df.loc[sigma_df['surface_sigma'] <= sigma_max, 'lat_bins'].tolist()) + return subsurface_photon_dataset[subsurface_photon_dataset['lat_bins'].isin(valid_bins)].copy() + + +def apply_optional_refraction_correction( + binned_dataset_sea_surface, + subsurface_photon_dataset, + sea_surface_height, + water_temp_c=20.0, + wavelength_nm=532.0 +): + """ + Optional refraction correction for subsurface photons. + Updates photon positions/heights using Snell-based geometry. + """ + required_cols = {'lat_bins', 'photon_height', 'ref_elevation', 'ref_azimuth', 'lon', 'lat'} + if subsurface_photon_dataset.empty or (not required_cols.issubset(set(subsurface_photon_dataset.columns))): + return subsurface_photon_dataset + + grouped = binned_dataset_sea_surface.groupby(['lat_bins'], observed=False) + lat_bin_keys = list(grouped.groups.keys()) + if len(lat_bin_keys) != len(sea_surface_height): + return subsurface_photon_dataset + + surface_df = pd.DataFrame({'lat_bins': lat_bin_keys, 'sea_surface_height': sea_surface_height}) + corrected = subsurface_photon_dataset.merge(surface_df, on='lat_bins', how='left').copy() + if corrected['sea_surface_height'].isna().all(): + return subsurface_photon_dataset + + corrected['photon_height_pre_refraction'] = corrected['photon_height'] + corrected['lon_pre_refraction'] = corrected['lon'] + corrected['lat_pre_refraction'] = corrected['lat'] + + # Refraction index parameterization from legacy module. + a = -0.000001501562500 + b = 0.000000107084865 + c = -0.000042759374989 + d = -0.000160475520686 + e = 1.398067112092424 + n1 = 1.00029 + n2 = (a * water_temp_c ** 2) + (b * wavelength_nm ** 2) + (c * water_temp_c) + (d * wavelength_nm) + e + + ref_elev = pd.to_numeric(corrected['ref_elevation'], errors='coerce').to_numpy(dtype=float) + ref_az = pd.to_numeric(corrected['ref_azimuth'], errors='coerce').to_numpy(dtype=float) + z = pd.to_numeric(corrected['photon_height'], errors='coerce').to_numpy(dtype=float) + ws = pd.to_numeric(corrected['sea_surface_height'], errors='coerce').to_numpy(dtype=float) + x = pd.to_numeric(corrected['lon'], errors='coerce').to_numpy(dtype=float) + y = pd.to_numeric(corrected['lat'], errors='coerce').to_numpy(dtype=float) + + # Convert to radians if values look like degrees. + if np.nanmax(np.abs(ref_elev)) > (2 * np.pi): + ref_elev = np.deg2rad(ref_elev) + if np.nanmax(np.abs(ref_az)) > (2 * np.pi): + ref_az = np.deg2rad(ref_az) + + valid_mask = np.isfinite(ref_elev) & np.isfinite(ref_az) & np.isfinite(z) & np.isfinite(ws) & (z <= ws) + if not np.any(valid_mask): + return subsurface_photon_dataset + + theta1 = (np.pi / 2.0) - ref_elev[valid_mask] + theta2_arg = (n1 * np.sin(theta1)) / n2 + theta2_arg = np.clip(theta2_arg, -1.0, 1.0) + theta2 = np.arcsin(theta2_arg) + + D = ws[valid_mask] - z[valid_mask] + cos_theta1 = np.cos(theta1) + cos_theta1 = np.where(np.abs(cos_theta1) < 1e-6, np.nan, cos_theta1) + S = D / cos_theta1 + R = (S * n1) / n2 + Gamma = (np.pi / 2.0) - theta1 + phi = theta1 - theta2 + P_sq = np.maximum(R ** 2 + S ** 2 - 2 * R * S * np.cos(phi), 0.0) + P = np.sqrt(P_sq) + alpha_arg = np.divide(R * np.sin(phi), P, out=np.zeros_like(P), where=(P != 0)) + alpha_arg = np.clip(alpha_arg, -1.0, 1.0) + alpha = np.arcsin(alpha_arg) + Beta = Gamma - alpha + + DY = P * np.cos(Beta) + DZ = P * np.sin(Beta) + DE = DY * np.sin(ref_az[valid_mask]) + DN = DY * np.cos(ref_az[valid_mask]) + + x_corr = x[valid_mask] + DE + y_corr = y[valid_mask] + DN + z_corr = z[valid_mask] + DZ + + corrected.loc[valid_mask, 'lon'] = x_corr + corrected.loc[valid_mask, 'lat'] = y_corr + corrected.loc[valid_mask, 'photon_height'] = z_corr + return corrected + + +def apply_sea_surface_flattening( + subsurface_photon_dataset, + sea_surface_height, + lat_bin_keys, + horizontal_res, + flattening_window_m=500 +): + """ + Flatten small-bin sea-surface variations to the mean sea level of larger along-track windows. + This follows the standalone SeaSurfaceFlattening module logic, but is optional. + """ + if subsurface_photon_dataset.empty: + return subsurface_photon_dataset + + if len(sea_surface_height) != len(lat_bin_keys): + return subsurface_photon_dataset + + surface_df = pd.DataFrame({ + 'lat_bins': lat_bin_keys, + 'sea_surface_height_local': sea_surface_height + }).dropna(subset=['sea_surface_height_local']).copy() + if surface_df.empty: + return subsurface_photon_dataset + + surface_df['lat_bins_num'] = pd.to_numeric(surface_df['lat_bins'], errors='coerce') + surface_df = surface_df.dropna(subset=['lat_bins_num']) + if surface_df.empty: + return subsurface_photon_dataset + + big_bin_size = max(1, int(round(flattening_window_m / max(horizontal_res, 1)))) + surface_df['big_bin'] = (surface_df['lat_bins_num'].astype(int) // big_bin_size).astype(int) + mean_surface = ( + surface_df.groupby('big_bin', observed=False)['sea_surface_height_local'] + .mean() + .rename('sea_surface_height_bigbin_mean') + .reset_index() + ) + surface_df = surface_df.merge(mean_surface, on='big_bin', how='left') + surface_df['sea_surface_flattening_offset'] = ( + surface_df['sea_surface_height_bigbin_mean'] - surface_df['sea_surface_height_local'] + ) + + flattened = subsurface_photon_dataset.copy() + flattened['lat_bins_num'] = pd.to_numeric(flattened['lat_bins'], errors='coerce') + flattened['big_bin'] = (flattened['lat_bins_num'].fillna(-1).astype(int) // big_bin_size).astype(int) + flattened = flattened.merge( + surface_df[['lat_bins', 'sea_surface_height_local', 'sea_surface_height_bigbin_mean', 'sea_surface_flattening_offset']], + on='lat_bins', + how='left' + ) + flattened['photon_height_original'] = flattened['photon_height'] + flattened['photon_height'] = ( + flattened['photon_height'] - flattened['sea_surface_flattening_offset'].fillna(0.0) + ) + return flattened.drop(columns=['lat_bins_num', 'big_bin'], errors='ignore') + +# 1. Function to create an R-tree spatial index for raster bounds +def create_spatial_index(gebco_paths): + """ + Create an R-tree spatial index for raster bounds to quickly find relevant rasters. + + Parameters: + gebco_paths (list): List of paths to GEBCO raster files. + + Returns: + raster_data_dict (dict): Dictionary containing loaded rasters and their respective data. + spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. + """ + idx = index.Index() + raster_data_dict = {} + for i, path in enumerate(gebco_paths): + with rasterio.Env(GTIFF_SRS_SOURCE='EPSG'): + gebco_raster = rasterio.open(path) + raster_data = gebco_raster.read(1) + raster_data_dict[path] = (gebco_raster, raster_data) + bounds = gebco_raster.bounds + idx.insert(i, (bounds.left, bounds.bottom, bounds.right, bounds.top), obj=path) + return raster_data_dict, idx + +# 2. Function to determine which rasters are needed for a given set of coordinates using spatial index in a batch manner +def get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index): + """ + Determine which raster datasets are relevant for the given coordinates using spatial index. + This function uses a more efficient approach by performing a bounding box query for batches of points. + + Parameters: + lons (numpy.ndarray): Array of longitudes. + lats (numpy.ndarray): Array of latitudes. + raster_data_dict (dict): Dictionary containing raster datasets and their data. + spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. + + Returns: + relevant_rasters (list): List of relevant raster datasets and their respective data. + """ + # Create a bounding box that covers all points + min_lon, max_lon = lons.min(), lons.max() + min_lat, max_lat = lats.min(), lats.max() + bounding_box = box(min_lon, min_lat, max_lon, max_lat) + + # Get all rasters that intersect with the bounding box + matches = list(spatial_index.intersection((bounding_box.bounds), objects=True)) + relevant_paths = {match.object for match in matches} + relevant_rasters = [(raster_data_dict[path][0], raster_data_dict[path][1]) for path in relevant_paths] + return relevant_rasters + + +# 3. Function to get seafloor elevation from the relevant rasters in a vectorized manner +def get_seafloor_elevation(lons, lats, relevant_rasters): + """ + Get seafloor elevations for a batch of points based on longitude and latitude from relevant rasters. + + Parameters: + lons (numpy.ndarray): Array of longitudes. + lats (numpy.ndarray): Array of latitudes. + relevant_rasters (list): List of relevant raster datasets and their respective data. + + Returns: + seafloor_elevations (numpy.ndarray): Array of seafloor elevations. + """ + points = np.vstack((lons, lats)).T + seafloor_elevations = np.full(len(lons), np.nan) + + for gebco_raster, raster_data in relevant_rasters: + # Use rasterio.sample to get values for multiple points in a batch + values = list(gebco_raster.sample(points)) + for idx, value in enumerate(values): + if np.isnan(seafloor_elevations[idx]) and value is not None: + seafloor_elevations[idx] = value[0] + + return seafloor_elevations + + +# 4. The main process function that ties everything together +def process_seafloor_data(sea_photon_dataset, gebco_paths, Ignore_Subsurface_Height_Thres): + """ + Main function to process the seafloor data. + + Parameters: + gebco_paths (list): List of path to GEBCO raster files. + sea_photon_dataset (pandas.DataFrame): Dataset containing longitude, latitude, and photon height. + + Returns: + filtered_sea_photon_dataset (pandas.DataFrame): Filtered dataset containing points above the seafloor. + """ + + # Create spatial index and load GEBCO Raster Data + raster_data_dict, spatial_index = create_spatial_index(gebco_paths) + + # Get the relevant rasters using spatial index + lons = sea_photon_dataset['longitude'].values + lats = sea_photon_dataset['latitude'].values + relevant_rasters = get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index) + + # Get seafloor elevation for all points + sea_photon_dataset['seafloor_elevation'] = get_seafloor_elevation(lons, lats, relevant_rasters) + + # Calculate depth (assuming seafloor_elevation is negative below sea level) + # If your elevation is positive below sea level, remove the negative sign + sea_photon_dataset['depth'] = -sea_photon_dataset['seafloor_elevation'] + + # Filter out points: + # 1. below the seafloor (photon_height > seafloor_elevation) + # 2. where depth is less than 6 meters (depth >= 6) + filtered_sea_photon_dataset = sea_photon_dataset[ + (sea_photon_dataset['photon_height'] > sea_photon_dataset['seafloor_elevation']) & + (sea_photon_dataset['depth'] >= Ignore_Subsurface_Height_Thres) + ] + + return filtered_sea_photon_dataset + + +def load_atl24_points(atl24_file_path): + """ + Load ATL24 point dataset and normalize to columns: longitude, latitude, seafloor_elevation_atl24. + """ + if (not atl24_file_path) or (not os.path.exists(atl24_file_path)): + return pd.DataFrame(columns=['longitude', 'latitude', 'seafloor_elevation_atl24']) + + lower_path = atl24_file_path.lower() + if lower_path.endswith(('.csv', '.txt')): + atl24_df = pd.read_csv(atl24_file_path) + elif lower_path.endswith('.parquet'): + atl24_df = pd.read_parquet(atl24_file_path) + elif lower_path.endswith(('.gpkg', '.shp', '.geojson')): + try: + import geopandas as gpd + atl24_gdf = gpd.read_file(atl24_file_path) + atl24_df = pd.DataFrame(atl24_gdf) + if ('longitude' not in atl24_df.columns or 'latitude' not in atl24_df.columns) and ('geometry' in atl24_gdf.columns): + atl24_df['longitude'] = atl24_gdf.geometry.x + atl24_df['latitude'] = atl24_gdf.geometry.y + except Exception: + return pd.DataFrame(columns=['longitude', 'latitude', 'seafloor_elevation_atl24']) + else: + return pd.DataFrame(columns=['longitude', 'latitude', 'seafloor_elevation_atl24']) + + lon_candidates = ['longitude', 'lon', 'x', 'LONGITUDE', 'LON'] + lat_candidates = ['latitude', 'lat', 'y', 'LATITUDE', 'LAT'] + elev_candidates = [ + 'seafloor_elevation', 'bottom_elevation', 'bathymetry', 'elevation', 'z', + 'depth', 'water_depth' + ] + + lon_col = next((c for c in lon_candidates if c in atl24_df.columns), None) + lat_col = next((c for c in lat_candidates if c in atl24_df.columns), None) + elev_col = next((c for c in elev_candidates if c in atl24_df.columns), None) + if lon_col is None or lat_col is None or elev_col is None: + return pd.DataFrame(columns=['longitude', 'latitude', 'seafloor_elevation_atl24']) + + out_df = pd.DataFrame({ + 'longitude': pd.to_numeric(atl24_df[lon_col], errors='coerce'), + 'latitude': pd.to_numeric(atl24_df[lat_col], errors='coerce'), + 'atl24_raw_bathy': pd.to_numeric(atl24_df[elev_col], errors='coerce') + }).dropna(subset=['longitude', 'latitude', 'atl24_raw_bathy']).copy() + + if 'depth' in elev_col.lower() and ('elev' not in elev_col.lower()): + out_df['seafloor_elevation_atl24'] = -out_df['atl24_raw_bathy'].abs() + else: + out_df['seafloor_elevation_atl24'] = out_df['atl24_raw_bathy'] + + return out_df[['longitude', 'latitude', 'seafloor_elevation_atl24']] + + +def process_seafloor_data_atl24( + sea_photon_dataset, + atl24_file_path, + Ignore_Subsurface_Height_Thres, + max_match_distance_deg=0.01 +): + """ + Match ATL24 bathymetry points to photons, then filter below seafloor and shallow bins. + Returns filtered dataset and number of matched photons. + """ + atl24_points = load_atl24_points(atl24_file_path) + if atl24_points.empty: + return sea_photon_dataset, 0 + + photon_coords = sea_photon_dataset[['longitude', 'latitude']].to_numpy(dtype=float) + atl24_coords = atl24_points[['longitude', 'latitude']].to_numpy(dtype=float) + if len(photon_coords) == 0 or len(atl24_coords) == 0: + return sea_photon_dataset, 0 + + tree = cKDTree(atl24_coords) + distances, indices = tree.query(photon_coords, k=1, distance_upper_bound=max_match_distance_deg) + valid_match = np.isfinite(distances) & (indices < len(atl24_points)) + matched_count = int(valid_match.sum()) + if matched_count == 0: + return sea_photon_dataset, 0 + + matched_dataset = sea_photon_dataset.copy() + matched_dataset['seafloor_elevation'] = np.nan + matched_dataset.loc[valid_match, 'seafloor_elevation'] = atl24_points['seafloor_elevation_atl24'].to_numpy()[indices[valid_match]] + matched_dataset = matched_dataset.dropna(subset=['seafloor_elevation']).copy() + matched_dataset['depth'] = -matched_dataset['seafloor_elevation'] + + filtered_dataset = matched_dataset[ + (matched_dataset['photon_height'] > matched_dataset['seafloor_elevation']) & + (matched_dataset['depth'] >= Ignore_Subsurface_Height_Thres) + ] + return filtered_dataset, matched_count + + +# 5. The function to get the subsurface photon dataset +def get_subsurface_photon( + binned_dataset_sea_surface, + GEBCO_paths, + subsurface_thresh, + Ignore_Subsurface_Height_Thres, + use_atl24_filter=False, + atl24_file_path='', + atl24_max_match_distance_deg=0.01, + use_gebco_filter=False, + apply_histogram_quality_filter=False, + histogram_quality_min_ratio=0.05, + histogram_quality_depth_min=6.0, + histogram_quality_depth_max=7.0, + apply_surface_sigma_filter=False, + surface_sigma_max=0.5, + apply_refraction_correction=False, + refraction_water_temp_c=20.0, + refraction_wavelength_nm=532.0, + apply_post_refraction_refit=False, + apply_flattening=False, + flattening_window_m=500, + horizontal_res=500, + vertical_res=0.25 +): + # get sea surface height + # threshold to determine how much depth below sea surface will be accounted + # Output: + # ->final_sea_surface_height + # ->sea_surface_height_abnormal_label + # ->sea_surface_dominated_label + # # static threshold + # sea_surface_height, sea_surface_label, solo_sea_surface_label, subsurface_photon_dataset = \ + # get_sea_surface_height_static(binned_dataset_sea_surface, subsurface_thresh) + # adaptive threshold + sea_surface_height, sea_surface_label, solo_sea_surface_label, subsurface_photon_dataset = \ + get_sea_surface_height_adaptive(binned_dataset_sea_surface) + + if apply_histogram_quality_filter: + subsurface_photon_dataset = apply_optional_histogram_quality_filter( + binned_dataset_sea_surface, + subsurface_photon_dataset, + sea_surface_height, + min_ratio=histogram_quality_min_ratio, + depth_min=histogram_quality_depth_min, + depth_max=histogram_quality_depth_max + ) + + if apply_surface_sigma_filter: + subsurface_photon_dataset = apply_optional_surface_sigma_filter( + binned_dataset_sea_surface, + subsurface_photon_dataset, + sea_surface_height, + sigma_max=surface_sigma_max + ) + + if apply_refraction_correction: + subsurface_photon_dataset = apply_optional_refraction_correction( + binned_dataset_sea_surface, + subsurface_photon_dataset, + sea_surface_height, + water_temp_c=refraction_water_temp_c, + wavelength_nm=refraction_wavelength_nm + ) + if apply_post_refraction_refit: + corrected_full_dataset = apply_optional_refraction_correction( + binned_dataset_sea_surface, + binned_dataset_sea_surface.copy(), + sea_surface_height, + water_temp_c=refraction_water_temp_c, + wavelength_nm=refraction_wavelength_nm + ) + rebinned_corrected = horizontal_vertical_bin_dataset( + corrected_full_dataset, + horizontal_res, + vertical_res + ) + sea_surface_height, sea_surface_label, solo_sea_surface_label, subsurface_photon_dataset = \ + get_sea_surface_height_adaptive(rebinned_corrected) + + if use_atl24_filter: + atl24_filtered, atl24_match_count = process_seafloor_data_atl24( + subsurface_photon_dataset, + atl24_file_path, + abs(Ignore_Subsurface_Height_Thres), + max_match_distance_deg=atl24_max_match_distance_deg + ) + if atl24_match_count > 0: + filtered_seafloor_subsurface_photon_dataset = atl24_filtered + elif use_gebco_filter: + filtered_seafloor_subsurface_photon_dataset = process_seafloor_data( + subsurface_photon_dataset, GEBCO_paths, abs(Ignore_Subsurface_Height_Thres) + ) + else: + filtered_seafloor_subsurface_photon_dataset = subsurface_photon_dataset + elif use_gebco_filter: + filtered_seafloor_subsurface_photon_dataset = process_seafloor_data( + subsurface_photon_dataset, GEBCO_paths, abs(Ignore_Subsurface_Height_Thres) + ) + else: + filtered_seafloor_subsurface_photon_dataset = subsurface_photon_dataset + + if apply_flattening: + lat_bin_keys = list( + binned_dataset_sea_surface.groupby(['lat_bins'], observed=False).groups.keys() + ) + filtered_seafloor_subsurface_photon_dataset = apply_sea_surface_flattening( + filtered_seafloor_subsurface_photon_dataset, + sea_surface_height, + lat_bin_keys, + horizontal_res=horizontal_res, + flattening_window_m=flattening_window_m + ) + return sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset + + +# Main processing function to apply the subsurface photon filtering beam-by-beam +def process_subsurface_photon_filtering( + binned_dataset_sea_surface, + GEBCO_paths, + subsurface_thresh, + Ignore_Subsurface_Height_Thres, + use_atl24_filter=False, + atl24_file_path='', + atl24_max_match_distance_deg=0.01, + use_gebco_filter=False, + apply_histogram_quality_filter=False, + histogram_quality_min_ratio=0.05, + histogram_quality_depth_min=6.0, + histogram_quality_depth_max=7.0, + apply_surface_sigma_filter=False, + surface_sigma_max=0.5, + apply_refraction_correction=False, + refraction_water_temp_c=20.0, + refraction_wavelength_nm=532.0, + apply_post_refraction_refit=False, + apply_flattening=False, + flattening_window_m=500, + horizontal_res=500, + vertical_res=0.25 +): + # Initialize lists to store results for each beam + sea_surface_heights = [] + sea_surface_labels = [] + filtered_beam_datasets = [] + + # Group the binned dataset by 'beam_id' and process each group separately + for beam_id, beam_data in binned_dataset_sea_surface.groupby('beam_id'): + print(f'Processing subsurface filtering for beam: {beam_id}') + + # Apply get_subsurface_photon to the current beam's dataset + sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \ + get_subsurface_photon( + beam_data, + GEBCO_paths, + subsurface_thresh, + Ignore_Subsurface_Height_Thres, + use_atl24_filter=use_atl24_filter, + atl24_file_path=atl24_file_path, + atl24_max_match_distance_deg=atl24_max_match_distance_deg, + use_gebco_filter=use_gebco_filter, + apply_histogram_quality_filter=apply_histogram_quality_filter, + histogram_quality_min_ratio=histogram_quality_min_ratio, + histogram_quality_depth_min=histogram_quality_depth_min, + histogram_quality_depth_max=histogram_quality_depth_max, + apply_surface_sigma_filter=apply_surface_sigma_filter, + surface_sigma_max=surface_sigma_max, + apply_refraction_correction=apply_refraction_correction, + refraction_water_temp_c=refraction_water_temp_c, + refraction_wavelength_nm=refraction_wavelength_nm, + apply_post_refraction_refit=apply_post_refraction_refit, + apply_flattening=apply_flattening, + flattening_window_m=flattening_window_m, + horizontal_res=horizontal_res, + vertical_res=vertical_res + ) + + # Append each result to the lists + sea_surface_heights.append(sea_surface_height) + sea_surface_labels.append(sea_surface_label) + filtered_beam_datasets.append(filtered_seafloor_subsurface_photon_dataset) + + # Combine all filtered beam datasets into a single DataFrame + combined_filtered_dataset = pd.concat(filtered_beam_datasets, ignore_index=True) + + return sea_surface_heights, sea_surface_labels, combined_filtered_dataset diff --git a/icesat-2_kdph_py/kd_utils/data_processing.py b/icesat-2_kdph_py/kd_utils/data_processing.py new file mode 100644 index 0000000..42df0a8 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/data_processing.py @@ -0,0 +1,733 @@ +# utils/data_processing.py + + +import re +import os +import io +import time +import math +import h5py +import logging +import netCDF4 +import numpy as np +import geopandas as gpd + +import pandas as pd +from datetime import datetime +import matplotlib.pyplot as plt +from sklearn.preprocessing import StandardScaler, MinMaxScaler +from scipy.spatial import ConvexHull + +import argparse +import subprocess +# import fiona +import utm +import pyproj +from pyproj import Transformer, Proj + +# from pyproj import Transformer +from matplotlib.widgets import LassoSelector +from matplotlib.path import Path + +from sklearn.cluster import DBSCAN +from .interpolation import * + + + +#this function from icesat2_toolkit +# PURPOSE: read ICESat-2 ATL03 HDF5 data files +def read_granule(FILENAME, ATTRIBUTES=False, **kwargs): + """ + Reads ICESat-2 ATL03 Global Geolocated Photons data files + + Parameters + ---------- + FILENAME: str + full path to ATL03 file + ATTRIBUTES: bool, default False + read file, group and variable attributes + + Returns + ------- + IS2_atl03_mds: dict + ATL03 variables + IS2_atl03_attrs: dict + ATL03 attributes + IS2_atl03_beams: list + valid ICESat-2 beams within ATL03 file + """ + # Open the HDF5 file for reading + if isinstance(FILENAME, io.IOBase): + fileID = h5py.File(FILENAME, 'r') + else: + fileID = h5py.File(os.path.expanduser(FILENAME), 'r') + + # Output HDF5 file information + logging.info(fileID.filename) + logging.info(list(fileID.keys())) + + # allocate python dictionaries for ICESat-2 ATL03 variables and attributes + IS2_atl03_mds = {} + IS2_atl03_attrs = {} + + # read each input beam within the file + IS2_atl03_beams = [] + for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\d[lr]',k))]: + # check if subsetted beam contains data + # check in both the geolocation and heights groups + try: + fileID[gtx]['geolocation']['segment_id'] + fileID[gtx]['heights']['delta_time'] + except KeyError: + pass + else: + IS2_atl03_beams.append(gtx) + + # for each included beam + for gtx in IS2_atl03_beams: + + # ------------------------------------------- + # 1. make sure the beam-level dict exists + IS2_atl03_attrs.setdefault(gtx, {}) + # 2. always save the two “must-have” attributes + for key in ('atlas_beam_type', 'atlas_spot_number'): + IS2_atl03_attrs[gtx][key] = fileID[gtx].attrs[key] + + # get each HDF5 variable + IS2_atl03_mds[gtx] = {} + IS2_atl03_mds[gtx]['heights'] = {} + IS2_atl03_mds[gtx]['geolocation'] = {} + IS2_atl03_mds[gtx]['bckgrd_atlas'] = {} + IS2_atl03_mds[gtx]['geophys_corr'] = {} + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_mds[gtx]['heights'][key] = val[:] + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_mds[gtx]['geolocation'][key] = val[:] + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:] + # ICESat-2 Geophysical Corrections Group: Values for tides (ocean, + # solid earth, pole, load, and equilibrium), inverted barometer (IB) + # effects, and range corrections for tropospheric delays + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:] + + # Getting attributes of included variables + if ATTRIBUTES: + # Getting attributes of IS2_atl03_mds beam variables + IS2_atl03_attrs[gtx] = {} + IS2_atl03_attrs[gtx]['heights'] = {} + IS2_atl03_attrs[gtx]['geolocation'] = {} + IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {} + IS2_atl03_attrs[gtx]['geophys_corr'] = {} + + # Global Group Attributes + for att_name,att_val in fileID[gtx].attrs.items(): + IS2_atl03_attrs[gtx][att_name] = att_val + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_attrs[gtx]['heights'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_attrs[gtx]['geolocation'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val + # ICESat-2 Geophysical Corrections Group + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val + + # ICESat-2 spacecraft orientation at time + IS2_atl03_mds['orbit_info'] = {} + IS2_atl03_attrs['orbit_info'] = {} + for key,val in fileID['orbit_info'].items(): + IS2_atl03_mds['orbit_info'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID['orbit_info'].attrs.items(): + IS2_atl03_attrs['orbit_info'][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs['orbit_info'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['orbit_info'][key][att_name] = att_val + + # information ancillary to the data product + # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC) + # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC) + # Add this value to delta time parameters to compute full gps_seconds + # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5 + # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch) + IS2_atl03_mds['ancillary_data'] = {} + IS2_atl03_attrs['ancillary_data'] = {} + ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc', + 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit', + 'end_region','end_rgt','granule_end_utc','granule_start_utc','release', + 'start_cycle','start_geoseg','start_gpssow','start_gpsweek', + 'start_orbit','start_region','start_rgt','version'] + for key in ancillary_keys: + # get each HDF5 variable + IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data'][key] = {} + for att_name,att_val in fileID['ancillary_data'][key].attrs.items(): + IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val + + # transmit-echo-path (tep) parameters + IS2_atl03_mds['ancillary_data']['tep'] = {} + IS2_atl03_attrs['ancillary_data']['tep'] = {} + for key,val in fileID['ancillary_data']['tep'].items(): + # get each HDF5 variable + IS2_atl03_mds['ancillary_data']['tep'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data']['tep'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val + + # channel dead time and first photon bias derived from ATLAS calibration + cal1,cal2 = ('ancillary_data','calibrations') + for var in ['dead_time','first_photon_bias']: + IS2_atl03_mds[cal1][var] = {} + IS2_atl03_attrs[cal1][var] = {} + for key,val in fileID[cal1][cal2][var].items(): + # get each HDF5 variable + if isinstance(val, h5py.Dataset): + IS2_atl03_mds[cal1][var][key] = val[:] + elif isinstance(val, h5py.Group): + IS2_atl03_mds[cal1][var][key] = {} + for k,v in val.items(): + IS2_atl03_mds[cal1][var][key][k] = v[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs[cal1][var][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][att_name] = att_val + if isinstance(val, h5py.Group): + for k,v in val.items(): + IS2_atl03_attrs[cal1][var][key][k] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val + + # get ATLAS impulse response variables for the transmitter echo path (TEP) + tep1,tep2 = ('atlas_impulse_response','tep_histogram') + IS2_atl03_mds[tep1] = {} + IS2_atl03_attrs[tep1] = {} + for pce in ['pce1_spot1','pce2_spot3']: + IS2_atl03_mds[tep1][pce] = {tep2:{}} + IS2_atl03_attrs[tep1][pce] = {tep2:{}} + # for each TEP variable + for key,val in fileID[tep1][pce][tep2].items(): + IS2_atl03_mds[tep1][pce][tep2][key] = val[:] + # Getting attributes of included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID[tep1][pce][tep2].attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs[tep1][pce][tep2][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val + + # Global File Attributes + if ATTRIBUTES: + for att_name,att_val in fileID.attrs.items(): + IS2_atl03_attrs[att_name] = att_val + + # Closing the HDF5 file + fileID.close() + # Return the datasets and variables + return (IS2_atl03_mds,IS2_atl03_attrs,IS2_atl03_beams) + + + +# convert_wgs_to_utm function, see https://stackoverflow.com/a/40140326/4556479 +def convert_wgs_to_utm(lon: float, lat: float): + """Based on lat and lng, return best utm epsg-code""" + utm_band = str((math.floor((lon + 180) / 6) % 60) + 1) + if len(utm_band) == 1: + utm_band = '0' + utm_band + if lat >= 0: + epsg_code = 'epsg:326' + utm_band + return epsg_code + epsg_code = 'epsg:327' + utm_band + return epsg_code + + +def orthometric_correction(lat, lon, Z, epsg): + # Define the Proj string + #To transform from WGS84 ellipsoidal height + # to EGM2008 orthometric height using PyProj + # proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +vunits=m +no_defs +geoidgrids=egm2008-1.gtx' + # # Define the Proj string for WGS84 ellipsoidal height + # wgs84_proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs' + + # # Define the Proj string for EGM2008 orthometric height: egm08_25,egm2008-1 + # egm2008_proj_string = \ + # '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs ' \ + # '+geoidgrids=C:/Workstation/ICESat2_HLS/Code/Geoids/egm08_25.gtx' + + # transform ellipsoid (WGS84) height to orthometric height + # transformer = Transformer.from_crs(wgs84_proj_string, egm2008_proj_string, always_xy=True) + transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) + X_egm08, Y_egm08, Z_egm08 = transformer.transform(lon, lat, Z) + + # transform WGS84 proj to local UTM + myProj = Proj(epsg) + X_utm, Y_utm = myProj(lon, lat) + + return Y_utm, X_utm, Z_egm08 + + + +def load_data(file_path, read_attributes=False): + """ + Wrapper around read_granule that lets you decide + whether to pull the full attribute tree. + + Parameters + ---------- + file_path : str + Path to the ATL03 HDF5 granule. + read_attributes : bool, optional + If True, read_granule returns the full IS2_atl03_attrs tree. + Defaults to False. + """ + + + return read_granule(file_path, ATTRIBUTES = read_attributes) + + + +# requires that the input gdf has ranged index values i +# will need to change if index is changed to time or something +# this currently checks point in polygon for EVERY point +# would be significantly sped up if evaluated at 10m or something similar +# maybe later, fine for now +def isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF): + # try loading the shoreline data + try: + ICESat2_GDF.insert(0, 'lat', ICESat2_GDF.geometry.y, False) + ICESat2_GDF.insert(0, 'lon', ICESat2_GDF.geometry.x, False) + + # allocation of to be used arrays + zero_int_array = np.int64(np.zeros_like(ICESat2_GDF.geometry.x)) + + # Land flag initialized as -1 + # If shorelines downloaded already, will be set to 0 or 1 + ICESat2_GDF.insert(0, 'is_land', + zero_int_array - 1, False) + + # set the projection + ICESat2_GDF.set_crs("EPSG:4326", inplace=True) + + # load shoreline dataset to include only the features that intersect the bounding box + # bbox can be GeoDataFrame or GeoSeries | shapely Geometry, default None + # Filter features by given bounding box, GeoSeries, GeoDataFrame or a shapely geometry. + # engine str, 'fiona' or 'pyogrio' + # somtime it gives error if using fiona + # land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='fiona') + land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='pyogrio') + + # continue with getting a new array of 0-or-1 labels for each photon + land_point_labels = np.zeros_like(ICESat2_GDF.is_land.values) + + # update labels for points in the land polygons + pts_in_land = gpd.sjoin(ICESat2_GDF, land_polygon_gdf, predicate='within') + + # get land or not bool value + land_loc = ICESat2_GDF.index.isin(pts_in_land.index) + + # asigned them to new numpy array + land_point_labels[land_loc] = 1 + land_point_labels[~land_loc] = 0 + + return land_point_labels + + except Exception as e: + + print(e) + + print("Error loading shoreline data, returning -1s for is_land flag") + + # if the shoreline data is not available + # return the original label array + + return -np.ones_like(ICESat2_GDF.is_land.values) + + +def create_photon_dataframe(lat_ph, lon_ph, ref_elev, ref_azimuth, geoid, h_ph, \ + quality_ph, is_land_label_interp1d, signal_conf_photon, x_atc, relative_AT_dist, + solar_elevation=None, background_rate=None): + # Apply geoid correction to the photon heights to convert them from ellipsoidal to orthometric heights + h_ph_geoid_cor = h_ph[:] - geoid[:] + + # Determine the EPSG code for the UTM zone based on the first photon's longitude and latitude + epsg_code = convert_wgs_to_utm(lon_ph[0], lat_ph[0]) + + # Perform orthometric correction to obtain UTM coordinates and corrected heights + lat_utm, lon_utm, h_ph_cor = orthometric_correction(lat_ph, lon_ph, h_ph, epsg_code) + + # Put the data into the dataframe + sea_photon_dataset = pd.DataFrame({ + 'latitude': lat_ph, + 'longitude': lon_ph, + 'lat': lat_utm, + 'lon': lon_utm, + 'photon_height': h_ph_geoid_cor, + 'quality_ph': quality_ph, + 'is_land_label': is_land_label_interp1d, + 'photon_conf': signal_conf_photon, + 'ref_elevation': ref_elev, + 'ref_azimuth': ref_azimuth, + 'relative_AT_dist': relative_AT_dist + }, columns=['latitude', 'longitude', 'lat', 'lon', 'photon_height', 'quality_ph', 'is_land_label', 'photon_conf', 'ref_elevation', 'ref_azimuth', 'relative_AT_dist']) + + if solar_elevation is not None: + sea_photon_dataset['solar_elevation'] = solar_elevation + if background_rate is not None: + sea_photon_dataset['background_rate'] = background_rate + + return sea_photon_dataset + + +def interpolate_by_time(source_time, source_values, target_time): + """Linearly interpolate source_values from source_time to target_time.""" + source_time = np.asarray(source_time) + source_values = np.asarray(source_values) + target_time = np.asarray(target_time) + + valid_mask = np.isfinite(source_time) & np.isfinite(source_values) + if valid_mask.sum() < 2: + return np.full_like(target_time, np.nan, dtype=float) + + sorted_idx = np.argsort(source_time[valid_mask]) + sorted_time = source_time[valid_mask][sorted_idx] + sorted_values = source_values[valid_mask][sorted_idx] + + unique_time, unique_idx = np.unique(sorted_time, return_index=True) + unique_values = sorted_values[unique_idx] + if unique_time.size < 2: + return np.full_like(target_time, unique_values[0], dtype=float) + + return np.interp(target_time, unique_time, unique_values, left=unique_values[0], right=unique_values[-1]) + + +def apply_optional_solar_background_filter( + sea_photon_dataset, + enabled=False, + day_threshold=6.0, + background_quantile=0.8, + min_signal_conf=2 +): + """ + Optionally filter photons under strong daytime solar background conditions. + Keeps high-confidence photons in high-background segments. + """ + if not enabled: + return sea_photon_dataset + + required_cols = {'solar_elevation', 'background_rate', 'photon_conf'} + if not required_cols.issubset(set(sea_photon_dataset.columns)): + logger.warning("Solar background filter skipped because required columns are missing.") + return sea_photon_dataset + + filtered_dataset = sea_photon_dataset.copy() + daytime_mask = filtered_dataset['solar_elevation'] >= day_threshold + daytime_background = filtered_dataset.loc[daytime_mask, 'background_rate'] + daytime_background = daytime_background[np.isfinite(daytime_background)] + + if daytime_background.empty: + logger.info("Solar background filter enabled, but no valid daytime photons were found.") + return filtered_dataset + + quantile_threshold = daytime_background.quantile(background_quantile) + noisy_daytime_mask = daytime_mask & (filtered_dataset['background_rate'] >= quantile_threshold) + keep_mask = (~noisy_daytime_mask) | (filtered_dataset['photon_conf'] >= min_signal_conf) + + before_count = len(filtered_dataset) + filtered_dataset = filtered_dataset.loc[keep_mask].copy() + after_count = len(filtered_dataset) + logger.info( + "Solar background filter removed %s photons (from %s to %s).", + before_count - after_count, before_count, after_count + ) + return filtered_dataset + + +def apply_optional_ir_ap_filter( + sea_photon_dataset, + enabled=False, + quality_max=0, + min_signal_conf=0 +): + """ + Optionally remove likely flagged photons as an IR/afterpulse proxy. + This uses available ATL03 photon fields: + - quality_ph: keep <= quality_max + - photon_conf: keep >= min_signal_conf + """ + if not enabled: + return sea_photon_dataset + + filtered_dataset = sea_photon_dataset.copy() + keep_mask = np.ones(len(filtered_dataset), dtype=bool) + + if 'quality_ph' in filtered_dataset.columns: + quality_values = pd.to_numeric(filtered_dataset['quality_ph'], errors='coerce') + keep_mask &= quality_values <= quality_max + else: + logger.warning("IR/AP filter enabled, but quality_ph is missing.") + + if 'photon_conf' in filtered_dataset.columns: + conf_values = pd.to_numeric(filtered_dataset['photon_conf'], errors='coerce') + keep_mask &= conf_values >= min_signal_conf + else: + logger.warning("IR/AP filter enabled, but photon_conf is missing.") + + before_count = len(filtered_dataset) + filtered_dataset = filtered_dataset.loc[keep_mask].copy() + after_count = len(filtered_dataset) + logger.info( + "IR/AP proxy filter removed %s photons (from %s to %s).", + before_count - after_count, before_count, after_count + ) + return filtered_dataset + + +def Extract_sea_photons(IS2_atl03_mds, target_strong_beams, shoreline_data_path): + Segment_ID = {} + Segment_Index_begin = {} + Segment_PE_count = {} + Equator_Segment_Distance = {} + Segment_Length = {} + Segment_Is_Land = {} + Segment_Lon = {} + Segment_Lat = {} + Segment_Elev = {} + Segment_Time = {} + Segment_ref_elev = {} + Segment_ref_azimuth = {} + background_rate = {} + background_counts = {} + + # Initialize a list to store data for each beam + beam_datasets = [] + + + # Loop over each strong beam in target_strong_beams + for gtx in target_strong_beams: + print('Processing strong beam ID:', gtx) + + # Access the data for the current beam + IS2_val = IS2_atl03_mds[gtx] + + # Initialize dictionaries to store segment data for the beam + Segment_ID[gtx] = IS2_val['geolocation']['segment_id'] + n_seg = len(Segment_ID[gtx]) + n_pe, = IS2_val['heights']['delta_time'].shape + Segment_Index_begin[gtx] = IS2_val['geolocation']['ph_index_beg'] - 1 + Segment_PE_count[gtx] = IS2_val['geolocation']['segment_ph_cnt'] + Equator_Segment_Distance[gtx] = IS2_val['geolocation']['segment_dist_x'] + Segment_Length[gtx] = IS2_val['geolocation']['segment_length'] + delta_time = IS2_val['geolocation']['delta_time'] + segment_lat = IS2_val['geolocation']['reference_photon_lat'][:].copy() + segment_lon = IS2_val['geolocation']['reference_photon_lon'][:].copy() + ref_elev = IS2_val['geolocation']['ref_elev'][:].copy() + ref_azimuth = IS2_val['geolocation']['ref_azimuth'][:].copy() + geoid = IS2_val['geophys_corr']['geoid'][:].copy() + h_ph = IS2_val['heights']['h_ph'][:].copy() + photon_delta_time = IS2_val['heights']['delta_time'][:].copy() + lat_ph = IS2_val['heights']['lat_ph'][:].copy() + lon_ph = IS2_val['heights']['lon_ph'][:].copy() + signal_conf_photon = IS2_val['heights']['signal_conf_ph'][..., 0].copy() + x_atc = IS2_val['heights']['dist_ph_along'][:].copy() + y_atc = IS2_val['heights']['dist_ph_across'][:].copy() + quality_ph = IS2_val['heights']['quality_ph'] + + # Optional variables for solar background sensitivity testing + photon_solar_elevation = np.full_like(photon_delta_time, np.nan, dtype=float) + photon_background_rate = np.full_like(photon_delta_time, np.nan, dtype=float) + if 'solar_elevation' in IS2_val['geolocation']: + segment_solar_elevation = IS2_val['geolocation']['solar_elevation'][:].copy() + photon_solar_elevation = interpolate_by_time( + delta_time, segment_solar_elevation, photon_delta_time + ) + if 'bckgrd_atlas' in IS2_val and 'bckgrd_rate' in IS2_val['bckgrd_atlas'] and 'delta_time' in IS2_val['bckgrd_atlas']: + bckgrd_rate = IS2_val['bckgrd_atlas']['bckgrd_rate'][:].copy() + bckgrd_time = IS2_val['bckgrd_atlas']['delta_time'][:].copy() + photon_background_rate = interpolate_by_time( + bckgrd_time, bckgrd_rate, photon_delta_time + ) + + # Adjust x_atc based on segment distances + for seg_index in range(n_seg): + idx = Segment_Index_begin[gtx][seg_index] + cnt = Segment_PE_count[gtx][seg_index] + x_atc[idx:idx + cnt] += Equator_Segment_Distance[gtx][seg_index] + + # Calculate relative distances + relative_AT_dist = (x_atc - x_atc[0]) / 1000 + relative_seg_dist = (Equator_Segment_Distance[gtx] - Equator_Segment_Distance[gtx][0]) / 1000 + + # Create a GeoDataFrame to hold segment data for shoreline check + Segment_Is_Land['geometry'] = gpd.points_from_xy(segment_lon, segment_lat) + ICESat2_GDF = gpd.GeoDataFrame(Segment_Is_Land, crs="EPSG:4326") + + # Determine if it is land by the land/sea mask + Segment_Is_Land_Labels = isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF) + ICESat2_GDF.loc[:, 'is_land'] = Segment_Is_Land_Labels + + # Apply interpolations for required data + is_land_label_interp1d = apply_interpolation(interpolate_labels(segment_lat, Segment_Is_Land_Labels), lat_ph) + ph_ref_elev = apply_interpolation(interpolate_labels(segment_lat, ref_elev), lat_ph) + ph_ref_azimuth = apply_interpolation(interpolate_labels(segment_lat, ref_azimuth), lat_ph) + ph_geoid = apply_interpolation(interpolate_labels(segment_lat, geoid), lat_ph) + + + # Create photon DataFrame for the current beam + sea_photon_dataset = create_photon_dataframe(lat_ph=lat_ph, lon_ph=lon_ph, + ref_elev=ph_ref_elev,ref_azimuth=ph_ref_azimuth, + geoid=ph_geoid,h_ph=h_ph, + quality_ph=quality_ph, + is_land_label_interp1d=is_land_label_interp1d, + signal_conf_photon=signal_conf_photon, + x_atc=x_atc, # Note: x_atc is not used in the function. Remove if unnecessary. + relative_AT_dist=relative_AT_dist, + solar_elevation=photon_solar_elevation, + background_rate=photon_background_rate) + + # Filter out land photons + sea_photon_dataset = sea_photon_dataset[sea_photon_dataset['is_land_label'] != 1] + + # Add a new column to indicate the beam ID + sea_photon_dataset['beam_id'] = gtx + + # Append the processed dataset for the current beam to the list + beam_datasets.append(sea_photon_dataset) + + # Concatenate all beam data into a single DataFrame + all_beams_dataset = pd.concat(beam_datasets, ignore_index=True) + + return all_beams_dataset + + +def filter_photon_dataset_by_hull_area(photon_dataset, hull_area_threshold=3000): + """ + Filters photon dataset based on ConvexHull area threshold and returns the filtered dataset, + convex hull areas, and convex hull points. + """ + lat_bins_grouped = photon_dataset.groupby('lat_bins', observed=False) + filtered_dataset = photon_dataset.copy() + + convex_hulls = {} + convex_hull_areas = {} + + for lat_bin, bin_data in lat_bins_grouped: + if len(bin_data) >= 3: + points = bin_data[['lat', 'photon_height']].to_numpy() + hull = ConvexHull(points) + area = hull.volume + convex_hull_areas[lat_bin] = area + + # Store the ConvexHull points if area meets the threshold + if area >= hull_area_threshold: + convex_hulls[lat_bin] = points[hull.vertices] + else: + # Remove bins with hull area below the threshold + filtered_dataset = filtered_dataset[filtered_dataset['lat_bins'] != lat_bin] + + return filtered_dataset, convex_hull_areas, convex_hulls + + + + + + + + + +########################## +##Discard Functions Below +########################## + + +# Extracts key information from filenames, +# which could include processed status, product ID, timestamps, identifiers, or metadata. +def extract_file_params(file_path): + ''' + Example: input "processed_ATL06_20231115120000_20231115_001_12_data.h5" + Output: ('processed_', 'ATL06', '2023', '11', '15', '12', '00', '00', + '2023', '11', '15', '001', '12', '_data') + ''' + # Defines a regex pattern to match strings in the file path + rx = re.compile(r'(processed_)?(ATL\d{2})_(\d{4})(\d{2})(\d{2})(\d{2})' + r'(\d{2})(\d{2})_(\d{4})(\d{2})(\d{2})_(\d{3})_(\d{2})(.*?).h5$') + # Searches for all matches of the regex pattern in the given + params = rx.findall(file_path).pop() + return params + + +def create_mask(binned_data, sea_surface_height, seafloor_height, threshold_height): + ''' + create a mask for filtering sea surface, sea floor, and threshold_height + ''' + mask = (binned_data['height'] <= sea_surface_height) & \ + (binned_data['height'] >= seafloor_height) & \ + (binned_data['height'] >= threshold_height) + return mask + + +def generate_polygons_from_binned_data(lat, height, mask, lat_interval, height_interval): + ''' + horizontal_vertical_bin_dataset + Generate polygons for each bin after masking within a rectangle formed by height and latitude intervals + ''' + # Create latitude bins based on the specified interval + lat_bins = np.arange(lat.min(), lat.max() + lat_interval, lat_interval) + + # Create height bins within the range [-12, 2] based on the specified interval + height_bins = np.arange(-12, 2 + height_interval, height_interval) + + # Identify which bin each masked latitude and height value belongs to + lat_bin_indices = np.digitize(lat[mask], lat_bins) + + # Determine which height bin each masked point belongs to + height_bin_indices = np.digitize(height[mask], height_bins) + + # Combine latitude and height bin indices for each point + combined_bins = list(zip(lat_bin_indices, height_bin_indices)) + + # Find unique bin combinations and count the number of points in each bin + unique_bins, counts = np.unique(combined_bins, axis=0, return_counts=True) + + # Filter bins to include only those within valid index ranges + valid_bins = [(bin[0], bin[1]) for bin in unique_bins if 1 <= bin[0] < len(lat_bins) and 1 <= bin[1] < len(height_bins)] + + polygons = [] + for bin_lat, bin_height in valid_bins: + if bin_lat > 0 and bin_lat < len(lat_bins) and bin_height > 0 and bin_height < len(height_bins): + bin_points = np.array([(lat[mask][i], height[mask][i]) for i in range(sum(mask)) + if lat_bin_indices[i] == bin_lat and height_bin_indices[i] == bin_height]) + if len(bin_points) > 2: + hull = ConvexHull(bin_points) + polygons.append(bin_points[hull.vertices]) + + return lat_bins, height_bins, valid_bins, polygons + + + diff --git a/icesat-2_kdph_py/kd_utils/interpolation.py b/icesat-2_kdph_py/kd_utils/interpolation.py new file mode 100644 index 0000000..59b04b4 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/interpolation.py @@ -0,0 +1,19 @@ +# utils/interpolation.py + +import scipy.interpolate + +def interpolate_labels(segment_lat, labels): + model = scipy.interpolate.interp1d(segment_lat, labels, fill_value="extrapolate") + return model + +def apply_interpolation(model, lat_ph): + return model(lat_ph) + +def geoid_correction(lat_ph, segment_lat, geoid): + model = interpolate_labels(segment_lat, geoid) + return apply_interpolation(model, lat_ph) + +def refraction_correction(lat_ph, segment_lat, ref_elev, ref_azimuth): + elev_model = interpolate_labels(segment_lat, ref_elev) + azimuth_model = interpolate_labels(segment_lat, ref_azimuth) + return apply_interpolation(elev_model, lat_ph), apply_interpolation(azimuth_model, lat_ph) diff --git a/icesat-2_kdph_py/kd_utils/kd_utils.py b/icesat-2_kdph_py/kd_utils/kd_utils.py new file mode 100644 index 0000000..39c3687 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/kd_utils.py @@ -0,0 +1,1181 @@ +#!/usr/bin/env python +# coding: utf-8 + +##### +# This group of functions processes ICESat-2 data and creates a bathymetric model. +# To do this, it follows a number of steps in the form of functions, including: +# 1. Reading data (ReadATL03()) +# 2. Orthometrically correcting the dataset (OrthometricCorrection()) +# 3. Pulling down the data segment ID (getAtl03SegID()) +# 4. Bin the data along latitudinal and height gradients (bin_data()) +# 5. Calculate sea height (get_sea_height()) +# 6. Get water temperature (get_water_temp()) +# 7. Correct bathymetric surface for refraction (RefractionCorrection()) +# 8. Calculate bathymetric height (get_bath_height()) +# 9. Produce figures (produce_figures()) +##### +import os +# os.environ["PROJ_LIB"] = r"C:\Users\wayne\anaconda3\Library\share\proj" + +import io +import os +import re +import time +import math +import h5py +import logging +import netCDF4 +import numpy as np +import geopandas as gpd + +import pandas as pd +from datetime import datetime +import matplotlib.pyplot as plt +import hdbscan +from sklearn.preprocessing import StandardScaler, MinMaxScaler + +import argparse +import subprocess +# import fiona +import utm +import pyproj +from pyproj import Transformer, Proj + +# from pyproj import Transformer +from matplotlib.widgets import LassoSelector +from matplotlib.path import Path + +from sklearn.cluster import DBSCAN + +#this function from icesat2_toolkit +# PURPOSE: read ICESat-2 ATL03 HDF5 data files +def read_granule(FILENAME, ATTRIBUTES=False, **kwargs): + """ + Reads ICESat-2 ATL03 Global Geolocated Photons data files + + Parameters + ---------- + FILENAME: str + full path to ATL03 file + ATTRIBUTES: bool, default False + read file, group and variable attributes + + Returns + ------- + IS2_atl03_mds: dict + ATL03 variables + IS2_atl03_attrs: dict + ATL03 attributes + IS2_atl03_beams: list + valid ICESat-2 beams within ATL03 file + """ + # Open the HDF5 file for reading + if isinstance(FILENAME, io.IOBase): + fileID = h5py.File(FILENAME, 'r') + else: + fileID = h5py.File(os.path.expanduser(FILENAME), 'r') + + # Output HDF5 file information + logging.info(fileID.filename) + logging.info(list(fileID.keys())) + + # allocate python dictionaries for ICESat-2 ATL03 variables and attributes + IS2_atl03_mds = {} + IS2_atl03_attrs = {} + + # read each input beam within the file + IS2_atl03_beams = [] + for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\d[lr]',k))]: + # check if subsetted beam contains data + # check in both the geolocation and heights groups + try: + fileID[gtx]['geolocation']['segment_id'] + fileID[gtx]['heights']['delta_time'] + except KeyError: + pass + else: + IS2_atl03_beams.append(gtx) + + # for each included beam + for gtx in IS2_atl03_beams: + # get each HDF5 variable + IS2_atl03_mds[gtx] = {} + IS2_atl03_mds[gtx]['heights'] = {} + IS2_atl03_mds[gtx]['geolocation'] = {} + IS2_atl03_mds[gtx]['bckgrd_atlas'] = {} + IS2_atl03_mds[gtx]['geophys_corr'] = {} + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_mds[gtx]['heights'][key] = val[:] + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_mds[gtx]['geolocation'][key] = val[:] + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:] + # ICESat-2 Geophysical Corrections Group: Values for tides (ocean, + # solid earth, pole, load, and equilibrium), inverted barometer (IB) + # effects, and range corrections for tropospheric delays + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:] + + # Getting attributes of included variables + if ATTRIBUTES: + # Getting attributes of IS2_atl03_mds beam variables + IS2_atl03_attrs[gtx] = {} + IS2_atl03_attrs[gtx]['heights'] = {} + IS2_atl03_attrs[gtx]['geolocation'] = {} + IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {} + IS2_atl03_attrs[gtx]['geophys_corr'] = {} + # Global Group Attributes + for att_name,att_val in fileID[gtx].attrs.items(): + IS2_atl03_attrs[gtx][att_name] = att_val + # ICESat-2 Measurement Group + for key,val in fileID[gtx]['heights'].items(): + IS2_atl03_attrs[gtx]['heights'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val + # ICESat-2 Geolocation Group + for key,val in fileID[gtx]['geolocation'].items(): + IS2_atl03_attrs[gtx]['geolocation'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val + # ICESat-2 Background Photon Rate Group + for key,val in fileID[gtx]['bckgrd_atlas'].items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val + # ICESat-2 Geophysical Corrections Group + for key,val in fileID[gtx]['geophys_corr'].items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val + + # ICESat-2 spacecraft orientation at time + IS2_atl03_mds['orbit_info'] = {} + IS2_atl03_attrs['orbit_info'] = {} + for key,val in fileID['orbit_info'].items(): + IS2_atl03_mds['orbit_info'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID['orbit_info'].attrs.items(): + IS2_atl03_attrs['orbit_info'][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs['orbit_info'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['orbit_info'][key][att_name] = att_val + + # information ancillary to the data product + # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC) + # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC) + # Add this value to delta time parameters to compute full gps_seconds + # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5 + # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch) + IS2_atl03_mds['ancillary_data'] = {} + IS2_atl03_attrs['ancillary_data'] = {} + ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc', + 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit', + 'end_region','end_rgt','granule_end_utc','granule_start_utc','release', + 'start_cycle','start_geoseg','start_gpssow','start_gpsweek', + 'start_orbit','start_region','start_rgt','version'] + for key in ancillary_keys: + # get each HDF5 variable + IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data'][key] = {} + for att_name,att_val in fileID['ancillary_data'][key].attrs.items(): + IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val + + # transmit-echo-path (tep) parameters + IS2_atl03_mds['ancillary_data']['tep'] = {} + IS2_atl03_attrs['ancillary_data']['tep'] = {} + for key,val in fileID['ancillary_data']['tep'].items(): + # get each HDF5 variable + IS2_atl03_mds['ancillary_data']['tep'][key] = val[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs['ancillary_data']['tep'][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val + + # channel dead time and first photon bias derived from ATLAS calibration + cal1,cal2 = ('ancillary_data','calibrations') + for var in ['dead_time','first_photon_bias']: + IS2_atl03_mds[cal1][var] = {} + IS2_atl03_attrs[cal1][var] = {} + for key,val in fileID[cal1][cal2][var].items(): + # get each HDF5 variable + if isinstance(val, h5py.Dataset): + IS2_atl03_mds[cal1][var][key] = val[:] + elif isinstance(val, h5py.Group): + IS2_atl03_mds[cal1][var][key] = {} + for k,v in val.items(): + IS2_atl03_mds[cal1][var][key][k] = v[:] + # Getting attributes of group and included variables + if ATTRIBUTES: + # Variable Attributes + IS2_atl03_attrs[cal1][var][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][att_name] = att_val + if isinstance(val, h5py.Group): + for k,v in val.items(): + IS2_atl03_attrs[cal1][var][key][k] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val + + # get ATLAS impulse response variables for the transmitter echo path (TEP) + tep1,tep2 = ('atlas_impulse_response','tep_histogram') + IS2_atl03_mds[tep1] = {} + IS2_atl03_attrs[tep1] = {} + for pce in ['pce1_spot1','pce2_spot3']: + IS2_atl03_mds[tep1][pce] = {tep2:{}} + IS2_atl03_attrs[tep1][pce] = {tep2:{}} + # for each TEP variable + for key,val in fileID[tep1][pce][tep2].items(): + IS2_atl03_mds[tep1][pce][tep2][key] = val[:] + # Getting attributes of included variables + if ATTRIBUTES: + # Global Group Attributes + for att_name,att_val in fileID[tep1][pce][tep2].attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val + # Variable Attributes + IS2_atl03_attrs[tep1][pce][tep2][key] = {} + for att_name,att_val in val.attrs.items(): + IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val + + # Global File Attributes + if ATTRIBUTES: + for att_name,att_val in fileID.attrs.items(): + IS2_atl03_attrs[att_name] = att_val + + # Closing the HDF5 file + fileID.close() + # Return the datasets and variables + return (IS2_atl03_mds,IS2_atl03_attrs,IS2_atl03_beams) + +# convert_wgs_to_utm function, see https://stackoverflow.com/a/40140326/4556479 +def convert_wgs_to_utm(lon: float, lat: float): + """Based on lat and lng, return best utm epsg-code""" + utm_band = str((math.floor((lon + 180) / 6) % 60) + 1) + if len(utm_band) == 1: + utm_band = '0' + utm_band + if lat >= 0: + epsg_code = 'epsg:326' + utm_band + return epsg_code + epsg_code = 'epsg:327' + utm_band + return epsg_code + + +def orthometric_correction(lat, lon, Z, epsg): + # Define the Proj string + #To transform from WGS84 ellipsoidal height + # to EGM2008 orthometric height using PyProj + # proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +vunits=m +no_defs +geoidgrids=egm2008-1.gtx' + # # Define the Proj string for WGS84 ellipsoidal height + # wgs84_proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs' + + # # Define the Proj string for EGM2008 orthometric height: egm08_25,egm2008-1 + # egm2008_proj_string = \ + # '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs ' \ + # '+geoidgrids=C:/Workstation/ICESat2_HLS/Code/Geoids/egm08_25.gtx' + + # transform ellipsoid (WGS84) height to orthometric height + # transformer = Transformer.from_crs(wgs84_proj_string, egm2008_proj_string, always_xy=True) + transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) + X_egm08, Y_egm08, Z_egm08 = transformer.transform(lon, lat, Z) + + # transform WGS84 proj to local UTM + myProj = Proj(epsg) + X_utm, Y_utm = myProj(lon, lat) + + return Y_utm, X_utm, Z_egm08 + + +# Snippet by Eric Guenther (via Amy N.) for assigning photons to a segment +def get_atl03_seg_id(atl03_ph_index_beg, atl03_segment_id, atl03_heights_len): + # We need to know spacecraft orbit info, + # which is provided across segments. + # This first function assigns photons to the segment they belong to. + # We end up making a new array + # that has more points to match the photon. Segment is defined as every 100m in the long track. + + # Filter all data where atl03_ph_index starts at 0 (0 indicates errors) + indsNotZero = atl03_ph_index_beg != 0 + atl03_ph_index_beg = atl03_ph_index_beg[indsNotZero] + atl03_segment_id = atl03_segment_id[indsNotZero] + + # Subtract 1 from ph_index_beg to start at python 0th pos + atl03_ph_index_beg = atl03_ph_index_beg - 1 + + # Sometimes the ph_index_beg is not at the 0th position, it is not, + # add it in and then add the associated segment id + # Warning, this is assuming that the segment id for the points are from + # the segment id directly before it, this assumption might fail, but I have + # not come across a case yet where it does. If you want to play it safe + # you could comment this section out and then if the first position is not + # 0 then all photons before the first position will not be assigned a + # segment id. + # if atl03_ph_index_beg[0] != 0: + # atl03_ph_index_beg = np.append(0,atl03_ph_index_beg) + # first_seg_id = atl03_segment_id[0] -1 + # atl03_segment_id = np.append(first_seg_id,atl03_segment_id) + + # Append atl03_height_len to end of array for final position + atl03_ph_index_beg = np.append(atl03_ph_index_beg, atl03_heights_len) + + # Make array equal to the length of the atl03_heights photon level data + ph_segment_id = np.zeros(atl03_heights_len) + + # Iterate through ph_index_beg, from the first to second to last number + # and set the photons between ph_index_beg i to ph_index_beg i + 1 to + # segment id i + for i in range(0, len(atl03_ph_index_beg) - 1): + ph_segment_id[atl03_ph_index_beg[i]:atl03_ph_index_beg[i + 1]] = atl03_segment_id[i] + + # Return list of segment_id at the photon level + return ph_segment_id + + +def ref_linear_interp(x, y): + # initialize an empty list + arr = [] + + # get unique x values + ux = np.unique(x) + for u in ux: + # get y values for x=u + idx = y[x == u] + + # try to get the y values for x=u-1 and x=u + # if this is not possible, set min and max to y values for x=u + try: + min = y[x == u - 1][0] + max = y[x == u][0] + except: + min = y[x == u][0] + max = y[x == u][0] + + # try to get the y values for x=u and x=u+1 + # if this is not possible, set min and max to y values for x=u + try: + min = y[x == u][0] + max = y[x == u + 1][0] + except: + min = y[x == u][0] + max = y[x == u][0] + + # if the min and max values are the same, + # fill the sub array with the value + if min == max: + sub = np.full((len(idx)), min) + arr.append(sub) + + # if min and max are different, + # create a sub array using linear interpolation + else: + sub = np.linspace(min, max, len(idx)) + arr.append(sub) + + # concatenate all the sub arrays into a single array and return + return np.concatenate(arr, axis=None).ravel() + + +# Bin data along vertical and horizontal scales +def horizontal_vertical_bin_dataset(dataset, lat_res, vertical_res): + """Bin data along vertical and horizontal scales + for later segmentation""" + + # Filter values within the range (-50, 10), because photons elevation outside this range will be real noise + valid_range = (-50, 10) + valid_mask = (dataset['photon_height'] > valid_range[0]) & (dataset['photon_height'] < valid_range[1]) + + # Apply the valid_mask to filter unwanted values + filtered_dataset = dataset[valid_mask] + + # Calculate the number of height bins + height_range = abs(filtered_dataset['photon_height'].max() - filtered_dataset['photon_height'].min()) + height_bin_number = max(1, round(height_range / vertical_res)) # Ensure at least one bin + + # Calculate the number of latitude bins + lat_range = abs(filtered_dataset['lat'].max() - filtered_dataset['lat'].min()) + lat_bin_number = max(1, round(lat_range / lat_res)) # Ensure at least one bin + + # Create bins for latitude + lat_bins = pd.cut(filtered_dataset['lat'], bins=lat_bin_number, labels=np.arange(lat_bin_number)) + + # Create bins for height + height_bins = pd.cut(filtered_dataset['photon_height'], bins=height_bin_number, + labels=np.round(np.linspace(filtered_dataset['photon_height'].min(), + filtered_dataset['photon_height'].max(), + num=height_bin_number), decimals=1)) + + # Add bins to dataframe using .loc to avoid SettingWithCopyWarning + filtered_dataset.loc[:, 'lat_bins'] = lat_bins + filtered_dataset.loc[:, 'height_bins'] = height_bins + filtered_dataset = filtered_dataset.reset_index(drop=True) + + return filtered_dataset + + +# thinking about grid searching to detect bathymetric directly +# rather than bin and then search +def horizontal_vertical_grid_density_cal(dataset, lat_res, vertical_res, density_threshold): + """Bin data along vertical and horizontal scales + and calculate high-density points using a grid method""" + + # Calculate the number of bins required both vertically + lat_bin_number = round(abs(dataset['lat'].min() - dataset['lat'].max()) / lat_res) + # and horizontally based on resolution size + height_bin_number = round(abs(dataset['photon_height'].min() - dataset['photon_height'].max()) / vertical_res) + + # Create the grid + grid = np.zeros((lat_bin_number, height_bin_number)) + + # Iterate over the dataset and assign points to cells + for _, row in dataset.iterrows(): + lat_index = int((row['lat'] - dataset['lat'].min()) / lat_res) + height_index = int((row['photon_height'] - dataset['photon_height'].min()) / vertical_res) + grid[lat_index, height_index] += 1 + + # Identify high-density cells + high_density_cells = np.argwhere(grid > density_threshold) + + # Create a copy of the dataset + dataset_copy = dataset.copy() + + # Assign the cell indices as bins to the dataset + dataset_copy['lat_bins'] = pd.cut(dataset['lat'], bins=lat_bin_number, + labels=np.arange(lat_bin_number)) + dataset_copy['height_bins'] = pd.cut(dataset['photon_height'], bins=height_bin_number, + labels=np.arange(height_bin_number)) + + # Reset the index of the copied dataset + dataset_copy = dataset_copy.reset_index(drop=True) + + return dataset_copy, high_density_cells + + +# Bin data along horizontal scale only +def horizontal_bin_dataset(dataset, lat_res): + """Bin data along the horizontal scale (lat) only + for later segmentation""" + + # Calculate the number of bins required horizontally based on resolution size + lat_bin_number = round(abs(dataset['lat_utm'].min() - dataset['lat_utm'].max()) / lat_res) + + # Cut lat bins + # lat_bins = pd.cut(dataset['lat'], bins=lat_bin_number, labels=np.array(range(lat_bin_number))) + lat_bins = pd.cut(dataset['lat_utm'], bins=lat_bin_number, labels=np.array(range(lat_bin_number))) + + # Create a copy of the dataset + dataset_copy = dataset.copy() + + # Add lat bins to the dataframe + dataset_copy['lat_bins'] = lat_bins + + # Reset the index of the copied dataset + dataset_copy = dataset_copy.reset_index(drop=True) + + return dataset_copy + + +# Bin data first, and then throw away only the surface bin +def get_rm_sea_surface_bin(binned_dataset): + """Calculate mean sea height for easier calculation of depth and cleaner + figures""" + + # set flag for the df save + flag = 1 + + # group dataset by lat bins + grouped_data = binned_dataset.groupby(['lat_bins'], group_keys=True) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average sea height + for k, v in data_groups.items(): + + lat_bin_average = v['lat'].mean() + + # Create new dataframe based on occurrence of photons per height bin + new_df = pd.DataFrame(v.groupby('height_bins',observed=False).count()) + + # Return the bin with the highest count + largest_h_bin = new_df['lat'].argmax() + + # Select the index of the bin with the highest count + largest_h_index = new_df.index[largest_h_bin] + + # get all values below this bin + # Use boolean indexing to select only the values below the peak bin + new_photon_array_without_peak_bin = v.loc[v['height_bins'] < largest_h_index] + + if flag == 1: + photon_array_without_peak_bin = new_photon_array_without_peak_bin + flag = 2 + + else: + photon_array_without_peak_bin = photon_array_without_peak_bin.append(new_photon_array_without_peak_bin) + + del new_df + + return photon_array_without_peak_bin + + +def get_sea_surface_height(binned_data, threshold): + """Calculate mean sea height for easier calculation of depth and cleaner figures""" + + #set flag for the df save + firstTimeIndex = True + + # Create sea height list + sea_surface_height = [] + mean_lat_bins_seq = [] + sea_surface_subsurface_photons_ratio = [] + + + # Group dataset by latitude bins + grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average sea height + for k, v in data_groups.items(): + # based on lat_utm + lat_bin_average = v['lat'].mean() + + # Create new dataframe based on occurrence of photons per height bin + new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) + + # Return the bin with the highest count + largest_h_bin = new_df['lat'].argmax() + + # Select the index of the bin with the highest count + largest_h_index = new_df.index[largest_h_bin] + + # Calculate the median value of all photon height values within this bin + photons_sea_surface = v.loc[v['height_bins'] == largest_h_index, 'photon_height'] + lat_bin_sea_median = photons_sea_surface.median() + + # Append to sea height list + sea_surface_height.append(lat_bin_sea_median) + mean_lat_bins_seq.append(lat_bin_average) + del new_df + + # Get all photons below sea surface + # to determine segment type of each subsurface water column + # Use calculated sea height to determine photons at 0.5m below peak + photons_sea_surface_up = \ + v.loc[(v['photon_height'] > (lat_bin_sea_median - threshold)) & + (v['photon_height'] < (lat_bin_sea_median + 2*threshold))] + + # Calculate the photon ratio between surface and whole photons + if v['photon_height'].shape[0] > 0: + new_photons_ratio_sea_surface = \ + photons_sea_surface_up.shape[0] / v['photon_height'].shape[0] + else: + new_photons_ratio_sea_surface = np.nan + + sea_surface_subsurface_photons_ratio.append((1 - new_photons_ratio_sea_surface)) + + # Filter out sea height bin values outside 2 SD of mean. + mean = np.nanmean(sea_surface_height, axis=0) + sd = np.nanstd(sea_surface_height, axis=0) + + final_sea_surface_height = np.where((sea_surface_height > (mean + 2 * sd)) | + (sea_surface_height < (mean - 2 * sd)), + np.nan, + sea_surface_height).tolist() + + sea_surface_height_abnormal_label = np.where(np.isnan(final_sea_surface_height), 0, 1) + + # Determine label based on ratio of sea surface photons and subsurface photons + sea_surface_dominated_label = \ + np.where(np.array(sea_surface_subsurface_photons_ratio) >= 0.2, 0, 1) + + # Loop through groups again and return photons below 0.5m of sea height + PhotonDFBelowThresholdPeak = pd.DataFrame() + for i, (k, v) in enumerate(data_groups.items()): + # Get all values below this bin + NewPhotonDFBelowThresholdPeak = \ + v.loc[v['photon_height'] < (final_sea_surface_height[i] - threshold)] + + if firstTimeIndex: + PhotonDFBelowThresholdPeak = NewPhotonDFBelowThresholdPeak + firstTimeIndex=False + else: + PhotonDFBelowThresholdPeak=\ + pd.concat([PhotonDFBelowThresholdPeak, NewPhotonDFBelowThresholdPeak]) + + + return final_sea_surface_height, \ + sea_surface_height_abnormal_label, \ + sea_surface_dominated_label,\ + PhotonDFBelowThresholdPeak + + +# +#Arbitrary cutoff below the max value - 0.5 m below peak +# (we may also use 1 m but we can add that later) (apply to raw photon data, each of 6 beams) +def get_photon_below_sea_surface(binned_data,threshold): + '''Calculate mean sea height for easier calculation of depth and cleaner figures''' + + #set flag for the df save + firstTimeIndex=1 + + # Create sea height list + sea_surface_height = [] +# mean_lat_bins_seq=[] + + grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average sea height + for k,v in data_groups.items(): + + lat_bin_average=v['lat_utm'].mean() + + # Create new dataframe based on occurance of photons per height bin + new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) + + # Return the bin with the highest count + largest_h_bin = new_df['lat_utm'].argmax() + + # Select the index of the bin with the highest count + largest_h = new_df.index[largest_h_bin] + + # Calculate the median value of all values within this bin + lat_bin_sea_median = v.loc[v['height_bins']==largest_h, 'photon_height'].median() + + # Append to sea height list + sea_surface_height.append(lat_bin_sea_median) +# mean_lat_bins_seq.append(lat_bin_average) + del new_df + + # Filter out sea height bin values outside 2 SD of mean. + mean = np.nanmean(sea_surface_height, axis=0) + sd = np.nanstd(sea_surface_height, axis=0) + Final_sea_height = np.where((sea_surface_height > (mean + 2*sd)) | (sea_surface_height < (mean - 2*sd)), np.nan, + sea_surface_height).tolist() + Abnormal_sea_height_label=np.where(np.isnan(Final_sea_height), 1, 0) + + + # Loop through groups again and return photons below 0.5m of sea height + for k,v in data_groups.items(): + + # get all values below this bin + # Use calculated sea height to determine photons at 0.5m below peak + NewPhotonArrayBelowThresholdPeak= \ + v.loc[v['photon_height']<(sea_surface_height[k]-threshold)] + + if firstTimeIndex ==1: + PhotonArrayBelowThresholdPeak=NewPhotonArrayBelowThresholdPeak + firstTimeIndex=2 + + else: + PhotonArrayBelowThresholdPeak=PhotonArrayBelowThresholdPeak.append(NewPhotonArrayBelowThresholdPeak) + + + return PhotonArrayBelowThresholdPeak + + + +# Function to get elevation for multiple points +def get_seafloor_bathy_GEBCO_batch(lons, lats, raster, raster_data): + # Convert geographic coordinates to the raster's coordinate system + rows, cols = raster.index(lons, lats) + rows, cols = np.array(rows), np.array(cols) + + # Ensure the indices are within bounds + valid_mask = (rows >= 0) & (rows < raster.height) & (cols >= 0) & (cols < raster.width) + elevations = np.full(lons.shape, np.nan) + elevations[valid_mask] = raster_data[rows[valid_mask], cols[valid_mask]] + + return elevations + +def get_water_temp(date_year, date_month, date_day, latitude, longitude): + """ + Pull down surface water temperature along the track from the JPL GHRSST opendap website. + + The GHRSST data are gridded tiles with dimension 17998 x 35999. + To get the specific grid tile of the SST, you must convert from lat, lon coordinates + to the gridded tile ratio of the SST data product using the coordinates of the IS2 data. + """ + # Get date from data filename + # data_path[-33:-25] + date = date_year + date_month + date_day + # date[0:4] + year = date_year + # date[4:6] + month = date_month + # date[6:8] + day = date_day + day_of_year = str(datetime.strptime(date, '%Y%m%d').timetuple().tm_yday) + # Add zero in front of day of year string + zero_day_of_year = day_of_year.zfill(3) + + # Calculate ratio of latitude from mid-point of IS2 track + old_lat = latitude.mean() + old_lat_min = -90 + old_lat_max = 90 + new_lat_min = 0 + new_lat_max = 17998 + + new_lat = round(((old_lat - old_lat_min) / (old_lat_max - old_lat_min)) * + (new_lat_max - new_lat_min) + new_lat_min) + + # Calculate ratio of longitude from mid-point of IS2 track + old_lon = longitude.mean() + old_lon_min = -180 + old_lon_max = 180 + new_lon_min = 0 + new_lon_max = 35999 + + new_lon = round(((old_lon - old_lon_min) / (old_lon_max - old_lon_min)) * + (new_lon_max - new_lon_min) + new_lon_min) + + # Access the SST data using the JPL OpenDap interface + url = 'https://opendap.jpl.nasa.gov/opendap/OceanTemperature/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/' \ + + str(year) + '/' + str(zero_day_of_year) + '/' + str(date) \ + + '090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc' + + dataset = netCDF4.Dataset(url) + + # Access the data and convert the temperature from K to C + water_temp = dataset['analysed_sst'][0, new_lat, new_lon] - 273.15 + return water_temp + + +def refraction_correction(WTemp, WSmodel, Wavelength, + Photon_ref_elev, Ph_ref_azimuth, + PhotonZ, PhotonX, PhotonY, Ph_Conf): + """ + WTemp; there is python library that pulls water temp data + WSmodel is the value surface height + Wavelength is fixed + """ + + # Only process photons below water surface model + PhotonX = PhotonX[PhotonZ <= WSmodel] + PhotonY = PhotonY[PhotonZ <= WSmodel] + Photon_ref_elev = Photon_ref_elev[PhotonZ <= WSmodel] + Ph_ref_azimuth = Ph_ref_azimuth[PhotonZ <= WSmodel] + Ph_Conf = Ph_Conf[PhotonZ <= WSmodel] + PhotonZ = PhotonZ[PhotonZ <= WSmodel] + + # water temp for refraction correction + WaterTemp = WTemp + + # Refraction coefficient # + a = -0.000001501562500 + b = 0.000000107084865 + c = -0.000042759374989 + d = -0.000160475520686 + e = 1.398067112092424 + wl = Wavelength + + # refractive index of air + n1 = 1.00029 + + # refractive index of water + n2 = (a * WaterTemp ** 2) + (b * wl ** 2) + (c * WaterTemp) + (d * wl) + e + + # assumption is 0.25416 + # This example is refractionCoef = 0.25449 + # 1.00029 is refraction of air constant + correction_coef = (1 - (n1 / n2)) + + # read photon ref_elev to get theta1 + theta1 = np.pi / 2 - Photon_ref_elev + + # eq 1. Theta2 + theta2 = np.arcsin(((n1 * np.sin(theta1)) / n2)) + + # eq 3. S + # Approximate water Surface = 1.5 + # D = raw uncorrected depth + D = WSmodel - PhotonZ + + # For Triangle DTS + S = D / np.cos(theta1) + + # eq 2. R + R = (S * n1) / n2 + Gamma = (np.pi / 2) - theta1 + + # For triangle RPS + # phi is an angle needed + phi = theta1 - theta2 + + # P is the difference between raw and corrected YZ location + P = np.sqrt(R ** 2 + S ** 2 - 2 * R * S * np.cos(phi)) + + # alpha is an angle needed + alpha = np.arcsin((R * np.sin(phi)) / P) + + # Beta angle needed for Delta Y an d Delta Z + Beta = Gamma - alpha + + # Delta Y + DY = P * np.cos(Beta) + + # Delta Z + DZ = P * np.sin(Beta) + + # Delta Easting + DE = DY * np.sin(Ph_ref_azimuth) + + # Delta Northing + DN = DY * np.cos(Ph_ref_azimuth) + + outX = PhotonX + DE + outY = PhotonY + DN + outZ = PhotonZ + DZ + + ''' + print('For selected Bathy photon:') + print('lat = ', PhotonY[9000]) + print('long = ', PhotonX[9000]) + print('Raw Depth = ', PhotonZ[9000]) + print('D = ', D[9000]) + + print('ref_elev = ', Photon_ref_elev[9000]) + + print('Delta East = ', DE[9000]) + print('Delta North = ', DN[9000]) + print('Delta Z = ', DZ[9000]) + ''' + return (outX, outY, outZ, Ph_Conf, PhotonX, PhotonY, PhotonZ, Ph_ref_azimuth, + Photon_ref_elev) # We are most interested in out-x, out-y, out-z + + +def get_bath_height_percentile_thresh(binned_data, percentile_thresh, sea_surface_height, vertical_res): + """ Detect bathymetric level per bin based on percentile_thresh """ + # Create sea height list + bath_height = [] + + geo_photon_height = [] + geo_longitude = [] + geo_latitude = [] + + # Group data by latitude + # Filter out surface data that are two bins below median surface value calculated above + binned_data_bath = binned_data[(binned_data['photon_height'] < + sea_surface_height - (vertical_res * 2))] + grouped_data = binned_data_bath.groupby(['lat_bins'], group_keys=True) + data_groups = dict(list(grouped_data)) + + # Create a percentile threshold of photon counts in each grid, + # grouped by both x and y axes. + count_threshold = np.percentile( + binned_data.groupby(['lat_bins', 'height_bins']).size().reset_index().groupby('lat_bins')[[0]].max(), + percentile_thresh) + + # Loop through groups and return average bathy height + for k, v in data_groups.items(): + new_df = pd.DataFrame(v.groupby('height_bins').count()) + bath_bin = new_df['lat'].argmax() + bath_bin_h = new_df.index[bath_bin] + + # Set threshold of photon counts per bin + # here this script determines whether there is bathymetry signals by + # the photon counts per bin below sea surface height + if new_df.iloc[bath_bin]['lat'] >= count_threshold: + + geo_photon_height.append(v.loc[v['height_bins'] == + bath_bin_h, 'cor_photon_height'].values) + geo_longitude.append(v.loc[v['height_bins'] == bath_bin_h, 'lon'].values) + geo_latitude.append(v.loc[v['height_bins'] == bath_bin_h, 'lat'].values) + + bath_bin_median = v.loc[v['height_bins'] == bath_bin_h, 'cor_photon_height'].median() + bath_height.append(bath_bin_median) + del new_df + + else: + bath_height.append(np.nan) + del new_df + + geo_longitude_list = np.concatenate(geo_longitude).ravel().tolist() + geo_latitude_list = np.concatenate(geo_latitude).ravel().tolist() + geo_photon_list = np.concatenate(geo_photon_height).ravel().tolist() + geo_depth = sea_surface_height - geo_photon_list + geo_df = pd.DataFrame( + {'lon': geo_longitude_list, 'lat': geo_latitude_list, + 'photon_height': geo_photon_list, + 'depth': geo_depth}) + + del geo_longitude_list, geo_latitude_list, geo_photon_list + + return bath_height, geo_df + + +def get_bath_height_HDBSCAN(lat_binned_data, percentile_thresh, sea_surface_height, vertical_res): + """ Calculate bathymetric level per lat bin based on horizontal resolution """ + # Create sea height list + bath_height = [] + geo_photon_height = [] + geo_longitude = [] + geo_latitude = [] + + # Group data by latitude + # Filter out surface data that are two bins (2 times height resolution) + # below median sea surface value calculated above + binned_data_bath = lat_binned_data[(lat_binned_data['photon_height'] < + sea_surface_height - (vertical_res * 2))] + + grouped_data = binned_data_bath.groupby(['lat_bins'], group_keys=True) + data_groups = dict(list(grouped_data)) + + # Loop through groups and return average bathymetric height + for k, v in data_groups.items(): + + # assign each group of dataset to a new dataframe + new_df = pd.DataFrame(v) + + # Check if the DataFrame is empty + if new_df.empty: + # If the DataFrame is empty, append null values to the lists and skip to the next iteration + bath_height.append(np.nan) + geo_photon_height.append([]) + geo_longitude.append([]) + geo_latitude.append([]) + del new_df + continue + + lat_height_pairs = list(zip(new_df['lat_utm'], new_df['cor_photon_height'])) + + # Convert to a numpy array for sklearn + lat_height_pairs_array = np.array(lat_height_pairs) + + # Perform HDBSCAN clustering on the photons below sea surface for each lat bin + # scaler = StandardScaler() + scaler = MinMaxScaler() + data_scaled = scaler.fit_transform(lat_height_pairs_array) + + min_cluster_size = 4 + + # Check the number of data points is greater than the initial min_cluster_size + if len(data_scaled) < min_cluster_size: + min_cluster_size = len(data_scaled) // 2 + if min_cluster_size < 2: + bath_height.append(np.nan) + geo_photon_height.append([]) + geo_longitude.append([]) + geo_latitude.append([]) + del new_df + continue + + # cluster = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, leaf_size=20) + cluster = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, + min_samples=3, cluster_selection_epsilon=20, + leaf_size=25, core_dist_n_jobs=-1) + cluster.fit(data_scaled) + + # Get the labels assigned to each point by the HDBSCAN model + labels = cluster.labels_ + + # Count the number of points assigned to each cluster + unique, counts = np.unique(labels, return_counts=True) + + # Create a dictionary that maps each cluster label to the count of points assigned to it + clusters_dict = dict(zip(unique, counts)) + + # Print the dictionary to see the size of each cluster + print(clusters_dict) + + # Identify the label of the largest cluster + max_cluster_label = max(clusters_dict, key=clusters_dict.get) + + # Check if no cluster is found + if max_cluster_label == -1: + bath_height.append(np.nan) + else: + # Add labels to the DataFrame + new_df_copy = new_df.copy() + new_df_copy['cluster'] = labels + + # Subset the DataFrame to get only the data points in the largest cluster + bath_cluster_data = new_df[new_df_copy['cluster'] == max_cluster_label] + + # calculate the median height value as the average bathymetric height + bath_bin_median = bath_cluster_data['cor_photon_height'].median() + bath_height.append(bath_bin_median) + + # Extract the longitude, latitude, and photon height for each lat bin + # and add it to respective lists + geo_photon_height.append(bath_cluster_data['cor_photon_height'].values) + geo_longitude.append(bath_cluster_data['lon_utm'].values) + geo_latitude.append(bath_cluster_data['lat_utm'].values) + + del new_df + + # Convert the lists to a single list + geo_longitude_list = np.concatenate(geo_longitude).ravel().tolist() + geo_latitude_list = np.concatenate(geo_latitude).ravel().tolist() + geo_photon_list = np.concatenate(geo_photon_height).ravel().tolist() + + # Calculate depth + geo_depth = sea_surface_height - np.array(geo_photon_list) + + # Create a DataFrame + geo_df = pd.DataFrame( + {'lon': geo_longitude_list, 'lat': geo_latitude_list, + 'photon_height': geo_photon_list, + 'depth': geo_depth.tolist()}) + + return bath_height, geo_df + +# requires that the input gdf has ranged index values i +# will need to change if index is changed to time or something +# this currently checks point in polygon for EVERY point +# would be significantly sped up if evaluated at 10m or something similar +# maybe later, fine for now +def isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF): + # try loading the shoreline data + try: + ICESat2_GDF.insert(0, 'lat', ICESat2_GDF.geometry.y, False) + ICESat2_GDF.insert(0, 'lon', ICESat2_GDF.geometry.x, False) + + # allocation of to be used arrays + zero_int_array = np.int64(np.zeros_like(ICESat2_GDF.geometry.x)) + + # Land flag initialized as -1 + # If shorelines downloaded already, will be set to 0 or 1 + ICESat2_GDF.insert(0, 'is_land', + zero_int_array - 1, False) + + # set the projection + ICESat2_GDF.set_crs("EPSG:4326", inplace=True) + + # load shoreline dataset to include only the features that intersect the bounding box + # bbox can be GeoDataFrame or GeoSeries | shapely Geometry, default None + # Filter features by given bounding box, GeoSeries, GeoDataFrame or a shapely geometry. + # engine str, 'fiona' or 'pyogrio' + # somtime it gives error if using fiona + # land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='fiona') + land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='pyogrio') + + # continue with getting a new array of 0-or-1 labels for each photon + land_point_labels = np.zeros_like(ICESat2_GDF.is_land.values) + + # update labels for points in the land polygons + pts_in_land = gpd.sjoin(ICESat2_GDF, land_polygon_gdf, predicate='within') + + # get land or not bool value + land_loc = ICESat2_GDF.index.isin(pts_in_land.index) + + # asigned them to new numpy array + land_point_labels[land_loc] = 1 + land_point_labels[~land_loc] = 0 + + return land_point_labels + + except Exception as e: + + print(e) + + print("Error loading shoreline data, returning -1s for is_land flag") + + # if the shoreline data is not available + # return the original label array + + return -np.ones_like(ICESat2_GDF.is_land.values) + + +# +def produce_figures(binned_data, bath_height, sea_height, solo_sea_surface_label, + y_limit_top, y_limit_bottom, percentile, file, geo_df, + ref_y, ref_z, beam, epsg_num): + """Create figures""" + + # Create bins for latitude + bath_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(bath_height))+20 + + sea_surface_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(sea_height))+10 + + # Create new dataframes for median values + bath_median_df = pd.DataFrame({'x': bath_x_axis_bins, 'y': bath_height}) + + # Create uniform sea surface based on median sea surface values and filter out surface breaching + sea_height1 = [np.nanmedian(sea_height) if i == i else np.nan for i in sea_height] + sea_median_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_height1}) + + # Create uniform solo sea surface label + sea_surface_label = solo_sea_surface_label + sea_surface_label_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_surface_label}) + idx_1 = np.where(sea_surface_label_df.y == 1) + idx_0 = np.where(sea_surface_label_df.y == 0) + + # Define figure size + fig = plt.rcParams["figure.figsize"] = (40, 25) + + # Plot raw points + # plt.scatter(x=binned_data.lat, + # y = binned_data.photon_height, marker='o', lw=0, s=1, alpha = 0.8, + # c = 'yellow', label = 'Raw photon height') + plt.scatter(ref_y, ref_z, s=0.5, alpha=0.1, c='black') + plt.scatter(geo_df.lat, geo_df.photon_height, s=0.8, marker = 'o', + alpha=0.1, c='red', label='Classified Photons') + + # plt.scatter(x=geo_df.lat, + # y = geo_df.photon_height, marker='o', lw=0, s=0.8, + # alpha = 0.8, c = 'black', label = 'Corrected photon bin') + + # Plot median values + plt.scatter(bath_median_df.x, bath_median_df.y, + marker='o', c='r', alpha=0.8, s=2, label='Median bathymetry') + + plt.scatter(sea_median_df.x, sea_median_df.y, + marker='o', c='b', alpha=1, s=2, label='Median sea surface') + + plt.scatter(sea_surface_label_df.iloc[idx_1].x, sea_surface_label_df.iloc[idx_1].y, + marker='o', c='pink', alpha=1, s=3, label='solo_sea_surface') + plt.scatter(sea_surface_label_df.iloc[idx_0].x, sea_surface_label_df.iloc[idx_0].y, + marker='o', c='g', alpha=1, s=3, label='non_solo_sea_surface') + + # Insert titles and subtitles + plt.title('Icesat2 Bathymetry\n' + file) + plt.xlabel('Latitude', fontsize=25) + plt.ylabel('Photon Height (m)', fontsize=25) + plt.xticks(fontsize=16) + plt.yticks(fontsize=16) + + plt.legend(loc="upper left", prop={'size': 20}) + + # Limit the x and y axes using parameters + plt.xlim(left=binned_data.lat.min(), right=binned_data.lat.max()) + plt.ylim(top=y_limit_top, bottom=y_limit_bottom) + + timestr = time.strftime("%Y%m%d_%H%M%S") + file = file.replace('.h5', '') + # Define where to save file + plt.tight_layout() + plt.savefig("C:/Workstation/ICESat2_HLS/" + file + '_gt' + + str(beam) + '_' + str(percentile) + + '_EPSG' + str(epsg_num) + '_' + timestr + ".pdf") + # plt.show() + # plt.close() + + # convert corrected locations back to wgs84 (useful to contain) + transformer = Transformer.from_crs("EPSG:" + str(epsg_num), + "EPSG:4326", always_xy=True) + print(transformer) + lon_wgs84, lat_wgs84 = transformer.transform( + geo_df.lon.values, geo_df.lat.values) + + geo_df['lon_wgs84'] = lon_wgs84 + geo_df['lat_wgs84'] = lat_wgs84 + + geodf = gpd.GeoDataFrame(geo_df, + geometry=gpd.points_from_xy(geo_df.lon_wgs84, + geo_df.lat_wgs84)) + + geodf.set_crs(epsg=4326, inplace=True) + + # geodf.to_file("C:/Workstation/ICESat2_HLS/" +file + '_gt' + '_' + str(percentile) + '_EPSG' + + # str(epsg_num) + '_' + timestr + ".gpkg", + # driver="GPKG") diff --git a/icesat-2_kdph_py/kd_utils/sea_photons_analysis.py b/icesat-2_kdph_py/kd_utils/sea_photons_analysis.py new file mode 100644 index 0000000..90a2510 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/sea_photons_analysis.py @@ -0,0 +1,449 @@ + +import numpy as np +import geopandas as gpd +from datetime import datetime +import pandas as pd +import netCDF4 +import pandas as pd +from scipy.signal import find_peaks +from scipy.stats import norm + +# Function to apply binning beam-by-beam by calling the function of horizontal_vertical_bin_dataset +def process_sea_photon_binning(sea_photon_dataset, horizontal_res, vertical_res): + # Initialize list to store results from each beam + binned_beam_datasets = [] + + # Group the dataset by 'beam_id' and process each group separately + for beam_id, beam_data in sea_photon_dataset.groupby('beam_id'): + print(f'Processing binning for beam: {beam_id}') + + # Apply binning to the current beam dataset + binned_beam_data = horizontal_vertical_bin_dataset(beam_data, horizontal_res, vertical_res) + + # Append the binned data for the current beam to the list + binned_beam_datasets.append(binned_beam_data) + + # Combine all binned beam datasets into a single DataFrame + binned_dataset_sea_surface = pd.concat(binned_beam_datasets, ignore_index=True) + + return binned_dataset_sea_surface + + +# Bin data along vertical and horizontal scales +def horizontal_vertical_bin_dataset(dataset, lat_res, vertical_res): + """Bin data along vertical and horizontal scales + for later segmentation""" + + # Filter values within the range (-50, 10), because photons elevation outside this range will be real noise + valid_range = (-70, 5) + valid_mask = (dataset['photon_height'] > valid_range[0]) & (dataset['photon_height'] < valid_range[1]) + + # Apply the valid_mask to filter unwanted values + # and create a copy to avoid SettingWithCopyWarning + filtered_dataset = dataset[valid_mask].copy() + + # Calculate the number of height bins + height_range = abs(filtered_dataset['photon_height'].max() - filtered_dataset['photon_height'].min()) + height_bin_number = max(1, round(height_range / vertical_res)) # Ensure at least one bin + + # Calculate the number of latitude bins + lat_range = abs(filtered_dataset['lat'].max() - filtered_dataset['lat'].min()) + lat_bin_number = max(1, round(lat_range / lat_res)) # Ensure at least one bin + + # Create bins for latitude + lat_bins = pd.cut(filtered_dataset['lat'], bins=lat_bin_number, labels=np.arange(lat_bin_number)) + + # Create bins for height + height_bins = pd.cut(filtered_dataset['photon_height'], bins=height_bin_number, + labels=np.round(np.linspace(filtered_dataset['photon_height'].min(), + filtered_dataset['photon_height'].max(), + num=height_bin_number), decimals=1)) + + # Add bins to dataframe using .loc to avoid SettingWithCopyWarning + filtered_dataset.loc[:, 'lat_bins'] = lat_bins + filtered_dataset.loc[:, 'height_bins'] = height_bins + filtered_dataset = filtered_dataset.reset_index(drop=True) + + return filtered_dataset + + +def get_sea_surface_height_static(binned_data, threshold): + """ + Calculate sea surface height and filter subsurface photons using adaptive detection. + + Parameters: + binned_data (pandas.DataFrame): Binned photon data with lat, height_bins, photon_height + + Returns: + final_sea_surface_height (list): Detected sea surface heights + sea_surface_height_abnormal_label (array): Labels for abnormal heights + sea_surface_dominated_label (array): Labels for surface-dominated bins + PhotonDFBelowSurface (pandas.DataFrame): Photons below detected surface + """ + + #set flag for the df save + firstTimeIndex = True + + # Create sea height list + sea_surface_height = [] + mean_lat_bins_seq = [] + sea_surface_subsurface_photons_ratio = [] + + + # Group dataset along horizental (latitude bins) + grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) + data_groups = dict(list(grouped_data)) + + # Loop through groups to detect sea surface + for k, v in data_groups.items(): + # based on lat_utm + lat_bin_average = v['lat'].mean() + + # Create new dataframe based on occurrence of photons per height bin + new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) + + # Check if new_df is not empty before finding the bin with the highest photon count + if not new_df.empty: + # Find the vertical bin with the highest photon count + largest_h_bin = new_df['lat'].argmax() + + # Select the index of the bin with the highest count + largest_h_index = new_df.index[largest_h_bin] + + # Calculate the median value of all photon height values within this bin + photons_sea_surface = v.loc[v['height_bins'] == largest_h_index, 'photon_height'] + lat_bin_sea_median = photons_sea_surface.median() + + # Append to sea height list + sea_surface_height.append(lat_bin_sea_median) + mean_lat_bins_seq.append(lat_bin_average) + del new_df + + # Get all photons below sea surface + # to determine segment type of each subsurface water column + # Use calculated sea height to determine photons at 0.5m below peak + photons_sea_surface_up = \ + v.loc[(v['photon_height'] > (lat_bin_sea_median - threshold)) & + (v['photon_height'] < (lat_bin_sea_median + 2*threshold))] + + # Calculate the photon ratio between surface and whole photons + if v['photon_height'].shape[0] > 0: + new_photons_ratio_sea_surface = \ + photons_sea_surface_up.shape[0] / v['photon_height'].shape[0] + else: + new_photons_ratio_sea_surface = np.nan + + sea_surface_subsurface_photons_ratio.append((1 - new_photons_ratio_sea_surface)) + + else: + # Append NaNs if the group is empty + sea_surface_height.append(np.nan) + mean_lat_bins_seq.append(np.nan) + sea_surface_subsurface_photons_ratio.append(np.nan) + + # Filter out sea height bin values outside 2 SD of mean. + mean = np.nanmean(sea_surface_height, axis=0) + sd = np.nanstd(sea_surface_height, axis=0) + + final_sea_surface_height = np.where((sea_surface_height > (mean + 2 * sd)) | + (sea_surface_height < (mean - 2 * sd)), + np.nan, + sea_surface_height).tolist() + + sea_surface_height_abnormal_label = np.where(np.isnan(final_sea_surface_height), 0, 1) + + # Determine label based on ratio of sea surface photons and subsurface photons + sea_surface_dominated_label = \ + np.where(np.array(sea_surface_subsurface_photons_ratio) >= 0.2, 0, 1) + + # Loop through groups again and return photons below 0.5m of sea height + PhotonDFBelowThresholdPeak = pd.DataFrame() + for i, (k, v) in enumerate(data_groups.items()): + + # Get all values below this bin + if not np.isnan(final_sea_surface_height[i]): + NewPhotonDFBelowThresholdPeak = \ + v.loc[v['photon_height'] < (final_sea_surface_height[i] - threshold)] + + if firstTimeIndex: + PhotonDFBelowThresholdPeak = NewPhotonDFBelowThresholdPeak + firstTimeIndex=False + else: + PhotonDFBelowThresholdPeak=\ + pd.concat([PhotonDFBelowThresholdPeak, NewPhotonDFBelowThresholdPeak]) + + + return final_sea_surface_height, \ + sea_surface_height_abnormal_label, \ + sea_surface_dominated_label,\ + PhotonDFBelowThresholdPeak + + +def get_sea_surface_height_adaptive(binned_data): + """ + Calculate sea surface height and filter subsurface photons with enhanced wave removal. + + Parameters: + binned_data (pandas.DataFrame): Binned photon data with lat, height_bins, photon_height + + Returns: + final_sea_surface_height (list): Detected sea surface heights + sea_surface_height_abnormal_label (array): Labels for abnormal heights + sea_surface_dominated_label (array): Labels for surface-dominated bins + PhotonDFBelowSurface (pandas.DataFrame): Photons below detected surface with waves removed + """ + + firstTimeIndex = True + sea_surface_height = [] + mean_lat_bins_seq = [] + sea_surface_subsurface_photons_ratio = [] + + grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) + data_groups = dict(list(grouped_data)) + + for k, v in data_groups.items(): + lat_bin_average = v['lat'].mean() + + if len(v) < 20: # Increase minimum photon count for robustness + sea_surface_height.append(np.nan) + mean_lat_bins_seq.append(np.nan) + sea_surface_subsurface_photons_ratio.append(np.nan) + continue + + # Finer histogram for better peak resolution + hist, bin_edges = np.histogram(v['photon_height'], + bins=100, # Finer bins + density=True, + range=(v['photon_height'].min(), v['photon_height'].max())) + bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 + + # Enhanced peak detection + peaks, properties = find_peaks(hist, + height=np.max(hist)*0.3, # Stricter peak height + distance=10, # Wider separation + prominence=np.max(hist)*0.1) # Require prominent peaks + + if len(peaks) == 0: + sea_surface_height.append(np.nan) + mean_lat_bins_seq.append(np.nan) + sea_surface_subsurface_photons_ratio.append(np.nan) + continue + + # Use strongest peak as surface, consider nearby peaks as wave effects + surface_peak_idx = peaks[np.argmax(hist[peaks])] + surface_height = bin_centers[surface_peak_idx] + + # Wider window for Gaussian fit to capture wave effects + peak_data = v[(v['photon_height'] > surface_height - 1.0) & + (v['photon_height'] < surface_height + 1.0)] + if len(peak_data) > 10: + mu, sigma = norm.fit(peak_data['photon_height']) + else: + mu, sigma = surface_height, 0.2 # More conservative default + + # Stricter threshold: 3σ below mean, plus minimum depth + # Waves can extend beyond 2.5σ, especially in rough conditions. + # 3σ is a common statistical cutoff for excluding outliers + adaptive_threshold = min(mu - 3.0 * sigma, mu - 1.0) # Ensure at least 1m below + + # Extended surface layer to remove wave effects + surface_photons = v[(v['photon_height'] > adaptive_threshold) & + (v['photon_height'] < mu + 3.0 * sigma)] # Wider upper bound + ratio = len(surface_photons) / len(v) if len(v) > 0 else np.nan + + sea_surface_height.append(mu) + mean_lat_bins_seq.append(lat_bin_average) + sea_surface_subsurface_photons_ratio.append(1 - ratio) + + # Outlier filtering + mean = np.nanmean(sea_surface_height) + sd = np.nanstd(sea_surface_height) + final_sea_surface_height = np.where((sea_surface_height > mean + 2*sd) | + (sea_surface_height < mean - 2*sd), + np.nan, + sea_surface_height).tolist() + + sea_surface_height_abnormal_label = np.where(np.isnan(final_sea_surface_height), 0, 1) + sea_surface_dominated_label = np.where(np.array(sea_surface_subsurface_photons_ratio) >= 0.2, 0, 1) + + # Filter subsurface photons with diagnostics + PhotonDFBelowSurface = pd.DataFrame() + for i, (k, v) in enumerate(data_groups.items()): + if not np.isnan(final_sea_surface_height[i]): + peak_data = v[(v['photon_height'] > final_sea_surface_height[i] - 1.0) & + (v['photon_height'] < final_sea_surface_height[i] + 1.0)] + if len(peak_data) > 10: + mu, sigma = norm.fit(peak_data['photon_height']) + adaptive_threshold = min(mu - 3.0 * sigma, mu - 1.0) + else: + adaptive_threshold = final_sea_surface_height[i] - 1.0 # Stricter default + + NewPhotonDFBelowSurface = v[v['photon_height'] < adaptive_threshold] + + if firstTimeIndex: + PhotonDFBelowSurface = NewPhotonDFBelowSurface + firstTimeIndex = False + else: + PhotonDFBelowSurface = pd.concat([PhotonDFBelowSurface, NewPhotonDFBelowSurface]) + + return (final_sea_surface_height, + sea_surface_height_abnormal_label, + sea_surface_dominated_label, + PhotonDFBelowSurface) + + +def get_water_temp(date_year, date_month, date_day, latitude, longitude): + """ + Pull down surface water temperature along the track from the JPL GHRSST opendap website. + + The GHRSST data are gridded tiles with dimension 17998 x 35999. + To get the specific grid tile of the SST, you must convert from lat, lon coordinates + to the gridded tile ratio of the SST data product using the coordinates of the IS2 data. + """ + # Get date from data filename + # data_path[-33:-25] + date = date_year + date_month + date_day + # date[0:4] + year = date_year + # date[4:6] + month = date_month + # date[6:8] + day = date_day + day_of_year = str(datetime.strptime(date, '%Y%m%d').timetuple().tm_yday) + # Add zero in front of day of year string + zero_day_of_year = day_of_year.zfill(3) + + # Calculate ratio of latitude from mid-point of IS2 track + old_lat = latitude.mean() + old_lat_min = -90 + old_lat_max = 90 + new_lat_min = 0 + new_lat_max = 17998 + + new_lat = round(((old_lat - old_lat_min) / (old_lat_max - old_lat_min)) * + (new_lat_max - new_lat_min) + new_lat_min) + + # Calculate ratio of longitude from mid-point of IS2 track + old_lon = longitude.mean() + old_lon_min = -180 + old_lon_max = 180 + new_lon_min = 0 + new_lon_max = 35999 + + new_lon = round(((old_lon - old_lon_min) / (old_lon_max - old_lon_min)) * + (new_lon_max - new_lon_min) + new_lon_min) + + # Access the SST data using the JPL OpenDap interface + url = 'https://opendap.jpl.nasa.gov/opendap/OceanTemperature/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/' \ + + str(year) + '/' + str(zero_day_of_year) + '/' + str(date) \ + + '090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc' + + dataset = netCDF4.Dataset(url) + + # Access the data and convert the temperature from K to C + water_temp = dataset['analysed_sst'][0, new_lat, new_lon] - 273.15 + return water_temp + + +def refraction_correction(WTemp, WSmodel, Wavelength, + Photon_ref_elev, Ph_ref_azimuth, + PhotonZ, PhotonX, PhotonY, Ph_Conf): + """ + WTemp; there is python library that pulls water temp data + WSmodel is the value surface height + Wavelength is fixed + """ + + # Only process photons below water surface model + PhotonX = PhotonX[PhotonZ <= WSmodel] + PhotonY = PhotonY[PhotonZ <= WSmodel] + Photon_ref_elev = Photon_ref_elev[PhotonZ <= WSmodel] + Ph_ref_azimuth = Ph_ref_azimuth[PhotonZ <= WSmodel] + Ph_Conf = Ph_Conf[PhotonZ <= WSmodel] + PhotonZ = PhotonZ[PhotonZ <= WSmodel] + + # water temp for refraction correction + WaterTemp = WTemp + + # Refraction coefficient # + a = -0.000001501562500 + b = 0.000000107084865 + c = -0.000042759374989 + d = -0.000160475520686 + e = 1.398067112092424 + wl = Wavelength + + # refractive index of air + n1 = 1.00029 + + # refractive index of water + n2 = (a * WaterTemp ** 2) + (b * wl ** 2) + (c * WaterTemp) + (d * wl) + e + + # assumption is 0.25416 + # This example is refractionCoef = 0.25449 + # 1.00029 is refraction of air constant + correction_coef = (1 - (n1 / n2)) + + # read photon ref_elev to get theta1 + theta1 = np.pi / 2 - Photon_ref_elev + + # eq 1. Theta2 + theta2 = np.arcsin(((n1 * np.sin(theta1)) / n2)) + + # eq 3. S + # Approximate water Surface = 1.5 + # D = raw uncorrected depth + D = WSmodel - PhotonZ + + # For Triangle DTS + S = D / np.cos(theta1) + + # eq 2. R + R = (S * n1) / n2 + Gamma = (np.pi / 2) - theta1 + + # For triangle RPS + # phi is an angle needed + phi = theta1 - theta2 + + # P is the difference between raw and corrected YZ location + P = np.sqrt(R ** 2 + S ** 2 - 2 * R * S * np.cos(phi)) + + # alpha is an angle needed + alpha = np.arcsin((R * np.sin(phi)) / P) + + # Beta angle needed for Delta Y an d Delta Z + Beta = Gamma - alpha + + # Delta Y + DY = P * np.cos(Beta) + + # Delta Z + DZ = P * np.sin(Beta) + + # Delta Easting + DE = DY * np.sin(Ph_ref_azimuth) + + # Delta Northing + DN = DY * np.cos(Ph_ref_azimuth) + + outX = PhotonX + DE + outY = PhotonY + DN + outZ = PhotonZ + DZ + + ''' + print('For selected Bathy photon:') + print('lat = ', PhotonY[9000]) + print('long = ', PhotonX[9000]) + print('Raw Depth = ', PhotonZ[9000]) + print('D = ', D[9000]) + + print('ref_elev = ', Photon_ref_elev[9000]) + + print('Delta East = ', DE[9000]) + print('Delta North = ', DN[9000]) + print('Delta Z = ', DZ[9000]) + ''' + return (outX, outY, outZ, Ph_Conf, PhotonX, PhotonY, PhotonZ, Ph_ref_azimuth, + Photon_ref_elev) # We are most interested in out-x, out-y, out-z + diff --git a/icesat-2_kdph_py/kd_utils/sliderule_adapter.py b/icesat-2_kdph_py/kd_utils/sliderule_adapter.py new file mode 100644 index 0000000..47c6e35 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/sliderule_adapter.py @@ -0,0 +1,181 @@ +import logging +from typing import Dict, List, Optional + +import numpy as np +import pandas as pd +from pyproj import Geod, Proj + +from kd_utils.data_processing import convert_wgs_to_utm + +logger = logging.getLogger(__name__) + + +def _get_beam_id_from_track_pair(df: pd.DataFrame) -> pd.Series: + if 'gt' in df.columns: + return df['gt'].astype(str) + if 'track' in df.columns and 'pair' in df.columns: + suffix = df['pair'].map({0: 'l', 1: 'r'}).fillna('x') + return 'gt' + df['track'].astype(int).astype(str) + suffix + return pd.Series(['unknown'] * len(df), index=df.index, dtype='object') + + +def _infer_strong_beam_suffix(df: pd.DataFrame) -> Optional[str]: + if 'sc_orient' not in df.columns or df.empty: + return None + orient = df['sc_orient'].dropna() + if orient.empty: + return None + # Same logic as your Florida script. + return 'l' if int(orient.iloc[0]) == 0 else 'r' + + +def _normalize_signal_conf(values: pd.Series) -> pd.Series: + def to_scalar(v): + if isinstance(v, (list, tuple, np.ndarray)): + if len(v) == 0: + return np.nan + return float(v[0]) + try: + return float(v) + except Exception: + return np.nan + return values.apply(to_scalar) + + +def _relative_distance_km_per_beam(df: pd.DataFrame) -> pd.Series: + out = pd.Series(np.nan, index=df.index, dtype=float) + for beam_id, beam_df in df.groupby('beam_id'): + beam_df = beam_df.sort_values('delta_time') + if 'segment_dist' in beam_df.columns: + rel_km = (beam_df['segment_dist'] - beam_df['segment_dist'].min()) / 1000.0 + out.loc[beam_df.index] = rel_km.values + continue + + lons = beam_df['longitude'].to_numpy(dtype=float) + lats = beam_df['latitude'].to_numpy(dtype=float) + if len(lons) == 0: + continue + geod = Geod(ellps='WGS84') + cumulative_m = np.zeros(len(lons), dtype=float) + for i in range(1, len(lons)): + _, _, dist_m = geod.inv(lons[i - 1], lats[i - 1], lons[i], lats[i]) + cumulative_m[i] = cumulative_m[i - 1] + max(dist_m, 0.0) + out.loc[beam_df.index] = cumulative_m / 1000.0 + return out + + +def _project_to_utm(df: pd.DataFrame) -> pd.DataFrame: + projected = df.copy() + projected['lon'] = np.nan + projected['lat'] = np.nan + for beam_id, beam_df in projected.groupby('beam_id'): + if beam_df.empty: + continue + lon0 = float(beam_df['longitude'].iloc[0]) + lat0 = float(beam_df['latitude'].iloc[0]) + epsg = convert_wgs_to_utm(lon0, lat0) + proj = Proj(epsg) + x, y = proj(beam_df['longitude'].to_numpy(dtype=float), beam_df['latitude'].to_numpy(dtype=float)) + projected.loc[beam_df.index, 'lon'] = x + projected.loc[beam_df.index, 'lat'] = y + return projected + + +def sliderule_to_framework_dataset( + atl03_gdf, + strong_beams_only: bool = True, +) -> pd.DataFrame: + """ + Convert SlideRule ATL03 photon GeoDataFrame to the framework's sea_photon_dataset schema. + """ + if atl03_gdf is None or len(atl03_gdf) == 0: + return pd.DataFrame(columns=[ + 'beam_id', 'latitude', 'longitude', 'lat', 'lon', 'photon_height', + 'quality_ph', 'photon_conf', 'ref_elevation', 'ref_azimuth', + 'relative_AT_dist', 'solar_elevation', 'background_rate', 'is_land_label' + ]) + + src = pd.DataFrame(atl03_gdf).copy() + src['beam_id'] = _get_beam_id_from_track_pair(src) + if strong_beams_only: + strong_suffix = _infer_strong_beam_suffix(src) + if strong_suffix in ('l', 'r'): + src = src[src['beam_id'].str.endswith(strong_suffix)] + + out = pd.DataFrame({ + 'beam_id': src['beam_id'].astype(str), + 'latitude': pd.to_numeric(src.get('lat_ph', np.nan), errors='coerce'), + 'longitude': pd.to_numeric(src.get('lon_ph', np.nan), errors='coerce'), + 'photon_height': pd.to_numeric(src.get('h_ph', np.nan), errors='coerce'), + 'quality_ph': pd.to_numeric(src.get('quality_ph', np.nan), errors='coerce'), + 'ref_elevation': pd.to_numeric(src.get('ref_elev', np.nan), errors='coerce'), + 'ref_azimuth': pd.to_numeric(src.get('ref_azimuth', np.nan), errors='coerce'), + 'solar_elevation': pd.to_numeric(src.get('solar_elevation', np.nan), errors='coerce'), + 'background_rate': pd.to_numeric(src.get('bckgrd_rate', np.nan), errors='coerce'), + 'delta_time': pd.to_numeric(src.get('delta_time', np.nan), errors='coerce'), + 'segment_dist': pd.to_numeric(src.get('segment_dist', np.nan), errors='coerce'), + }) + + if 'signal_conf_ph' in src.columns: + out['photon_conf'] = _normalize_signal_conf(src['signal_conf_ph']) + else: + out['photon_conf'] = np.nan + + out = out.dropna(subset=['latitude', 'longitude', 'photon_height']).copy() + out = _project_to_utm(out) + out['relative_AT_dist'] = _relative_distance_km_per_beam(out) + out['is_land_label'] = 0 + + return out.drop(columns=['delta_time', 'segment_dist'], errors='ignore') + + +def fetch_sliderule_atl03( + region: List[Dict[str, float]], + t0: str, + t1: str, + rgt: Optional[int] = None, + ph_fields: Optional[List[str]] = None, + sliderule_url: str = "slideruleearth.io", + verbose: bool = False, +): + """ + Fetch ATL03 photons from SlideRule. + """ + try: + from sliderule import sliderule, icesat2 + except Exception as e: + raise ImportError("sliderule package is required for SlideRule ingestion.") from e + + sliderule.init(sliderule_url, verbose=verbose) + fields = ph_fields or [ + "delta_time", "lat_ph", "lon_ph", "h_ph", "quality_ph", "signal_conf_ph", + "segment_dist", "ref_elev", "ref_azimuth", "solar_elevation", "bckgrd_rate", + ] + params = {"poly": region, "t0": t0, "t1": t1, "atl03_ph_fields": fields} + if rgt is not None: + params["rgt"] = int(rgt) + return icesat2.atl03sp(params) + + +def fetch_and_prepare_sliderule_dataset( + region: List[Dict[str, float]], + t0: str, + t1: str, + rgt: Optional[int] = None, + strong_beams_only: bool = True, + sliderule_url: str = "slideruleearth.io", + verbose: bool = False, +) -> pd.DataFrame: + """ + One-call helper: + fetch ATL03 photons from SlideRule and convert to framework dataset schema. + """ + atl03_gdf = fetch_sliderule_atl03( + region=region, + t0=t0, + t1=t1, + rgt=rgt, + sliderule_url=sliderule_url, + verbose=verbose, + ) + return sliderule_to_framework_dataset(atl03_gdf, strong_beams_only=strong_beams_only) diff --git a/icesat-2_kdph_py/kd_utils/trash/Kd_analysis - Copy.py b/icesat-2_kdph_py/kd_utils/trash/Kd_analysis - Copy.py new file mode 100644 index 0000000..89b86cc --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/trash/Kd_analysis - Copy.py @@ -0,0 +1,47 @@ +# utils/Kd_analysis.py + +import numpy as np +import pandas as pd +from scipy.optimize import curve_fit + +def log_model(z, kd, e0): + return np.log(e0) - kd * z + +def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): + if df.empty or 'lat_bins' not in df.columns: + return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan]}) + lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan + photon_height_min = df['photon_height'].min() + photon_height_max = df['photon_height'].max() + if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + height_bins_range = abs(photon_height_max - photon_height_min) + if height_bins_range == 0: + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + height_bins_number = round(height_bins_range / vertical_res) + if height_bins_number < 5: + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) + bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) + counts, _ = np.histogram(df['photon_height'], bins=bin_edges) + bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 + hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) + # x value for model + hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + # y value for model + hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) + + hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + + # Skip the regression if there are fewer than 5 datapoints + if hist_df['log_photon_counts'].notna().sum() > 3: + try: + popt, _ = curve_fit(log_model, hist_df['zdepth'].dropna(), hist_df['log_photon_counts'].dropna(), p0=[1, np.exp(1)]) + kd, e0 = popt + if kd < 0: + kd = np.nan + except Exception as e: + print(f"Error in curve fitting: {e}") + kd, e0 = np.nan, np.nan + else: + kd, e0 = np.nan, np.nan + return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [kd], 'e0': [e0]}) diff --git a/icesat-2_kdph_py/kd_utils/trash/Kd_analysis.py b/icesat-2_kdph_py/kd_utils/trash/Kd_analysis.py new file mode 100644 index 0000000..86ba447 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/trash/Kd_analysis.py @@ -0,0 +1,98 @@ +import numpy as np +import pandas as pd +import logging +# from scipy.optimize import curve_fit +from sklearn.linear_model import LinearRegression + + +# another solution is to calculate kd without hist +def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): + # Early exit if DataFrame is empty or missing required column + if df.empty or 'lat_bins' not in df.columns: + return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) + + # Retrieve latitude and longitude + lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan + latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan + longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan + + # Use value_counts to get photon counts in each height bin + height_counts = df['height_bins'].value_counts().sort_index() + bin_centers = height_counts.index.astype(float) + + # Create a DataFrame for the height bins and counts + hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': height_counts.values}) + + # Reverse zdepth for model alignment + hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] + + # Log-transform photon counts, replacing zeros with NaN for regression + hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) + hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan + + # Filter for rows without NaNs for regression + valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) + + # Perform regression if there are sufficient valid data points + if valid_data['log_photon_counts'].notna().sum() > 3: + zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) + log_counts_valid = valid_data['log_photon_counts'].values + + # Perform linear regression + model = LinearRegression() + model.fit(zdepth_valid, log_counts_valid) + + # Calculate kd and e0 + kd = -model.coef_[0] + e0 = np.exp(model.intercept_) + + # Set kd to NaN if negative + if kd < 0: + kd = np.nan + else: + kd, e0 = np.nan, np.nan + + return pd.DataFrame({ + 'lat_bins': [lat_bin_value], + 'kd': [kd], + 'e0': [e0], + 'latitude': [latitude], + 'longitude': [longitude] + }) + + +# Original kd calculation function remains unchanged +def calculate_kd(filtered_seafloor_subsurface_photon_dataset): + logging.info("Calculating Kd from filtered subsurface photon dataset") + SubsurfacePhotonDFAddedKd = filtered_seafloor_subsurface_photon_dataset\ + .groupby('lat_bins', observed=False)\ + .apply(CalculateKdFromFilteredSubsurfacePhoton, include_groups=True) + + + # Remove the index without resetting it if 'lat_bins' already exists + SubsurfacePhotonDFAddedKd = SubsurfacePhotonDFAddedKd.droplevel(0) + return SubsurfacePhotonDFAddedKd + + +# Updated function to apply kd calculation beam-by-beam +def process_kd_calculation(Final_filtered_subsurface_photon_dataset): + # Initialize list to store results for each beam + kd_beam_datasets = [] + + # Group by 'beam_id' to process each beam independently + for beam_id, beam_data in Final_filtered_subsurface_photon_dataset.groupby('beam_id'): + logging.info(f"Calculating Kd for beam: {beam_id}") + + # Apply the calculate_kd function to the current beam's dataset + SubsurfacePhotonDFAddedKd = calculate_kd(beam_data) + + # Add a column to track the beam_id in the results + SubsurfacePhotonDFAddedKd['beam_id'] = beam_id + + # Append the result to the list + kd_beam_datasets.append(SubsurfacePhotonDFAddedKd) + + # Combine results from all beams into a single DataFrame + combined_kd_dataset = pd.concat(kd_beam_datasets, ignore_index=True) + + return combined_kd_dataset \ No newline at end of file diff --git a/icesat-2_kdph_py/kd_utils/visualization.py b/icesat-2_kdph_py/kd_utils/visualization.py new file mode 100644 index 0000000..64034d4 --- /dev/null +++ b/icesat-2_kdph_py/kd_utils/visualization.py @@ -0,0 +1,263 @@ +# utils/visualization.py + +import numpy as np +import os +import pandas as pd +import time +import geopandas as gpd +from pyproj import Transformer, Proj +import matplotlib.pyplot as plt +from scipy.spatial import ConvexHull + +def plot_photon_height(sea_photon_dataset, hlims=[-25, 10]): + fig, ax = plt.subplots() + ax.scatter(sea_photon_dataset['latitude'], sea_photon_dataset['photon_height'], s=1, c='k', alpha=0.15, edgecolors='none', label='ATL03 Photons') + ax.set_xlabel('Relative AT Distance') + ax.set_ylabel('Height (h_ph)') + ax.set_title('Scatter Plot of ATL03 Photons') + ax.set_ylim(hlims) + ax.legend() + plt.show() + +def plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset, sea_photon_dataset, sea_surface_height, output_path): + """ + Plots the filtered seafloor photon data along with sea surface and seafloor elevation data. + + Parameters: + - filtered_seafloor_subsurface_dataset: DataFrame containing the filtered subsurface photon data. + - sea_photon_dataset: DataFrame containing the original sea photon data. + - sea_surface_height: Array of sea surface height values. + - output_path: Path to save the output plot. + """ + + # get sea_surface_x_axis_bins + sea_surface_x_axis_bins = np.linspace(filtered_seafloor_subsurface_dataset['relative_AT_dist'].min(), + filtered_seafloor_subsurface_dataset['relative_AT_dist'].max(), + len(sea_surface_height)) + + hlims = [-25, 10] + fig, ax = plt.subplots() + + # Scatter plot of subsurface photons + ax.scatter(sea_photon_dataset['relative_AT_dist'], sea_photon_dataset['photon_height'], + s=1, c='k', alpha=0.15, edgecolors='none', label='Subsurface ATL03 Photons') + + # Overlay the seafloor elevation data as points + ax.plot(filtered_seafloor_subsurface_dataset['relative_AT_dist'], filtered_seafloor_subsurface_dataset['seafloor_elevation'], + linewidth=0.8, c='b', alpha=0.4, label='Seafloor Elevation') + + ax.plot(sea_surface_x_axis_bins, [x - 0.5 for x in sea_surface_height], + linewidth=0.8, color='#DD571C', alpha=0.4, label='0.5 m Below Surface Peak') + + # Set labels and title + ax.set_xlabel('Distance From Start of Track (km)') + ax.set_ylabel('Photon Height (m)') + ax.set_title('Scatter Plot of Filtered Sea Photon Dataset') + ax.set_ylim(hlims) + + # Add a legend + ax.legend() + + # Save the plot + plt.legend(loc='upper right') + plt.savefig(output_path, dpi=400, format='jpeg') + + # Show the plot + plt.show() + + +def plot_convex_hulls(photon_dataset, target_beam_ids, convex_hulls, convex_hull_areas): + """ + Plots ConvexHull polygons and annotated areas for each lat_bin group in the dataset. + """ + #filter beam type + # photon_dataset + photon_dataset = photon_dataset[photon_dataset['beam_id'].isin(target_beam_ids)] + + fig, ax = plt.subplots(figsize=(10, 6)) + hlims = [-10, 2] + + for lat_bin, hull_points in convex_hulls.items(): + hull = ConvexHull(hull_points) + ax.fill(hull_points[hull.vertices, 0], hull_points[hull.vertices, 1], alpha=0.3, label=f'Bin {lat_bin}') + + # Calculate centroid to place the label + centroid = np.mean(hull_points[hull.vertices], axis=0) + ax.text(centroid[0], centroid[1], f'{convex_hull_areas[lat_bin]:.2f}', + horizontalalignment='center', verticalalignment='center', fontsize=10, color='black') + + ax.scatter(photon_dataset['lat'], photon_dataset['photon_height'], + s=1, c='k', alpha=0.15, edgecolors='none', label='Subsurface ATL03 Photons') + ax.set_ylim(hlims) + ax.set_xlabel('Latitude') + ax.set_ylabel('Photon Height') + ax.set_title('ConvexHull of Photons within each Lat Bin') + plt.show() + +# plot the kd and photon +def plot_kd_photons(OutputPath, timestamp, target_beam_ids, subsurface_photon_dataset, Kd_DF_MergedDistance): + #filter beam type + # photon_dataset + subsurface_photon_dataset = subsurface_photon_dataset[subsurface_photon_dataset['beam_id'].isin(target_beam_ids)] + Kd_DF_MergedDistance = Kd_DF_MergedDistance[Kd_DF_MergedDistance['beam_id'].isin(target_beam_ids)] + + hlims = [-45, 5] + fig, ax1 = plt.subplots(figsize=(10, 6)) + ax1.scatter(subsurface_photon_dataset['relative_AT_dist'], subsurface_photon_dataset['photon_height'], + s=1.5, c='k', alpha=0.2, edgecolors='none', label='Subsurface ATL03 Photon Height') + ax1.set_xlabel('Relative Along-Track Distance', fontsize=18) + ax1.tick_params(axis='x', labelsize=18) # Added line for x-tick label fontsize + ax1.set_ylabel('Photon Height', color='b', fontsize=18) + ax1.tick_params(axis='y', labelcolor='b', labelsize=18) + ax1.plot(subsurface_photon_dataset['relative_AT_dist'], subsurface_photon_dataset['seafloor_elevation'], + linewidth=0.8, c='b', alpha=0.4, label='Seafloor Elevation') + # ax1.axhline(y=-6, color='blue', linestyle='--', label='y=-6 m') + # ax1.set_xlim([1800, 2100]) # Set x-axis limits + # ax1.set_ylim(hlims) + + ax2 = ax1.twinx() + ax2.scatter(Kd_DF_MergedDistance['relative_AT_dist'], Kd_DF_MergedDistance['kd'], + label='Kd values', color='r', alpha=0.6) + ax2.set_ylabel('Kd Value', color='r', fontsize=18) + ax2.tick_params(axis='y', labelcolor='r',labelsize=18) + # fig.suptitle('Photon Height and Kd Values along Relative Along-Track Distance') + handles1, labels1 = ax1.get_legend_handles_labels() + handles2, labels2 = ax2.get_legend_handles_labels() + fig.legend(handles1 + handles2, labels1 + labels2, loc='upper right', bbox_to_anchor=(0.85, 0.85)) + # fig.legend(handles1 + handles2, labels1 + labels2, loc='lower left', bbox_to_anchor=(0.08, 0.08)) + fig.tight_layout() + plt.savefig(os.path.join(OutputPath, f'{timestamp}_IS2_subsurface_kd_2.jpg'), dpi=400, format='jpeg') + plt.show() + + + +def plot_bin_polygon_data(lat, height, seafloor_height, mask, lat_bins, height_bins, valid_bins, polygons, y_min, y_max): + plt.figure(figsize=(12, 6)) + + plt.subplot(1, 2, 1) + plt.title("Original Height Data") + plt.scatter(lat, height, c=height, cmap='viridis', s=10) + plt.plot(np.sort(lat), seafloor_height[np.argsort(lat)], 'r-', label='Seafloor') + plt.colorbar(label='Height') + plt.xlabel('Latitude') + plt.ylabel('Height') + plt.ylim(y_min, y_max) + plt.legend() + + plt.subplot(1, 2, 2) + plt.title("Masked Region (ROI)") + plt.scatter(lat[mask], height[mask], c=height[mask], cmap='viridis', s=10) + plt.plot(np.sort(lat), seafloor_height[np.argsort(lat)], 'r-', label='Seafloor') + + for polygon in polygons: + plt.gca().add_patch(plt.Polygon(polygon, edgecolor='red', facecolor='none', linewidth=1)) + + for lb in lat_bins: + plt.axvline(x=lb, color='gray', linestyle='--', linewidth=0.5) + for hb in height_bins: + plt.axhline(y=hb, color='gray', linestyle='--', linewidth=0.5) + + plt.colorbar(label='Height') + plt.xlabel('Latitude') + plt.ylabel('Height') + plt.ylim(y_min, y_max) + plt.legend() + + plt.tight_layout() + plt.show() + +# +def produce_figures(binned_data, bath_height, sea_height, solo_sea_surface_label, + y_limit_top, y_limit_bottom, percentile, file, geo_df, + ref_y, ref_z, beam, epsg_num): + """Create figures""" + + # Create bins for latitude + bath_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(bath_height))+20 + + sea_surface_x_axis_bins = np.linspace(binned_data.lat.min(), + binned_data.lat.max(), len(sea_height))+10 + + # Create new dataframes for median values + bath_median_df = pd.DataFrame({'x': bath_x_axis_bins, 'y': bath_height}) + + # Create uniform sea surface based on median sea surface values and filter out surface breaching + sea_height1 = [np.nanmedian(sea_height) if i == i else np.nan for i in sea_height] + sea_median_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_height1}) + + # Create uniform solo sea surface label + sea_surface_label = solo_sea_surface_label + sea_surface_label_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_surface_label}) + idx_1 = np.where(sea_surface_label_df.y == 1) + idx_0 = np.where(sea_surface_label_df.y == 0) + + # Define figure size + fig = plt.rcParams["figure.figsize"] = (40, 25) + + # Plot raw points + # plt.scatter(x=binned_data.lat, + # y = binned_data.photon_height, marker='o', lw=0, s=1, alpha = 0.8, + # c = 'yellow', label = 'Raw photon height') + plt.scatter(ref_y, ref_z, s=0.5, alpha=0.1, c='black') + plt.scatter(geo_df.lat, geo_df.photon_height, s=0.8, marker = 'o', + alpha=0.1, c='red', label='Classified Photons') + + # plt.scatter(x=geo_df.lat, + # y = geo_df.photon_height, marker='o', lw=0, s=0.8, + # alpha = 0.8, c = 'black', label = 'Corrected photon bin') + + # Plot median values + plt.scatter(bath_median_df.x, bath_median_df.y, + marker='o', c='r', alpha=0.8, s=2, label='Median bathymetry') + + plt.scatter(sea_median_df.x, sea_median_df.y, + marker='o', c='b', alpha=1, s=2, label='Median sea surface') + + plt.scatter(sea_surface_label_df.iloc[idx_1].x, sea_surface_label_df.iloc[idx_1].y, + marker='o', c='pink', alpha=1, s=3, label='solo_sea_surface') + plt.scatter(sea_surface_label_df.iloc[idx_0].x, sea_surface_label_df.iloc[idx_0].y, + marker='o', c='g', alpha=1, s=3, label='non_solo_sea_surface') + + # Insert titles and subtitles + plt.title('Icesat2 Bathymetry\n' + file) + plt.xlabel('Latitude', fontsize=25) + plt.ylabel('Photon Height (m)', fontsize=25) + plt.xticks(fontsize=16) + plt.yticks(fontsize=16) + + plt.legend(loc="upper left", prop={'size': 20}) + + # Limit the x and y axes using parameters + plt.xlim(left=binned_data.lat.min(), right=binned_data.lat.max()) + plt.ylim(top=y_limit_top, bottom=y_limit_bottom) + + timestr = time.strftime("%Y%m%d_%H%M%S") + file = file.replace('.h5', '') + # Define where to save file + plt.tight_layout() + plt.savefig("C:/Workstation/ICESat2_HLS/" + file + '_gt' + + str(beam) + '_' + str(percentile) + + '_EPSG' + str(epsg_num) + '_' + timestr + ".pdf") + # plt.show() + # plt.close() + + # convert corrected locations back to wgs84 (useful to contain) + transformer = Transformer.from_crs("EPSG:" + str(epsg_num), + "EPSG:4326", always_xy=True) + print(transformer) + lon_wgs84, lat_wgs84 = transformer.transform( + geo_df.lon.values, geo_df.lat.values) + + geo_df['lon_wgs84'] = lon_wgs84 + geo_df['lat_wgs84'] = lat_wgs84 + + geodf = gpd.GeoDataFrame(geo_df, + geometry=gpd.points_from_xy(geo_df.lon_wgs84, + geo_df.lat_wgs84)) + + geodf.set_crs(epsg=4326, inplace=True) + + # geodf.to_file("C:/Workstation/ICESat2_HLS/" +file + '_gt' + '_' + str(percentile) + '_EPSG' + + # str(epsg_num) + '_' + timestr + ".gpkg", + # driver="GPKG") \ No newline at end of file diff --git a/icesat-2_kdph_py/main.py b/icesat-2_kdph_py/main.py new file mode 100644 index 0000000..e38729f --- /dev/null +++ b/icesat-2_kdph_py/main.py @@ -0,0 +1,221 @@ +import glob +import logging +import os +import re +import sys + +import pandas as pd + +from config import get_args +from kd_utils.Kd_analysis import process_kd_calculation +from kd_utils.bathy_processing import process_subsurface_photon_filtering +from kd_utils.data_processing import ( + Extract_sea_photons, + apply_optional_ir_ap_filter, + apply_optional_solar_background_filter, + filter_photon_dataset_by_hull_area, + load_data, +) +from kd_utils.sea_photons_analysis import process_sea_photon_binning +from kd_utils.visualization import plot_convex_hulls, plot_kd_photons + + +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + + +PAIR_ID_MAP = { + 'gt1l': 'gt1_pair', + 'gt1r': 'gt1_pair', + 'gt2l': 'gt2_pair', + 'gt2r': 'gt2_pair', + 'gt3l': 'gt3_pair', + 'gt3r': 'gt3_pair', +} + + +def get_target_beams(all_beams, beam_attrs, target_beams_arg): + strong_beams = [ + gtx for gtx in all_beams + if beam_attrs[gtx]['atlas_beam_type'].decode('utf-8') == 'strong' + ] + if not target_beams_arg: + return strong_beams + + requested = [b.strip() for b in target_beams_arg.split(',') if b.strip()] + return [b for b in requested if b in strong_beams] + + +def optionally_combine_paired_beams_for_kd(dataset, horizontal_res, enabled=False): + """ + Optionally combine left/right beams into pair groups before Kd fitting. + Uses shared along-track bins from relative_AT_dist when available. + """ + if (not enabled) or dataset.empty: + return dataset + + combined = dataset.copy() + combined['source_beam_id'] = combined['beam_id'] + combined['beam_id'] = combined['beam_id'].map(PAIR_ID_MAP).fillna(combined['beam_id']) + + if 'relative_AT_dist' in combined.columns: + rel_m = pd.to_numeric(combined['relative_AT_dist'], errors='coerce') * 1000.0 + pair_bins = (rel_m / max(horizontal_res, 1)).astype('Int64') + pair_bins = pair_bins.fillna(-1).astype(int) + combined['lat_bins'] = pair_bins + + return combined + + +def run_pipeline(args): + atl03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file) + shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data) + gebco_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path) + atl24_file_path = args.atl24_file + if atl24_file_path and (not os.path.isabs(atl24_file_path)): + atl24_file_path = os.path.join(args.workspace_path, atl24_file_path) + output_path = os.path.join(args.workspace_path, args.output_path) + os.makedirs(output_path, exist_ok=True) + + match = re.search(r"_(\d{14})_", atl03_h5_file_path) + timestamp = match.group(1) if match else "unknown" + + gebco_pattern = os.path.join(gebco_full_path, "gebco_*.tif") + gebco_file_path_lists = [p for p in glob.glob(gebco_pattern)] + + is2_mds, is2_attrs, is2_beams = load_data(atl03_h5_file_path, False) + target_strong_beams = get_target_beams(is2_beams, is2_attrs, args.target_beams) + if not target_strong_beams: + logger.error("No target strong beams found. Check input file and --target_beams.") + sys.exit(1) + logger.info("Strong beams selected: %s", target_strong_beams) + plot_target_beam = [target_strong_beams[0]] + + sea_photon_dataset = Extract_sea_photons(is2_mds, target_strong_beams, shoreline_data_path) + sea_photon_dataset = apply_optional_ir_ap_filter( + sea_photon_dataset, + enabled=args.enable_ir_ap_filter, + quality_max=args.ir_ap_quality_max, + min_signal_conf=args.ir_ap_min_signal_conf, + ) + sea_photon_dataset = apply_optional_solar_background_filter( + sea_photon_dataset, + enabled=args.enable_solar_background_filter, + day_threshold=args.solar_elevation_day_threshold, + background_quantile=args.solar_background_quantile, + min_signal_conf=args.solar_background_min_signal_conf, + ) + + binned_dataset_sea_surface = process_sea_photon_binning( + sea_photon_dataset, horizontal_res=args.horizontal_res, vertical_res=args.vertical_res + ) + + post_refraction_refit_enabled = args.enable_post_refraction_refit + if post_refraction_refit_enabled and (not args.enable_refraction_correction): + logger.warning( + "--enable_post_refraction_refit requested without --enable_refraction_correction. " + "The post-refraction refit step will be skipped." + ) + post_refraction_refit_enabled = False + + sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \ + process_subsurface_photon_filtering( + binned_dataset_sea_surface, + gebco_file_path_lists, + args.subsurface_thresh, + args.ignore_subsurface_height_thres, + use_atl24_filter=args.enable_atl24_filter, + atl24_file_path=atl24_file_path, + atl24_max_match_distance_deg=args.atl24_max_match_distance_deg, + use_gebco_filter=args.enable_gebco_filter, + apply_histogram_quality_filter=args.enable_histogram_quality_filter, + histogram_quality_min_ratio=args.histogram_quality_min_ratio, + histogram_quality_depth_min=args.histogram_quality_depth_min, + histogram_quality_depth_max=args.histogram_quality_depth_max, + apply_surface_sigma_filter=args.enable_surface_sigma_filter, + surface_sigma_max=args.surface_sigma_max, + apply_refraction_correction=args.enable_refraction_correction, + refraction_water_temp_c=args.refraction_water_temp_c, + refraction_wavelength_nm=args.refraction_wavelength_nm, + apply_post_refraction_refit=post_refraction_refit_enabled, + apply_flattening=args.enable_sea_surface_flattening, + flattening_window_m=args.sea_surface_flattening_window_m, + horizontal_res=args.horizontal_res, + vertical_res=args.vertical_res, + ) + + final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[ + filtered_seafloor_subsurface_photon_dataset['beam_id'].isin(target_strong_beams) + ].copy() + + if args.enable_convex_hull_filter: + final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = \ + filter_photon_dataset_by_hull_area( + final_filtered_subsurface_photon_dataset, + hull_area_threshold=args.convex_hull_area_threshold + ) + if plot_target_beam: + plot_convex_hulls( + final_filtered_subsurface_photon_dataset, + plot_target_beam, + convex_hulls, + convex_hull_areas + ) + + subsurface_output_path = os.path.join( + output_path, + f"{timestamp}_strongBeam_{'_'.join(target_strong_beams)}_subsurface_photons.csv", + ) + final_filtered_subsurface_photon_dataset.to_csv(subsurface_output_path, index=False) + + kd_input_dataset = optionally_combine_paired_beams_for_kd( + final_filtered_subsurface_photon_dataset, + horizontal_res=args.horizontal_res, + enabled=args.enable_paired_beam_combine + ) + subsurface_photon_df_added_kd = process_kd_calculation(kd_input_dataset) + kd_output_path = os.path.join(output_path, f"{timestamp}_AddedKdDataset_strongBeams_Further.csv") + subsurface_photon_df_added_kd.to_csv(kd_output_path, index=False) + + if 'relative_AT_dist' in kd_input_dataset.columns: + unique_photon_dataset = kd_input_dataset[ + ['relative_AT_dist', 'lat_bins', 'photon_height'] + ].drop_duplicates() + unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset.groupby( + 'lat_bins', observed=False + )['relative_AT_dist'].transform('mean') + + def find_closest(group): + center = group['relative_AT_dist_center'].iloc[0] + group = group.copy() + group['dist_to_center'] = abs(group['relative_AT_dist'] - center) + return group.loc[[group['dist_to_center'].idxmin()]] + + closest_to_center = unique_photon_dataset.groupby('lat_bins', observed=False).apply( + find_closest, include_groups=True + ) + closest_to_center.index = closest_to_center.index.droplevel(0) + kd_df_merged_distance = closest_to_center.merge( + subsurface_photon_df_added_kd, + on='lat_bins', + how='left' + ).drop(columns=['relative_AT_dist_center', 'dist_to_center'], errors='ignore') + + plot_kd_photons( + output_path, + timestamp, + plot_target_beam, + kd_input_dataset, + kd_df_merged_distance, + ) + + logger.info("SUCCESS! Kd output: %s", kd_output_path) + + +if __name__ == '__main__': + cli_args = get_args() + try: + run_pipeline(cli_args) + except Exception as e: + logger.error("An error occurred: %s", e) + raise diff --git a/icesat-2_kdph_py/requirements.txt b/icesat-2_kdph_py/requirements.txt new file mode 100644 index 0000000..e8be0fc --- /dev/null +++ b/icesat-2_kdph_py/requirements.txt @@ -0,0 +1,14 @@ +geopandas==0.12.1 +h5py==3.11.0 +hdbscan==0.8.29 +matplotlib==3.8.2 +netCDF4==1.6.2 +numpy==1.26.4 +pandas==2.2.1 +pyproj==2.6.1.post1 +rasterio==1.3.10 +Rtree==0.9.7 +scikit_learn==1.4.1.post1 +scipy==1.12.1 +Shapely==1.8.2 +utm==0.7.0 From 10e27d3f8c17294b9deede355f447ce009a81c89 Mon Sep 17 00:00:00 2001 From: Chao <30786839+ChaoEcohydroRS@users.noreply.github.com> Date: Wed, 18 Feb 2026 12:42:51 -0500 Subject: [PATCH 5/5] Delete icesat2_kdph-main directory --- .../00_experiment_with_erddap.ipynb | 185 - icesat2_kdph-main/01_find_all_stations.ipynb | 720 - .../02_match_argo2granules_ipx.ipynb | 2130 -- .../02_match_buoys2granules_ipx.ipynb | 7685 ------ .../02_match_ships2granules_ipx.ipynb | 1838 -- .../02_match_turbidity2granules_ipx.ipynb | 22955 ---------------- icesat2_kdph-main/03_calckd_buoys.ipynb | 1490 - .../03_load_turbidity_data.ipynb | 191 - icesat2_kdph-main/03_proc_icesat4matlab.ipynb | 618 - .../04_plot_kd2kd_comparison.ipynb | 216 - .../04_plot_kd2turb_comparison.ipynb | 242 - icesat2_kdph-main/LICENSE | 21 - icesat2_kdph-main/Main.ipynb | 363 - .../__pycache__/config.cpython-311.pyc | Bin 495 -> 0 bytes .../__pycache__/ioos_mod.cpython-39.pyc | Bin 2734 -> 0 bytes icesat2_kdph-main/config.py | 112 - .../data/Dataset_Kd_Paper_2018.csv | 11681 -------- icesat2_kdph-main/data/erddaps.json | 374 - .../GetIS2_Data_InSitu_Site_Date.ipynb | 2509 -- .../atl06_ancillary.ipynb | 369 - .../atl06_subsetting.ipynb | 289 - .../experiment_with_erddap.ipynb | 798 - .../kd_utils/Kd_analysis - Copy.py | 47 - icesat2_kdph-main/kd_utils/Kd_analysis.py | 98 - .../kd_utils/Kd_analysis_premeeting18Nov.py | 264 - .../kd_utils/SeafloorFilterByGEBCO_Module.py | 108 - icesat2_kdph-main/kd_utils/__init__.py | 8 - .../__pycache__/Kd_analysis.cpython-311.pyc | Bin 4693 -> 0 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 792 -> 0 bytes .../bathy_processing.cpython-311.pyc | Bin 7444 -> 0 bytes .../data_processing.cpython-311.pyc | Bin 24126 -> 0 bytes .../__pycache__/interpolation.cpython-311.pyc | Bin 1306 -> 0 bytes .../sea_photons_analysis.cpython-311.pyc | Bin 10976 -> 0 bytes .../__pycache__/visualization.cpython-311.pyc | Bin 13828 -> 0 bytes .../kd_utils/bathy_processing.py | 158 - icesat2_kdph-main/kd_utils/data_processing.py | 586 - icesat2_kdph-main/kd_utils/interpolation.py | 19 - icesat2_kdph-main/kd_utils/kd_utils.py | 1181 - .../kd_utils/sea_photons_analysis.py | 323 - icesat2_kdph-main/kd_utils/visualization.py | 217 - icesat2_kdph-main/load_icesatcsv.m | 10 - .../results/all_relevant_stations.pkl | Bin 923518 -> 0 bytes icesat2_kdph-main/results/glider_matches.pkl | Bin 170527 -> 0 bytes .../results/labeled_relevant_stations.pkl | Bin 941140 -> 0 bytes icesat2_kdph-main/troubleshoot_ipx.ipynb | 1115 - 45 files changed, 58920 deletions(-) delete mode 100644 icesat2_kdph-main/00_experiment_with_erddap.ipynb delete mode 100644 icesat2_kdph-main/01_find_all_stations.ipynb delete mode 100644 icesat2_kdph-main/02_match_argo2granules_ipx.ipynb delete mode 100644 icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb delete mode 100644 icesat2_kdph-main/02_match_ships2granules_ipx.ipynb delete mode 100644 icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb delete mode 100644 icesat2_kdph-main/03_calckd_buoys.ipynb delete mode 100644 icesat2_kdph-main/03_load_turbidity_data.ipynb delete mode 100644 icesat2_kdph-main/03_proc_icesat4matlab.ipynb delete mode 100644 icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb delete mode 100644 icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb delete mode 100644 icesat2_kdph-main/LICENSE delete mode 100644 icesat2_kdph-main/Main.ipynb delete mode 100644 icesat2_kdph-main/__pycache__/config.cpython-311.pyc delete mode 100644 icesat2_kdph-main/__pycache__/ioos_mod.cpython-39.pyc delete mode 100644 icesat2_kdph-main/config.py delete mode 100644 icesat2_kdph-main/data/Dataset_Kd_Paper_2018.csv delete mode 100644 icesat2_kdph-main/data/erddaps.json delete mode 100644 icesat2_kdph-main/examples_from_others/GetIS2_Data_InSitu_Site_Date.ipynb delete mode 100644 icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb delete mode 100644 icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb delete mode 100644 icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb delete mode 100644 icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py delete mode 100644 icesat2_kdph-main/kd_utils/Kd_analysis.py delete mode 100644 icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py delete mode 100644 icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py delete mode 100644 icesat2_kdph-main/kd_utils/__init__.py delete mode 100644 icesat2_kdph-main/kd_utils/__pycache__/Kd_analysis.cpython-311.pyc delete mode 100644 icesat2_kdph-main/kd_utils/__pycache__/__init__.cpython-311.pyc delete mode 100644 icesat2_kdph-main/kd_utils/__pycache__/bathy_processing.cpython-311.pyc delete mode 100644 icesat2_kdph-main/kd_utils/__pycache__/data_processing.cpython-311.pyc delete mode 100644 icesat2_kdph-main/kd_utils/__pycache__/interpolation.cpython-311.pyc delete mode 100644 icesat2_kdph-main/kd_utils/__pycache__/sea_photons_analysis.cpython-311.pyc delete mode 100644 icesat2_kdph-main/kd_utils/__pycache__/visualization.cpython-311.pyc delete mode 100644 icesat2_kdph-main/kd_utils/bathy_processing.py delete mode 100644 icesat2_kdph-main/kd_utils/data_processing.py delete mode 100644 icesat2_kdph-main/kd_utils/interpolation.py delete mode 100644 icesat2_kdph-main/kd_utils/kd_utils.py delete mode 100644 icesat2_kdph-main/kd_utils/sea_photons_analysis.py delete mode 100644 icesat2_kdph-main/kd_utils/visualization.py delete mode 100644 icesat2_kdph-main/load_icesatcsv.m delete mode 100644 icesat2_kdph-main/results/all_relevant_stations.pkl delete mode 100644 icesat2_kdph-main/results/glider_matches.pkl delete mode 100644 icesat2_kdph-main/results/labeled_relevant_stations.pkl delete mode 100644 icesat2_kdph-main/troubleshoot_ipx.ipynb diff --git a/icesat2_kdph-main/00_experiment_with_erddap.ipynb b/icesat2_kdph-main/00_experiment_with_erddap.ipynb deleted file mode 100644 index 17a29cf..0000000 --- a/icesat2_kdph-main/00_experiment_with_erddap.ipynb +++ /dev/null @@ -1,185 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "7c61dc4e-92fc-456f-83cc-59ac2f81e80e", - "metadata": {}, - "outputs": [], - "source": [ - "from erddapy import ERDDAP\n", - "import pandas as pd\n", - "import json\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "184e085b-8ab3-4074-991e-13896f68ffe3", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array(['https://erddap.observations.voiceoftheocean.org/erddap/',\n", - " 'https://erddap.ogsl.ca/erddap/',\n", - " 'https://coastwatch.pfeg.noaa.gov/erddap/',\n", - " 'https://apdrc.soest.hawaii.edu/erddap/',\n", - " 'https://www.ncei.noaa.gov/erddap/',\n", - " 'https://erddap.bco-dmo.org/erddap/',\n", - " 'https://erddap.emodnet.eu/erddap/',\n", - " 'https://erddap.emodnet-physics.eu/erddap/',\n", - " 'https://erddap.marine.ie/erddap/',\n", - " 'https://cwcgom.aoml.noaa.gov/erddap/',\n", - " 'https://erddap.sensors.ioos.us/erddap/',\n", - " 'https://erddap.axiomdatascience.com/erddap/',\n", - " 'http://erddap.cencoos.org/erddap/',\n", - " 'http://www.neracoos.org/erddap/',\n", - " 'https://gliders.ioos.us/erddap/',\n", - " 'https://pae-paha.pacioos.hawaii.edu/erddap/',\n", - " 'https://sccoos.org/erddap/', 'http://erddap.secoora.org/erddap/',\n", - " 'http://osmc.noaa.gov/erddap/', 'http://dap.onc.uvic.ca/erddap/',\n", - " 'https://oceanwatch.pifsc.noaa.gov/erddap/',\n", - " 'https://erddap.dataexplorer.oceanobservatories.org/erddap/',\n", - " 'https://erddap-goldcopy.dataexplorer.oceanobservatories.org/erddap/',\n", - " 'https://members.oceantrack.org/erddap/',\n", - " 'http://www.myroms.org:8080/erddap/',\n", - " 'http://tds.marine.rutgers.edu/erddap/',\n", - " 'https://comet.nefsc.noaa.gov/erddap/',\n", - " 'https://opendap.co-ops.nos.noaa.gov/erddap/',\n", - " 'https://gcoos5.geos.tamu.edu/erddap/',\n", - " 'https://gcoos4.tamu.edu/erddap/',\n", - " 'https://coastwatch.glerl.noaa.gov/erddap/',\n", - " 'https://spraydata.ucsd.edu/erddap/',\n", - " 'https://salishsea.eos.ubc.ca/erddap/',\n", - " 'http://bmlsc.ucdavis.edu:8080/erddap/',\n", - " 'https://upwell.pfeg.noaa.gov/erddap/',\n", - " 'https://bluehub.jrc.ec.europa.eu/erddap/',\n", - " 'https://www.ifremer.fr/erddap/',\n", - " 'https://ferret.pmel.noaa.gov/pmel/erddap',\n", - " 'https://ferret.pmel.noaa.gov/alamo/erddap/',\n", - " 'https://ferret.pmel.noaa.gov/socat/erddap/',\n", - " 'https://catalogue.hakai.org/erddap/',\n", - " 'https://wilson.coas.oregonstate.edu/erddap/',\n", - " 'https://polarwatch.noaa.gov/erddap/',\n", - " 'http://nrm-erddap.nci.org.au/erddap/',\n", - " 'https://geoport.usgs.esipfed.org/erddap/',\n", - " 'https://erddap.incois.gov.in/erddap/',\n", - " 'https://erddap.ichec.ie/erddap/',\n", - " 'https://www.smartatlantic.ca/erddap/',\n", - " 'https://erddap.griidc.org/erddap/', 'https://atn.ioos.us/erddap/',\n", - " 'https://pub-data.diver.orr.noaa.gov/erddap/',\n", - " 'https://jeodpp.jrc.ec.europa.eu/services/erddap/',\n", - " 'https://erddap.gcoos.org/erddap/',\n", - " 'https://basin.ceoe.udel.edu/erddap/',\n", - " 'https://cioosatlantic.ca/erddap/',\n", - " 'https://data.cioospacific.ca/erddap/',\n", - " 'http://erddap.emso.eu:8080/erddap/',\n", - " 'http://erddap.sochic-h2020.eu/erddap/',\n", - " 'https://coastwatch.noaa.gov/erddap/',\n", - " 'https://canwinerddap.ad.umanitoba.ca/erddap/index.html',\n", - " 'https://oceanview.pfeg.noaa.gov/erddap/index.html',\n", - " 'https://erddap.oa.iode.org/erddap/'], dtype=object)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# load a list of all the ERDDAPs and their urls.\n", - "# This is saved as a JSON with the code bc I cant get the direct link to the git site to work.\n", - "f = open('erddaps.json')\n", - "data_json = pd.read_json(f)\n", - "erddap_links = data_json['url'].unique()\n", - "\n", - "erddap_links=erddap_links\n", - "\n", - "erddap_links\n", - "# # load in all possible erddap servers straight from site (not working...why??):\n", - "# url = 'https://github.com/IrishMarineInstitute/awesome-erddap/blob/df70c66a0784a384f398492d356df46dae4281d4/erddaps.json'\n", - "# response = urllib.request.urlopen(url)\n", - "# data_json = json.loads(response.read())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aae785f2-b5f0-4712-bb8d-5730e22537f2", - "metadata": {}, - "outputs": [], - "source": [ - "# set up for the ERDDAP API\n", - "e = ERDDAP(\n", - " server=\"https://erddap.bco-dmo.org/erddap\", # pick a specific ERDDAP server\n", - " protocol=\"tabledap\", # pick if you want grid(raster) or table data\n", - " response=\"csv\") # pick type of data output\n", - "e.dataset_id = \"bcodmo_dataset_817952\" # define the dataset on that ERDDAP server\n", - "\n", - "# define by space/time/variable\n", - "e.constraints = {\n", - " \"time>=\": \"2017-01-13T00:00:00Z\",\n", - " \"time<=\": \"2017-01-16T23:59:59Z\"}\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4bdc3fd2-15ed-4794-bc84-0cec694410aa", - "metadata": {}, - "outputs": [], - "source": [ - "# look at the station metadata for this query:\n", - "info_url = e.get_info_url()\n", - "pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1fe6099f-7dc1-468a-bfcd-3f2ea4729c79", - "metadata": {}, - "outputs": [], - "source": [ - "# define the variables you want to download (or leave blank and download all columns)\n", - "e.variables = [\n", - " \"longitude\",\n", - " \"latitude\",\n", - " \"time\",\n", - " \"Temperature\"]\n", - "\n", - "# or load the data into a dataframe\n", - "url = e.get_download_url()\n", - "df_bcodmo = e.to_pandas(parse_dates=True)\n", - "\n", - "\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/01_find_all_stations.ipynb b/icesat2_kdph-main/01_find_all_stations.ipynb deleted file mode 100644 index 0c76d9a..0000000 --- a/icesat2_kdph-main/01_find_all_stations.ipynb +++ /dev/null @@ -1,720 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "842adedb", - "metadata": {}, - "source": [ - "Goal: find all stations with any relevant data in Oct 2018 - Dec 2023\n", - "\n", - "Order of operations:\n", - "- Find all active stations in this time frame\n", - "- get dataset info for each that could match \n", - "- check variable names for key words\n", - "- save that dataset location and active time range" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "3e8e3110-5c8f-47e5-b807-23e3bedb6604", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "# pip install --quiet erddapy" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "141611e8", - "metadata": {}, - "outputs": [], - "source": [ - "from erddapy import ERDDAP\n", - "import pandas as pd\n", - "import numpy as np\n", - "import urllib.request\n", - "import json \n", - "import re\n", - "\n", - "pd.set_option('display.max_rows', None)\n", - "pd.set_option('display.max_columns', None)\n", - "\n", - "# help(ERDDAP.get_search_url) " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "4e6dbb59", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(62,)\n" - ] - } - ], - "source": [ - "# load a list of all the ERDDAPs and their urls.\n", - "# This is saved as a JSON with the code bc I cant get the direct link to the git site to work.\n", - "f = open('erddaps.json')\n", - "data_json = pd.read_json(f)\n", - "erddap_links = data_json['url'].unique()\n", - "\n", - "erddap_links=erddap_links\n", - "\n", - "print(erddap_links)\n", - "# # load in all possible erddap servers straight from site (not working...why??):\n", - "# url = 'https://github.com/IrishMarineInstitute/awesome-erddap/blob/df70c66a0784a384f398492d356df46dae4281d4/erddaps.json'\n", - "# response = urllib.request.urlopen(url)\n", - "# data_json = json.loads(response.read())\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "606c95c1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "----No matching sites exist\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "----No matching sites exist\n", - "----No matching sites exist\n", - "-Saving matching sites\n", - "32426\n" - ] - } - ], - "source": [ - "# try searching for all possibly matching stations for this time (there will be a ton)\n", - "\n", - "\n", - "min_time = \"2018-10-01T00:00:00Z\"\n", - "max_time = \"2024-01-01T00:00:00Z\"\n", - "\n", - "kw = {\n", - " \"min_time\": min_time,\n", - " \"max_time\": max_time,\n", - "}\n", - "\n", - "# save a dataframe of every station that has data in the range\n", - "# this is a fast loop that makes the next (very slow) loop faster\n", - "\n", - "# initialize empty lists\n", - "allsites = list()\n", - "allurl = []\n", - "for orgs in erddap_links:\n", - " # print('Searching ' + orgs)\n", - " \n", - " # start making the erddap object for this erddap url \n", - " e = ERDDAP(\n", - " server=orgs, \n", - " protocol=\"tabledap\", # Want table data (not a grid map of data) \n", - " response=\"csv\") #in csv format for pandas\n", - "\n", - " url = e.get_search_url(search_for='', response=\"csv\", **kw)# search for a match to our time/location\n", - " try:\n", - " temp = pd.read_csv(url)[\"Dataset ID\"].unique() # try to save the data\n", - " except:\n", - " print(\"----No matching sites exist\") # ignore this entry if there is no data\n", - " else:\n", - " print(\"-Saving matching sites\")\n", - " allsites.extend(temp) # save the site name(s)\n", - " for _ in range(len(temp)): allurl.append(orgs) # save a url for each site\n", - "\n", - "# add blank columns for saving the time range and lat/lon range for each match\n", - "FF = pd.DataFrame(allsites,columns=['sites'])\n", - "FF = FF.assign(url=allurl)\n", - "FF[\"time_coverage_start\"] = np.nan\n", - "FF[\"time_coverage_end\"] = np.nan\n", - "FF[\"geospatial_lat_min\"] = np.nan\n", - "FF[\"geospatial_lat_max\"] = np.nan\n", - "FF[\"geospatial_lon_min\"] = np.nan\n", - "FF[\"geospatial_lon_max\"] = np.nan\n", - "FF[\"check_sum\"] = 1\n", - "# note: some sites have messy metadata (eg listing lat/lon everywhere) and will show up as a match even when there is no relevant data.\n", - "print(len(FF))\n", - "del e" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "id": "2f14c6ec", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n", - "100\n", - "200\n", - "300\n", - "400\n", - "500\n", - "600\n", - "700\n", - "800\n", - "900\n", - "1000\n", - "1100\n", - "1200\n", - "1300\n", - "1400\n", - "1500\n", - "1600\n", - "1700\n", - "1800\n", - "1900\n", - "2000\n", - "2100\n", - "2200\n", - "2300\n", - "2400\n", - "2500\n", - "2600\n", - "2700\n", - "2800\n", - "2900\n", - "3000\n", - "3100\n", - "3200\n", - "3300\n", - "3400\n", - "3500\n", - "3600\n", - "3700\n", - "3800\n", - "3900\n", - "4000\n", - "4100\n", - "4200\n", - "4300\n", - "4400\n", - "4500\n", - "4600\n", - "4700\n", - "4800\n", - "4900\n", - "5000\n", - "5100\n", - "5200\n", - "5300\n", - "5400\n", - "5500\n", - "5600\n", - "5700\n", - "5800\n", - "5900\n", - "6000\n", - "6100\n", - "6200\n", - "6300\n", - "6400\n", - "6500\n", - "6600\n", - "6700\n", - "6800\n", - "6900\n", - "7000\n", - "7100\n", - "7200\n", - "7300\n", - "7400\n", - "7500\n", - "7600\n", - "7700\n", - "7800\n", - "7900\n", - "8000\n", - "8100\n", - "8200\n", - "8300\n", - "8400\n", - "8500\n", - "8600\n", - "8700\n", - "8800\n", - "8900\n", - "9000\n", - "9100\n", - "9200\n", - "9300\n", - "9400\n", - "9500\n", - "9600\n", - "9700\n", - "9800\n", - "9900\n", - "10000\n", - "10100\n", - "10200\n", - "10300\n", - "10400\n", - "10500\n", - "10600\n", - "10700\n", - "10800\n", - "10900\n", - "11000\n", - "11100\n", - "11200\n", - "11300\n", - "11400\n", - "11500\n", - "11600\n", - "11700\n", - "11800\n", - "11900\n", - "12000\n", - "12100\n", - "12200\n", - "12300\n", - "12400\n", - "12500\n", - "12600\n", - "12700\n", - "12800\n", - "12900\n", - "13000\n", - "13100\n", - "13200\n", - "13300\n", - "13400\n", - "13500\n", - "13600\n", - "13700\n", - "13800\n", - "13900\n", - "14000\n", - "14100\n", - "14200\n", - "14300\n", - "14400\n", - "14500\n", - "14600\n", - "14700\n", - "14800\n", - "14900\n", - "15000\n", - "15100\n", - "15200\n", - "15300\n", - "15400\n", - "15500\n", - "15600\n", - "15700\n", - "15800\n", - "15900\n", - "16000\n", - "16100\n", - "16200\n", - "16300\n", - "16400\n", - "16500\n", - "16600\n", - "16700\n", - "16800\n", - "16900\n", - "17000\n", - "17100\n", - "17200\n", - "17300\n", - "17400\n", - "17500\n", - "17600\n", - "17700\n", - "17800\n", - "17900\n", - "18000\n", - "18100\n", - "18200\n", - "18300\n", - "18400\n", - "18500\n", - "18600\n", - "18700\n", - "18800\n", - "18900\n", - "19000\n", - "19100\n", - "19200\n", - "19300\n", - "19400\n", - "19500\n", - "19600\n", - "19700\n", - "19800\n", - "19900\n", - "20000\n", - "20100\n", - "20200\n", - "20300\n", - "20400\n", - "20500\n", - "20600\n", - "20700\n", - "20800\n", - "20900\n", - "21000\n", - "21100\n", - "21200\n", - "21300\n", - "21400\n", - "21500\n", - "21600\n", - "21700\n", - "21800\n", - "21900\n", - "22000\n", - "22100\n", - "22200\n", - "22300\n", - "22400\n", - "22500\n", - "22600\n", - "22700\n", - "22800\n", - "22900\n", - "23000\n", - "23100\n", - "23200\n", - "23300\n", - "23400\n", - "23500\n", - "23600\n", - "23700\n", - "23800\n", - "23900\n", - "24000\n", - "24100\n", - "24200\n", - "24300\n", - "24400\n", - "24500\n", - "24600\n", - "24700\n", - "24800\n", - "24900\n", - "25000\n", - "25100\n", - "25200\n", - "25300\n", - "25400\n", - "25500\n", - "25600\n", - "25700\n", - "25800\n", - "25900\n", - "26000\n", - "26100\n", - "26200\n", - "26300\n", - "26400\n", - "26500\n", - "26600\n", - "26700\n", - "26800\n", - "26900\n", - "27000\n", - "27100\n", - "27200\n", - "27300\n", - "27400\n", - "27500\n", - "27600\n", - "27700\n", - "27800\n", - "27900\n", - "28000\n", - "28100\n", - "28200\n", - "28300\n", - "28400\n", - "28500\n", - "28600\n", - "28700\n", - "28800\n", - "28900\n", - "29000\n", - "29100\n", - "29200\n", - "29300\n", - "29400\n", - "29500\n", - "29600\n", - "29700\n", - "29800\n", - "29900\n", - "30000\n", - "30100\n", - "30200\n", - "30300\n", - "30400\n", - "30500\n", - "30600\n", - "30700\n", - "30800\n", - "30900\n", - "31000\n", - "31100\n", - "31200\n", - "31300\n", - "31400\n", - "31500\n", - "31600\n", - "31700\n", - "31800\n", - "31900\n", - "32000\n", - "32100\n", - "32200\n", - "32300\n", - "32400\n" - ] - } - ], - "source": [ - "# now search for matching keywords in each erddap site found above (~40k entries)\n", - "# I only pull in metadata from ERDDAP (no actual data)\n", - "# this cell takes a looooong time (2 h?)\n", - "searchterms = r\"chl|turb|sedi|par|phot|secchi|ssc\"\n", - "\n", - "for jj in range(len(FF)):\n", - " if jj % 100 ==0:\n", - " print(jj)# give a printout every 100 for my sanity\n", - " \n", - " # make the info URL for this site for the full icesat-2 time range\n", - " e = ERDDAP(server=FF['url'][jj], protocol=\"tabledap\", response=\"csv\")\n", - " e.dataset_id = FF['sites'][jj]\n", - " e.constraints = {\"time>=\": min_time, \"time<=\": max_time}\n", - " info_url = e.get_info_url()\n", - "# print(info_url)\n", - "\n", - " # make a dataframe for all the metadata for this station\n", - " # some of these urls are bogus - if fail then fill with NaNs\n", - " try:\n", - " df = pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n", - " except:\n", - " FF.loc[jj,\"check_sum\"] = np.nan\n", - "# print(str(jj),' does not exist') \n", - " else:\n", - " # search the Variable Names for relevant measurements and minimum amount of metadata (lat/lon)\n", - " idx = df[\"Variable Name\"].str.contains(searchterms, flags = re.IGNORECASE)\n", - " if any(idx==True)==True:# if there IS a relevant variable \n", - " e.constraints = {}# find the entire time range for the station and its location\n", - " info_url = e.get_info_url() # just get metadata instead of downloading data(e.get_download_url)\n", - " try:\n", - " df = pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n", - " except:\n", - " FF.loc[jj,\"check_sum\"] = np.nan\n", - "# print(str(jj),' does not exist')\n", - " else:\n", - "\n", - " # sometimes metadata is missing - leave blank if any is empty\n", - " try:\n", - " FF.loc[jj,\"time_coverage_start\"] = df.loc[df['Attribute Name']=='time_coverage_start', 'Value'].item()\n", - " except:\n", - " pass\n", - "\n", - " try:\n", - " FF.loc[jj,\"time_coverage_end\"] = df.loc[df['Attribute Name']=='time_coverage_end', 'Value'].item()\n", - " except:\n", - " pass\n", - "\n", - " try:\n", - " FF.loc[jj,\"geospatial_lat_min\"] = df.loc[df['Attribute Name']=='geospatial_lat_min', 'Value'].item()\n", - " except:\n", - " pass\n", - "\n", - " try:\n", - " FF.loc[jj,\"geospatial_lat_max\"] = df.loc[df['Attribute Name']=='geospatial_lat_max', 'Value'].item()\n", - " except:\n", - " pass\n", - "\n", - " try:\n", - " FF.loc[jj,\"geospatial_lon_min\"] = df.loc[df['Attribute Name']=='geospatial_lon_min', 'Value'].item()\n", - " except:\n", - " pass\n", - "\n", - " try:\n", - " FF.loc[jj,\"geospatial_lon_max\"] = df.loc[df['Attribute Name']=='geospatial_lon_max', 'Value'].item()\n", - " except:\n", - " pass\n", - "\n", - " else: # otherwise ignore this site\n", - "# print(str(jj),' has no relevant data')\n", - " FF.loc[jj,\"check_sum\"] = np.nan\n", - "\n", - "# remove any entries that failed\n", - "FF = FF.dropna(subset=\"check_sum\") \n", - "FF.reset_index(drop=True, inplace=True)\n", - "FF = FF.drop(columns=\"check_sum\")\n", - "# make any text entries into actual numbers\n", - "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", - "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", - "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", - "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", - "# save for future reference\n", - "FF.to_pickle(\"all_relevant_stations.pkl\")\n", - "\n", - "# also save a csv for curious viewers\n", - "FF_save.to_csv('erddap_station_search_results.csv',index=False)\n", - "print(len(FF_save))\n", - "FF_save" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8d4d4d48", - "metadata": {}, - "outputs": [], - "source": [ - "# after running that slow code I realized that I didnt save enough information...\n", - "\n", - "\n", - "# add columns to identify which type of data is present in each dataset\n", - "lib = {'buoy','glider','ship','turbid','ssc','photo','chl','radiation'}\n", - "\n", - "FF[\"buoy\"] = False\n", - "FF[\"glider\"] = False\n", - "FF[\"ship\"] = False\n", - "FF[\"turbid\"] = False\n", - "FF[\"ssc\"] = False\n", - "FF[\"photo\"] = False\n", - "FF[\"chl\"] = False\n", - "FF['radiation'] = False\n", - "FF['bad'] = False\n", - "\n", - "for jj in range(len(FF)):\n", - " if jj % 100 ==0:\n", - " print(jj)# give a printout every 100 for my sanity\n", - "\n", - " # make the info URL for this site for this time range\n", - " e = ERDDAP(server=FF['url'][jj],\n", - " protocol=\"tabledap\",\n", - " response=\"csv\"\n", - " )\n", - " e.dataset_id = FF['sites'][jj]\n", - " # e.constraints = {\"time>=\": min_time, \"time<=\": max_time}\n", - " info_url = e.get_info_url()\n", - " try:\n", - " ds_info = pd.read_csv(info_url)# make a dataframe for all the metadata for this station\n", - " except:\n", - " FF.loc[jj,\"bad\"] = True\n", - " else:\n", - " for kwd in lib:\n", - " idx = ds_info[\"Value\"].str.contains(kwd, flags = re.IGNORECASE)\n", - " if any(idx==True)==True:\n", - " FF.loc[jj,kwd] = True\n", - "\n", - "FF = FF[FF.bad == False] \n", - "FF.reset_index(drop=True, inplace=True)\n", - "FF = FF.drop(columns=\"bad\")\n", - "FF.to_pickle(\"labeled_relevant_stations.pkl\")\n", - "\n", - "# now we can look at how many stations are available for each data type\n", - "print(len(FF[(FF.buoy == True) & (FF.radiation == True)]))\n", - "FF[(FF.ship == True) & (FF.radiation == True)]" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/02_match_argo2granules_ipx.ipynb b/icesat2_kdph-main/02_match_argo2granules_ipx.ipynb deleted file mode 100644 index 87a661b..0000000 --- a/icesat2_kdph-main/02_match_argo2granules_ipx.ipynb +++ /dev/null @@ -1,2130 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "aaeebceb-4eeb-4e6c-90f0-be6360b21969", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, - "source": [ - "The goal is to find matching ICESat-2 ATL03 photon data matching the times and lat/lon of the published Kd values from BGC ARGO floats (10.5281/zenodo.8228242). \n", - "\n", - "The Kd CSV file was edited after download from Zenodo. Kd calculations were sorted by date. This pre-processing could jsut as easily be done in python but I already had the csv open to look at the contents. Edited version is called Dataset_Kd_Paper_2018. \n", - "\n", - "Actions:\n", - "- Load lat/lon and time for each Kd calculation\n", - "- Check if there is a matching pass for ICESat-2 within +- x hours and x km.\n", - "- The notebook saves pickle files of GeoDataFrames (pandas), appending the matching row of the spreadsheet of latlontimes. \n", - "- These GDFs are the output of the icesat2.atl03sp search function. The contents of each GDF can be found here: https://slideruleearth.io/web/rtd/user_guide/ICESat-2.html#photon-segments\n", - "- Also saves a new copy of Dataset_Kd_Paper_2018_dep with only the matching kd rows.\n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "2256384a-86a8-43c0-801b-5953747525ba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet rtree\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet hdbscan" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "8f821b93-0ec9-41db-af0e-61e26934504d", - "metadata": {}, - "outputs": [], - "source": [ - "import icepyx as ipx\n", - "from datetime import datetime, timedelta\n", - "import time\n", - "import os\n", - "import re\n", - "import glob\n", - "import pandas as pd\n", - "import numpy as np\n", - "import logging\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from config import workspace_path, atl03_path,\\\n", - " other_data_path ,shoreline_data ,gebco_path ,\\\n", - " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", - " ignore_subsurface_height_thres ,output_path \n", - "\n", - "\n", - " \n", - "from kd_utils.data_processing import load_data, \\\n", - " extract_file_params, \\\n", - " Extract_sea_photons, \\\n", - " filter_photon_dataset_by_hull_area\n", - " \n", - "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", - " get_sea_surface_height\n", - " \n", - " \n", - "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", - "\n", - "from kd_utils.visualization import plot_photon_height, \\\n", - " plot_kd_photons, \\\n", - " plot_filtered_seafloor_photons\n", - " \n", - "from kd_utils.Kd_analysis import process_kd_calculation\n", - "\n", - "from kd_utils.interpolation import geoid_correction, \\\n", - " refraction_correction, \\\n", - " interpolate_labels, \\\n", - " apply_interpolation\n", - "\n", - "\n", - "\n", - "pd.set_option('display.max_columns', None)\n", - "# pd.set_option('display.max_rows', None)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", - "metadata": {}, - "outputs": [], - "source": [ - "def buoy_bound_box(lat,lon,buffer_km):\n", - " # define a buffer distance around the buoy to search for icesat-2 data\n", - " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", - " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", - " # define bounding box around the buoy (WSEN)\n", - " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", - " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", - " # region = sliderule.toregion(bbox)\n", - " minx = lon - lon_buff\n", - " miny = lat - lat_buff\n", - " maxx = lon + lon_buff\n", - " maxy = lat + lat_buff\n", - "\n", - " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", - " poly = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", - "\n", - " return poly\n", - "\n", - "def main():\n", - " try:\n", - " \n", - " # Load IS2 and extract sea photons\n", - " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", - " \n", - " ## For debugging\n", - " #IS2_atl03_beams=['gt1r']\n", - " \n", - " # Check beam types and ensure we have what we want (e.g., strong beams)\n", - " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", - " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", - " if not IS2_atl03_beams:\n", - " print('No Strong Beam')\n", - " # sys.exit() # Terminate the program\n", - " else:\n", - " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", - " \n", - " # Extract sea photon by applying the land mask\n", - " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", - " \n", - " \n", - " # Main processing function to apply binning beam-by-beam \n", - " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", - " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", - " \n", - " \n", - " # filter to get subsurface photons\n", - " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", - " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", - " \n", - " \n", - " # Visualization of the filtered seafloor photons\n", - " # Uncomment the following lines to visualize if needed\n", - " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", - " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", - " # sea_photon_dataset=sea_photon_dataset, \n", - " # sea_surface_height=sea_surface_height, \n", - " # output_path=output_path)\n", - " \n", - " ########################\n", - " # Todo: move the filter to the begining\n", - " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", - " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", - " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", - " # Filter out points below the seafloor\n", - " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", - " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", - " ]\n", - " \n", - " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", - " \n", - " #Filter dataframe based on beam list\n", - " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", - " \n", - " ###################################\n", - " ### Todo: move the filter to the begining\n", - " # Steps to standardize KD calculation by filtering out \n", - " # segments lacking sufficient subsurface photons.\n", - " # Approach: Use the ConvexHull of photons within \n", - " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", - " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", - " \n", - " # Apply filtering based on hull area if desired\n", - " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", - " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", - " )\n", - " \n", - " # Visualization\n", - " # Uncomment the following line to visualize if needed\n", - " \n", - " # plot_target_beam=['gt1l']\n", - " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", - " \n", - " ########################################### \n", - " # calculate kd and save it to table\n", - " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", - " \n", - " \n", - " ## Todo move this part into a function so that it will not looks too busy here\n", - " # Extract the timestamp using regex and use it to set the output file name\n", - " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", - " timestamp = match.group(1) if match else \"unknown\"\n", - " \n", - " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", - " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", - " \n", - " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", - " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", - " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", - " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", - " def find_closest(group):\n", - " if not group.empty:\n", - " center = group['relative_AT_dist_center'].iloc[0]\n", - " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", - " closest_index = group['dist_to_center'].idxmin()\n", - " return group.loc[[closest_index]]\n", - " else:\n", - " return pd.DataFrame(columns=group.columns)\n", - " \n", - " # Filter out empty or all-NA entries\n", - " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", - " \n", - " # Group by 'lat_bins' and apply the find_closest function\n", - " closest_to_center = unique_photon_dataset_filtered\\\n", - " .groupby('lat_bins', observed=False)\\\n", - " .apply(find_closest, include_groups=True)\n", - " # .reset_index()\n", - " \n", - " # Remove the index without resetting it if 'lat_bins' already exists\n", - " closest_to_center.index = closest_to_center.index.droplevel(0)\n", - " \n", - " # Ensure relevant entries are excluded before concatenation\n", - " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", - " \n", - " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", - " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", - " \n", - " \n", - " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", - " \n", - " logging.info(\"SUCCESS!\")\n", - " \n", - " except Exception as e:\n", - " logging.error(f\"An error occurred: {e}\")\n", - "\n", - "# if __name__ == '__main__':\n", - " \n", - "# # Get arguments function\n", - "# args = get_args() \n", - " \n", - "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", - " \n", - "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", - " \n", - "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", - " \n", - "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", - " \n", - "# #Get the gebco list\n", - "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", - "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - "\n", - "# #Initialize with an empty list\n", - "# GEBCO_file_path_lists = []\n", - "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - "# #put the find one into the list\n", - "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - "\n", - " \n", - "# # Get all other necessary parameters\n", - "# horizontal_res = args.horizontal_res\n", - " \n", - "# vertical_res = args.vertical_res\n", - " \n", - "# subsurface_thresh = args.subsurface_thresh\n", - " \n", - "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", - " \n", - "# # When all paramters ready, call the main function\n", - "# main()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "1d72dbef-f954-499f-be76-c1de3233b325", - "metadata": {}, - "outputs": [], - "source": [ - "# load time, lat and lon\n", - "df = pd.read_csv(\"data/Dataset_Kd_Paper_2018.csv\")\n", - "# convert matlab time to datetime objects\n", - "df[\"dt_float\"] = pd.to_datetime(df[\"dt_float\"]-719529,unit='d',utc=True).round('s')\n", - "# remove all rows from before icesat2 launched\n", - "df = df[df[\"dt_float\"]>datetime.fromisoformat('2018-10-01T00:00:00Z')]\n", - "df.reset_index(drop=True, inplace=True)\n", - "# df" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "processing 100/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Enter your Earthdata Login username: gloverha\n", - "Enter your Earthdata password: ········\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "order ID: 5000005875967\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875967 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875968\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875968 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875969\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875969 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 200/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875970\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875970 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 300/5129\n", - "processing 400/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875971\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875971 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875972\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875972 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 500/5129\n", - "processing 600/5129\n", - "processing 700/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875973\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875973 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875974\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875974 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875975\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875975 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875976\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875976 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875977\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875977 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 800/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875978\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875978 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 900/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875979\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875979 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875980\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875980 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 1000/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875981\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875981 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875982\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875982 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875983\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875983 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875984\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875984 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 1100/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875985\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875985 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875986\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875986 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875987\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875987 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875988\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875988 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 1200/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875989\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875989 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 1500/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875991\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875991 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875992\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875992 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 1600/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875993\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875993 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875994\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875994 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 1700/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875995\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875995 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875996\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875996 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 1800/5129\n", - "processing 1900/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875997\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875997 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875998\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875998 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005875999\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005875999 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 2000/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876000\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876000 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876001\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876001 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876002\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876002 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876003\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876003 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876004\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876004 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 2100/5129\n", - "processing 2200/5129\n", - "processing 2300/5129\n", - "processing 2400/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876005\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876005 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876006\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876006 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876007\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876007 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 2500/5129\n", - "processing 2600/5129\n", - "processing 2700/5129\n", - "processing 2800/5129\n", - "processing 2900/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876008\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876008 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876009\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876009 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876010\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876010 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876011\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876011 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 3000/5129\n", - "processing 3100/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876012\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876012 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876013\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876013 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 3200/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876014\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876014 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876015\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876015 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876016\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876016 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 3300/5129\n", - "processing 3400/5129\n", - "processing 3500/5129\n", - "processing 3600/5129\n", - "processing 3700/5129\n", - "processing 3800/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876018\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876018 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876019\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876019 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876021\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876021 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876022\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876022 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876023\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876023 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876024\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876024 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876025\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876025 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876026\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876026 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876027\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876027 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 3900/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876028\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876028 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876029\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876029 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 4000/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876030\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876030 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 4100/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876031\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876031 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876032\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876032 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876033\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876033 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876034\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876034 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 4200/5129\n", - "processing 4300/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876035\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876035 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876036\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876036 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 4400/5129\n", - "processing 4500/5129\n", - "processing 4600/5129\n", - "processing 4700/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876037\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876037 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876038\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876038 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876039\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876039 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876040\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876040 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876041\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876041 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876042\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876042 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876043\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876043 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 4800/5129\n", - "processing 4900/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876044\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876044 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876045\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876045 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876046\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876046 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876047\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876047 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876048\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876048 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876049\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876049 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 5000/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876050\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876050 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876051\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876051 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 2 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876052\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876052 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "Total number of data order requests is 1 for 2 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876053\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876053 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "processing 5100/5129\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876054\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876054 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n", - "5129\n" - ] - } - ], - "source": [ - "df[\"check_sum\"] = False\n", - "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", - "search_hrs = 12\n", - "search_km = 4\n", - "for jj in range(100,len(df)):\n", - " if jj % 100 ==0:\n", - " print('processing '+str(jj) +'/'+str(len(df)))# give a printout every 100 for my sanity\n", - " # define a search region around the buoy \n", - " lat = df['lat_float'][jj]\n", - " lon = df['lon_float'][jj]\n", - " \n", - " spatial_extent = buoy_bound_box(lat,lon,search_km)\n", - " t_start = (df['dt_float'][jj]-timedelta(hours=search_hrs))\n", - " t_end = (df['dt_float'][jj]+timedelta(hours=search_hrs))\n", - " short_name = 'ATL03'\n", - " date_range = [t_start,t_end]\n", - " region = ipx.Query(short_name, spatial_extent, date_range)\n", - " try:\n", - " region.download_granules('data/')\n", - " print('success')\n", - " df[\"check_sum\"] = True# if data exists and is downloaded - note in the argo csv \n", - " except:\n", - " continue\n", - " \n", - "\n", - "# df = pd.read_pickle('glider_matches.pkl')\n", - "df=df[df[\"check_sum\"]==True]\n", - "print(len(df))\n", - "# df.reset_index(drop=True, inplace=True)\n", - "df.to_csv('results/Dataset_Kd_Paper_2018_dep_4km12h.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:36:01,671 - INFO - ./data/processed_ATL03_20221110022321_07691706_006_01.h5\n", - "2024-12-03 21:36:01,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:36:45,615 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:36:45,616 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:36:45,677 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:36:45,678 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:36:45,770 - INFO - SUCCESS!\n", - "2024-12-03 21:36:45,780 - INFO - ./data/processed_ATL03_20220228153332_10441406_006_01.h5\n", - "2024-12-03 21:36:45,786 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:36:46,193 - INFO - ./data/processed_ATL03_20181031050117_04970112_006_02.h5\n", - "2024-12-03 21:36:46,200 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:36:46,764 - INFO - ./data/processed_ATL03_20210918222329_13331206_006_02.h5\n", - "2024-12-03 21:36:46,770 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:36:47,193 - INFO - ./data/processed_ATL03_20190521030409_08070308_006_02.h5\n", - "2024-12-03 21:36:47,203 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:37:29,816 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:37:29,817 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:37:29,862 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:37:29,862 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:37:29,941 - INFO - SUCCESS!\n", - "2024-12-03 21:37:29,952 - INFO - ./data/processed_ATL03_20210220082739_08911006_006_01.h5\n", - "2024-12-03 21:37:29,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:37:30,599 - INFO - ./data/processed_ATL03_20190626024324_13570302_006_02.h5\n", - "2024-12-03 21:37:30,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:37:51,300 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:37:51,301 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:37:51,405 - INFO - SUCCESS!\n", - "2024-12-03 21:37:51,417 - INFO - ./data/processed_ATL03_20210101105852_01291006_006_01.h5\n", - "2024-12-03 21:37:51,423 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:37:51,893 - INFO - ./data/processed_ATL03_20200210023858_06930606_006_01.h5\n", - "2024-12-03 21:37:51,899 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:37:52,652 - INFO - ./data/processed_ATL03_20221130045019_10761706_006_02.h5\n", - "2024-12-03 21:37:52,658 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l']\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:38:13,287 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-03 21:38:13,330 - INFO - ./data/processed_ATL03_20220821205409_09311602_006_01.h5\n", - "2024-12-03 21:38:13,336 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:38:34,420 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:38:34,421 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:38:34,509 - INFO - SUCCESS!\n", - "2024-12-03 21:38:34,519 - INFO - ./data/processed_ATL03_20220903094331_11221608_006_01.h5\n", - "2024-12-03 21:38:34,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:39:16,009 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:39:16,009 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:39:16,048 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:39:16,048 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:39:16,139 - INFO - SUCCESS!\n", - "2024-12-03 21:39:16,148 - INFO - ./data/processed_ATL03_20210216000557_08241014_006_01.h5\n", - "2024-12-03 21:39:16,156 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:39:58,212 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:39:58,212 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:39:58,271 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:39:58,272 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:39:58,353 - INFO - SUCCESS!\n", - "2024-12-03 21:39:58,363 - INFO - ./data/processed_ATL03_20230131135652_06421801_006_02.h5\n", - "2024-12-03 21:39:58,371 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:41:00,434 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:41:00,434 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:41:00,491 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:41:00,492 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:41:00,549 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:41:00,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:41:00,640 - INFO - SUCCESS!\n", - "2024-12-03 21:41:00,652 - INFO - ./data/processed_ATL03_20230121145754_04891814_006_02.h5\n", - "2024-12-03 21:41:00,658 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:41:42,085 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:41:42,086 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:41:42,147 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:41:42,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:41:42,239 - INFO - SUCCESS!\n", - "2024-12-03 21:41:42,250 - INFO - ./data/processed_ATL03_20191107102440_06340507_006_01.h5\n", - "2024-12-03 21:41:42,256 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:41:42,787 - INFO - ./data/processed_ATL03_20200219140630_08380602_006_01.h5\n", - "2024-12-03 21:41:42,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:41:43,382 - INFO - ./data/processed_ATL03_20221205162609_11601702_006_02.h5\n", - "2024-12-03 21:41:43,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:42:04,851 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:42:04,852 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:42:04,949 - INFO - SUCCESS!\n", - "2024-12-03 21:42:04,963 - INFO - ./data/processed_ATL03_20190902114623_10140406_006_02.h5\n", - "2024-12-03 21:42:04,975 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:42:05,398 - INFO - ./data/processed_ATL03_20190329173700_00070306_006_02.h5\n", - "2024-12-03 21:42:05,404 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:42:46,983 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:42:46,984 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:42:47,005 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:42:47,005 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:42:47,090 - INFO - SUCCESS!\n", - "2024-12-03 21:42:47,100 - INFO - ./data/processed_ATL03_20211014091744_03351302_006_01.h5\n", - "2024-12-03 21:42:47,106 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:43:08,855 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:43:08,855 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:43:08,958 - INFO - SUCCESS!\n", - "2024-12-03 21:43:08,972 - INFO - ./data/processed_ATL03_20210804125607_06401202_006_01.h5\n", - "2024-12-03 21:43:08,979 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:43:50,667 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:43:50,668 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:43:50,728 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:43:50,728 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:43:50,821 - INFO - SUCCESS!\n", - "2024-12-03 21:43:50,833 - INFO - ./data/processed_ATL03_20190613015947_11580302_006_02.h5\n", - "2024-12-03 21:43:50,839 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:44:32,360 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:44:32,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:44:32,415 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:44:32,415 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:44:32,502 - INFO - SUCCESS!\n", - "2024-12-03 21:44:32,512 - INFO - ./data/processed_ATL03_20201020040408_03970902_006_01.h5\n", - "2024-12-03 21:44:32,518 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:45:13,542 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:45:13,542 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:45:13,561 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:45:13,561 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:45:13,648 - INFO - SUCCESS!\n", - "2024-12-03 21:45:13,661 - INFO - ./data/processed_ATL03_20230131140354_06421802_006_02.h5\n", - "2024-12-03 21:45:13,666 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:45:14,087 - INFO - ./data/processed_ATL03_20220126040658_05331402_006_01.h5\n", - "2024-12-03 21:45:14,093 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:46:17,054 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:46:17,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:46:17,088 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:46:17,088 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:46:17,124 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:46:17,125 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:46:17,166 - INFO - SUCCESS!\n", - "2024-12-03 21:46:17,177 - INFO - ./data/processed_ATL03_20210710170614_02601214_006_01.h5\n", - "2024-12-03 21:46:17,186 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:46:58,999 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:46:59,000 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:46:59,054 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:46:59,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:46:59,151 - INFO - SUCCESS!\n", - "2024-12-03 21:46:59,161 - INFO - ./data/processed_ATL03_20220821080545_09221614_006_01.h5\n", - "2024-12-03 21:46:59,167 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:46:59,592 - INFO - ./data/processed_ATL03_20210709162010_02451203_006_01.h5\n", - "2024-12-03 21:46:59,598 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:47:20,595 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:47:20,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:47:20,701 - INFO - SUCCESS!\n", - "2024-12-03 21:47:20,714 - INFO - ./data/processed_ATL03_20190211213415_06940206_006_02.h5\n", - "2024-12-03 21:47:20,723 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:47:41,862 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:47:41,863 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:47:41,958 - INFO - SUCCESS!\n", - "2024-12-03 21:47:41,970 - INFO - ./data/processed_ATL03_20210630030952_00991206_006_01.h5\n", - "2024-12-03 21:47:41,979 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:48:03,132 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:48:03,133 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:48:03,231 - INFO - SUCCESS!\n", - "2024-12-03 21:48:03,246 - INFO - ./data/processed_ATL03_20201116164551_08170908_006_01.h5\n", - "2024-12-03 21:48:03,252 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:48:03,649 - INFO - ./data/processed_ATL03_20200629212148_00690806_006_01.h5\n", - "2024-12-03 21:48:03,656 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:49:05,539 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:49:05,539 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:49:05,549 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:49:05,550 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:49:05,604 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:49:05,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:49:05,689 - INFO - SUCCESS!\n", - "2024-12-03 21:49:05,699 - INFO - ./data/processed_ATL03_20190506031153_05780308_006_02.h5\n", - "2024-12-03 21:49:05,709 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:49:06,125 - INFO - ./data/processed_ATL03_20181213181733_11620114_006_02.h5\n", - "2024-12-03 21:49:06,134 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:49:06,527 - INFO - ./data/processed_ATL03_20210703140243_01521202_006_01.h5\n", - "2024-12-03 21:49:06,534 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:50:09,315 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:50:09,315 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:50:09,371 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:50:09,372 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:50:09,427 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:50:09,427 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:50:09,471 - INFO - SUCCESS!\n", - "2024-12-03 21:50:09,482 - INFO - ./data/processed_ATL03_20191010201542_02130502_006_02.h5\n", - "2024-12-03 21:50:09,488 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:51:13,225 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 21:51:13,225 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:51:13,290 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:51:13,291 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:51:13,352 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:51:13,353 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:51:13,429 - INFO - SUCCESS!\n", - "2024-12-03 21:51:13,446 - INFO - ./data/processed_ATL03_20230305110600_11441803_006_02.h5\n", - "2024-12-03 21:51:13,452 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-03 21:51:13,876 - INFO - ./data/processed_ATL03_20200221023939_08610606_006_01.h5\n", - "2024-12-03 21:51:13,882 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:51:14,683 - INFO - ./data/processed_ATL03_20210211090957_07541006_006_01.h5\n", - "2024-12-03 21:51:14,693 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:51:15,355 - INFO - ./data/processed_ATL03_20190926024902_13750403_006_02.h5\n", - "2024-12-03 21:51:15,362 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 21:51:57,337 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 21:51:57,338 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:51:57,350 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 21:51:57,351 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 21:51:57,397 - INFO - SUCCESS!\n" - ] - } - ], - "source": [ - "h5names = glob.glob('data/processed_*.h5')\n", - "\n", - "\n", - "for jj in range(len(h5names)):\n", - " # code from chao (in Main.ipynb)\n", - " atl03_file_inloop = h5names[jj]\n", - " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", - " # print(ATL03_h5_file_path)\n", - " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", - " # print(shoreline_data_path)\n", - " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", - " # print(GEBCO_full_path)\n", - " OutputPath = os.path.join(workspace_path, output_path)\n", - " # print(OutputPath)\n", - " \n", - " \n", - " #Get the gebco list\n", - " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - " \n", - " #Initialize with an empty list\n", - " GEBCO_file_path_lists = []\n", - " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - " #put the find one into the list\n", - " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - " \n", - " # print(GEBCO_file_path_lists)\n", - " \n", - " # Get all other necessary parameters\n", - " horizontal_res = horizontal_res\n", - " vertical_res = vertical_res\n", - " subsurface_thresh = subsurface_thresh\n", - " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", - " \n", - " # Configure logging\n", - " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", - " \n", - " \n", - " # When all paramters ready, call the main function\n", - " main()\n", - " # delete the hefty h5 file once done with processing - only store calculated kd values\n", - " os.remove(ATL03_h5_file_path)\n", - "\n", - "\n", - "\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb b/icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb deleted file mode 100644 index b7a05ae..0000000 --- a/icesat2_kdph-main/02_match_buoys2granules_ipx.ipynb +++ /dev/null @@ -1,7685 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 5, - "id": "fe17c663-98a1-4c47-b0b8-dbd94cf8a89e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet \"sliderule @ git+https://github.com/SlideRuleEarth/sliderule#subdirectory=clients/python\"" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "2256384a-86a8-43c0-801b-5953747525ba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet rtree\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet hdbscan" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "8072f95f-1db6-4c31-8af8-293fd665bad4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet erddapy" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "8f821b93-0ec9-41db-af0e-61e26934504d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from erddapy import ERDDAP\n", - "from sliderule import sliderule, icesat2, earthdata\n", - "import icepyx as ipx\n", - "from datetime import datetime, timedelta,timezone\n", - "\n", - "import time\n", - "import os\n", - "import re\n", - "import glob\n", - "import pandas as pd\n", - "import numpy as np\n", - "import logging\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# from config import get_args\n", - "from config import workspace_path, atl03_path,\\\n", - " other_data_path ,shoreline_data ,gebco_path ,\\\n", - " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", - " ignore_subsurface_height_thres ,output_path \n", - "\n", - "\n", - " \n", - "from kd_utils.data_processing import load_data, \\\n", - " extract_file_params, \\\n", - " Extract_sea_photons, \\\n", - " filter_photon_dataset_by_hull_area\n", - " \n", - " \n", - "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", - " get_sea_surface_height\n", - " \n", - " \n", - "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", - "\n", - "from kd_utils.visualization import plot_photon_height, \\\n", - " plot_kd_photons, \\\n", - " plot_filtered_seafloor_photons\n", - " \n", - "from kd_utils.Kd_analysis import process_kd_calculation\n", - "\n", - "from kd_utils.interpolation import geoid_correction, \\\n", - " refraction_correction, \\\n", - " interpolate_labels, \\\n", - " apply_interpolation\n", - "\n", - "\n", - "# Configure logging\n", - "# logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", - "sliderule.init(verbose=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", - "metadata": {}, - "outputs": [], - "source": [ - "def fname2datetime(fname):\n", - " y = int(fname[6:10])\n", - " m = int(fname[10:12])\n", - " d = int(fname[12:14])\n", - " H = int(fname[14:16])\n", - " M = int(fname[16:18])\n", - " S = int(fname[18:20])\n", - "\n", - " t = datetime(y,m,d,H,M,S, tzinfo=timezone.utc)\n", - " return t\n", - "\n", - "def buoy_bound_box(lat,lon,buffer_km):\n", - " # define a buffer distance around the buoy to search for icesat-2 data\n", - " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", - " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", - " # define bounding box around the buoy (WSEN)\n", - " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", - " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", - " # region = sliderule.toregion(bbox)\n", - " minx = lon - lon_buff\n", - " miny = lat - lat_buff\n", - " maxx = lon + lon_buff\n", - " maxy = lat + lat_buff\n", - "\n", - " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", - " poly_ipx = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", - " poly_cmr = [{'lon': minx, 'lat': miny},\n", - " {'lon': maxx, 'lat': miny},\n", - " {'lon': maxx, 'lat': maxy},\n", - " {'lon': minx, 'lat': maxy},\n", - " {'lon': minx, 'lat': miny}] # Closing the loop by repeating the first point\n", - "\n", - " return poly_cmr, poly_ipx\n", - "\n", - "def main():\n", - " try:\n", - " \n", - " # Load IS2 and extract sea photons\n", - " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", - " \n", - " ## For debugging\n", - " #IS2_atl03_beams=['gt1r']\n", - " \n", - " # Check beam types and ensure we have what we want (e.g., strong beams)\n", - " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", - " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", - " if not IS2_atl03_beams:\n", - " print('No Strong Beam')\n", - " # sys.exit() # Terminate the program\n", - " else:\n", - " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", - " \n", - " # Extract sea photon by applying the land mask\n", - " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", - " \n", - " \n", - " # Main processing function to apply binning beam-by-beam \n", - " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", - " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", - " \n", - " \n", - " # filter to get subsurface photons\n", - " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", - " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", - " \n", - " \n", - " # Visualization of the filtered seafloor photons\n", - " # Uncomment the following lines to visualize if needed\n", - " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", - " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", - " # sea_photon_dataset=sea_photon_dataset, \n", - " # sea_surface_height=sea_surface_height, \n", - " # output_path=output_path)\n", - " \n", - " ########################\n", - " # Todo: move the filter to the begining\n", - " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", - " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", - " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", - " # Filter out points below the seafloor\n", - " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", - " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", - " ]\n", - " \n", - " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", - " \n", - " #Filter dataframe based on beam list\n", - " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", - " \n", - " ###################################\n", - " ### Todo: move the filter to the begining\n", - " # Steps to standardize KD calculation by filtering out \n", - " # segments lacking sufficient subsurface photons.\n", - " # Approach: Use the ConvexHull of photons within \n", - " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", - " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", - " \n", - " # Apply filtering based on hull area if desired\n", - " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", - " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", - " )\n", - " \n", - " # Visualization\n", - " # Uncomment the following line to visualize if needed\n", - " \n", - " # plot_target_beam=['gt1l']\n", - " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", - " \n", - " ########################################### \n", - " # calculate kd and save it to table\n", - " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", - " \n", - " \n", - " ## Todo move this part into a function so that it will not looks too busy here\n", - " # Extract the timestamp using regex and use it to set the output file name\n", - " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", - " timestamp = match.group(1) if match else \"unknown\"\n", - " \n", - " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", - " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", - " \n", - " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", - " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", - " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", - " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", - " def find_closest(group):\n", - " if not group.empty:\n", - " center = group['relative_AT_dist_center'].iloc[0]\n", - " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", - " closest_index = group['dist_to_center'].idxmin()\n", - " return group.loc[[closest_index]]\n", - " else:\n", - " return pd.DataFrame(columns=group.columns)\n", - " \n", - " # Filter out empty or all-NA entries\n", - " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", - " \n", - " # Group by 'lat_bins' and apply the find_closest function\n", - " closest_to_center = unique_photon_dataset_filtered\\\n", - " .groupby('lat_bins', observed=False)\\\n", - " .apply(find_closest, include_groups=True)\n", - " # .reset_index()\n", - " \n", - " # Remove the index without resetting it if 'lat_bins' already exists\n", - " closest_to_center.index = closest_to_center.index.droplevel(0)\n", - " \n", - " # Ensure relevant entries are excluded before concatenation\n", - " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", - " \n", - " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", - " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", - " \n", - " \n", - " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", - " \n", - " logging.info(\"SUCCESS!\")\n", - " \n", - " except Exception as e:\n", - " logging.error(f\"An error occurred: {e}\")\n", - "\n", - "# if __name__ == '__main__':\n", - " \n", - "# # Get arguments function\n", - "# args = get_args() \n", - " \n", - "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", - " \n", - "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", - " \n", - "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", - " \n", - "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", - " \n", - "# #Get the gebco list\n", - "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", - "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - "\n", - "# #Initialize with an empty list\n", - "# GEBCO_file_path_lists = []\n", - "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - "# #put the find one into the list\n", - "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - "\n", - " \n", - "# # Get all other necessary parameters\n", - "# horizontal_res = args.horizontal_res\n", - " \n", - "# vertical_res = args.vertical_res\n", - " \n", - "# subsurface_thresh = args.subsurface_thresh\n", - " \n", - "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", - " \n", - "# # When all paramters ready, call the main function\n", - "# main()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "1d72dbef-f954-499f-be76-c1de3233b325", - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      sitesurltime_coverage_starttime_coverage_endgeospatial_lat_mingeospatial_lat_maxgeospatial_lon_mingeospatial_lon_maxgeospatial_lat_unitsgeospatial_lon_units...glidershipturbsscphotchlturbidphotoradiationphoton_data
      0ooi-ce01issp-sp001-10-paradj000https://erddap.dataexplorer.oceanobservatories...2014-04-17T22:28:00Z2023-09-22T08:00:00Z44.66012044.660120-124.098120-124.098120degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      1ooi-ce04osps-sf01b-3c-parada102https://erddap.dataexplorer.oceanobservatories...2015-08-03T15:10:00Z2024-04-09T22:00:00Z44.36935344.369353-124.954108-124.954108degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      2ooi-ce02shsp-sp001-09-paradj000https://erddap.dataexplorer.oceanobservatories...2015-03-18T19:36:00Z2023-09-23T08:08:00Z44.63555044.635550-124.301470-124.301470degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      3ooi-ce06issp-sp001-10-paradj000https://erddap.dataexplorer.oceanobservatories...2015-04-10T18:28:00Z2023-09-23T08:02:00Z47.13553047.135530-124.270170-124.270170degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      4ooi-ce09ospm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-19T01:02:00Z2024-04-19T13:09:00Z46.85163046.851630-124.974420-124.974420degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      5ooi-ce07shsp-sp001-09-paradj000https://erddap.dataexplorer.oceanobservatories...2015-04-09T23:25:00Z2022-04-26T20:04:00Z46.98358046.983580-124.552130-124.552130degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      6ooi-cp02pmci-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-17T01:02:00Z2022-11-18T18:36:00Z40.22663340.226633-70.889067-70.889067degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      7ooi-cp02pmco-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-13T18:02:00Z2022-11-18T15:30:00Z40.09681740.096817-70.879150-70.879150degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      8ooi-cp01cnpm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2017-11-06T19:02:00Z2022-04-24T18:27:00Z40.13390740.133907-70.770433-70.770433degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      9ooi-cp03ispm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2017-11-12T05:02:00Z2022-04-25T18:24:00Z40.36200540.362005-70.878502-70.878502degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      10ooi-cp04ospm-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2014-04-15T20:02:00Z2022-11-11T18:03:00Z39.93600039.936000-70.879417-70.879417degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      11ooi-cp02pmui-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2013-11-24T01:32:00Z2022-11-19T09:24:00Z40.36491740.364917-70.780483-70.780483degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      12ooi-cp02pmuo-wfp01-05-paradk000https://erddap.dataexplorer.oceanobservatories...2013-11-23T16:02:00Z2022-11-18T09:10:00Z39.93933339.939333-70.770183-70.770183degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      13ooi-rs03axps-sf03a-3c-parada301https://erddap.dataexplorer.oceanobservatories...2014-10-07T21:49:00Z2024-07-01T08:03:00Z45.81671245.816712-129.754055-129.754055degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      14ooi-rs01sbps-sf01a-3c-parada101https://erddap.dataexplorer.oceanobservatories...2014-10-07T20:47:00Z2024-07-01T07:44:00Z44.51516144.515161-125.389899-125.389899degrees_northdegrees_east...FalseFalseFalseFalseTrueFalseFalseTrueTrueFalse
      \n", - "

      15 rows × 22 columns

      \n", - "
      " - ], - "text/plain": [ - " sites \\\n", - "0 ooi-ce01issp-sp001-10-paradj000 \n", - "1 ooi-ce04osps-sf01b-3c-parada102 \n", - "2 ooi-ce02shsp-sp001-09-paradj000 \n", - "3 ooi-ce06issp-sp001-10-paradj000 \n", - "4 ooi-ce09ospm-wfp01-05-paradk000 \n", - "5 ooi-ce07shsp-sp001-09-paradj000 \n", - "6 ooi-cp02pmci-wfp01-05-paradk000 \n", - "7 ooi-cp02pmco-wfp01-05-paradk000 \n", - "8 ooi-cp01cnpm-wfp01-05-paradk000 \n", - "9 ooi-cp03ispm-wfp01-05-paradk000 \n", - "10 ooi-cp04ospm-wfp01-05-paradk000 \n", - "11 ooi-cp02pmui-wfp01-05-paradk000 \n", - "12 ooi-cp02pmuo-wfp01-05-paradk000 \n", - "13 ooi-rs03axps-sf03a-3c-parada301 \n", - "14 ooi-rs01sbps-sf01a-3c-parada101 \n", - "\n", - " url time_coverage_start \\\n", - "0 https://erddap.dataexplorer.oceanobservatories... 2014-04-17T22:28:00Z \n", - "1 https://erddap.dataexplorer.oceanobservatories... 2015-08-03T15:10:00Z \n", - "2 https://erddap.dataexplorer.oceanobservatories... 2015-03-18T19:36:00Z \n", - "3 https://erddap.dataexplorer.oceanobservatories... 2015-04-10T18:28:00Z \n", - "4 https://erddap.dataexplorer.oceanobservatories... 2014-04-19T01:02:00Z \n", - "5 https://erddap.dataexplorer.oceanobservatories... 2015-04-09T23:25:00Z \n", - "6 https://erddap.dataexplorer.oceanobservatories... 2014-04-17T01:02:00Z \n", - "7 https://erddap.dataexplorer.oceanobservatories... 2014-04-13T18:02:00Z \n", - "8 https://erddap.dataexplorer.oceanobservatories... 2017-11-06T19:02:00Z \n", - "9 https://erddap.dataexplorer.oceanobservatories... 2017-11-12T05:02:00Z \n", - "10 https://erddap.dataexplorer.oceanobservatories... 2014-04-15T20:02:00Z \n", - "11 https://erddap.dataexplorer.oceanobservatories... 2013-11-24T01:32:00Z \n", - "12 https://erddap.dataexplorer.oceanobservatories... 2013-11-23T16:02:00Z \n", - "13 https://erddap.dataexplorer.oceanobservatories... 2014-10-07T21:49:00Z \n", - "14 https://erddap.dataexplorer.oceanobservatories... 2014-10-07T20:47:00Z \n", - "\n", - " time_coverage_end geospatial_lat_min geospatial_lat_max \\\n", - "0 2023-09-22T08:00:00Z 44.660120 44.660120 \n", - "1 2024-04-09T22:00:00Z 44.369353 44.369353 \n", - "2 2023-09-23T08:08:00Z 44.635550 44.635550 \n", - "3 2023-09-23T08:02:00Z 47.135530 47.135530 \n", - "4 2024-04-19T13:09:00Z 46.851630 46.851630 \n", - "5 2022-04-26T20:04:00Z 46.983580 46.983580 \n", - "6 2022-11-18T18:36:00Z 40.226633 40.226633 \n", - "7 2022-11-18T15:30:00Z 40.096817 40.096817 \n", - "8 2022-04-24T18:27:00Z 40.133907 40.133907 \n", - "9 2022-04-25T18:24:00Z 40.362005 40.362005 \n", - "10 2022-11-11T18:03:00Z 39.936000 39.936000 \n", - "11 2022-11-19T09:24:00Z 40.364917 40.364917 \n", - "12 2022-11-18T09:10:00Z 39.939333 39.939333 \n", - "13 2024-07-01T08:03:00Z 45.816712 45.816712 \n", - "14 2024-07-01T07:44:00Z 44.515161 44.515161 \n", - "\n", - " geospatial_lon_min geospatial_lon_max geospatial_lat_units \\\n", - "0 -124.098120 -124.098120 degrees_north \n", - "1 -124.954108 -124.954108 degrees_north \n", - "2 -124.301470 -124.301470 degrees_north \n", - "3 -124.270170 -124.270170 degrees_north \n", - "4 -124.974420 -124.974420 degrees_north \n", - "5 -124.552130 -124.552130 degrees_north \n", - "6 -70.889067 -70.889067 degrees_north \n", - "7 -70.879150 -70.879150 degrees_north \n", - "8 -70.770433 -70.770433 degrees_north \n", - "9 -70.878502 -70.878502 degrees_north \n", - "10 -70.879417 -70.879417 degrees_north \n", - "11 -70.780483 -70.780483 degrees_north \n", - "12 -70.770183 -70.770183 degrees_north \n", - "13 -129.754055 -129.754055 degrees_north \n", - "14 -125.389899 -125.389899 degrees_north \n", - "\n", - " geospatial_lon_units ... glider ship turb ssc phot chl \\\n", - "0 degrees_east ... False False False False True False \n", - "1 degrees_east ... False False False False True False \n", - "2 degrees_east ... False False False False True False \n", - "3 degrees_east ... False False False False True False \n", - "4 degrees_east ... False False False False True False \n", - "5 degrees_east ... False False False False True False \n", - "6 degrees_east ... False False False False True False \n", - "7 degrees_east ... False False False False True False \n", - "8 degrees_east ... False False False False True False \n", - "9 degrees_east ... False False False False True False \n", - "10 degrees_east ... False False False False True False \n", - "11 degrees_east ... False False False False True False \n", - "12 degrees_east ... False False False False True False \n", - "13 degrees_east ... False False False False True False \n", - "14 degrees_east ... False False False False True False \n", - "\n", - " turbid photo radiation photon_data \n", - "0 False True True False \n", - "1 False True True False \n", - "2 False True True False \n", - "3 False True True False \n", - "4 False True True False \n", - "5 False True True False \n", - "6 False True True False \n", - "7 False True True False \n", - "8 False True True False \n", - "9 False True True False \n", - "10 False True True False \n", - "11 False True True False \n", - "12 False True True False \n", - "13 False True True False \n", - "14 False True True False \n", - "\n", - "[15 rows x 22 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# load a list of all the relevant ERDDAPs and their urls\n", - "FF = pd.read_pickle(\"results/labeled_relevant_stations.pkl\")\n", - "FF = FF[(FF.buoy == True) & ((FF.phot==True) | (FF.photo==True) | (FF.radiation==True))]\n", - "FF.reset_index(drop=True, inplace=True)\n", - "# # remove stations with PAR data in air or just no good data\n", - "FF = FF[27:42]\n", - "# FF = FF.drop(index=[34,35,36,37,39,40])\n", - "FF.reset_index(drop=True, inplace=True)\n", - "\n", - "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", - "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", - "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", - "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", - "FF[\"photon_data\"] = False\n", - "\n", - "FF\n" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "processing 0/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Enter your Earthdata Login username: gloverha\n", - "Enter your Earthdata password: ········\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "order ID: 5000005876110\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876110 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876111\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876111 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876112\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876112 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876113\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876113 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876114\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876114 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876115\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876115 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876116\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876116 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876117\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876117 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876118\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876118 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876119\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876119 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876121\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876121 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876122\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876122 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 1/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876123\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876123 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876124\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876124 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876125\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876125 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876126\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876126 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876127\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876127 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876128\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876128 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876129\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876129 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876130\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876130 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876131\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876131 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876133\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876133 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876134\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876134 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876135\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876135 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876136\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876136 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876137\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876137 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876138\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876138 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876139\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876139 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876140\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876140 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876141\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876141 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876142\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876142 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876143\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876143 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876144\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876144 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876146\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876146 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876147\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876147 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876148\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876148 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876149\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876149 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 2/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876150\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876150 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876151\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876151 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876152\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876152 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876153\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876153 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876154\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876154 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876155\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876155 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876156\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876156 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876157\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876157 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876158\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876158 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876160\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876160 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 3/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876161\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876161 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876162\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876162 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876163\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876163 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876164\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876164 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876165\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876165 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876166\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876166 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876167\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876167 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876168\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876168 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876169\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876169 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876170\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876170 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 4/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876172\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876172 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876173\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876173 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876174\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876174 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876175\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876175 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876176\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876176 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876177\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876177 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876179\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876179 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876181\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876181 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876183\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876183 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876184\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876184 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876187\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876187 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876189\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876189 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876191\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876191 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876194\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876194 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876196\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876196 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876198\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876198 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876200\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876200 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876201\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876201 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876203\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876203 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876205\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876205 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876207\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876207 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876210\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876210 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876212\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876212 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876214\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876214 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876216\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876216 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876218\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876218 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876221\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876221 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876223\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876223 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876224\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876224 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876225\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876225 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876226\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876226 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876227\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876227 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876228\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876228 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876229\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876229 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876230\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876230 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876231\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876231 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876232\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876232 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876233\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876233 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876234\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876234 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876235\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876235 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876236\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876236 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 5/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876237\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876237 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876238\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876238 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876239\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876239 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876240\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876240 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876241\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876241 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876242\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876244 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876245\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876245 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876246\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876246 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876247\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876247 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876249\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876249 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876250\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876250 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876251\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876251 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876252\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876252 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876253\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876253 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876254\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876254 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876255\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876255 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876256\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876256 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876257\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876257 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876258\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876258 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876259\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876259 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876260\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876260 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876261\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876261 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876262\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876262 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876263\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876263 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876264\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876264 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876265\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876265 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876266\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876266 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876267\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876267 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876268\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876268 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876269\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876269 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 7/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876270\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876270 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876271\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876271 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876272\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876272 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876273\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876273 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876274\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876274 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876275\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876275 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876276\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876276 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876277\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876277 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876278\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876278 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876279\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876279 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876280\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876283 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876284\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876284 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876285\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876285 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876286\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876286 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876287\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876287 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876288\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876288 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876289\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876289 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876290\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876290 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876291\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876291 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876292\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876292 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876293\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876293 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876294\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876294 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876295\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876295 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 8/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876296\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876296 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876297\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876297 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876298\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876298 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876299\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876299 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876300\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876300 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876301\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876301 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876302\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876302 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876303\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876303 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876304\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876304 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876305\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876305 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 9/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876306\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876306 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876307\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876307 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876308\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876308 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876309\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876309 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876310\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876310 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876311\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876311 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876312\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876312 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876313\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876313 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876314\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876314 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876315\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876315 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876316\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876316 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876317\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876317 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 10/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876318\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876318 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876319\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876319 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876320\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876320 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876321\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876321 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876322\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876327 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876328\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876328 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876329\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876329 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876330\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876330 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876331\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876331 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876332\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876332 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876333\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876333 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876334\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876334 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876335\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876335 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876336\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876336 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876337\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876337 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876338\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876338 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876339\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876339 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876340\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876340 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876341\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876341 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876342\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876342 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876343\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876343 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876344\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876344 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876345\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876345 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876346\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876346 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 11/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876347\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876347 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876348\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876348 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876349\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876349 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876350\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876350 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876351\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876351 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876352\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876352 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876353\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876353 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876354\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876354 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876355\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876355 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876356\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876356 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876357\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876357 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876358\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876358 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876359\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876359 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876360\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876360 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876361\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876361 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876362\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876362 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876363\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876363 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876364\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876364 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876365\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876365 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876366\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876366 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876367\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876367 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876368\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876368 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876369\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876369 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876370\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876370 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876371\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876371 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 12/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876372\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876372 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876373\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876373 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876374\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876374 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876375\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876375 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876376\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876376 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876377\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876377 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876378\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876378 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876379\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876379 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876380\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876380 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876381\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876381 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876382\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876382 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876383\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876383 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876384\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876384 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876385\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876385 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876386\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876386 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876387\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876387 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876389\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876389 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876390\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876390 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876391\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876391 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876392\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876392 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876394\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876394 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876395\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876395 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876396\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876396 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876397\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876397 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876399\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876399 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876400\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876400 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 13/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876401\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876401 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876402\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876402 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876403\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876403 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876404\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876404 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876405\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876405 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876406\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876406 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876407\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876407 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876408\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876408 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876409\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876409 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876410\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876410 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876411\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876411 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876412\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876412 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876413\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876413 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876414\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876414 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876415\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876415 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876416\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876416 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876417\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876417 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876418\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876418 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876419\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876419 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876420\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876420 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876421\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876421 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876422\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876422 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876423\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876423 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876425\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876425 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876426\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876426 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876427\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876427 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876428\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876428 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 14/15\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876429\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876429 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876430\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876430 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876431\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876431 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876432\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876432 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876434\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876434 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876435\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876435 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876436\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876436 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876437\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876437 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876438\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876438 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876439\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876439 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876440\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876440 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876441\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876441 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876442\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876442 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876443\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876443 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876444\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876444 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876445\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876445 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876446\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876446 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876447\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876447 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876448\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876448 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876449\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876449 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876451\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876451 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876453\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876453 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876454\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876454 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876455\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876455 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876456\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876456 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876457\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876457 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876458\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876458 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876459\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876459 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876460\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876460 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876462\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876462 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876463\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876463 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876464\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876464 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876465\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876465 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876466\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876466 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876467\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876467 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876468\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876468 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876469\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876469 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876471\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876471 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876472\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876472 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876474\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876474 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876475\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876475 of 1 order(s) is downloaded.\n", - "Download complete\n" - ] - } - ], - "source": [ - "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", - "search_hrs = 6\n", - "search_km = 4\n", - "for jj in range(len(FF)):\n", - " print('processing '+str(jj) +'/'+str(len(FF)))# give a printout every 100 for my sanity\n", - "\n", - " # define a search region around the buoy \n", - " lat = FF['geospatial_lat_min'][jj]\n", - " lon = FF['geospatial_lon_min'][jj]\n", - " poly_cmr,poly_ipx = buoy_bound_box(lat,lon,search_km)\n", - "\n", - " # search CMR for ATL03 granules in the bounding box\n", - " grns = earthdata.cmr(short_name=\"ATL03\",\n", - " polygon=poly_cmr,\n", - " version='006')\n", - " # save the times for each granule as a datetime object\n", - " icesat_times = [fname2datetime(fname) for fname in grns]\n", - "\n", - " # now check if buoy data exists for these granules,\n", - " e = ERDDAP(server=FF['url'][jj],\n", - " protocol=\"tabledap\",\n", - " response=\"csv\")\n", - " e.dataset_id = FF['sites'][jj]\n", - "\n", - " for t in icesat_times:\n", - " # add a time buffer to search for relevant buoy data for each granule,\n", - " t_start = (t-timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", - " t_end = (t+timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", - " e.constraints = {\"time>=\": t_start,\n", - " \"time<=\": t_end}\n", - " # try to download the associated buoy data\n", - " try:\n", - " buoy = e.to_pandas() \n", - " except:\n", - " continue\n", - " \n", - " # if buoy data exists, download the ATL03 photons in the bounding box at this time\n", - " short_name = 'ATL03'\n", - " t_start = (t-timedelta(hours=search_hrs))\n", - " t_end = (t+timedelta(hours=search_hrs))\n", - " date_range = [t_start,t_end]\n", - " region = ipx.Query(short_name, poly_ipx, date_range)\n", - " try:\n", - " region.download_granules('data/')\n", - " except:\n", - " continue\n", - " # buoy.to_csv('data/data_'+str(e.dataset_id)+'_'+str(t_start)+'.csv')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:21:33,727 - INFO - ./data/processed_ATL03_20220924031319_00521702_006_01.h5\n", - "2024-12-04 03:21:33,733 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:22:38,645 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:22:38,645 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:22:38,656 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:22:38,657 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:22:38,675 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:22:38,676 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:22:38,705 - INFO - SUCCESS!\n", - "2024-12-04 03:22:38,725 - INFO - ./data/processed_ATL03_20230104101806_02271806_006_02.h5\n", - "2024-12-04 03:22:38,736 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:23:14,867 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:23:14,868 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:23:14,945 - INFO - SUCCESS!\n", - "2024-12-04 03:23:14,963 - INFO - ./data/processed_ATL03_20190105194142_01280202_006_02.h5\n", - "2024-12-04 03:23:14,969 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:23:16,112 - ERROR - An error occurred: cannot convert float NaN to integer\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:23:16,132 - INFO - ./data/processed_ATL03_20190406152134_01280302_006_02.h5\n", - "2024-12-04 03:23:16,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:23:31,517 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:23:31,518 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:23:31,576 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:23:31,576 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:23:31,637 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:23:31,637 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:23:31,704 - INFO - SUCCESS!\n", - "2024-12-04 03:23:31,721 - INFO - ./data/processed_ATL03_20210628002806_00671202_006_01.h5\n", - "2024-12-04 03:23:31,728 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:23:42,456 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:23:42,457 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:23:42,515 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:23:42,515 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:23:42,606 - INFO - SUCCESS!\n", - "2024-12-04 03:23:42,625 - INFO - ./data/processed_ATL03_20221206204321_11781702_006_02.h5\n", - "2024-12-04 03:23:42,632 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:23:49,128 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:23:49,128 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:23:49,230 - INFO - SUCCESS!\n", - "2024-12-04 03:23:49,253 - INFO - ./data/processed_ATL03_20230329175841_01281902_006_02.h5\n", - "2024-12-04 03:23:49,261 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:24:20,547 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:24:20,548 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:24:20,608 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:24:20,608 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:24:20,700 - INFO - SUCCESS!\n", - "2024-12-04 03:24:20,719 - INFO - ./data/processed_ATL03_20211208050247_11721306_006_01.h5\n", - "2024-12-04 03:24:20,730 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:24:26,438 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:24:26,491 - INFO - ./data/processed_ATL03_20230623141210_00522002_006_02.h5\n", - "2024-12-04 03:24:26,497 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:24:42,318 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:24:42,318 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:24:42,370 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:24:42,371 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:24:42,429 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:24:42,429 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:24:42,523 - INFO - SUCCESS!\n", - "2024-12-04 03:24:42,543 - INFO - ./data/processed_ATL03_20231204182027_11722106_006_02.h5\n", - "2024-12-04 03:24:42,550 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:24:44,023 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:24:44,042 - INFO - ./data/processed_ATL03_20201101082201_05830902_006_01.h5\n", - "2024-12-04 03:24:44,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:24:44,488 - INFO - ./data/processed_ATL03_20201004015316_01510906_006_01.h5\n", - "2024-12-04 03:24:44,496 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:24:58,688 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:24:58,689 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:24:58,746 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:24:58,747 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:24:58,839 - INFO - SUCCESS!\n", - "2024-12-04 03:24:58,858 - INFO - ./data/processed_ATL03_20220331111930_01281502_006_01.h5\n", - "2024-12-04 03:24:58,865 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:25,147 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:25:25,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:25:25,198 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:25:25,199 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:25:25,257 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:25:25,258 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:25:25,328 - INFO - SUCCESS!\n", - "2024-12-04 03:25:25,348 - INFO - ./data/processed_ATL03_20210730073729_05601206_006_01.h5\n", - "2024-12-04 03:25:25,358 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:31,024 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:25:31,025 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:25:31,116 - INFO - SUCCESS!\n", - "2024-12-04 03:25:31,135 - INFO - ./data/processed_ATL03_20191202035308_10120502_006_01.h5\n", - "2024-12-04 03:25:31,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:25:31,818 - INFO - ./data/processed_ATL03_20220404111111_01891502_006_02.h5\n", - "2024-12-04 03:25:31,824 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:37,393 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:25:37,444 - INFO - ./data/processed_ATL03_20210408163907_02271106_006_02.h5\n", - "2024-12-04 03:25:37,450 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:25:38,176 - INFO - ./data/processed_ATL03_20181104071937_05600106_006_02.h5\n", - "2024-12-04 03:25:38,185 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:38,802 - INFO - ./data/processed_ATL03_20220730020120_05831602_006_02.h5\n", - "2024-12-04 03:25:38,808 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:39,598 - INFO - ./data/processed_ATL03_20240328130929_01512306_006_01.h5\n", - "2024-12-04 03:25:39,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:40,129 - INFO - ./data/processed_ATL03_20190308164535_10730202_006_02.h5\n", - "2024-12-04 03:25:40,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:54,231 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:25:54,232 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:25:54,257 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:25:54,258 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:25:54,306 - INFO - SUCCESS!\n", - "2024-12-04 03:25:54,331 - INFO - ./data/processed_ATL03_20181105190348_05830102_006_02.h5\n", - "2024-12-04 03:25:54,337 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:25:54,923 - INFO - ./data/processed_ATL03_20181214090444_11720106_006_02.h5\n", - "2024-12-04 03:25:54,935 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:55,366 - INFO - ./data/processed_ATL03_20240102165627_02272206_006_01.h5\n", - "2024-12-04 03:25:55,374 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:25:56,168 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:25:56,187 - INFO - ./data/processed_ATL03_20210605135114_11111106_006_01.h5\n", - "2024-12-04 03:25:56,195 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:26:05,105 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:26:05,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:26:05,133 - INFO - SUCCESS!\n", - "2024-12-04 03:26:05,149 - INFO - ./data/processed_ATL03_20181218055622_12310107_006_02.h5\n", - "2024-12-04 03:26:05,155 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:26:23,235 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:26:23,236 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:26:23,290 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:26:23,290 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:26:23,381 - INFO - SUCCESS!\n", - "2024-12-04 03:26:23,400 - INFO - ./data/processed_ATL03_20190903043904_10250402_006_02.h5\n", - "2024-12-04 03:26:23,409 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:26:23,839 - INFO - ./data/processed_ATL03_20210505030740_06311102_006_01.h5\n", - "2024-12-04 03:26:23,846 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:26:24,287 - INFO - ./data/processed_ATL03_20220330200106_01181506_006_01.h5\n", - "2024-12-04 03:26:24,296 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:26:29,753 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:26:29,753 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:26:29,781 - INFO - SUCCESS!\n", - "2024-12-04 03:26:29,797 - INFO - ./data/processed_ATL03_20231001090908_01892102_006_02.h5\n", - "2024-12-04 03:26:29,805 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:26:40,494 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:26:40,494 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:26:40,553 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:26:40,554 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:26:40,641 - INFO - SUCCESS!\n", - "2024-12-04 03:26:40,660 - INFO - ./data/processed_ATL03_20201006131149_01890902_006_01.h5\n", - "2024-12-04 03:26:40,667 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:26:49,005 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:26:49,008 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:26:49,111 - INFO - SUCCESS!\n", - "2024-12-04 03:26:49,126 - INFO - ./data/processed_ATL03_20201009101333_02330901_006_01.h5\n", - "2024-12-04 03:26:49,136 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:27:05,510 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:27:05,511 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:27:05,538 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:27:05,539 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:27:05,624 - INFO - SUCCESS!\n", - "2024-12-04 03:27:05,643 - INFO - ./data/processed_ATL03_20220828003726_10251602_006_01.h5\n", - "2024-12-04 03:27:05,652 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:27:12,336 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:27:12,337 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:27:12,387 - INFO - SUCCESS!\n", - "2024-12-04 03:27:12,404 - INFO - ./data/processed_ATL03_20211004195127_01891302_006_01.h5\n", - "2024-12-04 03:27:12,411 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:27:20,891 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:27:20,892 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:27:20,986 - INFO - SUCCESS!\n", - "2024-12-04 03:27:21,004 - INFO - ./data/processed_ATL03_20230922095129_00522102_006_02.h5\n", - "2024-12-04 03:27:21,011 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:27:31,828 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:27:31,882 - INFO - ./data/processed_ATL03_20191203001854_10250502_006_01.h5\n", - "2024-12-04 03:27:31,888 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:27:32,322 - INFO - ./data/processed_ATL03_20210901212338_10731202_006_02.h5\n", - "2024-12-04 03:27:32,327 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:27:40,670 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:27:40,671 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:27:40,768 - INFO - SUCCESS!\n", - "2024-12-04 03:27:40,787 - INFO - ./data/processed_ATL03_20200910024320_11720806_006_02.h5\n", - "2024-12-04 03:27:40,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:27:41,249 - INFO - ./data/processed_ATL03_20240322011031_00522302_006_01.h5\n", - "2024-12-04 03:27:41,255 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:28:04,497 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:28:04,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:04,552 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:28:04,553 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:04,609 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:28:04,609 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:04,697 - INFO - SUCCESS!\n", - "2024-12-04 03:28:04,714 - INFO - ./data/processed_ATL03_20190603123329_10120302_006_02.h5\n", - "2024-12-04 03:28:04,722 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:28:18,397 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:28:18,398 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:18,454 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:28:18,455 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:18,546 - INFO - SUCCESS!\n", - "2024-12-04 03:28:18,563 - INFO - ./data/processed_ATL03_20210101090005_01281002_006_01.h5\n", - "2024-12-04 03:28:18,572 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:28:19,115 - INFO - ./data/processed_ATL03_20230405055805_02271906_006_02.h5\n", - "2024-12-04 03:28:19,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:28:19,994 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:28:20,012 - INFO - ./data/processed_ATL03_20210706001126_01891202_006_01.h5\n", - "2024-12-04 03:28:20,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:28:21,172 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:28:21,190 - INFO - ./data/processed_ATL03_20230307072158_11721806_006_02.h5\n", - "2024-12-04 03:28:21,196 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:28:21,669 - INFO - ./data/processed_ATL03_20231228173021_01512206_006_01.h5\n", - "2024-12-04 03:28:21,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:28:27,904 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:28:27,955 - INFO - ./data/processed_ATL03_20201002132006_01280902_006_01.h5\n", - "2024-12-04 03:28:27,964 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:28:29,014 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:28:29,035 - INFO - ./data/processed_ATL03_20221228221901_01281802_006_02.h5\n", - "2024-12-04 03:28:29,044 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:28:59,208 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:28:59,208 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:59,293 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:28:59,294 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:59,367 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:28:59,368 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:28:59,485 - INFO - SUCCESS!\n", - "2024-12-04 03:28:59,504 - INFO - ./data/processed_ATL03_20240331002816_01892302_006_01.h5\n", - "2024-12-04 03:28:59,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:15,109 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:29:15,109 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:29:15,138 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:29:15,138 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:29:15,256 - INFO - SUCCESS!\n", - "2024-12-04 03:29:15,274 - INFO - ./data/processed_ATL03_20190214060841_07300206_006_02.h5\n", - "2024-12-04 03:29:15,280 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:29:15,717 - INFO - ./data/processed_ATL03_20191011184015_02270506_006_02.h5\n", - "2024-12-04 03:29:15,726 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:16,237 - INFO - ./data/processed_ATL03_20210401132132_01181106_006_02.h5\n", - "2024-12-04 03:29:16,246 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:16,980 - INFO - ./data/processed_ATL03_20210704122716_01661206_006_01.h5\n", - "2024-12-04 03:29:16,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:17,796 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:29:17,815 - INFO - ./data/processed_ATL03_20211230153937_01281402_006_01.h5\n", - "2024-12-04 03:29:17,825 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:18,383 - INFO - ./data/processed_ATL03_20230831224917_11112006_006_02.h5\n", - "2024-12-04 03:29:18,391 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:19,414 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:29:19,437 - INFO - ./data/processed_ATL03_20200927135412_00520902_006_02.h5\n", - "2024-12-04 03:29:19,452 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:39,495 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:29:39,496 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:29:39,517 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:29:39,518 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:29:39,551 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:29:39,551 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:29:39,634 - INFO - SUCCESS!\n", - "2024-12-04 03:29:39,663 - INFO - ./data/processed_ATL03_20190203025931_05600206_006_02.h5\n", - "2024-12-04 03:29:39,671 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:29:54,976 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:29:54,977 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:29:55,039 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:29:55,040 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:29:55,131 - INFO - SUCCESS!\n", - "2024-12-04 03:29:55,151 - INFO - ./data/processed_ATL03_20211007075856_02271306_006_01.h5\n", - "2024-12-04 03:29:55,159 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:02,795 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:30:02,796 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:30:02,931 - INFO - SUCCESS!\n", - "2024-12-04 03:30:02,949 - INFO - ./data/processed_ATL03_20190710105239_01890402_006_02.h5\n", - "2024-12-04 03:30:02,955 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:30:03,526 - INFO - ./data/processed_ATL03_20220603203049_11111506_006_01.h5\n", - "2024-12-04 03:30:03,533 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:04,094 - INFO - ./data/processed_ATL03_20210227145346_10021006_006_01.h5\n", - "2024-12-04 03:30:04,100 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:04,585 - INFO - ./data/processed_ATL03_20220626070745_00671602_006_01.h5\n", - "2024-12-04 03:30:04,592 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:17,339 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:30:17,340 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:30:17,421 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:30:17,422 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:30:17,526 - INFO - SUCCESS!\n", - "2024-12-04 03:30:17,544 - INFO - ./data/processed_ATL03_20220509214619_07301506_006_01.h5\n", - "2024-12-04 03:30:17,553 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:33,455 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:30:33,456 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:30:33,516 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:30:33,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:30:33,611 - INFO - SUCCESS!\n", - "2024-12-04 03:30:33,627 - INFO - ./data/processed_ATL03_20210511150652_07301106_006_01.h5\n", - "2024-12-04 03:30:33,638 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:30:34,672 - INFO - ./data/processed_ATL03_20230526151041_10121902_006_02.h5\n", - "2024-12-04 03:30:34,685 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:35,309 - INFO - ./data/processed_ATL03_20221013112140_03471707_006_01.h5\n", - "2024-12-04 03:30:35,325 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:45,985 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:30:46,052 - INFO - ./data/processed_ATL03_20230923092545_00672102_006_02.h5\n", - "2024-12-04 03:30:46,065 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:30:57,207 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:30:57,207 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:30:57,304 - INFO - SUCCESS!\n", - "2024-12-04 03:30:57,334 - INFO - ./data/processed_ATL03_20210627005345_00521202_006_01.h5\n", - "2024-12-04 03:30:57,345 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:31:19,908 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:31:19,909 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:31:19,969 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:31:19,970 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:31:20,027 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:31:20,028 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:31:20,118 - INFO - SUCCESS!\n", - "2024-12-04 03:31:20,139 - INFO - ./data/processed_ATL03_20190504223907_05600306_006_02.h5\n", - "2024-12-04 03:31:20,145 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:31:27,100 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-04 03:31:27,119 - INFO - ./data/processed_ATL03_20190912200409_11720406_006_02.h5\n", - "2024-12-04 03:31:27,126 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:31:27,915 - INFO - ./data/processed_ATL03_20230307162312_11781802_006_02.h5\n", - "2024-12-04 03:31:27,921 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:31:53,930 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:31:53,931 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:31:53,948 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:31:53,949 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:31:54,008 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:31:54,009 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:31:54,100 - INFO - SUCCESS!\n", - "2024-12-04 03:31:54,116 - INFO - ./data/processed_ATL03_20210731192138_05831202_006_01.h5\n", - "2024-12-04 03:31:54,122 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:02,102 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:32:02,103 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:32:02,202 - INFO - SUCCESS!\n", - "2024-12-04 03:32:02,218 - INFO - ./data/processed_ATL03_20210131040156_05831002_006_01.h5\n", - "2024-12-04 03:32:02,227 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:32:03,055 - INFO - ./data/processed_ATL03_20190315044444_11720206_006_02.h5\n", - "2024-12-04 03:32:03,061 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:03,514 - INFO - ./data/processed_ATL03_20230402175022_01891902_006_02.h5\n", - "2024-12-04 03:32:03,523 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:11,156 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:32:11,156 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:32:11,271 - INFO - SUCCESS!\n", - "2024-12-04 03:32:11,287 - INFO - ./data/processed_ATL03_20220127225716_05601406_006_01.h5\n", - "2024-12-04 03:32:11,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:17,606 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:32:17,607 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:32:17,734 - INFO - SUCCESS!\n", - "2024-12-04 03:32:17,752 - INFO - ./data/processed_ATL03_20211201170335_10731302_006_01.h5\n", - "2024-12-04 03:32:17,758 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:32:18,290 - INFO - ./data/processed_ATL03_20191102135842_05600506_006_01.h5\n", - "2024-12-04 03:32:18,296 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:19,220 - INFO - ./data/processed_ATL03_20210908092250_11721206_006_02.h5\n", - "2024-12-04 03:32:19,231 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:19,712 - INFO - ./data/processed_ATL03_20190505135732_05700302_006_02.h5\n", - "2024-12-04 03:32:19,718 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:20,135 - INFO - ./data/processed_ATL03_20220629154104_01181606_006_01.h5\n", - "2024-12-04 03:32:20,147 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:20,572 - INFO - ./data/processed_ATL03_20190607122509_10730302_006_02.h5\n", - "2024-12-04 03:32:20,581 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:27,030 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:32:27,031 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:32:27,127 - INFO - SUCCESS!\n", - "2024-12-04 03:32:27,148 - INFO - ./data/processed_ATL03_20210828213159_10121202_006_01.h5\n", - "2024-12-04 03:32:27,158 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:44,490 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:32:44,491 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:32:44,540 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:32:44,541 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:32:44,629 - INFO - SUCCESS!\n", - "2024-12-04 03:32:44,645 - INFO - ./data/processed_ATL03_20191005064105_01280502_006_02.h5\n", - "2024-12-04 03:32:44,655 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:32:45,195 - INFO - ./data/processed_ATL03_20190512015642_06690306_006_02.h5\n", - "2024-12-04 03:32:45,200 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:45,653 - INFO - ./data/processed_ATL03_20190413032043_02270306_006_02.h5\n", - "2024-12-04 03:32:45,659 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:32:46,116 - INFO - ./data/processed_ATL03_20200802124213_05830802_006_01.h5\n", - "2024-12-04 03:32:46,122 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:01,567 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:33:01,567 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:33:01,593 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:33:01,594 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:33:01,695 - INFO - SUCCESS!\n", - "2024-12-04 03:33:01,712 - INFO - ./data/processed_ATL03_20201110234705_07300906_006_01.h5\n", - "2024-12-04 03:33:01,724 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:33:02,340 - INFO - ./data/processed_ATL03_20230927091728_01282102_006_02.h5\n", - "2024-12-04 03:33:02,346 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:09,781 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:33:09,831 - INFO - ./data/processed_ATL03_20190806214443_06080406_006_02.h5\n", - "2024-12-04 03:33:09,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:11,977 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:33:12,001 - INFO - ./data/processed_ATL03_20230508042538_07301906_006_02.h5\n", - "2024-12-04 03:33:12,010 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:12,453 - INFO - ./data/processed_ATL03_20230730002128_06082006_006_02.h5\n", - "2024-12-04 03:33:12,459 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:12,933 - INFO - ./data/processed_ATL03_20200820005033_08500807_006_01.h5\n", - "2024-12-04 03:33:12,938 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:18,453 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:33:18,454 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:33:18,553 - INFO - SUCCESS!\n", - "2024-12-04 03:33:18,567 - INFO - ./data/processed_ATL03_20220607202232_11721506_006_01.h5\n", - "2024-12-04 03:33:18,575 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:33:19,240 - INFO - ./data/processed_ATL03_20220503094710_06311502_006_01.h5\n", - "2024-12-04 03:33:19,250 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:19,745 - INFO - ./data/processed_ATL03_20191104014253_05830502_006_01.h5\n", - "2024-12-04 03:33:19,751 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:20,477 - INFO - ./data/processed_ATL03_20190808092853_06310402_006_02.h5\n", - "2024-12-04 03:33:20,484 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:21,037 - INFO - ./data/processed_ATL03_20221206114207_11721706_006_02.h5\n", - "2024-12-04 03:33:21,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:27,010 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:33:27,072 - INFO - ./data/processed_ATL03_20220309004237_11721406_006_01.h5\n", - "2024-12-04 03:33:27,084 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:33:27,650 - INFO - ./data/processed_ATL03_20190410151314_01890302_006_02.h5\n", - "2024-12-04 03:33:27,657 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:33:42,828 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:33:42,881 - INFO - ./data/processed_ATL03_20220525180429_09721506_006_01.h5\n", - "2024-12-04 03:33:42,887 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:34:03,943 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:34:03,944 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:03,971 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:34:03,972 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:04,013 - INFO - SUCCESS!\n", - "2024-12-04 03:34:04,028 - INFO - ./data/processed_ATL03_20190204144341_05830202_006_02.h5\n", - "2024-12-04 03:34:04,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:34:11,339 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:34:11,339 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:11,425 - INFO - SUCCESS!\n", - "2024-12-04 03:34:11,441 - INFO - ./data/processed_ATL03_20230825104956_10122002_006_02.h5\n", - "2024-12-04 03:34:11,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:34:25,543 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:34:25,544 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:25,588 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:34:25,589 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:25,648 - INFO - SUCCESS!\n", - "2024-12-04 03:34:25,663 - INFO - ./data/processed_ATL03_20190902081319_10120402_006_02.h5\n", - "2024-12-04 03:34:25,669 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:34:43,806 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:34:43,807 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:43,831 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:34:43,832 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:43,894 - INFO - SUCCESS!\n", - "2024-12-04 03:34:43,909 - INFO - ./data/processed_ATL03_20230331063207_01511906_006_02.h5\n", - "2024-12-04 03:34:43,915 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:34:44,476 - INFO - ./data/processed_ATL03_20230904224044_11722006_006_02.h5\n", - "2024-12-04 03:34:44,483 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:34:54,836 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:34:54,837 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:34:54,939 - INFO - SUCCESS!\n", - "2024-12-04 03:34:54,955 - INFO - ./data/processed_ATL03_20220129104127_05831402_006_01.h5\n", - "2024-12-04 03:34:54,963 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:02,262 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:35:02,310 - INFO - ./data/processed_ATL03_20240627084945_01512406_006_01.h5\n", - "2024-12-04 03:35:02,317 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:35:02,930 - INFO - ./data/processed_ATL03_20221223225257_00521802_006_02.h5\n", - "2024-12-04 03:35:02,936 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:11,380 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:35:11,433 - INFO - ./data/processed_ATL03_20230829104135_10732002_006_02.h5\n", - "2024-12-04 03:35:11,440 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:35:11,878 - INFO - ./data/processed_ATL03_20210406043137_01891102_006_02.h5\n", - "2024-12-04 03:35:11,884 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:12,414 - INFO - ./data/processed_ATL03_20220906160228_11721606_006_01.h5\n", - "2024-12-04 03:35:12,420 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:19,179 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:35:19,180 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:35:19,284 - INFO - SUCCESS!\n", - "2024-12-04 03:35:19,302 - INFO - ./data/processed_ATL03_20211030150137_05831302_006_01.h5\n", - "2024-12-04 03:35:19,308 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:41,011 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:35:41,012 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:35:41,063 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:35:41,064 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:35:41,117 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:35:41,117 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:35:41,192 - INFO - SUCCESS!\n", - "2024-12-04 03:35:41,207 - INFO - ./data/processed_ATL03_20210328051355_00521102_006_01.h5\n", - "2024-12-04 03:35:41,213 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:35:42,057 - INFO - ./data/processed_ATL03_20181111103718_06690106_006_02.h5\n", - "2024-12-04 03:35:42,063 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:42,480 - INFO - ./data/processed_ATL03_20210708121857_02271206_006_01.h5\n", - "2024-12-04 03:35:42,489 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:42,914 - INFO - ./data/processed_ATL03_20231003211642_02272106_006_02.h5\n", - "2024-12-04 03:35:42,920 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:43,340 - INFO - ./data/processed_ATL03_20190109193321_01890202_006_02.h5\n", - "2024-12-04 03:35:43,346 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:35:57,364 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:35:57,365 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:35:57,373 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:35:57,373 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:35:57,399 - INFO - SUCCESS!\n", - "2024-12-04 03:35:57,417 - INFO - ./data/processed_ATL03_20231231044855_01892202_006_01.h5\n", - "2024-12-04 03:35:57,425 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:36:14,972 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:36:14,973 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:36:15,046 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:36:15,046 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:36:15,144 - INFO - SUCCESS!\n", - "2024-12-04 03:36:15,164 - INFO - ./data/processed_ATL03_20211002083255_01511306_006_01.h5\n", - "2024-12-04 03:36:15,173 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:36:25,883 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:36:25,934 - INFO - ./data/processed_ATL03_20200804042356_06080806_006_01.h5\n", - "2024-12-04 03:36:25,944 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:36:26,362 - INFO - ./data/processed_ATL03_20221230105205_01511806_006_02.h5\n", - "2024-12-04 03:36:26,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:36:40,334 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:36:40,335 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:36:40,362 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:36:40,362 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:36:40,412 - INFO - SUCCESS!\n", - "2024-12-04 03:36:40,430 - INFO - ./data/processed_ATL03_20210530015203_10121102_006_01.h5\n", - "2024-12-04 03:36:40,440 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:36:41,269 - INFO - ./data/processed_ATL03_20190908201229_11110406_006_02.h5\n", - "2024-12-04 03:36:41,278 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:37:04,619 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:37:04,619 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:04,655 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:37:04,655 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:04,711 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:37:04,712 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:04,797 - INFO - SUCCESS!\n", - "2024-12-04 03:37:04,817 - INFO - ./data/processed_ATL03_20240304135951_11722206_006_01.h5\n", - "2024-12-04 03:37:04,827 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:37:05,252 - INFO - ./data/processed_ATL03_20190506102318_05830302_006_02.h5\n", - "2024-12-04 03:37:05,259 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:37:11,524 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-04 03:37:11,540 - INFO - ./data/processed_ATL03_20220101041247_01511406_006_01.h5\n", - "2024-12-04 03:37:11,546 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:37:25,786 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:37:25,787 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:25,833 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:37:25,833 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:25,881 - INFO - SUCCESS!\n", - "2024-12-04 03:37:25,896 - INFO - ./data/processed_ATL03_20201227093402_00521002_006_01.h5\n", - "2024-12-04 03:37:25,903 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:37:33,793 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:37:33,843 - INFO - ./data/processed_ATL03_20190803181849_05600406_006_02.h5\n", - "2024-12-04 03:37:33,850 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:37:42,029 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:37:42,030 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:42,087 - INFO - SUCCESS!\n", - "2024-12-04 03:37:42,103 - INFO - ./data/processed_ATL03_20210129161746_05601006_006_01.h5\n", - "2024-12-04 03:37:42,108 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:37:42,899 - INFO - ./data/processed_ATL03_20190112074049_02270206_006_02.h5\n", - "2024-12-04 03:37:42,906 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:37:56,944 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:37:56,945 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:57,003 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:37:57,004 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:37:57,093 - INFO - SUCCESS!\n", - "2024-12-04 03:37:57,111 - INFO - ./data/processed_ATL03_20210507151511_06691106_006_01.h5\n", - "2024-12-04 03:37:57,117 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:10,741 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:38:10,742 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:38:10,752 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:38:10,752 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:38:10,810 - INFO - SUCCESS!\n", - "2024-12-04 03:38:10,826 - INFO - ./data/processed_ATL03_20210102213314_01511006_006_01.h5\n", - "2024-12-04 03:38:10,832 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:25,415 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:38:25,415 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:38:25,426 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:38:25,426 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:38:25,455 - INFO - SUCCESS!\n", - "2024-12-04 03:38:25,469 - INFO - ./data/processed_ATL03_20210703125256_01511206_006_01.h5\n", - "2024-12-04 03:38:25,476 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:39,247 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:38:39,248 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:38:39,280 - INFO - SUCCESS!\n", - "2024-12-04 03:38:39,296 - INFO - ./data/processed_ATL03_20220808172625_07301606_006_01.h5\n", - "2024-12-04 03:38:39,302 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:38:40,060 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:38:40,077 - INFO - ./data/processed_ATL03_20181207210535_10730102_006_02.h5\n", - "2024-12-04 03:38:40,085 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:40,543 - INFO - ./data/processed_ATL03_20220728141707_05601606_006_02.h5\n", - "2024-12-04 03:38:40,550 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:42,118 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:38:42,136 - INFO - ./data/processed_ATL03_20191113170759_07300506_006_01.h5\n", - "2024-12-04 03:38:42,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:42,612 - INFO - ./data/processed_ATL03_20190305131941_10250202_006_02.h5\n", - "2024-12-04 03:38:42,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:43,081 - INFO - ./data/processed_ATL03_20190614002420_11720306_006_02.h5\n", - "2024-12-04 03:38:43,091 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:43,550 - INFO - ./data/processed_ATL03_20201030203751_05600906_006_01.h5\n", - "2024-12-04 03:38:43,557 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:38:56,409 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:38:56,410 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:38:56,458 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:38:56,459 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:38:56,519 - INFO - SUCCESS!\n", - "2024-12-04 03:38:56,533 - INFO - ./data/processed_ATL03_20221028214101_05831702_006_01.h5\n", - "2024-12-04 03:38:56,541 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:38:57,222 - INFO - ./data/processed_ATL03_20221027095652_05601706_006_01.h5\n", - "2024-12-04 03:38:57,228 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:04,617 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:39:04,617 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:39:04,721 - INFO - SUCCESS!\n", - "2024-12-04 03:39:04,737 - INFO - ./data/processed_ATL03_20240629200816_01892402_006_01.h5\n", - "2024-12-04 03:39:04,743 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:13,282 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-04 03:39:13,298 - INFO - ./data/processed_ATL03_20230130204643_06311802_006_02.h5\n", - "2024-12-04 03:39:13,303 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:21,060 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:39:21,061 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:39:21,089 - INFO - SUCCESS!\n", - "2024-12-04 03:39:21,104 - INFO - ./data/processed_ATL03_20201209222310_11720906_006_01.h5\n", - "2024-12-04 03:39:21,110 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:33,881 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:39:33,882 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:39:33,939 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:39:33,939 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:39:34,026 - INFO - SUCCESS!\n", - "2024-12-04 03:39:34,042 - INFO - ./data/processed_ATL03_20220630065930_01281602_006_01.h5\n", - "2024-12-04 03:39:34,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:39:34,846 - INFO - ./data/processed_ATL03_20210609134254_11721106_006_01.h5\n", - "2024-12-04 03:39:34,852 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:35,332 - INFO - ./data/processed_ATL03_20201005012737_01660906_006_01.h5\n", - "2024-12-04 03:39:35,338 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:35,770 - INFO - ./data/processed_ATL03_20210310180303_11721006_006_01.h5\n", - "2024-12-04 03:39:35,781 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:36,617 - INFO - ./data/processed_ATL03_20200808041536_06690806_006_01.h5\n", - "2024-12-04 03:39:36,623 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:37,044 - INFO - ./data/processed_ATL03_20230606030124_11721906_006_03.h5\n", - "2024-12-04 03:39:37,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:44,173 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:39:44,174 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:39:44,266 - INFO - SUCCESS!\n", - "2024-12-04 03:39:44,283 - INFO - ./data/processed_ATL03_20230630021115_01512006_006_02.h5\n", - "2024-12-04 03:39:44,289 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:39:58,344 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:39:58,345 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:39:58,400 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:39:58,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:39:58,490 - INFO - SUCCESS!\n", - "2024-12-04 03:39:58,509 - INFO - ./data/processed_ATL03_20220930151228_01511706_006_01.h5\n", - "2024-12-04 03:39:58,515 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:13,724 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:40:13,724 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:40:13,779 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:40:13,780 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:40:13,868 - INFO - SUCCESS!\n", - "2024-12-04 03:40:13,884 - INFO - ./data/processed_ATL03_20231227045714_01282202_006_02.h5\n", - "2024-12-04 03:40:13,889 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:40:14,790 - INFO - ./data/processed_ATL03_20211029031727_05601306_006_01.h5\n", - "2024-12-04 03:40:14,799 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:15,338 - INFO - ./data/processed_ATL03_20191007184835_01660506_006_02.h5\n", - "2024-12-04 03:40:15,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:16,025 - INFO - ./data/processed_ATL03_20190610003240_11110306_006_02.h5\n", - "2024-12-04 03:40:16,032 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:16,454 - INFO - ./data/processed_ATL03_20230705013717_02272006_006_02.h5\n", - "2024-12-04 03:40:16,461 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:16,862 - INFO - ./data/processed_ATL03_20240822172808_10122402_006_01.h5\n", - "2024-12-04 03:40:16,868 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:24,115 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:40:24,116 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:40:24,210 - INFO - SUCCESS!\n", - "2024-12-04 03:40:24,226 - INFO - ./data/processed_ATL03_20200801161627_05700802_006_01.h5\n", - "2024-12-04 03:40:24,232 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:40:24,662 - INFO - ./data/processed_ATL03_20181104223802_05700102_006_02.h5\n", - "2024-12-04 03:40:24,668 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:25,242 - INFO - ./data/processed_ATL03_20190804093713_05700402_006_02.h5\n", - "2024-12-04 03:40:25,251 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:25,667 - INFO - ./data/processed_ATL03_20210501234145_05831102_006_01.h5\n", - "2024-12-04 03:40:25,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:26,489 - INFO - ./data/processed_ATL03_20230228192246_10731802_006_02.h5\n", - "2024-12-04 03:40:26,498 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:33,733 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:40:33,734 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:40:33,785 - INFO - SUCCESS!\n", - "2024-12-04 03:40:33,806 - INFO - ./data/processed_ATL03_20230702132948_01892002_006_02.h5\n", - "2024-12-04 03:40:33,812 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:40:55,302 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:40:55,303 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:40:55,364 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:40:55,365 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:40:55,422 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:40:55,423 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:40:55,516 - INFO - SUCCESS!\n", - "2024-12-04 03:40:55,536 - INFO - ./data/processed_ATL03_20210702001946_01281202_006_01.h5\n", - "2024-12-04 03:40:55,542 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:03,595 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:41:03,659 - INFO - ./data/processed_ATL03_20190712230010_02270406_006_02.h5\n", - "2024-12-04 03:41:03,665 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:04,782 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:41:04,800 - INFO - ./data/processed_ATL03_20210930195943_01281302_006_02.h5\n", - "2024-12-04 03:41:04,806 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:05,363 - INFO - ./data/processed_ATL03_20211225161337_00521402_006_01.h5\n", - "2024-12-04 03:41:05,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:25,457 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:41:25,458 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:41:25,484 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:41:25,485 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:41:25,500 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:41:25,501 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:41:25,580 - INFO - SUCCESS!\n", - "2024-12-04 03:41:25,597 - INFO - ./data/processed_ATL03_20230530150221_10731902_006_02.h5\n", - "2024-12-04 03:41:25,606 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:41,412 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:41:41,413 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:41:41,437 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:41:41,437 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:41:41,496 - INFO - SUCCESS!\n", - "2024-12-04 03:41:41,516 - INFO - ./data/processed_ATL03_20220704065109_01891602_006_02.h5\n", - "2024-12-04 03:41:41,522 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:41:42,065 - INFO - ./data/processed_ATL03_20210530221749_10251102_006_01.h5\n", - "2024-12-04 03:41:42,071 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:42,489 - INFO - ./data/processed_ATL03_20210925203343_00521302_006_02.h5\n", - "2024-12-04 03:41:42,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:43,797 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:41:43,816 - INFO - ./data/processed_ATL03_20220601082323_10731502_006_01.h5\n", - "2024-12-04 03:41:43,823 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:41:57,904 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:41:57,904 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:41:57,945 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:41:57,946 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:41:58,017 - INFO - SUCCESS!\n", - "2024-12-04 03:41:58,037 - INFO - ./data/processed_ATL03_20220106033849_02271406_006_01.h5\n", - "2024-12-04 03:41:58,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:42:05,129 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:42:05,130 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:42:05,160 - INFO - SUCCESS!\n", - "2024-12-04 03:42:05,177 - INFO - ./data/processed_ATL03_20210403171306_01511106_006_02.h5\n", - "2024-12-04 03:42:05,184 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:42:05,967 - INFO - ./data/processed_ATL03_20221001144648_01661706_006_01.h5\n", - "2024-12-04 03:42:05,973 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:42:20,047 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:42:20,048 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:42:20,106 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:42:20,107 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:42:20,193 - INFO - SUCCESS!\n", - "2024-12-04 03:42:20,213 - INFO - ./data/processed_ATL03_20210802110321_06081206_006_01.h5\n", - "2024-12-04 03:42:20,222 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:42:20,629 - INFO - ./data/processed_ATL03_20220827041140_10121602_006_01.h5\n", - "2024-12-04 03:42:20,635 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:42:21,183 - INFO - ./data/processed_ATL03_20230628133808_01282002_006_02.h5\n", - "2024-12-04 03:42:21,189 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:42:22,305 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:42:22,324 - INFO - ./data/processed_ATL03_20230324183248_00521902_006_02.h5\n", - "2024-12-04 03:42:22,330 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:42:45,273 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:42:45,274 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:42:45,336 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:42:45,336 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:42:45,393 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:42:45,394 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:42:45,489 - INFO - SUCCESS!\n", - "2024-12-04 03:42:45,509 - INFO - ./data/processed_ATL03_20220706185839_02271606_006_02.h5\n", - "2024-12-04 03:42:45,514 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:42:46,672 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-04 03:42:46,693 - INFO - ./data/processed_ATL03_20220529045726_10251502_006_01.h5\n", - "2024-12-04 03:42:46,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:42:53,497 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:42:53,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:42:53,556 - INFO - SUCCESS!\n", - "2024-12-04 03:42:53,578 - INFO - ./data/processed_ATL03_20221103131425_06691706_006_01.h5\n", - "2024-12-04 03:42:53,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:42:54,018 - INFO - ./data/processed_ATL03_20220302124325_10731402_006_01.h5\n", - "2024-12-04 03:42:54,024 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:43:00,903 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:43:00,958 - INFO - ./data/processed_ATL03_20230928215038_01512106_006_02.h5\n", - "2024-12-04 03:43:00,965 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:43:17,516 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:43:17,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:43:17,548 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:43:17,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:43:17,621 - INFO - SUCCESS!\n", - "2024-12-04 03:43:17,643 - INFO - ./data/processed_ATL03_20240131153216_06692206_006_01.h5\n", - "2024-12-04 03:43:17,652 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:43:18,116 - INFO - ./data/processed_ATL03_20210105085144_01891002_006_01.h5\n", - "2024-12-04 03:43:18,123 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:43:25,430 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:43:25,430 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:43:25,550 - INFO - SUCCESS!\n", - "2024-12-04 03:43:25,566 - INFO - ./data/processed_ATL03_20220430062116_05831502_006_02.h5\n", - "2024-12-04 03:43:25,574 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:43:33,695 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:43:33,695 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:43:33,787 - INFO - SUCCESS!\n", - "2024-12-04 03:43:33,807 - INFO - ./data/processed_ATL03_20220929023918_01281702_006_01.h5\n", - "2024-12-04 03:43:33,813 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:43:34,448 - INFO - ./data/processed_ATL03_20240327003625_01282302_006_01.h5\n", - "2024-12-04 03:43:34,454 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:43:59,322 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:43:59,323 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:43:59,370 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:43:59,371 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:43:59,427 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:43:59,428 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:43:59,522 - INFO - SUCCESS!\n", - "2024-12-04 03:43:59,543 - INFO - ./data/processed_ATL03_20220103153118_01891402_006_01.h5\n", - "2024-12-04 03:43:59,549 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:07,935 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-04 03:44:07,986 - INFO - ./data/processed_ATL03_20190810213623_06690406_006_02.h5\n", - "2024-12-04 03:44:07,995 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:20,907 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:44:20,908 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:44:20,935 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:44:20,936 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:44:21,009 - INFO - SUCCESS!\n", - "2024-12-04 03:44:21,026 - INFO - ./data/processed_ATL03_20190805060259_05830402_006_02.h5\n", - "2024-12-04 03:44:21,038 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:28,480 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-04 03:44:28,481 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:44:28,572 - INFO - SUCCESS!\n", - "2024-12-04 03:44:28,588 - INFO - ./data/processed_ATL03_20240129032445_06312202_006_01.h5\n", - "2024-12-04 03:44:28,595 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:44:29,044 - INFO - ./data/processed_ATL03_20210405014140_01721101_006_02.h5\n", - "2024-12-04 03:44:29,050 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:29,674 - INFO - ./data/processed_ATL03_20210430115735_05601106_006_02.h5\n", - "2024-12-04 03:44:29,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:30,368 - INFO - ./data/processed_ATL03_20231222053110_00522202_006_02.h5\n", - "2024-12-04 03:44:30,374 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:31,232 - INFO - ./data/processed_ATL03_20210730225553_05701202_006_01.h5\n", - "2024-12-04 03:44:31,238 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:31,656 - INFO - ./data/processed_ATL03_20240826172001_10732402_006_01.h5\n", - "2024-12-04 03:44:31,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:48,054 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:44:48,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:44:48,115 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-04 03:44:48,116 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:44:48,207 - INFO - SUCCESS!\n", - "2024-12-04 03:44:48,226 - INFO - ./data/processed_ATL03_20200801005803_05600806_006_01.h5\n", - "2024-12-04 03:44:48,232 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-04 03:44:48,667 - INFO - ./data/processed_ATL03_20210402043956_01281102_006_02.h5\n", - "2024-12-04 03:44:48,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:49,549 - INFO - ./data/processed_ATL03_20220702190657_01661606_006_02.h5\n", - "2024-12-04 03:44:49,555 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-04 03:44:57,015 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-04 03:44:57,016 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-04 03:44:57,066 - INFO - SUCCESS!\n", - "2024-12-04 03:44:57,081 - INFO - ./data/processed_ATL03_20221003023056_01891702_006_01.h5\n", - "2024-12-04 03:44:57,087 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - } - ], - "source": [ - "h5names = glob.glob('data/processed_*.h5')\n", - "\n", - "\n", - "for jj in range(len(h5names)):\n", - " # code from chao (in Main.ipynb)\n", - " atl03_file_inloop = h5names[jj]\n", - " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", - " # print(ATL03_h5_file_path)\n", - " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", - " # print(shoreline_data_path)\n", - " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", - " # print(GEBCO_full_path)\n", - " OutputPath = os.path.join(workspace_path, output_path)\n", - " # print(OutputPath)\n", - " \n", - " \n", - " #Get the gebco list\n", - " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - " \n", - " #Initialize with an empty list\n", - " GEBCO_file_path_lists = []\n", - " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - " #put the find one into the list\n", - " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - " \n", - " # print(GEBCO_file_path_lists)\n", - " \n", - " # Get all other necessary parameters\n", - " horizontal_res = horizontal_res\n", - " vertical_res = vertical_res\n", - " subsurface_thresh = subsurface_thresh\n", - " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", - " \n", - " # Configure logging\n", - " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", - " \n", - " \n", - " # When all paramters ready, call the main function\n", - " main()\n", - " # delete the hefty h5 file once done with processing - only store calculated kd values\n", - " os.remove(ATL03_h5_file_path)\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/02_match_ships2granules_ipx.ipynb b/icesat2_kdph-main/02_match_ships2granules_ipx.ipynb deleted file mode 100644 index e277afc..0000000 --- a/icesat2_kdph-main/02_match_ships2granules_ipx.ipynb +++ /dev/null @@ -1,1838 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "id": "2256384a-86a8-43c0-801b-5953747525ba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet rtree" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet hdbscan" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8072f95f-1db6-4c31-8af8-293fd665bad4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet erddapy" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "8f821b93-0ec9-41db-af0e-61e26934504d", - "metadata": {}, - "outputs": [ - { - "data": { - "application/javascript": [ - "(function(root) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " var force = true;\n", - " var py_version = '3.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", - " var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n", - " var reloading = false;\n", - " var Bokeh = root.Bokeh;\n", - " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", - "\n", - " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n", - " root._bokeh_timeout = Date.now() + 5000;\n", - " root._bokeh_failed_load = false;\n", - " }\n", - "\n", - " function run_callbacks() {\n", - " try {\n", - " root._bokeh_onload_callbacks.forEach(function(callback) {\n", - " if (callback != null)\n", - " callback();\n", - " });\n", - " } finally {\n", - " delete root._bokeh_onload_callbacks;\n", - " }\n", - " console.debug(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", - " if (css_urls == null) css_urls = [];\n", - " if (js_urls == null) js_urls = [];\n", - " if (js_modules == null) js_modules = [];\n", - " if (js_exports == null) js_exports = {};\n", - "\n", - " root._bokeh_onload_callbacks.push(callback);\n", - "\n", - " if (root._bokeh_is_loading > 0) {\n", - " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " if (!reloading) {\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " }\n", - "\n", - " function on_load() {\n", - " root._bokeh_is_loading--;\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", - " run_callbacks()\n", - " }\n", - " }\n", - " window._bokeh_on_load = on_load\n", - "\n", - " function on_error() {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " var skip = [];\n", - " if (window.requirejs) {\n", - " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", - " require([\"jspanel\"], function(jsPanel) {\n", - "\twindow.jsPanel = jsPanel\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-modal\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-tooltip\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-hint\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-layout\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-contextmenu\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-dock\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"gridstack\"], function(GridStack) {\n", - "\twindow.GridStack = GridStack\n", - "\ton_load()\n", - " })\n", - " require([\"notyf\"], function() {\n", - "\ton_load()\n", - " })\n", - " root._bokeh_is_loading = css_urls.length + 9;\n", - " } else {\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", - " }\n", - "\n", - " var existing_stylesheets = []\n", - " var links = document.getElementsByTagName('link')\n", - " for (var i = 0; i < links.length; i++) {\n", - " var link = links[i]\n", - " if (link.href != null) {\n", - "\texisting_stylesheets.push(link.href)\n", - " }\n", - " }\n", - " for (var i = 0; i < css_urls.length; i++) {\n", - " var url = css_urls[i];\n", - " if (existing_stylesheets.indexOf(url) !== -1) {\n", - "\ton_load()\n", - "\tcontinue;\n", - " }\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", - " for (var i = 0; i < urls.length; i++) {\n", - " skip.push(urls[i])\n", - " }\n", - " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", - " for (var i = 0; i < urls.length; i++) {\n", - " skip.push(urls[i])\n", - " }\n", - " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", - " for (var i = 0; i < urls.length; i++) {\n", - " skip.push(urls[i])\n", - " }\n", - " } var existing_scripts = []\n", - " var scripts = document.getElementsByTagName('script')\n", - " for (var i = 0; i < scripts.length; i++) {\n", - " var script = scripts[i]\n", - " if (script.src != null) {\n", - "\texisting_scripts.push(script.src)\n", - " }\n", - " }\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", - "\tif (!window.requirejs) {\n", - "\t on_load();\n", - "\t}\n", - "\tcontinue;\n", - " }\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.src = url;\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " for (var i = 0; i < js_modules.length; i++) {\n", - " var url = js_modules[i];\n", - " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", - "\tif (!window.requirejs) {\n", - "\t on_load();\n", - "\t}\n", - "\tcontinue;\n", - " }\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.src = url;\n", - " element.type = \"module\";\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " for (const name in js_exports) {\n", - " var url = js_exports[name];\n", - " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", - "\tif (!window.requirejs) {\n", - "\t on_load();\n", - "\t}\n", - "\tcontinue;\n", - " }\n", - " var element = document.createElement('script');\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.type = \"module\";\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " element.textContent = `\n", - " import ${name} from \"${url}\"\n", - " window.${name} = ${name}\n", - " window._bokeh_on_load()\n", - " `\n", - " document.head.appendChild(element);\n", - " }\n", - " if (!js_urls.length && !js_modules.length) {\n", - " on_load()\n", - " }\n", - " };\n", - "\n", - " function inject_raw_css(css) {\n", - " const element = document.createElement(\"style\");\n", - " element.appendChild(document.createTextNode(css));\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n", - " var js_modules = [];\n", - " var js_exports = {};\n", - " var css_urls = [];\n", - " var inline_js = [ function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - "function(Bokeh) {} // ensure no trailing comma for IE\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " if ((root.Bokeh !== undefined) || (force === true)) {\n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i].call(root, root.Bokeh);\n", - " }\n", - " // Cache old bokeh versions\n", - " if (Bokeh != undefined && !reloading) {\n", - "\tvar NewBokeh = root.Bokeh;\n", - "\tif (Bokeh.versions === undefined) {\n", - "\t Bokeh.versions = new Map();\n", - "\t}\n", - "\tif (NewBokeh.version !== Bokeh.version) {\n", - "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", - "\t}\n", - "\troot.Bokeh = Bokeh;\n", - " }} else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(run_inline_js, 100);\n", - " } else if (!root._bokeh_failed_load) {\n", - " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", - " root._bokeh_failed_load = true;\n", - " }\n", - " root._bokeh_is_initializing = false\n", - " }\n", - "\n", - " function load_or_wait() {\n", - " // Implement a backoff loop that tries to ensure we do not load multiple\n", - " // versions of Bokeh and its dependencies at the same time.\n", - " // In recent versions we use the root._bokeh_is_initializing flag\n", - " // to determine whether there is an ongoing attempt to initialize\n", - " // bokeh, however for backward compatibility we also try to ensure\n", - " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", - " // before older versions are fully initialized.\n", - " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", - " root._bokeh_is_initializing = false;\n", - " root._bokeh_onload_callbacks = undefined;\n", - " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", - " load_or_wait();\n", - " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", - " setTimeout(load_or_wait, 100);\n", - " } else {\n", - " Bokeh = root.Bokeh;\n", - " bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", - " root._bokeh_is_initializing = true\n", - " root._bokeh_onload_callbacks = []\n", - " if (!reloading && (!bokeh_loaded || is_dev)) {\n", - "\troot.Bokeh = undefined;\n", - " }\n", - " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", - "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", - "\trun_inline_js();\n", - " });\n", - " }\n", - " }\n", - " // Give older versions of the autoload script a head-start to ensure\n", - " // they initialize before we start loading newer version.\n", - " setTimeout(load_or_wait, 100)\n", - "}(window));" - ], - "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n var reloading = false;\n var Bokeh = root.Bokeh;\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n Bokeh = root.Bokeh;\n bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n if (!reloading && (!bokeh_loaded || is_dev)) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "\n", - "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", - " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", - "}\n", - "\n", - "\n", - " function JupyterCommManager() {\n", - " }\n", - "\n", - " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", - " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", - " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", - " comm_manager.register_target(comm_id, function(comm) {\n", - " comm.on_msg(msg_handler);\n", - " });\n", - " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", - " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", - " comm.onMsg = msg_handler;\n", - " });\n", - " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", - " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", - " var messages = comm.messages[Symbol.asyncIterator]();\n", - " function processIteratorResult(result) {\n", - " var message = result.value;\n", - " console.log(message)\n", - " var content = {data: message.data, comm_id};\n", - " var buffers = []\n", - " for (var buffer of message.buffers || []) {\n", - " buffers.push(new DataView(buffer))\n", - " }\n", - " var metadata = message.metadata || {};\n", - " var msg = {content, buffers, metadata}\n", - " msg_handler(msg);\n", - " return messages.next().then(processIteratorResult);\n", - " }\n", - " return messages.next().then(processIteratorResult);\n", - " })\n", - " }\n", - " }\n", - "\n", - " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", - " if (comm_id in window.PyViz.comms) {\n", - " return window.PyViz.comms[comm_id];\n", - " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", - " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", - " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", - " if (msg_handler) {\n", - " comm.on_msg(msg_handler);\n", - " }\n", - " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", - " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", - " comm.open();\n", - " if (msg_handler) {\n", - " comm.onMsg = msg_handler;\n", - " }\n", - " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", - " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", - " comm_promise.then((comm) => {\n", - " window.PyViz.comms[comm_id] = comm;\n", - " if (msg_handler) {\n", - " var messages = comm.messages[Symbol.asyncIterator]();\n", - " function processIteratorResult(result) {\n", - " var message = result.value;\n", - " var content = {data: message.data};\n", - " var metadata = message.metadata || {comm_id};\n", - " var msg = {content, metadata}\n", - " msg_handler(msg);\n", - " return messages.next().then(processIteratorResult);\n", - " }\n", - " return messages.next().then(processIteratorResult);\n", - " }\n", - " }) \n", - " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", - " return comm_promise.then((comm) => {\n", - " comm.send(data, metadata, buffers, disposeOnDone);\n", - " });\n", - " };\n", - " var comm = {\n", - " send: sendClosure\n", - " };\n", - " }\n", - " window.PyViz.comms[comm_id] = comm;\n", - " return comm;\n", - " }\n", - " window.PyViz.comm_manager = new JupyterCommManager();\n", - " \n", - "\n", - "\n", - "var JS_MIME_TYPE = 'application/javascript';\n", - "var HTML_MIME_TYPE = 'text/html';\n", - "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", - "var CLASS_NAME = 'output';\n", - "\n", - "/**\n", - " * Render data to the DOM node\n", - " */\n", - "function render(props, node) {\n", - " var div = document.createElement(\"div\");\n", - " var script = document.createElement(\"script\");\n", - " node.appendChild(div);\n", - " node.appendChild(script);\n", - "}\n", - "\n", - "/**\n", - " * Handle when a new output is added\n", - " */\n", - "function handle_add_output(event, handle) {\n", - " var output_area = handle.output_area;\n", - " var output = handle.output;\n", - " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", - " return\n", - " }\n", - " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", - " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", - " if (id !== undefined) {\n", - " var nchildren = toinsert.length;\n", - " var html_node = toinsert[nchildren-1].children[0];\n", - " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var scripts = [];\n", - " var nodelist = html_node.querySelectorAll(\"script\");\n", - " for (var i in nodelist) {\n", - " if (nodelist.hasOwnProperty(i)) {\n", - " scripts.push(nodelist[i])\n", - " }\n", - " }\n", - "\n", - " scripts.forEach( function (oldScript) {\n", - " var newScript = document.createElement(\"script\");\n", - " var attrs = [];\n", - " var nodemap = oldScript.attributes;\n", - " for (var j in nodemap) {\n", - " if (nodemap.hasOwnProperty(j)) {\n", - " attrs.push(nodemap[j])\n", - " }\n", - " }\n", - " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", - " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", - " oldScript.parentNode.replaceChild(newScript, oldScript);\n", - " });\n", - " if (JS_MIME_TYPE in output.data) {\n", - " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", - " }\n", - " output_area._hv_plot_id = id;\n", - " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", - " window.PyViz.plot_index[id] = Bokeh.index[id];\n", - " } else {\n", - " window.PyViz.plot_index[id] = null;\n", - " }\n", - " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", - " var bk_div = document.createElement(\"div\");\n", - " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var script_attrs = bk_div.children[0].attributes;\n", - " for (var i = 0; i < script_attrs.length; i++) {\n", - " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", - " }\n", - " // store reference to server id on output_area\n", - " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", - " }\n", - "}\n", - "\n", - "/**\n", - " * Handle when an output is cleared or removed\n", - " */\n", - "function handle_clear_output(event, handle) {\n", - " var id = handle.cell.output_area._hv_plot_id;\n", - " var server_id = handle.cell.output_area._bokeh_server_id;\n", - " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", - " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", - " if (server_id !== null) {\n", - " comm.send({event_type: 'server_delete', 'id': server_id});\n", - " return;\n", - " } else if (comm !== null) {\n", - " comm.send({event_type: 'delete', 'id': id});\n", - " }\n", - " delete PyViz.plot_index[id];\n", - " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", - " var doc = window.Bokeh.index[id].model.document\n", - " doc.clear();\n", - " const i = window.Bokeh.documents.indexOf(doc);\n", - " if (i > -1) {\n", - " window.Bokeh.documents.splice(i, 1);\n", - " }\n", - " }\n", - "}\n", - "\n", - "/**\n", - " * Handle kernel restart event\n", - " */\n", - "function handle_kernel_cleanup(event, handle) {\n", - " delete PyViz.comms[\"hv-extension-comm\"];\n", - " window.PyViz.plot_index = {}\n", - "}\n", - "\n", - "/**\n", - " * Handle update_display_data messages\n", - " */\n", - "function handle_update_output(event, handle) {\n", - " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", - " handle_add_output(event, handle)\n", - "}\n", - "\n", - "function register_renderer(events, OutputArea) {\n", - " function append_mime(data, metadata, element) {\n", - " // create a DOM node to render to\n", - " var toinsert = this.create_output_subarea(\n", - " metadata,\n", - " CLASS_NAME,\n", - " EXEC_MIME_TYPE\n", - " );\n", - " this.keyboard_manager.register_events(toinsert);\n", - " // Render to node\n", - " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", - " render(props, toinsert[0]);\n", - " element.append(toinsert);\n", - " return toinsert\n", - " }\n", - "\n", - " events.on('output_added.OutputArea', handle_add_output);\n", - " events.on('output_updated.OutputArea', handle_update_output);\n", - " events.on('clear_output.CodeCell', handle_clear_output);\n", - " events.on('delete.Cell', handle_clear_output);\n", - " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", - "\n", - " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", - " safe: true,\n", - " index: 0\n", - " });\n", - "}\n", - "\n", - "if (window.Jupyter !== undefined) {\n", - " try {\n", - " var events = require('base/js/events');\n", - " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", - " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", - " register_renderer(events, OutputArea);\n", - " }\n", - " } catch(err) {\n", - " }\n", - "}\n" - ], - "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "
      \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "
      \n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from erddapy import ERDDAP\n", - "from sliderule import sliderule, icesat2, earthdata\n", - "import icepyx as ipx\n", - "from datetime import datetime, timedelta,timezone\n", - "\n", - "import time\n", - "import os\n", - "import re\n", - "import glob\n", - "import pandas as pd\n", - "import numpy as np\n", - "import logging\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from config import workspace_path, atl03_path,\\\n", - " other_data_path ,shoreline_data ,gebco_path ,\\\n", - " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", - " ignore_subsurface_height_thres ,output_path \n", - "\n", - "\n", - " \n", - "from kd_utils.data_processing import load_data, \\\n", - " extract_file_params, \\\n", - " Extract_sea_photons, \\\n", - " filter_photon_dataset_by_hull_area\n", - " \n", - "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", - " get_sea_surface_height\n", - " \n", - " \n", - "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", - "\n", - "from kd_utils.visualization import plot_photon_height, \\\n", - " plot_kd_photons, \\\n", - " plot_filtered_seafloor_photons\n", - " \n", - "from kd_utils.Kd_analysis import process_kd_calculation\n", - "\n", - "from kd_utils.interpolation import geoid_correction, \\\n", - " refraction_correction, \\\n", - " interpolate_labels, \\\n", - " apply_interpolation\n", - "\n", - "\n", - "\n", - "pd.set_option('display.max_columns', None)\n", - "# pd.set_option('display.max_rows', None)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", - "metadata": {}, - "outputs": [], - "source": [ - "def fname2datetime(fname):\n", - " y = int(fname[6:10])\n", - " m = int(fname[10:12])\n", - " d = int(fname[12:14])\n", - " H = int(fname[14:16])\n", - " M = int(fname[16:18])\n", - " S = int(fname[18:20])\n", - "\n", - " t = datetime(y,m,d,H,M,S, tzinfo=timezone.utc)\n", - " return t\n", - "\n", - "def buoy_bound_box(lat,lon,buffer_km):\n", - " # define a buffer distance around the buoy to search for icesat-2 data\n", - " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", - " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", - " # define bounding box around the buoy (WSEN)\n", - " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", - " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", - " # region = sliderule.toregion(bbox)\n", - " minx = lon - lon_buff\n", - " miny = lat - lat_buff\n", - " maxx = lon + lon_buff\n", - " maxy = lat + lat_buff\n", - "\n", - " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", - " poly_ipx = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", - " poly_cmr = [{'lon': minx, 'lat': miny},\n", - " {'lon': maxx, 'lat': miny},\n", - " {'lon': maxx, 'lat': maxy},\n", - " {'lon': minx, 'lat': maxy},\n", - " {'lon': minx, 'lat': miny}] # Closing the loop by repeating the first point\n", - "\n", - " return poly_cmr, poly_ipx\n", - "\n", - "\n", - "def main():\n", - " try:\n", - " \n", - " # Load IS2 and extract sea photons\n", - " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", - " \n", - " ## For debugging\n", - " #IS2_atl03_beams=['gt1r']\n", - " \n", - " # Check beam types and ensure we have what we want (e.g., strong beams)\n", - " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", - " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", - " if not IS2_atl03_beams:\n", - " print('No Strong Beam')\n", - " # sys.exit() # Terminate the program\n", - " else:\n", - " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", - " \n", - " # Extract sea photon by applying the land mask\n", - " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", - " \n", - " \n", - " # Main processing function to apply binning beam-by-beam \n", - " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", - " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", - " \n", - " \n", - " # filter to get subsurface photons\n", - " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", - " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", - " \n", - " \n", - " # Visualization of the filtered seafloor photons\n", - " # Uncomment the following lines to visualize if needed\n", - " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", - " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", - " # sea_photon_dataset=sea_photon_dataset, \n", - " # sea_surface_height=sea_surface_height, \n", - " # output_path=output_path)\n", - " \n", - " ########################\n", - " # Todo: move the filter to the begining\n", - " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", - " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", - " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", - " # Filter out points below the seafloor\n", - " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", - " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", - " ]\n", - " \n", - " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", - " \n", - " #Filter dataframe based on beam list\n", - " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", - " \n", - " ###################################\n", - " ### Todo: move the filter to the begining\n", - " # Steps to standardize KD calculation by filtering out \n", - " # segments lacking sufficient subsurface photons.\n", - " # Approach: Use the ConvexHull of photons within \n", - " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", - " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", - " \n", - " # Apply filtering based on hull area if desired\n", - " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", - " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", - " )\n", - " \n", - " # Visualization\n", - " # Uncomment the following line to visualize if needed\n", - " \n", - " # plot_target_beam=['gt1l']\n", - " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", - " \n", - " ########################################### \n", - " # calculate kd and save it to table\n", - " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", - " \n", - " \n", - " ## Todo move this part into a function so that it will not looks too busy here\n", - " # Extract the timestamp using regex and use it to set the output file name\n", - " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", - " timestamp = match.group(1) if match else \"unknown\"\n", - " \n", - " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", - " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", - " \n", - " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", - " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", - " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", - " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", - " def find_closest(group):\n", - " if not group.empty:\n", - " center = group['relative_AT_dist_center'].iloc[0]\n", - " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", - " closest_index = group['dist_to_center'].idxmin()\n", - " return group.loc[[closest_index]]\n", - " else:\n", - " return pd.DataFrame(columns=group.columns)\n", - " \n", - " # Filter out empty or all-NA entries\n", - " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", - " \n", - " # Group by 'lat_bins' and apply the find_closest function\n", - " closest_to_center = unique_photon_dataset_filtered\\\n", - " .groupby('lat_bins', observed=False)\\\n", - " .apply(find_closest, include_groups=True)\n", - " # .reset_index()\n", - " \n", - " # Remove the index without resetting it if 'lat_bins' already exists\n", - " closest_to_center.index = closest_to_center.index.droplevel(0)\n", - " \n", - " # Ensure relevant entries are excluded before concatenation\n", - " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", - " \n", - " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", - " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", - " \n", - " \n", - " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", - " \n", - " logging.info(\"SUCCESS!\")\n", - " \n", - " except Exception as e:\n", - " logging.error(f\"An error occurred: {e}\")\n", - "\n", - "# if __name__ == '__main__':\n", - " \n", - "# # Get arguments function\n", - "# args = get_args() \n", - " \n", - "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", - " \n", - "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", - " \n", - "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", - " \n", - "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", - " \n", - "# #Get the gebco list\n", - "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", - "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - "\n", - "# #Initialize with an empty list\n", - "# GEBCO_file_path_lists = []\n", - "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - "# #put the find one into the list\n", - "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - "\n", - " \n", - "# # Get all other necessary parameters\n", - "# horizontal_res = args.horizontal_res\n", - " \n", - "# vertical_res = args.vertical_res\n", - " \n", - "# subsurface_thresh = args.subsurface_thresh\n", - " \n", - "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", - " \n", - "# # When all paramters ready, call the main function\n", - "# main()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1d72dbef-f954-499f-be76-c1de3233b325", - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      sitesurltime_coverage_starttime_coverage_endgeospatial_lat_mingeospatial_lat_maxgeospatial_lon_mingeospatial_lon_maxgeospatial_lat_unitsgeospatial_lon_unitscheck_sumbuoyglidershipturbsscphotchlturbidphotoradiationphoton_data
      0WS18285_WS18285_Decktsthttps://gcoos5.geos.tamu.edu/erddap/2018-10-11T18:24:49Z2018-10-11T18:24:49Z25.73133325.731333-80.162000-80.162000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      1WS18285_WS18285_Decktst2https://gcoos5.geos.tamu.edu/erddap/2018-10-12T11:03:42Z2018-10-12T11:03:42Z25.73133325.731333-80.162000-80.162000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      2WS18285_WS18285_WS18285_Stn_16https://gcoos5.geos.tamu.edu/erddap/2018-10-19T08:04:39Z2018-10-19T08:04:39Z24.67100024.671000-81.204000-81.204000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      3WS18285_WS18285_WS18285_Stn_18https://gcoos5.geos.tamu.edu/erddap/2018-10-19T08:55:14Z2018-10-19T08:55:14Z24.59750024.597500-81.186333-81.186333degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      4WS18285_WS18285_WS18285_Stn_2https://gcoos5.geos.tamu.edu/erddap/2018-10-12T14:36:07Z2018-10-12T14:36:07Z25.64216725.642167-80.104000-80.104000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      .....................................................................
      1571WS23061_WS23061_WS23061_Kelble_Stn_V7https://gcoos5.geos.tamu.edu/erddap/2023-03-05T10:20:54Z2023-03-05T10:20:54Z26.87466726.874667-82.891167-82.891167degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      1572WS23061_WS23061_WS23061_Kelble_Stn_V8https://gcoos5.geos.tamu.edu/erddap/2023-03-05T09:35:24Z2023-03-05T09:35:24Z26.83583326.835833-82.953833-82.953833degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      1573WS23061_WS23061_WS23061_Kelble_Stn_V9https://gcoos5.geos.tamu.edu/erddap/2023-03-05T08:14:57Z2023-03-05T08:14:57Z26.72933326.729333-83.099833-83.099833degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      1574WS23061_WS23061_WS23061_Kelble_Stn_WShttps://gcoos5.geos.tamu.edu/erddap/2023-03-08T17:51:03Z2023-03-08T17:51:03Z24.47483324.474833-81.715000-81.715000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      1575WS23061_WS23061_WS23061_Kelble_Stn002https://gcoos5.geos.tamu.edu/erddap/2023-03-02T11:25:49Z2023-03-02T11:25:49Z25.64233325.642333-80.104000-80.104000degrees_northdegrees_east1.0FalseFalseFalseFalseFalseTrueTrueFalseTrueTrueFalse
      \n", - "

      1576 rows × 22 columns

      \n", - "
      " - ], - "text/plain": [ - " sites \\\n", - "0 WS18285_WS18285_Decktst \n", - "1 WS18285_WS18285_Decktst2 \n", - "2 WS18285_WS18285_WS18285_Stn_16 \n", - "3 WS18285_WS18285_WS18285_Stn_18 \n", - "4 WS18285_WS18285_WS18285_Stn_2 \n", - "... ... \n", - "1571 WS23061_WS23061_WS23061_Kelble_Stn_V7 \n", - "1572 WS23061_WS23061_WS23061_Kelble_Stn_V8 \n", - "1573 WS23061_WS23061_WS23061_Kelble_Stn_V9 \n", - "1574 WS23061_WS23061_WS23061_Kelble_Stn_WS \n", - "1575 WS23061_WS23061_WS23061_Kelble_Stn002 \n", - "\n", - " url time_coverage_start \\\n", - "0 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-11T18:24:49Z \n", - "1 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-12T11:03:42Z \n", - "2 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-19T08:04:39Z \n", - "3 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-19T08:55:14Z \n", - "4 https://gcoos5.geos.tamu.edu/erddap/ 2018-10-12T14:36:07Z \n", - "... ... ... \n", - "1571 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-05T10:20:54Z \n", - "1572 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-05T09:35:24Z \n", - "1573 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-05T08:14:57Z \n", - "1574 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-08T17:51:03Z \n", - "1575 https://gcoos5.geos.tamu.edu/erddap/ 2023-03-02T11:25:49Z \n", - "\n", - " time_coverage_end geospatial_lat_min geospatial_lat_max \\\n", - "0 2018-10-11T18:24:49Z 25.731333 25.731333 \n", - "1 2018-10-12T11:03:42Z 25.731333 25.731333 \n", - "2 2018-10-19T08:04:39Z 24.671000 24.671000 \n", - "3 2018-10-19T08:55:14Z 24.597500 24.597500 \n", - "4 2018-10-12T14:36:07Z 25.642167 25.642167 \n", - "... ... ... ... \n", - "1571 2023-03-05T10:20:54Z 26.874667 26.874667 \n", - "1572 2023-03-05T09:35:24Z 26.835833 26.835833 \n", - "1573 2023-03-05T08:14:57Z 26.729333 26.729333 \n", - "1574 2023-03-08T17:51:03Z 24.474833 24.474833 \n", - "1575 2023-03-02T11:25:49Z 25.642333 25.642333 \n", - "\n", - " geospatial_lon_min geospatial_lon_max geospatial_lat_units \\\n", - "0 -80.162000 -80.162000 degrees_north \n", - "1 -80.162000 -80.162000 degrees_north \n", - "2 -81.204000 -81.204000 degrees_north \n", - "3 -81.186333 -81.186333 degrees_north \n", - "4 -80.104000 -80.104000 degrees_north \n", - "... ... ... ... \n", - "1571 -82.891167 -82.891167 degrees_north \n", - "1572 -82.953833 -82.953833 degrees_north \n", - "1573 -83.099833 -83.099833 degrees_north \n", - "1574 -81.715000 -81.715000 degrees_north \n", - "1575 -80.104000 -80.104000 degrees_north \n", - "\n", - " geospatial_lon_units check_sum buoy glider ship turb ssc \\\n", - "0 degrees_east 1.0 False False False False False \n", - "1 degrees_east 1.0 False False False False False \n", - "2 degrees_east 1.0 False False False False False \n", - "3 degrees_east 1.0 False False False False False \n", - "4 degrees_east 1.0 False False False False False \n", - "... ... ... ... ... ... ... ... \n", - "1571 degrees_east 1.0 False False False False False \n", - "1572 degrees_east 1.0 False False False False False \n", - "1573 degrees_east 1.0 False False False False False \n", - "1574 degrees_east 1.0 False False False False False \n", - "1575 degrees_east 1.0 False False False False False \n", - "\n", - " phot chl turbid photo radiation photon_data \n", - "0 True True False True True False \n", - "1 True True False True True False \n", - "2 True True False True True False \n", - "3 True True False True True False \n", - "4 True True False True True False \n", - "... ... ... ... ... ... ... \n", - "1571 True True False True True False \n", - "1572 True True False True True False \n", - "1573 True True False True True False \n", - "1574 True True False True True False \n", - "1575 True True False True True False \n", - "\n", - "[1576 rows x 22 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# load a list of all the relevant ERDDAPs and their urls\n", - "FF = pd.read_pickle(\"results/labeled_relevant_stations.pkl\")\n", - "# there are ltos of different searches to do...\n", - "FF = FF[(FF.url=='https://gcoos5.geos.tamu.edu/erddap/') & (FF.radiation == True) & (\n", - " FF.buoy == False)]\n", - "FF.reset_index(drop=True, inplace=True)\n", - "\n", - "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", - "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", - "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", - "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", - "FF[\"photon_data\"] = False\n", - "FF\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "processing 0/1576\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n" - ] - }, - { - "name": "stdin", - "output_type": "stream", - "text": [ - "Enter your Earthdata Login username: gloverha\n", - "Enter your Earthdata password: ········\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "order ID: 5000005876055\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876055 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876056\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876056 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 100/1576\n", - "processing 200/1576\n", - "processing 300/1576\n", - "processing 400/1576\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876061 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876062\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876062 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 600/1576\n", - "processing 700/1576\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876063\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876063 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 800/1576\n", - "processing 900/1576\n", - "processing 1000/1576\n", - "processing 1100/1576\n", - "processing 1200/1576\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876069\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876069 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876070\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876070 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 1300/1576\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876071\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876071 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876072\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876072 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876073\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876073 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876074\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876074 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876075\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876075 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 1400/1576\n", - "processing 1500/1576\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005876076\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005876076 of 1 order(s) is downloaded.\n", - "Download complete\n" - ] - } - ], - "source": [ - "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", - "search_hrs = 6\n", - "search_km = 4\n", - "for jj in range(len(FF)):\n", - " if jj % 100 == 0:\n", - " print('processing '+str(jj) +'/'+str(len(FF)))# give a printout every 100 for my sanity\n", - "\n", - " # set up erddap request:\n", - " e = ERDDAP(server=FF['url'][jj],\n", - " protocol=\"tabledap\",\n", - " response=\"csv\")\n", - " e.dataset_id = FF['sites'][jj]\n", - " # try to download the associated buoy data - skip this entry if it fails\n", - " try:\n", - " buoy = e.to_pandas() \n", - " except:\n", - " continue\n", - " \n", - " # define a search region around the buoy \n", - " lat = FF['geospatial_lat_min'][jj]\n", - " lon = FF['geospatial_lon_min'][jj]\n", - " poly_cmr,poly_ipx = buoy_bound_box(lat,lon,search_km)\n", - "\n", - " # if buoy data exists, download the ATL03 photons in the bounding box at this time\n", - " # add a time buffer to search for relevant sat data for each cast\n", - " t = datetime.fromisoformat(FF['time_coverage_start'][jj])\n", - " short_name = 'ATL03'\n", - " t_start = (t-timedelta(hours=search_hrs))\n", - " t_end = (t+timedelta(hours=search_hrs))\n", - " date_range = [t_start,t_end]\n", - " region = ipx.Query(short_name, poly_ipx, date_range)\n", - " try:\n", - " region.download_granules('data/')\n", - " except:\n", - " continue\n", - " #buoy.to_csv('data/data_'+str(e.dataset_id)+'_'+str(t_start)+'.csv')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 23:36:36,060 - INFO - ./data/processed_ATL03_20221206204321_11781702_006_02.h5\n", - "2024-12-03 23:36:36,066 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 23:37:02,902 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 23:37:02,903 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:37:03,013 - INFO - SUCCESS!\n", - "2024-12-03 23:37:03,025 - INFO - ./data/processed_ATL03_20181218055622_12310107_006_02.h5\n", - "2024-12-03 23:37:03,031 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 23:37:48,494 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 23:37:48,495 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:37:48,550 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 23:37:48,551 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:37:48,645 - INFO - SUCCESS!\n", - "2024-12-03 23:37:48,658 - INFO - ./data/processed_ATL03_20201009101333_02330901_006_01.h5\n", - "2024-12-03 23:37:48,668 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 23:38:33,541 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 23:38:33,541 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:38:33,569 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 23:38:33,570 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:38:33,654 - INFO - SUCCESS!\n", - "2024-12-03 23:38:33,667 - INFO - ./data/processed_ATL03_20221013112140_03471707_006_01.h5\n", - "2024-12-03 23:38:33,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 23:40:04,472 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 23:40:04,473 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:40:04,491 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 23:40:04,491 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:40:04,550 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 23:40:04,550 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:40:04,634 - INFO - SUCCESS!\n", - "2024-12-03 23:40:04,647 - INFO - ./data/processed_ATL03_20200820005033_08500807_006_01.h5\n", - "2024-12-03 23:40:04,653 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 23:40:27,228 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-03 23:40:27,228 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:40:27,319 - INFO - SUCCESS!\n", - "2024-12-03 23:40:27,331 - INFO - ./data/processed_ATL03_20220525180429_09721506_006_01.h5\n", - "2024-12-03 23:40:27,337 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-03 23:41:12,472 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-03 23:41:12,472 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:41:12,501 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-03 23:41:12,501 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-03 23:41:12,543 - INFO - SUCCESS!\n", - "2024-12-03 23:41:12,556 - INFO - ./data/processed_ATL03_20210405014140_01721101_006_02.h5\n", - "2024-12-03 23:41:12,563 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - } - ], - "source": [ - "h5names = glob.glob('data/processed_*.h5')\n", - "\n", - "\n", - "for jj in range(len(h5names)):\n", - " # code from chao (in Main.ipynb)\n", - " atl03_file_inloop = h5names[jj]\n", - " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", - " # print(ATL03_h5_file_path)\n", - " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", - " # print(shoreline_data_path)\n", - " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", - " # print(GEBCO_full_path)\n", - " OutputPath = os.path.join(workspace_path, output_path)\n", - " # print(OutputPath)\n", - " \n", - " \n", - " #Get the gebco list\n", - " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - " \n", - " #Initialize with an empty list\n", - " GEBCO_file_path_lists = []\n", - " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - " #put the find one into the list\n", - " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - " \n", - " # print(GEBCO_file_path_lists)\n", - " \n", - " # Get all other necessary parameters\n", - " horizontal_res = horizontal_res\n", - " vertical_res = vertical_res\n", - " subsurface_thresh = subsurface_thresh\n", - " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", - " \n", - " # Configure logging\n", - " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", - " \n", - " \n", - " # When all paramters ready, call the main function\n", - " main()\n", - " # delete the hefty h5 file once done with processing - only store calculated kd values\n", - " # os.remove(ATL03_h5_file_path)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb b/icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb deleted file mode 100644 index 2309737..0000000 --- a/icesat2_kdph-main/02_match_turbidity2granules_ipx.ipynb +++ /dev/null @@ -1,22955 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "fe17c663-98a1-4c47-b0b8-dbd94cf8a89e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet \"sliderule @ git+https://github.com/SlideRuleEarth/sliderule#subdirectory=clients/python\"" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "2256384a-86a8-43c0-801b-5953747525ba", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet rtree\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "26a80715-bdf2-45ce-afe9-9fa0f0bd7529", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet hdbscan" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "8072f95f-1db6-4c31-8af8-293fd665bad4", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet erddapy" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "8f821b93-0ec9-41db-af0e-61e26934504d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from erddapy import ERDDAP\n", - "from sliderule import sliderule, icesat2, earthdata\n", - "import icepyx as ipx\n", - "from datetime import datetime, timedelta,timezone\n", - "\n", - "import time\n", - "import os\n", - "import re\n", - "import glob\n", - "import pandas as pd\n", - "import numpy as np\n", - "import logging\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# from config import get_args\n", - "from config import workspace_path, atl03_path,\\\n", - " other_data_path ,shoreline_data ,gebco_path ,\\\n", - " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", - " ignore_subsurface_height_thres ,output_path \n", - "\n", - "\n", - " \n", - "from kd_utils.data_processing import load_data, \\\n", - " extract_file_params, \\\n", - " Extract_sea_photons, \\\n", - " filter_photon_dataset_by_hull_area\n", - " \n", - " \n", - "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", - " get_sea_surface_height\n", - " \n", - " \n", - "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", - "\n", - "from kd_utils.visualization import plot_photon_height, \\\n", - " plot_kd_photons, \\\n", - " plot_filtered_seafloor_photons\n", - " \n", - "from kd_utils.Kd_analysis import process_kd_calculation\n", - "\n", - "from kd_utils.interpolation import geoid_correction, \\\n", - " refraction_correction, \\\n", - " interpolate_labels, \\\n", - " apply_interpolation\n", - "\n", - "\n", - "# Configure logging\n", - "# logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", - "sliderule.init(verbose=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", - "metadata": {}, - "outputs": [], - "source": [ - "def fname2datetime(fname):\n", - " y = int(fname[6:10])\n", - " m = int(fname[10:12])\n", - " d = int(fname[12:14])\n", - " H = int(fname[14:16])\n", - " M = int(fname[16:18])\n", - " S = int(fname[18:20])\n", - "\n", - " t = datetime(y,m,d,H,M,S, tzinfo=timezone.utc)\n", - " return t\n", - "\n", - "def buoy_bound_box(lat,lon,buffer_km):\n", - " # define a buffer distance around the buoy to search for icesat-2 data\n", - " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", - " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", - " # define bounding box around the buoy (WSEN)\n", - " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", - " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", - " # region = sliderule.toregion(bbox)\n", - " minx = lon - lon_buff\n", - " miny = lat - lat_buff\n", - " maxx = lon + lon_buff\n", - " maxy = lat + lat_buff\n", - "\n", - " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", - " poly_ipx = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", - " poly_cmr = [{'lon': minx, 'lat': miny},\n", - " {'lon': maxx, 'lat': miny},\n", - " {'lon': maxx, 'lat': maxy},\n", - " {'lon': minx, 'lat': maxy},\n", - " {'lon': minx, 'lat': miny}] # Closing the loop by repeating the first point\n", - "\n", - " return poly_cmr, poly_ipx\n", - "\n", - "def main():\n", - " try:\n", - " \n", - " # Load IS2 and extract sea photons\n", - " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", - " \n", - " ## For debugging\n", - " #IS2_atl03_beams=['gt1r']\n", - " \n", - " # Check beam types and ensure we have what we want (e.g., strong beams)\n", - " target_beam_type=['gt1l', 'gt2l', 'gt3l'] \n", - " IS2_atl03_beams = [beam for beam in IS2_atl03_beams if beam in target_beam_type]\n", - " if not IS2_atl03_beams:\n", - " print('No Strong Beam')\n", - " # sys.exit() # Terminate the program\n", - " else:\n", - " print(f'Strong Beams Found: {IS2_atl03_beams}')\n", - " \n", - " # Extract sea photon by applying the land mask\n", - " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", - " \n", - " \n", - " # Main processing function to apply binning beam-by-beam \n", - " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", - " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", - " \n", - " \n", - " # filter to get subsurface photons\n", - " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", - " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", - " \n", - " \n", - " # Visualization of the filtered seafloor photons\n", - " # Uncomment the following lines to visualize if needed\n", - " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", - " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", - " # sea_photon_dataset=sea_photon_dataset, \n", - " # sea_surface_height=sea_surface_height, \n", - " # output_path=output_path)\n", - " \n", - " ########################\n", - " # Todo: move the filter to the begining\n", - " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", - " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", - " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", - " # Filter out points below the seafloor\n", - " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", - " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", - " ]\n", - " \n", - " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", - " \n", - " #Filter dataframe based on beam list\n", - " Final_filtered_subsurface_photon_dataset = Final_filtered_subsurface_photon_dataset[Final_filtered_subsurface_photon_dataset['beam_id'].isin(target_beam_type)]\n", - " \n", - " ###################################\n", - " ### Todo: move the filter to the begining\n", - " # Steps to standardize KD calculation by filtering out \n", - " # segments lacking sufficient subsurface photons.\n", - " # Approach: Use the ConvexHull of photons within \n", - " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", - " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", - " \n", - " # Apply filtering based on hull area if desired\n", - " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", - " Final_filtered_subsurface_photon_dataset, hull_area_threshold=1500\n", - " )\n", - " \n", - " # Visualization\n", - " # Uncomment the following line to visualize if needed\n", - " \n", - " # plot_target_beam=['gt1l']\n", - " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, plot_target_beam, convex_hulls, convex_hull_areas)\n", - " \n", - " ########################################### \n", - " # calculate kd and save it to table\n", - " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", - " \n", - " \n", - " ## Todo move this part into a function so that it will not looks too busy here\n", - " # Extract the timestamp using regex and use it to set the output file name\n", - " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", - " timestamp = match.group(1) if match else \"unknown\"\n", - " \n", - " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", - " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", - " \n", - " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", - " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", - " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", - " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", - " def find_closest(group):\n", - " if not group.empty:\n", - " center = group['relative_AT_dist_center'].iloc[0]\n", - " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", - " closest_index = group['dist_to_center'].idxmin()\n", - " return group.loc[[closest_index]]\n", - " else:\n", - " return pd.DataFrame(columns=group.columns)\n", - " \n", - " # Filter out empty or all-NA entries\n", - " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", - " \n", - " # Group by 'lat_bins' and apply the find_closest function\n", - " closest_to_center = unique_photon_dataset_filtered\\\n", - " .groupby('lat_bins', observed=False)\\\n", - " .apply(find_closest, include_groups=True)\n", - " # .reset_index()\n", - " \n", - " # Remove the index without resetting it if 'lat_bins' already exists\n", - " closest_to_center.index = closest_to_center.index.droplevel(0)\n", - " \n", - " # Ensure relevant entries are excluded before concatenation\n", - " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", - " \n", - " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", - " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", - " \n", - " \n", - " # plot_kd_photons(OutputPath, timestamp, plot_target_beam, filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", - " \n", - " logging.info(\"SUCCESS!\")\n", - " \n", - " except Exception as e:\n", - " logging.error(f\"An error occurred: {e}\")\n", - "\n", - "# if __name__ == '__main__':\n", - " \n", - "# # Get arguments function\n", - "# args = get_args() \n", - " \n", - "# ATL03_h5_file_path = os.path.join(args.workspace_path, args.atl03_path, args.atl03_file)\n", - " \n", - "# shoreline_data_path = os.path.join(args.workspace_path, args.other_data_path, args.shoreline_data)\n", - " \n", - "# GEBCO_full_path = os.path.join(args.workspace_path, args.other_data_path, args.gebco_path)\n", - " \n", - "# OutputPath = os.path.join(args.workspace_path, args.output_path)\n", - " \n", - "# #Get the gebco list\n", - "# #gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", - "# GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - "\n", - "# #Initialize with an empty list\n", - "# GEBCO_file_path_lists = []\n", - "# for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - "# #put the find one into the list\n", - "# GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - "\n", - " \n", - "# # Get all other necessary parameters\n", - "# horizontal_res = args.horizontal_res\n", - " \n", - "# vertical_res = args.vertical_res\n", - " \n", - "# subsurface_thresh = args.subsurface_thresh\n", - " \n", - "# Ignore_Subsurface_Height_Thres = args.ignore_subsurface_height_thres\n", - " \n", - "# # When all paramters ready, call the main function\n", - "# main()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1d72dbef-f954-499f-be76-c1de3233b325", - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      sitesurltime_coverage_starttime_coverage_endgeospatial_lat_mingeospatial_lat_maxgeospatial_lon_mingeospatial_lon_maxgeospatial_lat_unitsgeospatial_lon_units...glidershipturbsscphotchlturbidphotoradiationphoton_data
      0mpoMaritimeStJohnCTDhttps://erddap.ogsl.ca/erddap/2019-07-24T14:36Z2021-06-09T15:30Z45.1456845.61012-66.31979-66.00832degrees_northdegrees_east...FalseFalseTrueFalseFalseFalseTrueFalseFalseFalse
      1bcodmo_dataset_737163https://erddap.bco-dmo.org/erddap/1989-07-29T19:00:00ZNaN22.7500022.75000-158.00000-158.00000degrees_northdegrees_east...FalseTrueTrueFalseTrueTrueFalseTrueTrueFalse
      2bcodmo_dataset_3093https://erddap.bco-dmo.org/erddap/1995-11-08T10:12:00ZNaN10.4920010.68300-64.73500-64.36700degrees_northdegrees_east...FalseTrueTrueFalseTrueTrueTrueTrueTrueFalse
      3gov-ndbc-44043https://erddap.sensors.ioos.us/erddap/2015-01-01T00:10:00Z2024-07-01T14:54:00Z39.1520039.15200-76.39100-76.39100degrees_northdegrees_east...FalseFalseTrueFalseFalseTrueTrueFalseFalseFalse
      4gov-ndbc-44063https://erddap.sensors.ioos.us/erddap/2015-01-01T00:00:00Z2024-07-01T14:54:00Z38.9630038.96300-76.44800-76.44800degrees_northdegrees_east...FalseFalseTrueFalseFalseTrueTrueFalseFalseFalse
      ..................................................................
      132v6sa-tiithttps://cioosatlantic.ca/erddap/2015-11-26T21:00:00Z2023-07-06T12:28:38Z45.4902845.61129-61.09130-60.76110degrees_northdegrees_east...FalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
      133mq2k-54s4https://cioosatlantic.ca/erddap/2018-02-13T16:32:00Z2023-07-13T20:15:00Z43.4655243.71690-65.73784-65.00831degrees_northdegrees_east...FalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
      1349qw2-yb2fhttps://cioosatlantic.ca/erddap/2016-02-19T17:00:00Z2023-08-03T11:21:40Z43.6790043.81440-66.13522-65.83446degrees_northdegrees_east...FalseFalseFalseTrueFalseFalseFalseFalseFalseFalse
      135EMSO_OBSEA_Besos_Buoy_SA8065_30minhttp://erddap.emso.eu:8080/erddap/2023-12-11T00:00:00Z2024-04-23T10:30:00Z41.1821241.182121.752571.75257degrees_northdegrees_east...FalseFalseTrueFalseFalseFalseTrueFalseFalseFalse
      136EMSO_OBSEA_Besos_Buoy_SA8065_fullhttp://erddap.emso.eu:8080/erddap/2023-12-11T00:08:26Z2024-04-23T10:42:53Z41.1821241.182121.752571.75257degrees_northdegrees_east...FalseFalseTrueFalseFalseFalseTrueFalseFalseFalse
      \n", - "

      137 rows × 22 columns

      \n", - "
      " - ], - "text/plain": [ - " sites \\\n", - "0 mpoMaritimeStJohnCTD \n", - "1 bcodmo_dataset_737163 \n", - "2 bcodmo_dataset_3093 \n", - "3 gov-ndbc-44043 \n", - "4 gov-ndbc-44063 \n", - ".. ... \n", - "132 v6sa-tiit \n", - "133 mq2k-54s4 \n", - "134 9qw2-yb2f \n", - "135 EMSO_OBSEA_Besos_Buoy_SA8065_30min \n", - "136 EMSO_OBSEA_Besos_Buoy_SA8065_full \n", - "\n", - " url time_coverage_start \\\n", - "0 https://erddap.ogsl.ca/erddap/ 2019-07-24T14:36Z \n", - "1 https://erddap.bco-dmo.org/erddap/ 1989-07-29T19:00:00Z \n", - "2 https://erddap.bco-dmo.org/erddap/ 1995-11-08T10:12:00Z \n", - "3 https://erddap.sensors.ioos.us/erddap/ 2015-01-01T00:10:00Z \n", - "4 https://erddap.sensors.ioos.us/erddap/ 2015-01-01T00:00:00Z \n", - ".. ... ... \n", - "132 https://cioosatlantic.ca/erddap/ 2015-11-26T21:00:00Z \n", - "133 https://cioosatlantic.ca/erddap/ 2018-02-13T16:32:00Z \n", - "134 https://cioosatlantic.ca/erddap/ 2016-02-19T17:00:00Z \n", - "135 http://erddap.emso.eu:8080/erddap/ 2023-12-11T00:00:00Z \n", - "136 http://erddap.emso.eu:8080/erddap/ 2023-12-11T00:08:26Z \n", - "\n", - " time_coverage_end geospatial_lat_min geospatial_lat_max \\\n", - "0 2021-06-09T15:30Z 45.14568 45.61012 \n", - "1 NaN 22.75000 22.75000 \n", - "2 NaN 10.49200 10.68300 \n", - "3 2024-07-01T14:54:00Z 39.15200 39.15200 \n", - "4 2024-07-01T14:54:00Z 38.96300 38.96300 \n", - ".. ... ... ... \n", - "132 2023-07-06T12:28:38Z 45.49028 45.61129 \n", - "133 2023-07-13T20:15:00Z 43.46552 43.71690 \n", - "134 2023-08-03T11:21:40Z 43.67900 43.81440 \n", - "135 2024-04-23T10:30:00Z 41.18212 41.18212 \n", - "136 2024-04-23T10:42:53Z 41.18212 41.18212 \n", - "\n", - " geospatial_lon_min geospatial_lon_max geospatial_lat_units \\\n", - "0 -66.31979 -66.00832 degrees_north \n", - "1 -158.00000 -158.00000 degrees_north \n", - "2 -64.73500 -64.36700 degrees_north \n", - "3 -76.39100 -76.39100 degrees_north \n", - "4 -76.44800 -76.44800 degrees_north \n", - ".. ... ... ... \n", - "132 -61.09130 -60.76110 degrees_north \n", - "133 -65.73784 -65.00831 degrees_north \n", - "134 -66.13522 -65.83446 degrees_north \n", - "135 1.75257 1.75257 degrees_north \n", - "136 1.75257 1.75257 degrees_north \n", - "\n", - " geospatial_lon_units ... glider ship turb ssc phot chl \\\n", - "0 degrees_east ... False False True False False False \n", - "1 degrees_east ... False True True False True True \n", - "2 degrees_east ... False True True False True True \n", - "3 degrees_east ... False False True False False True \n", - "4 degrees_east ... False False True False False True \n", - ".. ... ... ... ... ... ... ... ... \n", - "132 degrees_east ... False False False True False False \n", - "133 degrees_east ... False False False True False False \n", - "134 degrees_east ... False False False True False False \n", - "135 degrees_east ... False False True False False False \n", - "136 degrees_east ... False False True False False False \n", - "\n", - " turbid photo radiation photon_data \n", - "0 True False False False \n", - "1 False True True False \n", - "2 True True True False \n", - "3 True False False False \n", - "4 True False False False \n", - ".. ... ... ... ... \n", - "132 False False False False \n", - "133 False False False False \n", - "134 False False False False \n", - "135 True False False False \n", - "136 True False False False \n", - "\n", - "[137 rows x 22 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# load a list of all the relevant ERDDAPs and their urls\n", - "FF = pd.read_pickle(\"results/labeled_relevant_stations.pkl\")\n", - "FF = FF[(FF.buoy == True) & ((FF.turbid==True) | (FF.ssc==True) | (FF.turb==True))]\n", - "\n", - "# FF = FF.drop(index=[34,35,36,37,39,40])\n", - "FF.reset_index(drop=True, inplace=True)\n", - "\n", - "FF[\"geospatial_lat_min\"] = pd.to_numeric(FF[\"geospatial_lat_min\"])\n", - "FF[\"geospatial_lon_min\"] = pd.to_numeric(FF[\"geospatial_lon_min\"])\n", - "FF[\"geospatial_lat_max\"] = pd.to_numeric(FF[\"geospatial_lat_max\"])\n", - "FF[\"geospatial_lon_max\"] = pd.to_numeric(FF[\"geospatial_lon_max\"])\n", - "FF[\"photon_data\"] = False\n", - "\n", - "FF\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "81cbc4d3-802a-4e98-9220-8b847742bc3b", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "processing 42/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887375\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887375 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887376\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887376 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887377\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887377 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887378\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887378 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887379\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887379 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887381\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887381 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887382\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887382 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887383\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887383 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887389\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887389 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887390\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887390 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887391\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887391 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887393\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887393 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887394\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887394 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887395\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887395 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887396\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887396 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887397\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887397 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887398\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887398 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887415\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887415 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887416\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887416 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887417\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887417 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887418\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887418 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887419\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887419 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887420\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887420 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887421\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887421 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887422\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887422 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887423\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887423 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887424\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887424 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887425\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887425 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 43/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887431\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887431 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887433\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887433 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887434\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887434 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887435\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887435 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887436\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887436 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887437\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887437 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887438\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887438 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887441\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887441 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887442\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887442 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887443\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887443 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887444\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887444 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887445\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887445 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887446\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887446 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887447\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887447 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887449\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887449 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887450\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887450 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887451\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887451 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887452\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887452 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887453\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887453 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887454\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887454 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887455\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887455 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 44/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887456\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887456 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887457\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887457 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887459\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887459 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887460\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887460 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887461\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887461 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 45/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887462\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887462 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887463\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887463 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887464\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887464 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887465\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887465 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887470\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887470 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887471\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887471 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887472\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887472 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887473\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887473 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887475\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887475 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887476\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887476 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887477\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887477 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887478\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887478 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887479\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887479 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887480\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887480 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887486\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887486 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887491\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887491 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887492\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887492 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887494\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887494 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887495\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887495 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887496\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887496 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887498\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887498 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887499\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887499 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887500\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887500 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887501\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887501 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887502\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887502 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887503\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887503 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887504\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887504 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887505\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887505 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887507\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887507 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887508\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887508 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887509\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887509 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 46/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887510\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887510 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887813\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887813 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 70/137\n", - "processing 71/137\n", - "processing 72/137\n", - "processing 73/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 74/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 75/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "HTTP Request Error: HTTP Error 400: Bad Request\n", - "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.0001\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "processing 76/137\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "HTTP Request Error: HTTP Error 400: Bad Request\n", - "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.001\n", - "HTTP Request Error: HTTP Error 400: Bad Request\n", - "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.01\n", - "HTTP Request Error: HTTP Error 400: Bad Request\n", - "Using simplified polygon (for CMR request only!), 5 points using tolerance of 0.1\n", - "HTTP Request Error: HTTP Error 400: Bad Request\n", - "Using simplified polygon (for CMR request only!), 5 points using tolerance of 1.0\n", - "HTTP Request Error: HTTP Error 400: Bad Request\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "processing 77/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 78/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 79/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 80/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 81/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 82/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 83/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 84/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 85/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 86/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 87/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 88/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 89/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "processing 90/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887825\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887825 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887826\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887826 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887827\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887827 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887829\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887829 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887831\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887831 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887832\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887832 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 91/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887833\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887833 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887834\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887834 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887835\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887835 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887836\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887836 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887838\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887838 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887840\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887840 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887841\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887841 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887842\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887842 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887843\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887843 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887844\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887844 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887845\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887845 of 1 order(s) is downloaded.\n", - "Download complete\n", - "processing 92/137\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887846\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887846 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887847\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887847 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887849\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887849 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887850\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887850 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887851\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887851 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887853\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887853 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887854\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887854 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887855\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887855 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887856\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887856 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887857\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887857 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887859\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887859 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887860\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887860 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887861\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887861 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887862\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887862 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887863\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887863 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887864\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005887864 of 1 order(s) is downloaded.\n", - "Download complete\n", - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005887865\n", - "Initial status of your order request at NSIDC is: pending\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still pending at NSIDC. Please continue waiting... this may take a few moments.\n" - ] - } - ], - "source": [ - "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", - "search_hrs = 6\n", - "search_km = 4\n", - "# try first half of entries first for memory usage before reprocessing/deleting\n", - "for jj in range(42,len(FF)):\n", - " print('processing '+str(jj) +'/'+str(len(FF)))# give a printout every 100 for my sanity\n", - "\n", - " # define a search region around the buoy \n", - " lat = FF['geospatial_lat_min'][jj]\n", - " lon = FF['geospatial_lon_min'][jj]\n", - " poly_cmr,poly_ipx = buoy_bound_box(lat,lon,search_km)\n", - "\n", - " # search CMR for ATL03 granules in the bounding box\n", - " grns = earthdata.cmr(short_name=\"ATL03\",\n", - " polygon=poly_cmr,\n", - " version='006')\n", - " # save the times for each granule as a datetime object\n", - " icesat_times = [fname2datetime(fname) for fname in grns]\n", - "\n", - " # now check if buoy data exists for these granules,\n", - " e = ERDDAP(server=FF['url'][jj],\n", - " protocol=\"tabledap\",\n", - " response=\"csv\")\n", - " e.dataset_id = FF['sites'][jj]\n", - "\n", - " for t in icesat_times:\n", - " # add a time buffer to search for relevant buoy data for each granule,\n", - " t_start = (t-timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", - " t_end = (t+timedelta(hours=search_hrs)).strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n", - " e.constraints = {\"time>=\": t_start,\n", - " \"time<=\": t_end}\n", - " # try to download the associated buoy data\n", - " try:\n", - " buoy = e.to_pandas() \n", - " except:\n", - " continue\n", - " \n", - " # if buoy data exists, download the ATL03 photons in the bounding box at this time\n", - " short_name = 'ATL03'\n", - " t_start = (t-timedelta(hours=search_hrs))\n", - " t_end = (t+timedelta(hours=search_hrs))\n", - " date_range = [t_start,t_end]\n", - " region = ipx.Query(short_name, poly_ipx, date_range)\n", - " try:\n", - " region.download_granules('data/')\n", - " except:\n", - " continue\n", - " buoy.to_csv('data/data_'+str(e.dataset_id)+'_'+str(t_start)+'.csv')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "0e91ffef-8a80-4cbe-ac5b-3fd2c41e4842", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:36:21,370 - INFO - ./data/processed_ATL03_20230522000040_09411906_006_02.h5\n", - "2024-12-20 18:36:21,372 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:37:18,341 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:37:18,342 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:37:18,434 - INFO - SUCCESS!\n", - "2024-12-20 18:37:18,444 - INFO - ./data/processed_ATL03_20230617102857_13451902_006_02.h5\n", - "2024-12-20 18:37:18,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:37:38,125 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:37:38,126 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:37:38,161 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:37:38,161 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:37:38,219 - INFO - SUCCESS!\n", - "2024-12-20 18:37:38,228 - INFO - ./data/processed_ATL03_20230818073219_09032002_006_02.h5\n", - "2024-12-20 18:37:38,230 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:37:38,537 - INFO - ./data/processed_ATL03_20230820193948_09412006_006_02.h5\n", - "2024-12-20 18:37:38,540 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:37:55,607 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:37:55,608 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:37:55,663 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:37:55,663 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:37:55,720 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:37:55,721 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:37:55,802 - INFO - SUCCESS!\n", - "2024-12-20 18:37:55,812 - INFO - ./data/processed_ATL03_20231119151937_09412106_006_02.h5\n", - "2024-12-20 18:37:55,816 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:38:08,627 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:38:08,628 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:08,694 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:38:08,694 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:08,784 - INFO - SUCCESS!\n", - "2024-12-20 18:38:08,795 - INFO - ./data/processed_ATL03_20240818021806_09412406_006_01.h5\n", - "2024-12-20 18:38:08,798 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:38:17,313 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:38:17,314 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:17,359 - INFO - SUCCESS!\n", - "2024-12-20 18:38:17,369 - INFO - ./data/processed_ATL03_20190730182707_04990406_006_02.h5\n", - "2024-12-20 18:38:17,372 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:38:35,078 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:38:35,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:35,111 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:38:35,111 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:35,148 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:38:35,149 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:35,203 - INFO - SUCCESS!\n", - "2024-12-20 18:38:35,213 - INFO - ./data/processed_ATL03_20181228043955_13830106_006_02.h5\n", - "2024-12-20 18:38:35,216 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:38:41,337 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:38:41,378 - INFO - ./data/processed_ATL03_20190123150831_04000202_006_02.h5\n", - "2024-12-20 18:38:41,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:38:56,583 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:38:56,584 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:56,594 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:38:56,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:38:56,679 - INFO - SUCCESS!\n", - "2024-12-20 18:38:56,690 - INFO - ./data/processed_ATL03_20190329001949_13830206_006_02.h5\n", - "2024-12-20 18:38:56,692 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:39:08,469 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:39:08,469 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:39:08,521 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:39:08,522 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:39:08,602 - INFO - SUCCESS!\n", - "2024-12-20 18:39:08,614 - INFO - ./data/processed_ATL03_20230220042100_09411806_006_02.h5\n", - "2024-12-20 18:39:08,616 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:39:15,350 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:39:15,390 - INFO - ./data/processed_ATL03_20230318144941_13451802_006_02.h5\n", - "2024-12-20 18:39:15,392 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:39:15,710 - INFO - ./data/processed_ATL03_20190529212325_09410306_006_02.h5\n", - "2024-12-20 18:39:15,714 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:39:28,653 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:39:28,653 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:39:28,691 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:39:28,692 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:39:28,752 - INFO - SUCCESS!\n", - "2024-12-20 18:39:28,762 - INFO - ./data/processed_ATL03_20190625075156_13450302_006_02.h5\n", - "2024-12-20 18:39:28,764 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:39:29,078 - INFO - ./data/processed_ATL03_20190828170314_09410406_006_02.h5\n", - "2024-12-20 18:39:29,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:39:36,424 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:39:36,424 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:39:36,447 - INFO - SUCCESS!\n", - "2024-12-20 18:39:36,456 - INFO - ./data/processed_ATL03_20190924033150_13450402_006_02.h5\n", - "2024-12-20 18:39:36,458 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:39:48,162 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:39:48,203 - INFO - ./data/processed_ATL03_20191029140704_04990506_006_01.h5\n", - "2024-12-20 18:39:48,205 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:39:54,966 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:39:54,966 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:39:54,986 - INFO - SUCCESS!\n", - "2024-12-20 18:39:54,995 - INFO - ./data/processed_ATL03_20191223231137_13450502_006_01.h5\n", - "2024-12-20 18:39:54,997 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:01,777 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:40:01,821 - INFO - ./data/processed_ATL03_20200223201519_09030602_006_01.h5\n", - "2024-12-20 18:40:01,836 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:40:02,276 - INFO - ./data/processed_ATL03_20200527040238_09410706_006_01.h5\n", - "2024-12-20 18:40:02,278 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:02,653 - INFO - ./data/processed_ATL03_20200622143109_13450702_006_01.h5\n", - "2024-12-20 18:40:02,656 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:16,099 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:40:16,100 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:40:16,122 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:40:16,123 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:40:16,173 - INFO - SUCCESS!\n", - "2024-12-20 18:40:16,187 - INFO - ./data/processed_ATL03_20200823113454_09030802_006_01.h5\n", - "2024-12-20 18:40:16,192 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:40:16,530 - INFO - ./data/processed_ATL03_20200825234225_09410806_006_01.h5\n", - "2024-12-20 18:40:16,534 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:23,852 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:40:23,897 - INFO - ./data/processed_ATL03_20201124192214_09410906_006_01.h5\n", - "2024-12-20 18:40:23,899 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:31,006 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:40:31,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:40:31,099 - INFO - SUCCESS!\n", - "2024-12-20 18:40:31,110 - INFO - ./data/processed_ATL03_20201221055049_13450902_006_01.h5\n", - "2024-12-20 18:40:31,112 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:37,827 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:40:37,828 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:40:37,856 - INFO - SUCCESS!\n", - "2024-12-20 18:40:37,869 - INFO - ./data/processed_ATL03_20210221025439_09031002_006_01.h5\n", - "2024-12-20 18:40:37,872 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:44,747 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:40:44,748 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:40:44,836 - INFO - SUCCESS!\n", - "2024-12-20 18:40:44,854 - INFO - ./data/processed_ATL03_20210223150209_09411006_006_01.h5\n", - "2024-12-20 18:40:44,858 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:40:52,049 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:40:52,049 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:40:52,141 - INFO - SUCCESS!\n", - "2024-12-20 18:40:52,151 - INFO - ./data/processed_ATL03_20210525104159_09411106_006_01.h5\n", - "2024-12-20 18:40:52,194 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:40:52,533 - INFO - ./data/processed_ATL03_20210620211031_13451102_006_01.h5\n", - "2024-12-20 18:40:52,536 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:13,781 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:41:13,782 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:13,846 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:41:13,847 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:13,903 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:41:13,904 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:13,996 - INFO - SUCCESS!\n", - "2024-12-20 18:41:14,009 - INFO - ./data/processed_ATL03_20210824062153_09411206_006_01.h5\n", - "2024-12-20 18:41:14,013 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:41:14,928 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 18:41:14,941 - INFO - ./data/processed_ATL03_20210919165028_13451202_006_02.h5\n", - "2024-12-20 18:41:14,966 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:15,344 - INFO - ./data/processed_ATL03_20211120135422_09031302_006_01.h5\n", - "2024-12-20 18:41:15,347 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:29,304 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:41:29,304 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:29,350 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:41:29,350 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:29,434 - INFO - SUCCESS!\n", - "2024-12-20 18:41:29,445 - INFO - ./data/processed_ATL03_20220320081016_13451402_006_01.h5\n", - "2024-12-20 18:41:29,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:41:29,855 - INFO - ./data/processed_ATL03_20220424184529_04991506_006_02.h5\n", - "2024-12-20 18:41:29,860 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:30,212 - INFO - ./data/processed_ATL03_20220917233003_13451602_006_01.h5\n", - "2024-12-20 18:41:30,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:30,587 - INFO - ./data/processed_ATL03_20221118203343_09031702_006_02.h5\n", - "2024-12-20 18:41:30,590 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:30,928 - INFO - ./data/processed_ATL03_20211123020151_09411306_006_01.h5\n", - "2024-12-20 18:41:30,932 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:37,516 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:41:37,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:37,557 - INFO - SUCCESS!\n", - "2024-12-20 18:41:37,567 - INFO - ./data/processed_ATL03_20220221214141_09411406_006_01.h5\n", - "2024-12-20 18:41:37,572 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:41:51,784 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:41:51,785 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:51,846 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:41:51,846 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:41:51,924 - INFO - SUCCESS!\n", - "2024-12-20 18:41:51,935 - INFO - ./data/processed_ATL03_20220619035009_13451502_006_01.h5\n", - "2024-12-20 18:41:51,938 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:42:05,818 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:42:05,819 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:42:05,837 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:42:05,838 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:42:05,877 - INFO - SUCCESS!\n", - "2024-12-20 18:42:05,887 - INFO - ./data/processed_ATL03_20220822130132_09411606_006_01.h5\n", - "2024-12-20 18:42:05,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:42:06,248 - INFO - ./data/processed_ATL03_20221121084113_09411706_006_02.h5\n", - "2024-12-20 18:42:06,250 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:42:25,940 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:42:25,940 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:42:26,004 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:42:26,004 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:42:26,059 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:42:26,060 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:42:26,098 - INFO - SUCCESS!\n", - "2024-12-20 18:42:26,109 - INFO - ./data/processed_ATL03_20201028083020_05220902_006_01.h5\n", - "2024-12-20 18:42:26,114 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:42:33,500 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:42:33,547 - INFO - ./data/processed_ATL03_20210430115735_05601106_006_02.h5\n", - "2024-12-20 18:42:33,550 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:42:33,944 - INFO - ./data/processed_ATL03_20210526222609_09641102_006_01.h5\n", - "2024-12-20 18:42:33,949 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:42:34,290 - INFO - ./data/processed_ATL03_20210727192957_05221202_006_01.h5\n", - "2024-12-20 18:42:34,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:42:41,640 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:42:41,641 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:42:41,747 - INFO - SUCCESS!\n", - "2024-12-20 18:42:41,757 - INFO - ./data/processed_ATL03_20220125104947_05221402_006_01.h5\n", - "2024-12-20 18:42:41,762 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:42:48,264 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:42:48,308 - INFO - ./data/processed_ATL03_20221024214924_05221702_006_01.h5\n", - "2024-12-20 18:42:48,312 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:43:02,132 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:43:02,176 - INFO - ./data/processed_ATL03_20230724084806_05222002_006_02.h5\n", - "2024-12-20 18:43:02,180 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:43:16,359 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:43:16,359 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:43:16,416 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:43:16,417 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:43:16,492 - INFO - SUCCESS!\n", - "2024-12-20 18:43:16,503 - INFO - ./data/processed_ATL03_20240122000711_05222202_006_01.h5\n", - "2024-12-20 18:43:16,505 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:43:23,088 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:43:23,088 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:43:23,186 - INFO - SUCCESS!\n", - "2024-12-20 18:43:23,196 - INFO - ./data/processed_ATL03_20240721152625_05222402_006_01.h5\n", - "2024-12-20 18:43:23,198 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:43:30,240 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:43:30,240 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:43:30,280 - INFO - SUCCESS!\n", - "2024-12-20 18:43:30,290 - INFO - ./data/processed_ATL03_20181126175618_09030102_006_02.h5\n", - "2024-12-20 18:43:30,292 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:43:30,679 - INFO - ./data/processed_ATL03_20181129060347_09410106_006_02.h5\n", - "2024-12-20 18:43:30,682 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:43:37,628 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:43:37,675 - INFO - ./data/processed_ATL03_20181225163224_13450102_006_02.h5\n", - "2024-12-20 18:43:37,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:43:38,022 - INFO - ./data/processed_ATL03_20191011023251_02170502_006_02.h5\n", - "2024-12-20 18:43:38,027 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:43:51,767 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:43:51,768 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:43:51,785 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:43:51,785 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:43:51,814 - INFO - SUCCESS!\n", - "2024-12-20 18:43:51,824 - INFO - ./data/processed_ATL03_20210127041015_05221002_006_01.h5\n", - "2024-12-20 18:43:51,826 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:43:58,513 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:43:58,556 - INFO - ./data/processed_ATL03_20211026150956_05221302_006_01.h5\n", - "2024-12-20 18:43:58,561 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:43:59,277 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 18:43:59,290 - INFO - ./data/processed_ATL03_20220525050540_09641502_006_01.h5\n", - "2024-12-20 18:43:59,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:06,645 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:44:06,646 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:44:06,713 - INFO - SUCCESS!\n", - "2024-12-20 18:44:06,723 - INFO - ./data/processed_ATL03_20220726020939_05221602_006_02.h5\n", - "2024-12-20 18:44:06,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:13,334 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:44:13,335 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:44:13,402 - INFO - SUCCESS!\n", - "2024-12-20 18:44:13,413 - INFO - ./data/processed_ATL03_20230123172907_05221802_006_02.h5\n", - "2024-12-20 18:44:13,415 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:20,790 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:44:20,790 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:44:20,842 - INFO - SUCCESS!\n", - "2024-12-20 18:44:20,853 - INFO - ./data/processed_ATL03_20231023042740_05222102_006_02.h5\n", - "2024-12-20 18:44:20,858 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:28,108 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:44:28,153 - INFO - ./data/processed_ATL03_20240421194634_05222302_006_01.h5\n", - "2024-12-20 18:44:28,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:35,037 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:44:35,037 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:44:35,077 - INFO - SUCCESS!\n", - "2024-12-20 18:44:35,088 - INFO - ./data/processed_ATL03_20181024192838_04000102_006_02.h5\n", - "2024-12-20 18:44:35,091 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:44:35,435 - INFO - ./data/processed_ATL03_20190326121219_13450202_006_02.h5\n", - "2024-12-20 18:44:35,438 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:35,767 - INFO - ./data/processed_ATL03_20220925231323_00801702_006_01.h5\n", - "2024-12-20 18:44:35,771 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:42,980 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:44:43,023 - INFO - ./data/processed_ATL03_20221027095652_05601706_006_01.h5\n", - "2024-12-20 18:44:43,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:44:43,394 - INFO - ./data/processed_ATL03_20221225185248_00801802_006_02.h5\n", - "2024-12-20 18:44:43,396 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:50,026 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:44:50,027 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:44:50,045 - INFO - SUCCESS!\n", - "2024-12-20 18:44:50,054 - INFO - ./data/processed_ATL03_20230126053650_05601806_006_02.h5\n", - "2024-12-20 18:44:50,057 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:44:57,599 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:44:57,641 - INFO - ./data/processed_ATL03_20230424130854_05221902_006_02.h5\n", - "2024-12-20 18:44:57,646 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:44:57,979 - INFO - ./data/processed_ATL03_20230427011622_05601906_006_02.h5\n", - "2024-12-20 18:44:57,982 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:45:18,007 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:45:18,009 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:45:18,069 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:45:18,070 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:45:18,128 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:45:18,129 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:45:18,210 - INFO - SUCCESS!\n", - "2024-12-20 18:45:18,223 - INFO - ./data/processed_ATL03_20230625101216_00802002_006_02.h5\n", - "2024-12-20 18:45:18,226 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:45:25,022 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:45:25,023 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:45:25,115 - INFO - SUCCESS!\n", - "2024-12-20 18:45:25,126 - INFO - ./data/processed_ATL03_20230726205535_05602006_006_02.h5\n", - "2024-12-20 18:45:25,130 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:45:39,269 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:45:39,270 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:45:39,333 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:45:39,334 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:45:39,424 - INFO - SUCCESS!\n", - "2024-12-20 18:45:39,435 - INFO - ./data/processed_ATL03_20230924055129_00802102_006_02.h5\n", - "2024-12-20 18:45:39,442 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:45:45,971 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:45:46,016 - INFO - ./data/processed_ATL03_20231025163513_05602106_006_02.h5\n", - "2024-12-20 18:45:46,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:46:06,436 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:46:06,436 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:06,450 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:46:06,451 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:06,474 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:46:06,475 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:06,506 - INFO - SUCCESS!\n", - "2024-12-20 18:46:06,517 - INFO - ./data/processed_ATL03_20231224013120_00802202_006_02.h5\n", - "2024-12-20 18:46:06,520 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:46:07,043 - INFO - ./data/processed_ATL03_20240424075408_05602306_006_01.h5\n", - "2024-12-20 18:46:07,046 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:46:14,789 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:46:14,836 - INFO - ./data/processed_ATL03_20240622165003_00802402_006_01.h5\n", - "2024-12-20 18:46:14,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:46:15,184 - INFO - ./data/processed_ATL03_20190718185159_03160406_006_02.h5\n", - "2024-12-20 18:46:15,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:46:35,759 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:46:35,760 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:35,805 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:46:35,806 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:35,841 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:46:35,842 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:35,924 - INFO - SUCCESS!\n", - "2024-12-20 18:46:35,938 - INFO - ./data/processed_ATL03_20190816172811_07580406_006_02.h5\n", - "2024-12-20 18:46:35,942 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:46:51,060 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:46:51,061 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:51,101 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:46:51,101 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:46:51,161 - INFO - SUCCESS!\n", - "2024-12-20 18:46:51,218 - INFO - ./data/processed_ATL03_20190912035646_11620402_006_02.h5\n", - "2024-12-20 18:46:51,249 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:46:51,981 - INFO - ./data/processed_ATL03_20240124121440_05602206_006_01.h5\n", - "2024-12-20 18:46:51,983 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:46:53,481 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 18:46:53,493 - INFO - ./data/processed_ATL03_20240323211037_00802302_006_01.h5\n", - "2024-12-20 18:46:53,495 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:46:53,959 - INFO - ./data/processed_ATL03_20240724033350_05602406_006_01.h5\n", - "2024-12-20 18:46:53,963 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:47:07,528 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:47:07,529 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:07,570 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:47:07,571 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:07,644 - INFO - SUCCESS!\n", - "2024-12-20 18:47:07,654 - INFO - ./data/processed_ATL03_20190613081656_11620302_006_02.h5\n", - "2024-12-20 18:47:07,657 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:47:07,992 - INFO - ./data/processed_ATL03_20210628205352_00801202_006_01.h5\n", - "2024-12-20 18:47:07,995 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:47:14,777 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:47:14,778 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:14,799 - INFO - SUCCESS!\n", - "2024-12-20 18:47:14,809 - INFO - ./data/processed_ATL03_20210730073729_05601206_006_01.h5\n", - "2024-12-20 18:47:14,814 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:47:35,246 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:47:35,246 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:35,256 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:47:35,256 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:35,267 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:47:35,267 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:35,305 - INFO - SUCCESS!\n", - "2024-12-20 18:47:35,317 - INFO - ./data/processed_ATL03_20210927163349_00801302_006_02.h5\n", - "2024-12-20 18:47:35,321 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:47:49,664 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:47:49,665 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:49,700 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:47:49,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:47:49,754 - INFO - SUCCESS!\n", - "2024-12-20 18:47:49,767 - INFO - ./data/processed_ATL03_20211029031727_05601306_006_01.h5\n", - "2024-12-20 18:47:49,773 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:47:50,118 - INFO - ./data/processed_ATL03_20220127225716_05601406_006_01.h5\n", - "2024-12-20 18:47:50,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:48:10,466 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:48:10,467 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:10,517 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:48:10,517 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:10,574 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:48:10,575 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:10,657 - INFO - SUCCESS!\n", - "2024-12-20 18:48:10,668 - INFO - ./data/processed_ATL03_20220330200106_01181506_006_01.h5\n", - "2024-12-20 18:48:10,670 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:48:11,022 - INFO - ./data/processed_ATL03_20220426062938_05221502_006_02.h5\n", - "2024-12-20 18:48:11,025 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:48:24,198 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:48:24,198 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:24,255 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:48:24,256 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:24,286 - INFO - SUCCESS!\n", - "2024-12-20 18:48:24,295 - INFO - ./data/processed_ATL03_20220728141707_05601606_006_02.h5\n", - "2024-12-20 18:48:24,299 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:48:31,677 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:48:31,677 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:31,764 - INFO - SUCCESS!\n", - "2024-12-20 18:48:31,774 - INFO - ./data/processed_ATL03_20201229053409_00801002_006_01.h5\n", - "2024-12-20 18:48:31,776 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:48:38,829 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 18:48:38,839 - INFO - ./data/processed_ATL03_20210129161746_05601006_006_01.h5\n", - "2024-12-20 18:48:38,841 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:48:59,460 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:48:59,461 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:59,499 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:48:59,500 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:59,523 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:48:59,524 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:48:59,554 - INFO - SUCCESS!\n", - "2024-12-20 18:48:59,567 - INFO - ./data/processed_ATL03_20210401132132_01181106_006_02.h5\n", - "2024-12-20 18:48:59,569 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:49:07,741 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:49:07,742 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:49:07,788 - INFO - SUCCESS!\n", - "2024-12-20 18:49:07,799 - INFO - ./data/processed_ATL03_20210427235004_05221102_006_02.h5\n", - "2024-12-20 18:49:07,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:49:21,940 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:49:21,941 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:49:21,998 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:49:21,998 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:49:22,079 - INFO - SUCCESS!\n", - "2024-12-20 18:49:22,089 - INFO - ./data/processed_ATL03_20201030203751_05600906_006_01.h5\n", - "2024-12-20 18:49:22,092 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:49:22,415 - INFO - ./data/processed_ATL03_20190424104819_04000302_006_02.h5\n", - "2024-12-20 18:49:22,417 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:49:37,197 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:49:37,198 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:49:37,208 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:49:37,208 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:49:37,249 - INFO - SUCCESS!\n", - "2024-12-20 18:49:37,260 - INFO - ./data/processed_ATL03_20190724062753_04000402_006_02.h5\n", - "2024-12-20 18:49:37,264 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:49:37,634 - INFO - ./data/processed_ATL03_20191226111907_13830506_006_01.h5\n", - "2024-12-20 18:49:37,636 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:49:37,955 - INFO - ./data/processed_ATL03_20200121214737_04000602_006_01.h5\n", - "2024-12-20 18:49:37,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:49:52,360 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:49:52,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:49:52,411 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:49:52,412 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:49:52,491 - INFO - SUCCESS!\n", - "2024-12-20 18:49:52,501 - INFO - ./data/processed_ATL03_20200326065849_13830606_006_01.h5\n", - "2024-12-20 18:49:52,503 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:49:52,882 - INFO - ./data/processed_ATL03_20200421172726_04000702_006_02.h5\n", - "2024-12-20 18:49:52,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:49:53,382 - INFO - ./data/processed_ATL03_20200625023839_13830706_006_01.h5\n", - "2024-12-20 18:49:53,385 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:49:54,380 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 18:49:54,391 - INFO - ./data/processed_ATL03_20200721130713_04000802_006_01.h5\n", - "2024-12-20 18:49:54,419 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:50:15,521 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:50:15,521 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:15,528 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:50:15,528 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:15,584 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:50:15,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:15,669 - INFO - SUCCESS!\n", - "2024-12-20 18:50:15,682 - INFO - ./data/processed_ATL03_20200923221828_13830806_006_02.h5\n", - "2024-12-20 18:50:15,685 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:50:31,732 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:50:31,733 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:31,787 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:50:31,788 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:31,834 - INFO - SUCCESS!\n", - "2024-12-20 18:50:31,844 - INFO - ./data/processed_ATL03_20201020084700_04000902_006_01.h5\n", - "2024-12-20 18:50:31,847 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:50:39,216 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:50:39,258 - INFO - ./data/processed_ATL03_20201223175818_13830906_006_01.h5\n", - "2024-12-20 18:50:39,262 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:50:59,704 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:50:59,705 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:59,712 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:50:59,713 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:59,778 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:50:59,779 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:50:59,870 - INFO - SUCCESS!\n", - "2024-12-20 18:50:59,882 - INFO - ./data/processed_ATL03_20210119042651_04001002_006_01.h5\n", - "2024-12-20 18:50:59,886 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:51:15,710 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:51:15,711 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:51:15,765 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:51:15,766 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:51:15,813 - INFO - SUCCESS!\n", - "2024-12-20 18:51:15,823 - INFO - ./data/processed_ATL03_20210324133810_13831006_006_01.h5\n", - "2024-12-20 18:51:15,826 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:51:16,175 - INFO - ./data/processed_ATL03_20210420000645_04001102_006_02.h5\n", - "2024-12-20 18:51:16,178 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:51:16,585 - INFO - ./data/processed_ATL03_20210518224248_08421102_006_01.h5\n", - "2024-12-20 18:51:16,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:51:16,926 - INFO - ./data/processed_ATL03_20210623091801_13831106_006_01.h5\n", - "2024-12-20 18:51:16,932 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:51:23,632 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:51:23,633 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:51:23,736 - INFO - SUCCESS!\n", - "2024-12-20 18:51:23,746 - INFO - ./data/processed_ATL03_20210719194636_04001202_006_01.h5\n", - "2024-12-20 18:51:23,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:51:39,942 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:51:39,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:51:39,949 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:51:39,950 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:51:40,036 - INFO - SUCCESS!\n", - "2024-12-20 18:51:40,050 - INFO - ./data/processed_ATL03_20210922045758_13831206_006_02.h5\n", - "2024-12-20 18:51:40,052 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:51:55,288 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:51:55,288 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:51:55,324 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:51:55,325 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:51:55,394 - INFO - SUCCESS!\n", - "2024-12-20 18:51:55,405 - INFO - ./data/processed_ATL03_20211018152633_04001302_006_01.h5\n", - "2024-12-20 18:51:55,407 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:03,548 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:52:03,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:52:03,651 - INFO - SUCCESS!\n", - "2024-12-20 18:52:03,662 - INFO - ./data/processed_ATL03_20211222003753_13831306_006_01.h5\n", - "2024-12-20 18:52:03,665 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:52:04,016 - INFO - ./data/processed_ATL03_20220117110628_04001402_006_01.h5\n", - "2024-12-20 18:52:04,020 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:11,675 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:52:11,721 - INFO - ./data/processed_ATL03_20220322201746_13831406_006_01.h5\n", - "2024-12-20 18:52:11,723 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:26,421 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:52:26,421 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:52:26,475 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:52:26,475 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:52:26,554 - INFO - SUCCESS!\n", - "2024-12-20 18:52:26,573 - INFO - ./data/processed_ATL03_20220418064609_04001502_006_02.h5\n", - "2024-12-20 18:52:26,576 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:42,215 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:52:42,216 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:52:42,266 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:52:42,266 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:52:42,344 - INFO - SUCCESS!\n", - "2024-12-20 18:52:42,356 - INFO - ./data/processed_ATL03_20220517052223_08421502_006_01.h5\n", - "2024-12-20 18:52:42,359 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:52:42,686 - INFO - ./data/processed_ATL03_20220621155743_13831506_006_01.h5\n", - "2024-12-20 18:52:42,689 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:48,801 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:52:48,801 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:52:48,819 - INFO - SUCCESS!\n", - "2024-12-20 18:52:48,830 - INFO - ./data/processed_ATL03_20191027015934_04610502_006_01.h5\n", - "2024-12-20 18:52:48,832 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:55,499 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 18:52:55,508 - INFO - ./data/processed_ATL03_20191201123444_10020506_006_01.h5\n", - "2024-12-20 18:52:55,517 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:56,467 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 18:52:56,480 - INFO - ./data/processed_ATL03_20181118181306_07810102_006_02.h5\n", - "2024-12-20 18:52:56,483 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:52:57,086 - INFO - ./data/processed_ATL03_20181121062036_08190106_006_02.h5\n", - "2024-12-20 18:52:57,089 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:57,401 - INFO - ./data/processed_ATL03_20190122032419_03770206_006_02.h5\n", - "2024-12-20 18:52:57,404 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:57,754 - INFO - ./data/processed_ATL03_20190220020027_08190206_006_02.h5\n", - "2024-12-20 18:52:57,757 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:52:58,086 - INFO - ./data/processed_ATL03_20190519093236_07810302_006_02.h5\n", - "2024-12-20 18:52:58,088 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:15,016 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:53:15,016 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:53:15,035 - INFO - SUCCESS!\n", - "2024-12-20 18:53:15,046 - INFO - ./data/processed_ATL03_20190521214005_08190306_006_02.h5\n", - "2024-12-20 18:53:15,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:21,138 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:53:21,139 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:53:21,198 - INFO - SUCCESS!\n", - "2024-12-20 18:53:21,210 - INFO - ./data/processed_ATL03_20190722184342_03770406_006_02.h5\n", - "2024-12-20 18:53:21,214 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:27,584 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:53:27,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:53:27,610 - INFO - SUCCESS!\n", - "2024-12-20 18:53:27,620 - INFO - ./data/processed_ATL03_20190820171953_08190406_006_02.h5\n", - "2024-12-20 18:53:27,623 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:44,534 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:53:44,535 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:53:44,584 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:53:44,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:53:44,665 - INFO - SUCCESS!\n", - "2024-12-20 18:53:44,675 - INFO - ./data/processed_ATL03_20190916034827_12230402_006_02.h5\n", - "2024-12-20 18:53:44,677 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:53:45,138 - INFO - ./data/processed_ATL03_20191117005216_07810502_006_01.h5\n", - "2024-12-20 18:53:45,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:45,726 - INFO - ./data/processed_ATL03_20191215232815_12230502_006_01.h5\n", - "2024-12-20 18:53:45,730 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:46,203 - INFO - ./data/processed_ATL03_20200215203158_07810602_006_01.h5\n", - "2024-12-20 18:53:46,206 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:46,770 - INFO - ./data/processed_ATL03_20200218083929_08190606_006_01.h5\n", - "2024-12-20 18:53:46,774 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:47,371 - INFO - ./data/processed_ATL03_20200420054315_03770706_006_02.h5\n", - "2024-12-20 18:53:47,376 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:47,780 - INFO - ./data/processed_ATL03_20200516161149_07810702_006_01.h5\n", - "2024-12-20 18:53:47,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:48,176 - INFO - ./data/processed_ATL03_20200519041919_08190706_006_01.h5\n", - "2024-12-20 18:53:48,189 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:53:48,508 - INFO - ./data/processed_ATL03_20200815115134_07810802_006_01.h5\n", - "2024-12-20 18:53:48,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:00,997 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:54:00,998 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:01,021 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:54:01,022 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:01,066 - INFO - SUCCESS!\n", - "2024-12-20 18:54:01,076 - INFO - ./data/processed_ATL03_20200817235904_08190806_006_01.h5\n", - "2024-12-20 18:54:01,079 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:10,212 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:54:10,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:10,302 - INFO - SUCCESS!\n", - "2024-12-20 18:54:10,311 - INFO - ./data/processed_ATL03_20201114073123_07810902_006_01.h5\n", - "2024-12-20 18:54:10,313 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:16,700 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:54:16,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:16,739 - INFO - SUCCESS!\n", - "2024-12-20 18:54:16,748 - INFO - ./data/processed_ATL03_20201116193853_08190906_006_01.h5\n", - "2024-12-20 18:54:16,751 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:24,451 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:54:24,452 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:24,510 - INFO - SUCCESS!\n", - "2024-12-20 18:54:24,519 - INFO - ./data/processed_ATL03_20210213031117_07811002_006_01.h5\n", - "2024-12-20 18:54:24,521 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:54:25,110 - INFO - ./data/processed_ATL03_20210215151846_08191006_006_01.h5\n", - "2024-12-20 18:54:25,113 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:25,772 - INFO - ./data/processed_ATL03_20210612212711_12231102_006_01.h5\n", - "2024-12-20 18:54:25,774 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:26,088 - INFO - ./data/processed_ATL03_20210813183101_07811202_006_01.h5\n", - "2024-12-20 18:54:26,090 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:41,594 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:54:41,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:41,622 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:54:41,622 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:41,698 - INFO - SUCCESS!\n", - "2024-12-20 18:54:41,708 - INFO - ./data/processed_ATL03_20210816063831_08191206_006_01.h5\n", - "2024-12-20 18:54:41,714 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:48,429 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:54:48,430 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:48,483 - INFO - SUCCESS!\n", - "2024-12-20 18:54:48,498 - INFO - ./data/processed_ATL03_20211112141101_07811302_006_01.h5\n", - "2024-12-20 18:54:48,501 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:54:54,800 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:54:54,800 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:54:54,892 - INFO - SUCCESS!\n", - "2024-12-20 18:54:54,902 - INFO - ./data/processed_ATL03_20211115021831_08191306_006_01.h5\n", - "2024-12-20 18:54:54,905 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:55:12,318 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:55:12,319 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:12,363 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:55:12,363 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:12,434 - INFO - SUCCESS!\n", - "2024-12-20 18:55:12,444 - INFO - ./data/processed_ATL03_20220211095049_07811402_006_01.h5\n", - "2024-12-20 18:55:12,446 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:55:24,884 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:55:24,885 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:24,915 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:55:24,916 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:24,997 - INFO - SUCCESS!\n", - "2024-12-20 18:55:25,008 - INFO - ./data/processed_ATL03_20220213215819_08191406_006_01.h5\n", - "2024-12-20 18:55:25,012 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:55:31,343 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:55:31,344 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:31,384 - INFO - SUCCESS!\n", - "2024-12-20 18:55:31,394 - INFO - ./data/processed_ATL03_20220716144204_03771606_006_02.h5\n", - "2024-12-20 18:55:31,397 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:55:31,735 - INFO - ./data/processed_ATL03_20220812011038_07811602_006_01.h5\n", - "2024-12-20 18:55:31,737 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:55:32,101 - INFO - ./data/processed_ATL03_20221110205019_07811702_006_01.h5\n", - "2024-12-20 18:55:32,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:55:56,248 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:55:56,248 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:56,314 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:55:56,315 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:56,383 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:55:56,384 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:55:56,481 - INFO - SUCCESS!\n", - "2024-12-20 18:55:56,493 - INFO - ./data/processed_ATL03_20221113085750_08191706_006_02.h5\n", - "2024-12-20 18:55:56,496 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:55:56,957 - INFO - ./data/processed_ATL03_20230209163012_07811802_006_02.h5\n", - "2024-12-20 18:55:56,960 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:56:12,713 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:56:12,713 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:56:12,742 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:56:12,743 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:56:12,825 - INFO - SUCCESS!\n", - "2024-12-20 18:56:12,836 - INFO - ./data/processed_ATL03_20230212043742_08191806_006_02.h5\n", - "2024-12-20 18:56:12,839 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:56:21,604 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:56:21,605 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:56:21,660 - INFO - SUCCESS!\n", - "2024-12-20 18:56:21,671 - INFO - ./data/processed_ATL03_20230415014121_03771906_006_03.h5\n", - "2024-12-20 18:56:21,674 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:56:21,998 - INFO - ./data/processed_ATL03_20230511120952_07811902_006_02.h5\n", - "2024-12-20 18:56:22,001 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:56:22,398 - INFO - ./data/processed_ATL03_20230514001721_08191906_006_02.h5\n", - "2024-12-20 18:56:22,401 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:56:22,763 - INFO - ./data/processed_ATL03_20230810074903_07812002_006_02.h5\n", - "2024-12-20 18:56:22,766 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:56:35,640 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:56:35,641 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:56:35,703 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:56:35,704 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:56:35,787 - INFO - SUCCESS!\n", - "2024-12-20 18:56:35,797 - INFO - ./data/processed_ATL03_20230812195633_08192006_006_02.h5\n", - "2024-12-20 18:56:35,804 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:56:45,182 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:56:45,183 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:56:45,281 - INFO - SUCCESS!\n", - "2024-12-20 18:56:45,292 - INFO - ./data/processed_ATL03_20231109032835_07812102_006_01.h5\n", - "2024-12-20 18:56:45,295 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:56:45,713 - INFO - ./data/processed_ATL03_20231111153609_08192106_006_01.h5\n", - "2024-12-20 18:56:45,717 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:56:52,490 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:56:52,491 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:56:52,547 - INFO - SUCCESS!\n", - "2024-12-20 18:56:52,560 - INFO - ./data/processed_ATL03_20240207230812_07812202_006_01.h5\n", - "2024-12-20 18:56:52,564 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:57:07,215 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:57:07,216 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:57:07,222 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:57:07,223 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:57:07,249 - INFO - SUCCESS!\n", - "2024-12-20 18:57:07,259 - INFO - ./data/processed_ATL03_20240210111538_08192206_006_01.h5\n", - "2024-12-20 18:57:07,261 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:57:16,287 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:57:16,288 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:57:16,345 - INFO - SUCCESS!\n", - "2024-12-20 18:57:16,363 - INFO - ./data/processed_ATL03_20240508184728_07812302_006_01.h5\n", - "2024-12-20 18:57:16,365 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:57:23,592 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:57:23,648 - INFO - ./data/processed_ATL03_20240807142742_07812402_006_01.h5\n", - "2024-12-20 18:57:23,651 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:57:30,063 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:57:30,064 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:57:30,121 - INFO - SUCCESS!\n", - "2024-12-20 18:57:30,131 - INFO - ./data/processed_ATL03_20240810023508_08192406_006_01.h5\n", - "2024-12-20 18:57:30,134 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:57:30,467 - INFO - ./data/processed_ATL03_20181209170541_11010102_006_02.h5\n", - "2024-12-20 18:57:30,469 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:57:47,779 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:57:47,780 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:57:47,790 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:57:47,790 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:57:47,809 - INFO - SUCCESS!\n", - "2024-12-20 18:57:47,821 - INFO - ./data/processed_ATL03_20190110034917_01940206_006_02.h5\n", - "2024-12-20 18:57:47,823 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:57:54,375 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:57:54,375 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:57:54,420 - INFO - SUCCESS!\n", - "2024-12-20 18:57:54,430 - INFO - ./data/processed_ATL03_20190310124541_11010202_006_02.h5\n", - "2024-12-20 18:57:54,431 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:58:06,768 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:58:06,769 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:58:06,824 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:58:06,825 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:58:06,907 - INFO - SUCCESS!\n", - "2024-12-20 18:58:06,918 - INFO - ./data/processed_ATL03_20190410232910_01940306_006_02.h5\n", - "2024-12-20 18:58:06,922 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:58:07,821 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 18:58:07,833 - INFO - ./data/processed_ATL03_20190609082516_11010302_006_02.h5\n", - "2024-12-20 18:58:07,834 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:58:31,095 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:58:31,096 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:58:31,155 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:58:31,155 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:58:31,209 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:58:31,209 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:58:31,291 - INFO - SUCCESS!\n", - "2024-12-20 18:58:31,305 - INFO - ./data/processed_ATL03_20201205062406_11010902_006_01.h5\n", - "2024-12-20 18:58:31,307 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:58:37,868 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 18:58:37,911 - INFO - ./data/processed_ATL03_20210903172344_11011202_006_02.h5\n", - "2024-12-20 18:58:37,913 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:01,857 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 18:59:01,857 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:01,891 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:59:01,892 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:01,942 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:59:01,943 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:02,021 - INFO - SUCCESS!\n", - "2024-12-20 18:59:02,033 - INFO - ./data/processed_ATL03_20211005040722_01941306_006_01.h5\n", - "2024-12-20 18:59:02,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:59:02,336 - INFO - ./data/processed_ATL03_20220531073914_10571506_006_01.h5\n", - "2024-12-20 18:59:02,338 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:03,725 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 18:59:03,739 - INFO - ./data/processed_ATL03_20220626180747_00741602_006_01.h5\n", - "2024-12-20 18:59:03,743 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:04,066 - INFO - ./data/processed_ATL03_20220830031910_10571606_006_01.h5\n", - "2024-12-20 18:59:04,069 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:05,079 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 18:59:05,092 - INFO - ./data/processed_ATL03_20221126105121_10191702_006_02.h5\n", - "2024-12-20 18:59:05,097 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 18:59:05,516 - INFO - ./data/processed_ATL03_20190905164633_10630406_006_02.h5\n", - "2024-12-20 18:59:05,519 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:21,363 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:59:21,364 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:21,385 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:59:21,385 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:21,407 - INFO - SUCCESS!\n", - "2024-12-20 18:59:21,419 - INFO - ./data/processed_ATL03_20191006030651_01410502_006_02.h5\n", - "2024-12-20 18:59:21,422 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:27,940 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:59:27,941 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:27,983 - INFO - SUCCESS!\n", - "2024-12-20 18:59:27,992 - INFO - ./data/processed_ATL03_20191106135023_06210506_006_01.h5\n", - "2024-12-20 18:59:27,994 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:42,493 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:59:42,494 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:42,527 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:59:42,528 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:42,576 - INFO - SUCCESS!\n", - "2024-12-20 18:59:42,586 - INFO - ./data/processed_ATL03_20201003094552_01410902_006_01.h5\n", - "2024-12-20 18:59:42,589 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 18:59:57,933 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 18:59:57,934 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:57,971 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 18:59:57,972 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 18:59:58,021 - INFO - SUCCESS!\n", - "2024-12-20 18:59:58,031 - INFO - ./data/processed_ATL03_20201103202930_06210906_006_01.h5\n", - "2024-12-20 18:59:58,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:21,118 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:00:21,119 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:00:21,173 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:00:21,174 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:00:21,219 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:00:21,220 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:00:21,272 - INFO - SUCCESS!\n", - "2024-12-20 19:00:21,283 - INFO - ./data/processed_ATL03_20200805004942_06210806_006_01.h5\n", - "2024-12-20 19:00:21,285 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:27,930 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:00:27,931 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:00:27,960 - INFO - SUCCESS!\n", - "2024-12-20 19:00:27,972 - INFO - ./data/processed_ATL03_20200704140608_01410802_006_01.h5\n", - "2024-12-20 19:00:27,975 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:29,403 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:00:29,419 - INFO - ./data/processed_ATL03_20181108071124_06210106_006_02.h5\n", - "2024-12-20 19:00:29,424 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:30,399 - ERROR - An error occurred: cannot convert float NaN to integer\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:30,411 - INFO - ./data/processed_ATL03_20190807181029_06210406_006_02.h5\n", - "2024-12-20 19:00:30,414 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:00:31,135 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:00:31,154 - INFO - ./data/processed_ATL03_20200205093007_06210606_006_01.h5\n", - "2024-12-20 19:00:31,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:31,523 - INFO - ./data/processed_ATL03_20200306195018_10860602_006_01.h5\n", - "2024-12-20 19:00:31,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:31,894 - INFO - ./data/processed_ATL03_20200404182622_01410702_006_03.h5\n", - "2024-12-20 19:00:31,897 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:00:55,594 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:00:55,595 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:00:55,643 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:00:55,644 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:00:55,667 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:00:55,667 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:00:55,744 - INFO - SUCCESS!\n", - "2024-12-20 19:00:55,757 - INFO - ./data/processed_ATL03_20200506050956_06210706_006_01.h5\n", - "2024-12-20 19:00:55,760 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:01:15,592 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:01:15,592 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:01:15,603 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:01:15,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:01:15,659 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:01:15,659 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:01:15,738 - INFO - SUCCESS!\n", - "2024-12-20 19:01:15,750 - INFO - ./data/processed_ATL03_20190508223048_06210306_006_02.h5\n", - "2024-12-20 19:01:15,753 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:01:25,309 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:01:25,310 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:01:25,337 - INFO - SUCCESS!\n", - "2024-12-20 19:01:25,347 - INFO - ./data/processed_ATL03_20191104014253_05830502_006_01.h5\n", - "2024-12-20 19:01:25,350 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:01:25,683 - INFO - ./data/processed_ATL03_20230202172748_06741812_006_02.h5\n", - "2024-12-20 19:01:25,687 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:01:41,570 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:01:41,570 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:01:41,615 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:01:41,616 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:01:41,690 - INFO - SUCCESS!\n", - "2024-12-20 19:01:41,703 - INFO - ./data/processed_ATL03_20181016140107_02740107_006_02.h5\n", - "2024-12-20 19:01:41,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:01:42,354 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:01:42,365 - INFO - ./data/processed_ATL03_20181114123724_07160107_006_02.h5\n", - "2024-12-20 19:01:42,368 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:01:48,971 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:01:48,971 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:01:49,013 - INFO - SUCCESS!\n", - "2024-12-20 19:01:49,023 - INFO - ./data/processed_ATL03_20190107215156_01600201_006_02.h5\n", - "2024-12-20 19:01:49,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:02:13,952 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:02:13,953 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:13,997 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:02:13,998 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:14,037 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:02:14,038 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:14,087 - INFO - SUCCESS!\n", - "2024-12-20 19:02:14,102 - INFO - ./data/processed_ATL03_20190115094052_02740207_006_02.h5\n", - "2024-12-20 19:02:14,105 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:02:30,077 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:02:30,077 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:30,104 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:02:30,104 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:30,159 - INFO - SUCCESS!\n", - "2024-12-20 19:02:30,169 - INFO - ./data/processed_ATL03_20190716010019_02740407_006_02.h5\n", - "2024-12-20 19:02:30,172 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:02:30,832 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:02:30,843 - INFO - ./data/processed_ATL03_20191007085119_01600501_006_02.h5\n", - "2024-12-20 19:02:30,846 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:02:31,244 - INFO - ./data/processed_ATL03_20181030075330_04840106_006_02.h5\n", - "2024-12-20 19:02:31,246 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:02:43,637 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:02:43,637 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:43,697 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:02:43,698 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:43,781 - INFO - SUCCESS!\n", - "2024-12-20 19:02:43,791 - INFO - ./data/processed_ATL03_20181104192927_05680102_006_02.h5\n", - "2024-12-20 19:02:43,795 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:02:51,642 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:02:51,642 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:02:51,671 - INFO - SUCCESS!\n", - "2024-12-20 19:02:51,681 - INFO - ./data/processed_ATL03_20190129033327_04840206_006_02.h5\n", - "2024-12-20 19:02:51,683 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:03:13,259 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:03:13,260 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:13,314 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:03:13,315 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:13,372 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:03:13,372 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:13,445 - INFO - SUCCESS!\n", - "2024-12-20 19:03:13,456 - INFO - ./data/processed_ATL03_20190203150920_05680202_006_02.h5\n", - "2024-12-20 19:03:13,458 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:03:13,773 - INFO - ./data/processed_ATL03_20190429231307_04840306_006_02.h5\n", - "2024-12-20 19:03:13,780 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:03:14,584 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:03:14,596 - INFO - ./data/processed_ATL03_20190505104857_05680302_006_02.h5\n", - "2024-12-20 19:03:14,599 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:03:14,942 - INFO - ./data/processed_ATL03_20190729185246_04840406_006_02.h5\n", - "2024-12-20 19:03:14,944 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:03:32,628 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:03:32,629 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:32,682 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:03:32,682 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:32,728 - INFO - SUCCESS!\n", - "2024-12-20 19:03:32,742 - INFO - ./data/processed_ATL03_20200427055215_04840706_006_02.h5\n", - "2024-12-20 19:03:32,745 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:03:45,563 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:03:45,563 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:45,620 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:03:45,621 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:45,667 - INFO - SUCCESS!\n", - "2024-12-20 19:03:45,678 - INFO - ./data/processed_ATL03_20200531160408_10100702_006_01.h5\n", - "2024-12-20 19:03:45,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:03:52,270 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:03:52,270 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:03:52,293 - INFO - SUCCESS!\n", - "2024-12-20 19:03:52,303 - INFO - ./data/processed_ATL03_20200727013202_04840806_006_01.h5\n", - "2024-12-20 19:03:52,305 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:04:09,674 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:04:09,675 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:04:09,728 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:04:09,729 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:04:09,777 - INFO - SUCCESS!\n", - "2024-12-20 19:04:09,786 - INFO - ./data/processed_ATL03_20200801130752_05680802_006_01.h5\n", - "2024-12-20 19:04:09,788 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:04:16,260 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:04:16,269 - INFO - ./data/processed_ATL03_20181129230459_09520103_006_02.h5\n", - "2024-12-20 19:04:16,272 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:04:22,941 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:04:22,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:04:23,028 - INFO - SUCCESS!\n", - "2024-12-20 19:04:23,038 - INFO - ./data/processed_ATL03_20190329172101_00070303_006_02.h5\n", - "2024-12-20 19:04:23,041 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:04:23,368 - INFO - ./data/processed_ATL03_20190331054015_00300305_006_02.h5\n", - "2024-12-20 19:04:23,371 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:04:23,701 - INFO - ./data/processed_ATL03_20190429041614_04720305_006_02.h5\n", - "2024-12-20 19:04:23,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:04:32,921 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:04:32,922 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:04:32,961 - INFO - SUCCESS!\n", - "2024-12-20 19:04:32,975 - INFO - ./data/processed_ATL03_20190530142437_09520303_006_02.h5\n", - "2024-12-20 19:04:32,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:04:39,679 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:04:39,679 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:04:39,727 - INFO - SUCCESS!\n", - "2024-12-20 19:04:39,737 - INFO - ./data/processed_ATL03_20190728235552_04720405_006_02.h5\n", - "2024-12-20 19:04:39,739 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:04:48,193 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:04:48,193 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:04:48,278 - INFO - SUCCESS!\n", - "2024-12-20 19:04:48,289 - INFO - ./data/processed_ATL03_20190927084032_00070503_006_02.h5\n", - "2024-12-20 19:04:48,292 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:04,735 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:05:04,736 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:04,790 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:05:04,791 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:04,850 - INFO - SUCCESS!\n", - "2024-12-20 19:05:04,862 - INFO - ./data/processed_ATL03_20190928205946_00300505_006_02.h5\n", - "2024-12-20 19:05:04,869 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:05:05,177 - INFO - ./data/processed_ATL03_20191027193549_04720505_006_01.h5\n", - "2024-12-20 19:05:05,179 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:12,127 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:05:12,128 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:12,173 - INFO - SUCCESS!\n", - "2024-12-20 19:05:12,184 - INFO - ./data/processed_ATL03_20191228163932_00300605_006_01.h5\n", - "2024-12-20 19:05:12,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:05:12,498 - INFO - ./data/processed_ATL03_20200327000000_00070703_006_01.h5\n", - "2024-12-20 19:05:12,500 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:18,946 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:05:18,947 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:19,014 - INFO - SUCCESS!\n", - "2024-12-20 19:05:19,024 - INFO - ./data/processed_ATL03_20200328121916_00300705_006_01.h5\n", - "2024-12-20 19:05:19,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:05:19,354 - INFO - ./data/processed_ATL03_20200426105522_04720705_006_02.h5\n", - "2024-12-20 19:05:19,359 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:27,849 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:05:27,850 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:27,944 - INFO - SUCCESS!\n", - "2024-12-20 19:05:27,955 - INFO - ./data/processed_ATL03_20200527210350_09520703_006_01.h5\n", - "2024-12-20 19:05:27,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:05:28,284 - INFO - ./data/processed_ATL03_20200625193951_00070803_006_01.h5\n", - "2024-12-20 19:05:28,286 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:28,625 - INFO - ./data/processed_ATL03_20200627075905_00300805_006_01.h5\n", - "2024-12-20 19:05:28,628 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:28,948 - INFO - ./data/processed_ATL03_20200726063509_04720805_006_01.h5\n", - "2024-12-20 19:05:28,952 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:38,385 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:05:38,386 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:38,433 - INFO - SUCCESS!\n", - "2024-12-20 19:05:38,444 - INFO - ./data/processed_ATL03_20200826164337_09520803_006_01.h5\n", - "2024-12-20 19:05:38,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:45,537 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:05:45,538 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:45,600 - INFO - SUCCESS!\n", - "2024-12-20 19:05:45,610 - INFO - ./data/processed_ATL03_20200924151940_00070903_006_02.h5\n", - "2024-12-20 19:05:45,613 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:05:46,283 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:05:46,294 - INFO - ./data/processed_ATL03_20200926033854_00300905_006_02.h5\n", - "2024-12-20 19:05:46,297 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:46,617 - INFO - ./data/processed_ATL03_20201025021454_04720905_006_01.h5\n", - "2024-12-20 19:05:46,619 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:52,952 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:05:52,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:05:52,985 - INFO - SUCCESS!\n", - "2024-12-20 19:05:52,995 - INFO - ./data/processed_ATL03_20201125122327_09520903_006_01.h5\n", - "2024-12-20 19:05:52,998 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:05:53,332 - INFO - ./data/processed_ATL03_20201225231845_00301005_006_01.h5\n", - "2024-12-20 19:05:53,335 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:05:53,662 - INFO - ./data/processed_ATL03_20210123215451_04721005_006_01.h5\n", - "2024-12-20 19:05:53,664 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:00,837 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:06:00,838 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:06:00,925 - INFO - SUCCESS!\n", - "2024-12-20 19:06:00,936 - INFO - ./data/processed_ATL03_20210325063922_00071103_006_01.h5\n", - "2024-12-20 19:06:00,941 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:06:01,857 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:06:01,869 - INFO - ./data/processed_ATL03_20210326185836_00301105_006_01.h5\n", - "2024-12-20 19:06:01,872 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:02,207 - INFO - ./data/processed_ATL03_20210424173440_04721105_006_02.h5\n", - "2024-12-20 19:06:02,210 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:02,524 - INFO - ./data/processed_ATL03_20210624021913_00071203_006_01.h5\n", - "2024-12-20 19:06:02,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:02,850 - INFO - ./data/processed_ATL03_20210625143827_00301205_006_01.h5\n", - "2024-12-20 19:06:02,853 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:03,184 - INFO - ./data/processed_ATL03_20210824232305_09521203_006_01.h5\n", - "2024-12-20 19:06:03,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:14,602 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:06:14,603 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:06:14,652 - INFO - SUCCESS!\n", - "2024-12-20 19:06:14,668 - INFO - ./data/processed_ATL03_20210922215910_00071303_006_02.h5\n", - "2024-12-20 19:06:14,677 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:06:15,085 - INFO - ./data/processed_ATL03_20211023085432_04721305_006_01.h5\n", - "2024-12-20 19:06:15,088 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:15,976 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:06:15,991 - INFO - ./data/processed_ATL03_20211123190303_09521303_006_01.h5\n", - "2024-12-20 19:06:15,994 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:17,360 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:06:17,376 - INFO - ./data/processed_ATL03_20211222173905_00071403_006_01.h5\n", - "2024-12-20 19:06:17,378 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:30,469 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:06:30,469 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:06:30,529 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:06:30,530 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:06:30,612 - INFO - SUCCESS!\n", - "2024-12-20 19:06:30,623 - INFO - ./data/processed_ATL03_20211224055819_00301405_006_01.h5\n", - "2024-12-20 19:06:30,627 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:46,659 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:06:46,660 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:06:46,714 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:06:46,715 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:06:46,797 - INFO - SUCCESS!\n", - "2024-12-20 19:06:46,808 - INFO - ./data/processed_ATL03_20220122043423_04721405_006_01.h5\n", - "2024-12-20 19:06:46,810 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:06:55,360 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:06:55,405 - INFO - ./data/processed_ATL03_20220222144253_09521403_006_01.h5\n", - "2024-12-20 19:06:55,408 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:06:56,020 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:06:56,032 - INFO - ./data/processed_ATL03_20181021083545_03470106_006_02.h5\n", - "2024-12-20 19:06:56,037 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:07:02,605 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:07:02,606 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:07:02,627 - INFO - SUCCESS!\n", - "2024-12-20 19:07:02,638 - INFO - ./data/processed_ATL03_20181202183059_09950102_006_02.h5\n", - "2024-12-20 19:07:02,640 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:07:02,984 - INFO - ./data/processed_ATL03_20190120041533_03470206_006_02.h5\n", - "2024-12-20 19:07:02,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:07:03,313 - INFO - ./data/processed_ATL03_20190420235527_03470306_006_02.h5\n", - "2024-12-20 19:07:03,317 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:07:09,929 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:07:09,974 - INFO - ./data/processed_ATL03_20190720193459_03470406_006_02.h5\n", - "2024-12-20 19:07:09,977 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:07:26,399 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:07:26,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:07:26,456 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:07:26,456 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:07:26,533 - INFO - SUCCESS!\n", - "2024-12-20 19:07:26,545 - INFO - ./data/processed_ATL03_20190818181111_07890406_006_02.h5\n", - "2024-12-20 19:07:26,548 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:07:34,559 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:07:34,560 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:07:34,592 - INFO - SUCCESS!\n", - "2024-12-20 19:07:34,603 - INFO - ./data/processed_ATL03_20190930040628_00500502_006_02.h5\n", - "2024-12-20 19:07:34,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:07:57,122 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:07:57,123 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:07:57,180 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:07:57,181 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:07:57,237 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:07:57,237 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:07:57,321 - INFO - SUCCESS!\n", - "2024-12-20 19:07:57,332 - INFO - ./data/processed_ATL03_20200229204958_09950602_006_01.h5\n", - "2024-12-20 19:07:57,335 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:08:03,587 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:08:03,588 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:08:03,675 - INFO - SUCCESS!\n", - "2024-12-20 19:08:03,685 - INFO - ./data/processed_ATL03_20200329192559_00500702_006_01.h5\n", - "2024-12-20 19:08:03,688 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:08:12,128 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:08:12,128 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:08:12,217 - INFO - SUCCESS!\n", - "2024-12-20 19:08:12,226 - INFO - ./data/processed_ATL03_20200418063433_03470706_006_02.h5\n", - "2024-12-20 19:08:12,229 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:09:06,436 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:09:06,437 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:06,498 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:09:06,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:06,530 - INFO - SUCCESS!\n", - "2024-12-20 19:09:06,540 - INFO - ./data/processed_ATL03_20191231225456_00800602_006_01.h5\n", - "2024-12-20 19:09:06,545 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:09:06,891 - INFO - ./data/processed_ATL03_20200201093829_05600606_006_01.h5\n", - "2024-12-20 19:09:06,894 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:09:22,428 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:09:22,428 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:22,485 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:09:22,485 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:22,567 - INFO - SUCCESS!\n", - "2024-12-20 19:09:22,577 - INFO - ./data/processed_ATL03_20200403064211_01180706_006_03.h5\n", - "2024-12-20 19:09:22,579 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:09:22,895 - INFO - ./data/processed_ATL03_20200429171045_05220702_006_02.h5\n", - "2024-12-20 19:09:22,898 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:09:44,379 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:09:44,380 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:44,436 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:09:44,436 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:44,489 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:09:44,490 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:44,527 - INFO - SUCCESS!\n", - "2024-12-20 19:09:44,538 - INFO - ./data/processed_ATL03_20200729125033_05220802_006_01.h5\n", - "2024-12-20 19:09:44,540 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:09:44,881 - INFO - ./data/processed_ATL03_20200801005803_05600806_006_01.h5\n", - "2024-12-20 19:09:44,884 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:09:54,250 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:09:54,251 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:09:54,340 - INFO - SUCCESS!\n", - "2024-12-20 19:09:54,351 - INFO - ./data/processed_ATL03_20190902131515_10150405_006_02.h5\n", - "2024-12-20 19:09:54,353 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:10:00,752 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:10:00,761 - INFO - ./data/processed_ATL03_20190914000523_11900403_006_02.h5\n", - "2024-12-20 19:10:00,764 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:10:01,087 - INFO - ./data/processed_ATL03_20191012224129_02450503_006_02.h5\n", - "2024-12-20 19:10:01,089 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:10:01,931 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:10:01,944 - INFO - ./data/processed_ATL03_20191103101903_05730505_006_01.h5\n", - "2024-12-20 19:10:01,947 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:10:16,354 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:10:16,355 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:10:16,371 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:10:16,372 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:10:16,392 - INFO - SUCCESS!\n", - "2024-12-20 19:10:16,402 - INFO - ./data/processed_ATL03_20191202085504_10150505_006_01.h5\n", - "2024-12-20 19:10:16,405 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:10:25,709 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:10:25,709 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:10:25,774 - INFO - SUCCESS!\n", - "2024-12-20 19:10:25,784 - INFO - ./data/processed_ATL03_20191213194511_11900503_006_01.h5\n", - "2024-12-20 19:10:25,786 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:10:26,103 - INFO - ./data/processed_ATL03_20200111182113_02450603_006_01.h5\n", - "2024-12-20 19:10:26,105 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:10:33,205 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:10:33,250 - INFO - ./data/processed_ATL03_20200202055849_05730605_006_01.h5\n", - "2024-12-20 19:10:33,255 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:10:34,119 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:10:34,133 - INFO - ./data/processed_ATL03_20200302043448_10150605_006_01.h5\n", - "2024-12-20 19:10:34,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:10:40,404 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:10:40,405 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:10:40,445 - INFO - SUCCESS!\n", - "2024-12-20 19:10:40,454 - INFO - ./data/processed_ATL03_20200313152500_11900603_006_01.h5\n", - "2024-12-20 19:10:40,457 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:10:40,798 - INFO - ./data/processed_ATL03_20200411140101_02450703_006_02.h5\n", - "2024-12-20 19:10:40,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:10:58,916 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:10:58,917 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:10:58,964 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:10:58,965 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:10:59,028 - INFO - SUCCESS!\n", - "2024-12-20 19:10:59,065 - INFO - ./data/processed_ATL03_20200503013836_05730705_006_01.h5\n", - "2024-12-20 19:10:59,069 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:06,075 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:11:06,120 - INFO - ./data/processed_ATL03_20200601001440_10150705_006_01.h5\n", - "2024-12-20 19:11:06,123 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:12,554 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:11:12,555 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:11:12,633 - INFO - SUCCESS!\n", - "2024-12-20 19:11:12,642 - INFO - ./data/processed_ATL03_20200612110444_11900703_006_01.h5\n", - "2024-12-20 19:11:12,645 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:11:13,000 - INFO - ./data/processed_ATL03_20200711094047_02450803_006_01.h5\n", - "2024-12-20 19:11:13,003 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:31,199 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:11:31,199 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:11:31,254 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:11:31,254 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:11:31,353 - INFO - SUCCESS!\n", - "2024-12-20 19:11:31,366 - INFO - ./data/processed_ATL03_20200801211823_05730805_006_01.h5\n", - "2024-12-20 19:11:31,373 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:11:32,538 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:11:32,551 - INFO - ./data/processed_ATL03_20200830195426_10150805_006_01.h5\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:32,576 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:39,829 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:11:39,830 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:11:39,877 - INFO - SUCCESS!\n", - "2024-12-20 19:11:39,886 - INFO - ./data/processed_ATL03_20200911064433_11900803_006_02.h5\n", - "2024-12-20 19:11:39,889 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:11:40,212 - INFO - ./data/processed_ATL03_20201010052034_02450903_006_01.h5\n", - "2024-12-20 19:11:40,215 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:41,170 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:11:41,181 - INFO - ./data/processed_ATL03_20201031165812_05730905_006_01.h5\n", - "2024-12-20 19:11:41,184 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:54,057 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:11:54,058 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:11:54,092 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:11:54,092 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:11:54,123 - INFO - SUCCESS!\n", - "2024-12-20 19:11:54,133 - INFO - ./data/processed_ATL03_20201211022425_11900903_006_01.h5\n", - "2024-12-20 19:11:54,142 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:11:55,028 - INFO - ./data/processed_ATL03_20210109010029_02451003_006_01.h5\n", - "2024-12-20 19:11:55,031 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:11:56,325 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:11:56,337 - INFO - ./data/processed_ATL03_20210130123807_05731005_006_01.h5\n", - "2024-12-20 19:11:56,357 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:12:14,032 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:12:14,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:12:14,041 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:12:14,042 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:12:14,065 - INFO - SUCCESS!\n", - "2024-12-20 19:12:14,075 - INFO - ./data/processed_ATL03_20210228111407_10151005_006_01.h5\n", - "2024-12-20 19:12:14,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:12:20,794 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:12:20,795 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:12:20,896 - INFO - SUCCESS!\n", - "2024-12-20 19:12:20,906 - INFO - ./data/processed_ATL03_20210311220417_11901003_006_01.h5\n", - "2024-12-20 19:12:20,910 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:12:21,242 - INFO - ./data/processed_ATL03_20210409204021_02451103_006_02.h5\n", - "2024-12-20 19:12:21,244 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:12:37,495 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:12:37,496 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:12:37,542 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:12:37,543 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:12:37,616 - INFO - SUCCESS!\n", - "2024-12-20 19:12:37,626 - INFO - ./data/processed_ATL03_20210501081756_05731105_006_01.h5\n", - "2024-12-20 19:12:37,629 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:12:38,577 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:12:38,590 - INFO - ./data/processed_ATL03_20210530065400_10151105_006_01.h5\n", - "2024-12-20 19:12:38,592 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:12:45,523 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:12:45,524 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:12:45,599 - INFO - SUCCESS!\n", - "2024-12-20 19:12:45,612 - INFO - ./data/processed_ATL03_20210610174408_11901103_006_01.h5\n", - "2024-12-20 19:12:45,658 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:12:46,007 - INFO - ./data/processed_ATL03_20210709162010_02451203_006_01.h5\n", - "2024-12-20 19:12:46,011 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:01,000 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:13:01,000 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:13:01,062 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:13:01,063 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:13:01,148 - INFO - SUCCESS!\n", - "2024-12-20 19:13:01,159 - INFO - ./data/processed_ATL03_20210731035749_05731205_006_01.h5\n", - "2024-12-20 19:13:01,161 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:17,174 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:13:17,221 - INFO - ./data/processed_ATL03_20191215174405_12190507_006_01.h5\n", - "2024-12-20 19:13:17,224 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:13:17,542 - INFO - ./data/processed_ATL03_20200909045147_11580807_006_02.h5\n", - "2024-12-20 19:13:17,545 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:17,871 - INFO - ./data/processed_ATL03_20181126034741_08940102_006_02.h5\n", - "2024-12-20 19:13:17,873 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:18,210 - INFO - ./data/processed_ATL03_20190316103614_11910206_006_02.h5\n", - "2024-12-20 19:13:18,213 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:18,613 - INFO - ./data/processed_ATL03_20190511155926_06630301_006_02.h5\n", - "2024-12-20 19:13:18,616 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:18,946 - INFO - ./data/processed_ATL03_20190515035648_07160307_006_02.h5\n", - "2024-12-20 19:13:18,948 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:19,268 - INFO - ./data/processed_ATL03_20181229161704_00190201_006_02.h5\n", - "2024-12-20 19:13:19,272 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:34,635 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:13:34,635 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:13:34,666 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:13:34,667 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:13:34,741 - INFO - SUCCESS!\n", - "2024-12-20 19:13:34,753 - INFO - ./data/processed_ATL03_20190102041429_00720207_006_02.h5\n", - "2024-12-20 19:13:34,770 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:13:51,414 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:13:51,414 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:13:51,456 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:13:51,456 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:13:51,518 - INFO - SUCCESS!\n", - "2024-12-20 19:13:51,529 - INFO - ./data/processed_ATL03_20190330115657_00190301_006_02.h5\n", - "2024-12-20 19:13:51,531 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:14:04,907 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:14:04,908 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:14:04,915 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:14:04,916 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:14:04,977 - INFO - SUCCESS!\n", - "2024-12-20 19:14:04,987 - INFO - ./data/processed_ATL03_20190402235420_00720307_006_02.h5\n", - "2024-12-20 19:14:04,990 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:14:22,975 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:14:22,976 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:14:23,012 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:14:23,013 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:14:23,068 - INFO - SUCCESS!\n", - "2024-12-20 19:14:23,078 - INFO - ./data/processed_ATL03_20190928031628_00190501_006_02.h5\n", - "2024-12-20 19:14:23,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:14:23,477 - INFO - ./data/processed_ATL03_20191027015232_04610501_006_01.h5\n", - "2024-12-20 19:14:23,480 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:14:23,832 - INFO - ./data/processed_ATL03_20191227225615_00190601_006_01.h5\n", - "2024-12-20 19:14:23,841 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:14:30,128 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:14:30,129 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:14:30,174 - INFO - SUCCESS!\n", - "2024-12-20 19:14:30,183 - INFO - ./data/processed_ATL03_20191231105337_00720607_006_01.h5\n", - "2024-12-20 19:14:30,185 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:14:30,505 - INFO - ./data/processed_ATL03_20200327183557_00190701_006_01.h5\n", - "2024-12-20 19:14:30,508 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:14:30,853 - INFO - ./data/processed_ATL03_20200331063319_00720707_006_01.h5\n", - "2024-12-20 19:14:30,856 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:14:37,661 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:14:37,662 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:14:37,724 - INFO - SUCCESS!\n", - "2024-12-20 19:14:37,733 - INFO - ./data/processed_ATL03_20200626141547_00190801_006_01.h5\n", - "2024-12-20 19:14:37,736 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:15:02,235 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:15:02,237 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:02,263 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:15:02,264 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:02,310 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:15:02,310 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:02,375 - INFO - SUCCESS!\n", - "2024-12-20 19:15:02,388 - INFO - ./data/processed_ATL03_20200630021310_00720807_006_01.h5\n", - "2024-12-20 19:15:02,391 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:15:09,461 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:15:09,461 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:09,524 - INFO - SUCCESS!\n", - "2024-12-20 19:15:09,533 - INFO - ./data/processed_ATL03_20200925095536_00190901_006_02.h5\n", - "2024-12-20 19:15:09,536 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:15:19,023 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:15:19,023 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:19,089 - INFO - SUCCESS!\n", - "2024-12-20 19:15:19,100 - INFO - ./data/processed_ATL03_20200928215259_00720907_006_02.h5\n", - "2024-12-20 19:15:19,102 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:15:33,346 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:15:33,347 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:33,376 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:15:33,377 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:33,426 - INFO - SUCCESS!\n", - "2024-12-20 19:15:33,437 - INFO - ./data/processed_ATL03_20201225053527_00191001_006_01.h5\n", - "2024-12-20 19:15:33,440 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:15:40,673 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:15:40,673 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:40,739 - INFO - SUCCESS!\n", - "2024-12-20 19:15:40,748 - INFO - ./data/processed_ATL03_20210329131242_00721107_006_01.h5\n", - "2024-12-20 19:15:40,752 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:15:41,120 - INFO - ./data/processed_ATL03_20210624205509_00191201_006_01.h5\n", - "2024-12-20 19:15:41,123 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:15:50,744 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:15:50,744 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:15:50,770 - INFO - SUCCESS!\n", - "2024-12-20 19:15:50,780 - INFO - ./data/processed_ATL03_20210628085233_00721207_006_01.h5\n", - "2024-12-20 19:15:50,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:03,464 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:16:03,465 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:03,495 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:16:03,496 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:03,561 - INFO - SUCCESS!\n", - "2024-12-20 19:16:03,571 - INFO - ./data/processed_ATL03_20210923163506_00191301_006_02.h5\n", - "2024-12-20 19:16:03,577 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:16:04,178 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:16:04,190 - INFO - ./data/processed_ATL03_20210927043230_00721307_006_02.h5\n", - "2024-12-20 19:16:04,193 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:05,055 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:16:05,067 - INFO - ./data/processed_ATL03_20210606163409_11281106_006_01.h5\n", - "2024-12-20 19:16:05,069 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l']\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:05,413 - INFO - ./data/processed_ATL03_20210613034420_12271102_006_01.h5\n", - "2024-12-20 19:16:05,416 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:14,405 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:16:14,406 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:14,487 - INFO - SUCCESS!\n", - "2024-12-20 19:16:14,497 - INFO - ./data/processed_ATL03_20210705151011_01831206_006_01.h5\n", - "2024-12-20 19:16:14,500 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:24,320 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:16:24,320 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:24,364 - INFO - SUCCESS!\n", - "2024-12-20 19:16:24,374 - INFO - ./data/processed_ATL03_20210712022024_02821202_006_01.h5\n", - "2024-12-20 19:16:24,379 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:16:24,845 - INFO - ./data/processed_ATL03_20210905121404_11281206_006_02.h5\n", - "2024-12-20 19:16:24,848 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:25,207 - INFO - ./data/processed_ATL03_20211004105012_01831306_006_01.h5\n", - "2024-12-20 19:16:25,211 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:32,163 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:16:32,164 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:32,262 - INFO - SUCCESS!\n", - "2024-12-20 19:16:32,272 - INFO - ./data/processed_ATL03_20211010220023_02821302_006_01.h5\n", - "2024-12-20 19:16:32,275 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:16:32,748 - INFO - ./data/processed_ATL03_20211205075401_11281306_006_01.h5\n", - "2024-12-20 19:16:32,753 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:33,166 - INFO - ./data/processed_ATL03_20211211190413_12271302_006_01.h5\n", - "2024-12-20 19:16:33,169 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:39,879 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:16:39,880 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:39,928 - INFO - SUCCESS!\n", - "2024-12-20 19:16:39,938 - INFO - ./data/processed_ATL03_20220103063004_01831406_006_01.h5\n", - "2024-12-20 19:16:39,940 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:47,006 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:16:47,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:47,092 - INFO - SUCCESS!\n", - "2024-12-20 19:16:47,101 - INFO - ./data/processed_ATL03_20220109174016_02821402_006_01.h5\n", - "2024-12-20 19:16:47,103 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:16:47,456 - INFO - ./data/processed_ATL03_20220604231346_11281506_006_01.h5\n", - "2024-12-20 19:16:47,475 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:47,855 - INFO - ./data/processed_ATL03_20220611102355_12271502_006_01.h5\n", - "2024-12-20 19:16:47,868 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:16:59,186 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:16:59,187 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:16:59,280 - INFO - SUCCESS!\n", - "2024-12-20 19:16:59,291 - INFO - ./data/processed_ATL03_20220703214953_01831606_006_02.h5\n", - "2024-12-20 19:16:59,294 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:06,397 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:17:06,397 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:17:06,436 - INFO - SUCCESS!\n", - "2024-12-20 19:17:06,447 - INFO - ./data/processed_ATL03_20220710090005_02821602_006_02.h5\n", - "2024-12-20 19:17:06,450 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:17:06,800 - INFO - ./data/processed_ATL03_20220903185343_11281606_006_01.h5\n", - "2024-12-20 19:17:06,803 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:07,181 - INFO - ./data/processed_ATL03_20190416052049_02740307_006_02.h5\n", - "2024-12-20 19:17:07,183 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:07,513 - INFO - ./data/processed_ATL03_20191014204022_02740507_006_02.h5\n", - "2024-12-20 19:17:07,516 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:07,910 - INFO - ./data/processed_ATL03_20200204030706_06020601_006_01.h5\n", - "2024-12-20 19:17:07,912 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:21,079 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:17:21,080 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:17:21,146 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:17:21,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:17:21,237 - INFO - SUCCESS!\n", - "2024-12-20 19:17:21,248 - INFO - ./data/processed_ATL03_20200413115954_02740707_006_02.h5\n", - "2024-12-20 19:17:21,251 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:17:21,664 - INFO - ./data/processed_ATL03_20200713073941_02740807_006_01.h5\n", - "2024-12-20 19:17:21,671 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:22,053 - INFO - ./data/processed_ATL03_20200807181820_06630801_006_01.h5\n", - "2024-12-20 19:17:22,087 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:22,848 - INFO - ./data/processed_ATL03_20201012031928_02740907_006_01.h5\n", - "2024-12-20 19:17:22,851 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:32,669 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:17:32,670 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:17:32,691 - INFO - SUCCESS!\n", - "2024-12-20 19:17:32,703 - INFO - ./data/processed_ATL03_20211203191349_11051301_006_01.h5\n", - "2024-12-20 19:17:32,706 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:17:33,077 - INFO - ./data/processed_ATL03_20211211070254_12191307_006_01.h5\n", - "2024-12-20 19:17:33,080 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:47,919 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:17:47,920 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:17:47,952 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:17:47,953 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:17:48,033 - INFO - SUCCESS!\n", - "2024-12-20 19:17:48,044 - INFO - ./data/processed_ATL03_20220101174952_01601401_006_01.h5\n", - "2024-12-20 19:17:48,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:17:55,041 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:17:55,042 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:17:55,117 - INFO - SUCCESS!\n", - "2024-12-20 19:17:55,126 - INFO - ./data/processed_ATL03_20220312024243_12191407_006_01.h5\n", - "2024-12-20 19:17:55,131 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:18:11,571 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:18:11,572 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:18:11,606 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:18:11,606 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:18:11,691 - INFO - SUCCESS!\n", - "2024-12-20 19:18:11,701 - INFO - ./data/processed_ATL03_20220402132944_01601501_006_02.h5\n", - "2024-12-20 19:18:11,704 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:18:19,851 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:18:19,852 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:18:19,890 - INFO - SUCCESS!\n", - "2024-12-20 19:18:19,900 - INFO - ./data/processed_ATL03_20220909180234_12191607_006_01.h5\n", - "2024-12-20 19:18:19,903 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:18:20,268 - INFO - ./data/processed_ATL03_20221209134210_12191707_006_02.h5\n", - "2024-12-20 19:18:20,270 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:18:36,796 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:18:36,797 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:18:36,821 - INFO - SUCCESS!\n", - "2024-12-20 19:18:36,832 - INFO - ./data/processed_ATL03_20221231002912_01601801_006_02.h5\n", - "2024-12-20 19:18:36,837 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:18:44,159 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:18:44,160 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:18:44,256 - INFO - SUCCESS!\n", - "2024-12-20 19:18:44,268 - INFO - ./data/processed_ATL03_20230310092201_12191807_006_02.h5\n", - "2024-12-20 19:18:44,270 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:18:58,666 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:18:58,667 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:18:58,700 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:18:58,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:18:58,780 - INFO - SUCCESS!\n", - "2024-12-20 19:18:58,791 - INFO - ./data/processed_ATL03_20230331200918_01601901_006_02.h5\n", - "2024-12-20 19:18:58,793 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:15,106 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:19:15,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:19:15,136 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:19:15,137 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:19:15,171 - INFO - SUCCESS!\n", - "2024-12-20 19:19:15,184 - INFO - ./data/processed_ATL03_20230609050126_12191907_006_02.h5\n", - "2024-12-20 19:19:15,187 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:27,934 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:19:27,935 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:19:27,966 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:19:27,966 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:19:28,048 - INFO - SUCCESS!\n", - "2024-12-20 19:19:28,057 - INFO - ./data/processed_ATL03_20181016005348_02660102_006_02.h5\n", - "2024-12-20 19:19:28,060 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:19:28,639 - INFO - ./data/processed_ATL03_20181128111219_09290106_006_02.h5\n", - "2024-12-20 19:19:28,642 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:28,972 - INFO - ./data/processed_ATL03_20181227094825_13710106_006_02.h5\n", - "2024-12-20 19:19:28,976 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:29,326 - INFO - ./data/processed_ATL03_20190114203334_02660202_006_02.h5\n", - "2024-12-20 19:19:29,329 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:40,307 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:19:40,307 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:19:40,355 - INFO - SUCCESS!\n", - "2024-12-20 19:19:40,364 - INFO - ./data/processed_ATL03_20190227065221_09290206_006_02.h5\n", - "2024-12-20 19:19:40,366 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:19:40,705 - INFO - ./data/processed_ATL03_20190328052820_13710206_006_02.h5\n", - "2024-12-20 19:19:40,707 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:41,041 - INFO - ./data/processed_ATL03_20190415161330_02660302_006_02.h5\n", - "2024-12-20 19:19:41,044 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:47,943 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:19:47,944 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:19:48,031 - INFO - SUCCESS!\n", - "2024-12-20 19:19:48,040 - INFO - ./data/processed_ATL03_20190715115300_02660402_006_02.h5\n", - "2024-12-20 19:19:48,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:19:48,348 - INFO - ./data/processed_ATL03_20190925204751_13710406_006_02.h5\n", - "2024-12-20 19:19:48,351 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:48,674 - INFO - ./data/processed_ATL03_20191014073304_02660502_006_02.h5\n", - "2024-12-20 19:19:48,676 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:49,121 - INFO - ./data/processed_ATL03_20191126175137_09290506_006_01.h5\n", - "2024-12-20 19:19:49,125 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:49,462 - INFO - ./data/processed_ATL03_20191225162738_13710506_006_01.h5\n", - "2024-12-20 19:19:49,481 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:49,899 - INFO - ./data/processed_ATL03_20200113031248_02660602_006_01.h5\n", - "2024-12-20 19:19:49,902 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:50,365 - INFO - ./data/processed_ATL03_20200225133121_09290606_006_01.h5\n", - "2024-12-20 19:19:50,371 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:50,692 - INFO - ./data/processed_ATL03_20200325120720_13710606_006_01.h5\n", - "2024-12-20 19:19:50,695 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:51,136 - INFO - ./data/processed_ATL03_20200412225236_02660702_006_02.h5\n", - "2024-12-20 19:19:51,139 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:51,581 - INFO - ./data/processed_ATL03_20200825045056_09290806_006_01.h5\n", - "2024-12-20 19:19:51,584 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:51,920 - INFO - ./data/processed_ATL03_20200923032659_13710806_006_02.h5\n", - "2024-12-20 19:19:51,925 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:52,248 - INFO - ./data/processed_ATL03_20201011141209_02660902_006_01.h5\n", - "2024-12-20 19:19:52,251 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:52,574 - INFO - ./data/processed_ATL03_20201124003046_09290906_006_01.h5\n", - "2024-12-20 19:19:52,576 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:52,893 - INFO - ./data/processed_ATL03_20201222230650_13710906_006_01.h5\n", - "2024-12-20 19:19:52,896 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:53,222 - INFO - ./data/processed_ATL03_20210110095205_02661002_006_01.h5\n", - "2024-12-20 19:19:53,226 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:19:59,308 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:19:59,309 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:19:59,387 - INFO - SUCCESS!\n", - "2024-12-20 19:19:59,395 - INFO - ./data/processed_ATL03_20210323184642_13711006_006_01.h5\n", - "2024-12-20 19:19:59,397 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:19:59,697 - INFO - ./data/processed_ATL03_20210622142633_13711106_006_01.h5\n", - "2024-12-20 19:19:59,700 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:00,012 - INFO - ./data/processed_ATL03_20210711011146_02661202_006_01.h5\n", - "2024-12-20 19:20:00,014 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:00,653 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:20:00,665 - INFO - ./data/processed_ATL03_20210823113024_09291206_006_01.h5\n", - "2024-12-20 19:20:00,668 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:00,981 - INFO - ./data/processed_ATL03_20210921100629_13711206_006_02.h5\n", - "2024-12-20 19:20:00,984 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:01,320 - INFO - ./data/processed_ATL03_20211009205146_02661302_006_01.h5\n", - "2024-12-20 19:20:01,322 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:08,331 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:20:08,332 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:20:08,422 - INFO - SUCCESS!\n", - "2024-12-20 19:20:08,433 - INFO - ./data/processed_ATL03_20220620210615_13711506_006_01.h5\n", - "2024-12-20 19:20:08,436 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:20:08,765 - INFO - ./data/processed_ATL03_20220709075126_02661602_006_02.h5\n", - "2024-12-20 19:20:08,767 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:09,235 - INFO - ./data/processed_ATL03_20220919164606_13711606_006_01.h5\n", - "2024-12-20 19:20:09,238 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:09,562 - INFO - ./data/processed_ATL03_20221008033113_02661702_006_01.h5\n", - "2024-12-20 19:20:09,565 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:18,713 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:20:18,756 - INFO - ./data/processed_ATL03_20221219122541_13711706_006_02.h5\n", - "2024-12-20 19:20:18,758 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:20:19,079 - INFO - ./data/processed_ATL03_20230106231054_02661802_006_02.h5\n", - "2024-12-20 19:20:19,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:27,538 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:20:27,538 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:20:27,570 - INFO - SUCCESS!\n", - "2024-12-20 19:20:27,579 - INFO - ./data/processed_ATL03_20230320080540_13711806_006_02.h5\n", - "2024-12-20 19:20:27,582 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:20:27,982 - INFO - ./data/processed_ATL03_20181015174925_02610109_006_02.h5\n", - "2024-12-20 19:20:27,984 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:28,329 - INFO - ./data/processed_ATL03_20181223025500_13050113_006_02.h5\n", - "2024-12-20 19:20:28,332 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:28,688 - INFO - ./data/processed_ATL03_20190114132912_02610209_006_02.h5\n", - "2024-12-20 19:20:28,691 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:34,974 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:20:34,983 - INFO - ./data/processed_ATL03_20190121013103_03600213_006_02.h5\n", - "2024-12-20 19:20:35,000 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:20:35,363 - INFO - ./data/processed_ATL03_20190415090908_02610309_006_02.h5\n", - "2024-12-20 19:20:35,368 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:35,731 - INFO - ./data/processed_ATL03_20190421211055_03600313_006_02.h5\n", - "2024-12-20 19:20:35,733 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:36,093 - INFO - ./data/processed_ATL03_20190514074507_07030309_006_02.h5\n", - "2024-12-20 19:20:36,096 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:36,460 - INFO - ./data/processed_ATL03_20190715044837_02610409_006_02.h5\n", - "2024-12-20 19:20:36,462 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:37,185 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:20:37,196 - INFO - ./data/processed_ATL03_20190813032449_07030409_006_02.h5\n", - "2024-12-20 19:20:37,198 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:37,541 - INFO - ./data/processed_ATL03_20191014002841_02610509_006_02.h5\n", - "2024-12-20 19:20:37,544 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:37,882 - INFO - ./data/processed_ATL03_20191020123029_03600513_006_02.h5\n", - "2024-12-20 19:20:37,885 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:38,230 - INFO - ./data/processed_ATL03_20191111230443_07030509_006_01.h5\n", - "2024-12-20 19:20:38,235 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:38,548 - INFO - ./data/processed_ATL03_20200112200825_02610609_006_01.h5\n", - "2024-12-20 19:20:38,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:38,888 - INFO - ./data/processed_ATL03_20200119081012_03600613_006_01.h5\n", - "2024-12-20 19:20:38,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:39,216 - INFO - ./data/processed_ATL03_20200210184426_07030609_006_01.h5\n", - "2024-12-20 19:20:39,227 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:39,564 - INFO - ./data/processed_ATL03_20201011070746_02610909_006_01.h5\n", - "2024-12-20 19:20:39,567 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:39,889 - INFO - ./data/processed_ATL03_20201017190934_03600913_006_01.h5\n", - "2024-12-20 19:20:39,892 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:40,211 - INFO - ./data/processed_ATL03_20201109054350_07030909_006_01.h5\n", - "2024-12-20 19:20:40,214 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:40,527 - INFO - ./data/processed_ATL03_20210110024742_02611009_006_01.h5\n", - "2024-12-20 19:20:40,530 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:40,847 - INFO - ./data/processed_ATL03_20210116144929_03601013_006_01.h5\n", - "2024-12-20 19:20:40,849 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:41,177 - INFO - ./data/processed_ATL03_20210208012346_07031009_006_01.h5\n", - "2024-12-20 19:20:41,186 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:41,521 - INFO - ./data/processed_ATL03_20210410222733_02611109_006_02.h5\n", - "2024-12-20 19:20:41,524 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:41,847 - INFO - ./data/processed_ATL03_20210417102920_03601113_006_02.h5\n", - "2024-12-20 19:20:41,850 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:42,180 - INFO - ./data/processed_ATL03_20210509210337_07031109_006_01.h5\n", - "2024-12-20 19:20:42,182 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:42,506 - INFO - ./data/processed_ATL03_20210710180723_02611209_006_01.h5\n", - "2024-12-20 19:20:42,510 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:42,843 - INFO - ./data/processed_ATL03_20210717060912_03601213_006_01.h5\n", - "2024-12-20 19:20:42,847 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:43,186 - INFO - ./data/processed_ATL03_20210808164327_07031209_006_01.h5\n", - "2024-12-20 19:20:43,188 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:43,521 - INFO - ./data/processed_ATL03_20211009134723_02611309_006_01.h5\n", - "2024-12-20 19:20:43,525 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:43,853 - INFO - ./data/processed_ATL03_20211016014909_03601313_006_01.h5\n", - "2024-12-20 19:20:43,856 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:44,178 - INFO - ./data/processed_ATL03_20211107122326_07031309_006_01.h5\n", - "2024-12-20 19:20:44,181 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:44,507 - INFO - ./data/processed_ATL03_20220108092714_02611409_006_01.h5\n", - "2024-12-20 19:20:44,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:44,855 - INFO - ./data/processed_ATL03_20220114212903_03601413_006_01.h5\n", - "2024-12-20 19:20:44,872 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:45,281 - INFO - ./data/processed_ATL03_20220206080316_07031409_006_01.h5\n", - "2024-12-20 19:20:45,286 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:45,642 - INFO - ./data/processed_ATL03_20220415170830_03601513_006_02.h5\n", - "2024-12-20 19:20:45,646 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:46,024 - INFO - ./data/processed_ATL03_20220508034309_07031509_006_01.h5\n", - "2024-12-20 19:20:46,027 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:46,370 - INFO - ./data/processed_ATL03_20190523104428_08420314_006_02.h5\n", - "2024-12-20 19:20:46,373 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:46,707 - INFO - ./data/processed_ATL03_20190617212257_12310308_006_02.h5\n", - "2024-12-20 19:20:46,710 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:47,075 - INFO - ./data/processed_ATL03_20190822062416_08420414_006_02.h5\n", - "2024-12-20 19:20:47,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:47,434 - INFO - ./data/processed_ATL03_20190916170248_12310408_006_02.h5\n", - "2024-12-20 19:20:47,436 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:47,770 - INFO - ./data/processed_ATL03_20191121020409_08420514_006_01.h5\n", - "2024-12-20 19:20:47,773 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:48,483 - INFO - ./data/processed_ATL03_20191216124236_12310508_006_01.h5\n", - "2024-12-20 19:20:48,487 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:48,807 - INFO - ./data/processed_ATL03_20200219214352_08420614_006_01.h5\n", - "2024-12-20 19:20:48,810 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:49,554 - INFO - ./data/processed_ATL03_20210217042310_08421014_006_01.h5\n", - "2024-12-20 19:20:49,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:50,222 - INFO - ./data/processed_ATL03_20210314150144_12311008_006_01.h5\n", - "2024-12-20 19:20:50,225 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:50,568 - INFO - ./data/processed_ATL03_20210519000301_08421114_006_01.h5\n", - "2024-12-20 19:20:50,572 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:51,342 - INFO - ./data/processed_ATL03_20210613104132_12311108_006_01.h5\n", - "2024-12-20 19:20:51,345 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:51,701 - INFO - ./data/processed_ATL03_20210817194255_08421214_006_01.h5\n", - "2024-12-20 19:20:51,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:52,947 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:20:52,962 - INFO - ./data/processed_ATL03_20210912062128_12311208_006_02.h5\n", - "2024-12-20 19:20:52,964 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:53,331 - INFO - ./data/processed_ATL03_20190115182634_02800201_006_02.h5\n", - "2024-12-20 19:20:53,334 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:53,670 - INFO - ./data/processed_ATL03_20190115181932_02790214_006_02.h5\n", - "2024-12-20 19:20:53,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:54,012 - INFO - ./data/processed_ATL03_20190416140631_02800301_006_02.h5\n", - "2024-12-20 19:20:54,015 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:54,369 - INFO - ./data/processed_ATL03_20190416135929_02790314_006_02.h5\n", - "2024-12-20 19:20:54,372 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:54,707 - INFO - ./data/processed_ATL03_20181018113530_03030107_006_02.h5\n", - "2024-12-20 19:20:54,709 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:55,117 - INFO - ./data/processed_ATL03_20181018114232_03030108_006_02.h5\n", - "2024-12-20 19:20:55,120 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:55,634 - INFO - ./data/processed_ATL03_20181202213232_09970101_006_02.h5\n", - "2024-12-20 19:20:55,637 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:56,087 - INFO - ./data/processed_ATL03_20181202212529_09960114_006_02.h5\n", - "2024-12-20 19:20:56,090 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:56,542 - INFO - ./data/processed_ATL03_20190117071514_03030207_006_02.h5\n", - "2024-12-20 19:20:56,547 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:56,888 - INFO - ./data/processed_ATL03_20190117072216_03030208_006_02.h5\n", - "2024-12-20 19:20:56,890 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:57,220 - INFO - ./data/processed_ATL03_20190303171232_09970201_006_02.h5\n", - "2024-12-20 19:20:57,222 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:20:57,907 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:20:57,918 - INFO - ./data/processed_ATL03_20190303170530_09960214_006_02.h5\n", - "2024-12-20 19:20:57,920 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:21:13,943 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:21:13,944 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:13,952 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:21:13,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:13,980 - INFO - SUCCESS!\n", - "2024-12-20 19:21:13,991 - INFO - ./data/processed_ATL03_20190418030215_03030308_006_02.h5\n", - "2024-12-20 19:21:13,993 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:21:20,955 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:21:20,956 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:21,021 - INFO - SUCCESS!\n", - "2024-12-20 19:21:21,032 - INFO - ./data/processed_ATL03_20190418025513_03030307_006_02.h5\n", - "2024-12-20 19:21:21,035 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:21:29,098 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:21:29,099 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:29,156 - INFO - SUCCESS!\n", - "2024-12-20 19:21:29,166 - INFO - ./data/processed_ATL03_20190602125206_09970301_006_02.h5\n", - "2024-12-20 19:21:29,168 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:21:45,384 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:21:45,384 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:45,416 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:21:45,417 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:45,472 - INFO - SUCCESS!\n", - "2024-12-20 19:21:45,482 - INFO - ./data/processed_ATL03_20190602124504_09960314_006_02.h5\n", - "2024-12-20 19:21:45,485 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:21:58,144 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:21:58,145 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:58,176 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:21:58,176 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:21:58,226 - INFO - SUCCESS!\n", - "2024-12-20 19:21:58,235 - INFO - ./data/processed_ATL03_20191201041146_09970501_006_01.h5\n", - "2024-12-20 19:21:58,240 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:21:58,797 - INFO - ./data/processed_ATL03_20191201040443_09960514_006_01.h5\n", - "2024-12-20 19:21:58,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:21:59,386 - INFO - ./data/processed_ATL03_20200115135430_03030607_006_01.h5\n", - "2024-12-20 19:21:59,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:21:59,809 - INFO - ./data/processed_ATL03_20200115140132_03030608_006_01.h5\n", - "2024-12-20 19:21:59,812 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:00,242 - INFO - ./data/processed_ATL03_20200229235131_09970601_006_01.h5\n", - "2024-12-20 19:22:00,245 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:00,788 - INFO - ./data/processed_ATL03_20200229234429_09960614_006_01.h5\n", - "2024-12-20 19:22:00,790 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:01,337 - INFO - ./data/processed_ATL03_20200415094121_03030708_006_02.h5\n", - "2024-12-20 19:22:01,339 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:01,778 - INFO - ./data/processed_ATL03_20200415093419_03030707_006_02.h5\n", - "2024-12-20 19:22:01,780 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:02,211 - INFO - ./data/processed_ATL03_20200530193120_09970701_006_01.h5\n", - "2024-12-20 19:22:02,214 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:20,222 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:22:20,223 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:22:20,259 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:22:20,260 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:22:20,313 - INFO - SUCCESS!\n", - "2024-12-20 19:22:20,323 - INFO - ./data/processed_ATL03_20200530192418_09960714_006_01.h5\n", - "2024-12-20 19:22:20,325 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:32,899 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:22:32,900 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:22:32,924 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:22:32,925 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:22:32,975 - INFO - SUCCESS!\n", - "2024-12-20 19:22:32,985 - INFO - ./data/processed_ATL03_20200715051406_03030807_006_01.h5\n", - "2024-12-20 19:22:32,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:39,875 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:22:39,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:22:39,931 - INFO - SUCCESS!\n", - "2024-12-20 19:22:39,941 - INFO - ./data/processed_ATL03_20200715052108_03030808_006_01.h5\n", - "2024-12-20 19:22:39,943 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:22:51,301 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:22:51,302 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:22:51,365 - INFO - SUCCESS!\n", - "2024-12-20 19:22:51,376 - INFO - ./data/processed_ATL03_20200829151107_09970801_006_01.h5\n", - "2024-12-20 19:22:51,379 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:04,141 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:23:04,142 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:23:04,178 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:23:04,178 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:23:04,225 - INFO - SUCCESS!\n", - "2024-12-20 19:23:04,233 - INFO - ./data/processed_ATL03_20200829150404_09960814_006_01.h5\n", - "2024-12-20 19:23:04,236 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:20,054 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:23:20,055 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:23:20,085 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:23:20,086 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:23:20,130 - INFO - SUCCESS!\n", - "2024-12-20 19:23:20,139 - INFO - ./data/processed_ATL03_20201014005352_03030907_006_01.h5\n", - "2024-12-20 19:23:20,142 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:28,580 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:23:28,580 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:23:28,628 - INFO - SUCCESS!\n", - "2024-12-20 19:23:28,638 - INFO - ./data/processed_ATL03_20201014010054_03030908_006_01.h5\n", - "2024-12-20 19:23:28,641 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:34,992 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:23:34,993 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:23:35,054 - INFO - SUCCESS!\n", - "2024-12-20 19:23:35,064 - INFO - ./data/processed_ATL03_20201128105056_09970901_006_01.h5\n", - "2024-12-20 19:23:35,068 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:23:35,742 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:23:35,753 - INFO - ./data/processed_ATL03_20201128104354_09960914_006_01.h5\n", - "2024-12-20 19:23:35,755 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:42,525 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:23:42,568 - INFO - ./data/processed_ATL03_20210227063048_09971001_006_01.h5\n", - "2024-12-20 19:23:42,571 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:23:43,170 - INFO - ./data/processed_ATL03_20210227062346_09961014_006_01.h5\n", - "2024-12-20 19:23:43,172 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:43,699 - INFO - ./data/processed_ATL03_20210413162040_03031108_006_02.h5\n", - "2024-12-20 19:23:43,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:44,190 - INFO - ./data/processed_ATL03_20210413161338_03031107_006_02.h5\n", - "2024-12-20 19:23:44,192 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:44,613 - INFO - ./data/processed_ATL03_20210529021040_09971101_006_01.h5\n", - "2024-12-20 19:23:44,616 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:45,163 - INFO - ./data/processed_ATL03_20210529020338_09961114_006_01.h5\n", - "2024-12-20 19:23:45,174 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:45,712 - INFO - ./data/processed_ATL03_20210713115329_03031207_006_01.h5\n", - "2024-12-20 19:23:45,715 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:23:55,081 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:23:55,081 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:23:55,099 - INFO - SUCCESS!\n", - "2024-12-20 19:23:55,108 - INFO - ./data/processed_ATL03_20210713120031_03031208_006_01.h5\n", - "2024-12-20 19:23:55,111 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:23:55,549 - INFO - ./data/processed_ATL03_20210827215036_09971201_006_01.h5\n", - "2024-12-20 19:23:55,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:24:09,736 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:24:09,736 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:09,767 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:24:09,767 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:09,815 - INFO - SUCCESS!\n", - "2024-12-20 19:24:09,826 - INFO - ./data/processed_ATL03_20210827214334_09961214_006_01.h5\n", - "2024-12-20 19:24:09,828 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:24:25,742 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:24:25,743 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:25,770 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:24:25,770 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:25,807 - INFO - SUCCESS!\n", - "2024-12-20 19:24:25,818 - INFO - ./data/processed_ATL03_20211012073328_03031307_006_01.h5\n", - "2024-12-20 19:24:25,820 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:24:32,586 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:24:32,587 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:32,630 - INFO - SUCCESS!\n", - "2024-12-20 19:24:32,652 - INFO - ./data/processed_ATL03_20211012074030_03031308_006_01.h5\n", - "2024-12-20 19:24:32,655 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:24:38,910 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:24:38,911 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:38,967 - INFO - SUCCESS!\n", - "2024-12-20 19:24:38,978 - INFO - ./data/processed_ATL03_20211126173032_09971301_006_01.h5\n", - "2024-12-20 19:24:38,980 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:24:39,852 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:24:39,863 - INFO - ./data/processed_ATL03_20211126172329_09961314_006_01.h5\n", - "2024-12-20 19:24:39,865 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:24:57,497 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:24:57,498 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:57,523 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:24:57,523 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:24:57,566 - INFO - SUCCESS!\n", - "2024-12-20 19:24:57,578 - INFO - ./data/processed_ATL03_20220111031321_03031407_006_01.h5\n", - "2024-12-20 19:24:57,580 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:25:04,299 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:25:04,299 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:25:04,346 - INFO - SUCCESS!\n", - "2024-12-20 19:25:04,357 - INFO - ./data/processed_ATL03_20220111032023_03031408_006_01.h5\n", - "2024-12-20 19:25:04,359 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:25:10,679 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:25:10,679 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:25:10,735 - INFO - SUCCESS!\n", - "2024-12-20 19:25:10,747 - INFO - ./data/processed_ATL03_20220225131023_09971401_006_01.h5\n", - "2024-12-20 19:25:10,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:25:27,630 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:25:27,674 - INFO - ./data/processed_ATL03_20220225130321_09961414_006_01.h5\n", - "2024-12-20 19:25:27,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:25:40,229 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:25:40,276 - INFO - ./data/processed_ATL03_20181204102815_10200108_006_02.h5\n", - "2024-12-20 19:25:40,280 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:25:47,040 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:25:47,041 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:25:47,067 - INFO - SUCCESS!\n", - "2024-12-20 19:25:47,076 - INFO - ./data/processed_ATL03_20181204102113_10200107_006_02.h5\n", - "2024-12-20 19:25:47,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:25:56,468 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:25:56,469 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:25:56,504 - INFO - SUCCESS!\n", - "2024-12-20 19:25:56,513 - INFO - ./data/processed_ATL03_20190118201812_03270201_006_02.h5\n", - "2024-12-20 19:25:56,518 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:26:11,262 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:26:11,262 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:26:11,294 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:26:11,294 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:26:11,339 - INFO - SUCCESS!\n", - "2024-12-20 19:26:11,348 - INFO - ./data/processed_ATL03_20190118201109_03260214_006_02.h5\n", - "2024-12-20 19:26:11,351 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:26:27,924 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:26:27,925 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:26:27,956 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:26:27,957 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:26:28,009 - INFO - SUCCESS!\n", - "2024-12-20 19:26:28,020 - INFO - ./data/processed_ATL03_20190305060816_10200208_006_02.h5\n", - "2024-12-20 19:26:28,022 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:26:49,082 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:26:49,083 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:26:49,097 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:26:49,097 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:26:49,112 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:26:49,113 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:26:49,141 - INFO - SUCCESS!\n", - "2024-12-20 19:26:49,151 - INFO - ./data/processed_ATL03_20190305060114_10200207_006_02.h5\n", - "2024-12-20 19:26:49,175 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:27:11,228 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:27:11,229 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:27:11,257 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:27:11,258 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:27:11,287 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:27:11,288 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:27:11,331 - INFO - SUCCESS!\n", - "2024-12-20 19:27:11,341 - INFO - ./data/processed_ATL03_20190419155808_03270301_006_02.h5\n", - "2024-12-20 19:27:11,343 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:27:29,180 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:27:29,181 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:27:29,212 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:27:29,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:27:29,256 - INFO - SUCCESS!\n", - "2024-12-20 19:27:29,266 - INFO - ./data/processed_ATL03_20190419155106_03260314_006_02.h5\n", - "2024-12-20 19:27:29,271 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:27:42,024 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:27:42,025 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:27:42,056 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:27:42,056 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:27:42,108 - INFO - SUCCESS!\n", - "2024-12-20 19:27:42,117 - INFO - ./data/processed_ATL03_20190604014048_10200307_006_02.h5\n", - "2024-12-20 19:27:42,120 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:28:05,644 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:28:05,645 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:05,680 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:28:05,681 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:05,706 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:28:05,707 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:05,749 - INFO - SUCCESS!\n", - "2024-12-20 19:28:05,780 - INFO - ./data/processed_ATL03_20190604014749_10200308_006_02.h5\n", - "2024-12-20 19:28:05,785 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:28:18,194 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:28:18,195 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:18,218 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:28:18,219 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:18,265 - INFO - SUCCESS!\n", - "2024-12-20 19:28:18,274 - INFO - ./data/processed_ATL03_20190719113739_03270401_006_02.h5\n", - "2024-12-20 19:28:18,277 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:28:19,114 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:28:19,125 - INFO - ./data/processed_ATL03_20190719113036_03260414_006_02.h5\n", - "2024-12-20 19:28:19,127 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:28:19,962 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:28:19,973 - INFO - ./data/processed_ATL03_20190902212739_10200408_006_02.h5\n", - "2024-12-20 19:28:19,976 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:28:37,313 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:28:37,314 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:37,341 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:28:37,341 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:37,388 - INFO - SUCCESS!\n", - "2024-12-20 19:28:37,397 - INFO - ./data/processed_ATL03_20190902212037_10200407_006_02.h5\n", - "2024-12-20 19:28:37,400 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt2l', 'gt3l', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:28:59,485 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:28:59,485 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:59,520 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:28:59,521 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:59,549 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:28:59,549 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:28:59,592 - INFO - SUCCESS!\n", - "2024-12-20 19:28:59,602 - INFO - ./data/processed_ATL03_20191202170027_10200507_006_01.h5\n", - "2024-12-20 19:28:59,604 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:29:00,254 - INFO - ./data/processed_ATL03_20191202170729_10200508_006_01.h5\n", - "2024-12-20 19:29:00,265 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:00,850 - INFO - ./data/processed_ATL03_20200117025726_03270601_006_01.h5\n", - "2024-12-20 19:29:00,860 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:01,515 - INFO - ./data/processed_ATL03_20200117025023_03260614_006_01.h5\n", - "2024-12-20 19:29:01,518 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:02,076 - INFO - ./data/processed_ATL03_20200302124011_10200607_006_01.h5\n", - "2024-12-20 19:29:02,078 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:02,697 - INFO - ./data/processed_ATL03_20200302124713_10200608_006_01.h5\n", - "2024-12-20 19:29:02,699 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:03,284 - INFO - ./data/processed_ATL03_20200602212257_10440701_006_01.h5\n", - "2024-12-20 19:29:03,287 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:03,593 - INFO - ./data/processed_ATL03_20200602211554_10430714_006_01.h5\n", - "2024-12-20 19:29:03,596 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:03,931 - INFO - ./data/processed_ATL03_20200730183501_05410801_006_01.h5\n", - "2024-12-20 19:29:03,940 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:10,748 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:29:10,749 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:29:10,840 - INFO - SUCCESS!\n", - "2024-12-20 19:29:10,853 - INFO - ./data/processed_ATL03_20200730182759_05400814_006_01.h5\n", - "2024-12-20 19:29:10,855 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:29:11,178 - INFO - ./data/processed_ATL03_20200918040927_12950807_006_02.h5\n", - "2024-12-20 19:29:11,180 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:18,985 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:29:18,986 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:29:19,076 - INFO - SUCCESS!\n", - "2024-12-20 19:29:19,087 - INFO - ./data/processed_ATL03_20200918041629_12950808_006_02.h5\n", - "2024-12-20 19:29:19,089 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:25,966 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:29:25,974 - INFO - ./data/processed_ATL03_20201029141450_05410901_006_01.h5\n", - "2024-12-20 19:29:25,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:35,596 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:29:35,597 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:29:35,684 - INFO - SUCCESS!\n", - "2024-12-20 19:29:35,699 - INFO - ./data/processed_ATL03_20201029140747_05400914_006_01.h5\n", - "2024-12-20 19:29:35,701 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:29:36,021 - INFO - ./data/processed_ATL03_20201201124233_10440901_006_01.h5\n", - "2024-12-20 19:29:36,023 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:36,347 - INFO - ./data/processed_ATL03_20201201123531_10430914_006_01.h5\n", - "2024-12-20 19:29:36,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:36,783 - INFO - ./data/processed_ATL03_20210115222524_03501007_006_01.h5\n", - "2024-12-20 19:29:36,790 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:37,239 - INFO - ./data/processed_ATL03_20210115223226_03501008_006_01.h5\n", - "2024-12-20 19:29:37,243 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:37,677 - INFO - ./data/processed_ATL03_20210302082226_10441001_006_01.h5\n", - "2024-12-20 19:29:37,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:38,109 - INFO - ./data/processed_ATL03_20210302081524_10431014_006_01.h5\n", - "2024-12-20 19:29:38,111 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:44,726 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:29:44,727 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:29:44,770 - INFO - SUCCESS!\n", - "2024-12-20 19:29:44,779 - INFO - ./data/processed_ATL03_20210416181217_03501108_006_02.h5\n", - "2024-12-20 19:29:44,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:29:45,312 - INFO - ./data/processed_ATL03_20210416180515_03501107_006_02.h5\n", - "2024-12-20 19:29:45,314 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:45,857 - INFO - ./data/processed_ATL03_20210716134506_03501207_006_01.h5\n", - "2024-12-20 19:29:45,860 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:46,264 - INFO - ./data/processed_ATL03_20210716135208_03501208_006_01.h5\n", - "2024-12-20 19:29:46,267 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:46,702 - INFO - ./data/processed_ATL03_20210830234212_10441201_006_01.h5\n", - "2024-12-20 19:29:46,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:47,016 - INFO - ./data/processed_ATL03_20210830233509_10431214_006_01.h5\n", - "2024-12-20 19:29:47,029 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:47,366 - INFO - ./data/processed_ATL03_20181014163344_02450108_006_02.h5\n", - "2024-12-20 19:29:47,369 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1r', 'gt2r', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:47,891 - INFO - ./data/processed_ATL03_20181014162642_02450107_006_02.h5\n", - "2024-12-20 19:29:47,893 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:48,458 - INFO - ./data/processed_ATL03_20200313154930_11900607_006_01.h5\n", - "2024-12-20 19:29:48,461 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:29:54,512 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:29:54,513 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:29:54,566 - INFO - SUCCESS!\n", - "2024-12-20 19:29:54,575 - INFO - ./data/processed_ATL03_20200313155632_11900608_006_01.h5\n", - "2024-12-20 19:29:54,577 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:30:02,832 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:30:02,882 - INFO - ./data/processed_ATL03_20200612113616_11900708_006_01.h5\n", - "2024-12-20 19:30:02,885 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:30:03,336 - INFO - ./data/processed_ATL03_20200612112914_11900707_006_01.h5\n", - "2024-12-20 19:30:03,338 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:30:03,666 - INFO - ./data/processed_ATL03_20200711100516_02450807_006_01.h5\n", - "2024-12-20 19:30:03,689 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:30:13,006 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:30:13,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:30:13,060 - INFO - SUCCESS!\n", - "2024-12-20 19:30:13,073 - INFO - ./data/processed_ATL03_20200711101218_02450808_006_01.h5\n", - "2024-12-20 19:30:13,075 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:30:19,699 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:30:19,700 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:30:19,718 - INFO - SUCCESS!\n", - "2024-12-20 19:30:19,726 - INFO - ./data/processed_ATL03_20230211232316_08161801_006_02.h5\n", - "2024-12-20 19:30:19,729 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:30:44,030 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:30:44,031 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:30:44,062 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:30:44,063 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:30:44,105 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:30:44,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:30:44,172 - INFO - SUCCESS!\n", - "2024-12-20 19:30:44,183 - INFO - ./data/processed_ATL03_20230211231613_08151814_006_02.h5\n", - "2024-12-20 19:30:44,186 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:04,128 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:31:04,129 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:31:04,147 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:31:04,148 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:31:04,170 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:31:04,171 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:31:04,210 - INFO - SUCCESS!\n", - "2024-12-20 19:31:04,225 - INFO - ./data/processed_ATL03_20230513190258_08161901_006_02.h5\n", - "2024-12-20 19:31:04,228 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:31:04,565 - INFO - ./data/processed_ATL03_20230513185555_08151914_006_02.h5\n", - "2024-12-20 19:31:04,568 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:04,911 - INFO - ./data/processed_ATL03_20230530060937_10671907_006_02.h5\n", - "2024-12-20 19:31:04,914 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:14,704 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:31:14,705 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:31:14,736 - INFO - SUCCESS!\n", - "2024-12-20 19:31:14,746 - INFO - ./data/processed_ATL03_20230530061639_10671908_006_02.h5\n", - "2024-12-20 19:31:14,750 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:31:15,132 - INFO - ./data/processed_ATL03_20230214041501_08491810_006_02.h5\n", - "2024-12-20 19:31:15,134 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:23,595 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:31:23,596 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:31:23,696 - INFO - SUCCESS!\n", - "2024-12-20 19:31:23,710 - INFO - ./data/processed_ATL03_20181023212132_03860101_006_02.h5\n", - "2024-12-20 19:31:23,713 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:31:24,052 - INFO - ./data/processed_ATL03_20181023212834_03860102_006_02.h5\n", - "2024-12-20 19:31:24,056 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:24,719 - INFO - ./data/processed_ATL03_20181218175741_12390102_006_02.h5\n", - "2024-12-20 19:31:24,722 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:25,214 - INFO - ./data/processed_ATL03_20190201035048_05300206_006_02.h5\n", - "2024-12-20 19:31:25,217 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:31,690 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:31:31,691 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:31:31,781 - INFO - SUCCESS!\n", - "2024-12-20 19:31:31,793 - INFO - ./data/processed_ATL03_20190319133739_12390202_006_02.h5\n", - "2024-12-20 19:31:31,799 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:31:47,674 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:31:47,675 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:31:47,692 - INFO - SUCCESS!\n", - "2024-12-20 19:31:47,703 - INFO - ./data/processed_ATL03_20190618091714_12390302_006_02.h5\n", - "2024-12-20 19:31:47,705 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:02,288 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:32:02,289 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:32:02,339 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:32:02,340 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:32:02,368 - INFO - SUCCESS!\n", - "2024-12-20 19:32:02,379 - INFO - ./data/processed_ATL03_20190917045705_12390402_006_02.h5\n", - "2024-12-20 19:32:02,381 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:32:02,777 - INFO - ./data/processed_ATL03_20191217003654_12390502_006_01.h5\n", - "2024-12-20 19:32:02,779 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:03,194 - INFO - ./data/processed_ATL03_20200130102948_05300606_006_01.h5\n", - "2024-12-20 19:32:03,197 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:03,778 - INFO - ./data/processed_ATL03_20200430060933_05300706_006_02.h5\n", - "2024-12-20 19:32:03,782 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:04,361 - INFO - ./data/processed_ATL03_20220612051524_12391502_006_01.h5\n", - "2024-12-20 19:32:04,364 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:11,259 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:32:11,260 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:32:11,331 - INFO - SUCCESS!\n", - "2024-12-20 19:32:11,341 - INFO - ./data/processed_ATL03_20220726150827_05301606_006_02.h5\n", - "2024-12-20 19:32:11,344 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:32:11,729 - INFO - ./data/processed_ATL03_20220911005522_12391602_006_01.h5\n", - "2024-12-20 19:32:11,734 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:12,308 - INFO - ./data/processed_ATL03_20221025104813_05301706_006_01.h5\n", - "2024-12-20 19:32:12,310 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:28,211 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:32:28,212 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:32:28,271 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:32:28,271 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:32:28,355 - INFO - SUCCESS!\n", - "2024-12-20 19:32:28,366 - INFO - ./data/processed_ATL03_20221210203500_12391702_006_02.h5\n", - "2024-12-20 19:32:28,368 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:32:28,698 - INFO - ./data/processed_ATL03_20230311161449_12391802_006_02.h5\n", - "2024-12-20 19:32:28,701 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:29,035 - INFO - ./data/processed_ATL03_20230425020742_05301906_006_02.h5\n", - "2024-12-20 19:32:29,037 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:32:35,337 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:32:35,386 - INFO - ./data/processed_ATL03_20230610115415_12391902_006_02.h5\n", - "2024-12-20 19:32:35,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:33:00,574 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:33:00,575 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:00,627 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:33:00,628 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:00,683 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:33:00,683 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:00,767 - INFO - SUCCESS!\n", - "2024-12-20 19:33:00,780 - INFO - ./data/processed_ATL03_20230724214655_05302006_006_02.h5\n", - "2024-12-20 19:33:00,783 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:33:13,822 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:33:13,823 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:13,829 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:33:13,830 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:13,852 - INFO - SUCCESS!\n", - "2024-12-20 19:33:13,864 - INFO - ./data/processed_ATL03_20231023172628_05302106_006_02.h5\n", - "2024-12-20 19:33:13,867 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:33:37,359 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:33:37,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:37,415 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:33:37,415 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:37,471 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:33:37,472 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:33:37,553 - INFO - SUCCESS!\n", - "2024-12-20 19:33:37,565 - INFO - ./data/processed_ATL03_20231209031322_12392102_006_02.h5\n", - "2024-12-20 19:33:37,568 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:33:44,525 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:33:44,568 - INFO - ./data/processed_ATL03_20240122130600_05302206_006_01.h5\n", - "2024-12-20 19:33:44,573 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:33:54,130 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:33:54,140 - INFO - ./data/processed_ATL03_20240308225245_12392202_006_01.h5\n", - "2024-12-20 19:33:54,144 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:33:55,031 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:33:55,044 - INFO - ./data/processed_ATL03_20240422084522_05302306_006_01.h5\n", - "2024-12-20 19:33:55,046 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:33:55,674 - INFO - ./data/processed_ATL03_20240722042513_05302406_006_01.h5\n", - "2024-12-20 19:33:55,680 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:03,486 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:34:03,487 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:34:03,574 - INFO - SUCCESS!\n", - "2024-12-20 19:34:03,584 - INFO - ./data/processed_ATL03_20181029082738_04690107_006_02.h5\n", - "2024-12-20 19:34:03,586 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:34:04,305 - INFO - ./data/processed_ATL03_20181115192308_07360101_006_02.h5\n", - "2024-12-20 19:34:04,307 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:04,628 - INFO - ./data/processed_ATL03_20190128040736_04690207_006_02.h5\n", - "2024-12-20 19:34:04,631 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:05,033 - INFO - ./data/processed_ATL03_20190214150254_07360201_006_02.h5\n", - "2024-12-20 19:34:05,036 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:11,213 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:34:11,214 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:34:11,273 - INFO - SUCCESS!\n", - "2024-12-20 19:34:11,282 - INFO - ./data/processed_ATL03_20190516104234_07360301_006_02.h5\n", - "2024-12-20 19:34:11,284 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:18,065 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:34:18,065 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:34:18,138 - INFO - SUCCESS!\n", - "2024-12-20 19:34:18,149 - INFO - ./data/processed_ATL03_20190717074605_02940401_006_02.h5\n", - "2024-12-20 19:34:18,151 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:34:18,479 - INFO - ./data/processed_ATL03_20190728192655_04690407_006_02.h5\n", - "2024-12-20 19:34:18,482 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:34,777 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:34:34,778 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:34:34,833 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:34:34,834 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:34:34,915 - INFO - SUCCESS!\n", - "2024-12-20 19:34:34,953 - INFO - ./data/processed_ATL03_20191114020212_07360501_006_01.h5\n", - "2024-12-20 19:34:34,957 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:34:35,444 - INFO - ./data/processed_ATL03_20200126104638_04690607_006_01.h5\n", - "2024-12-20 19:34:35,447 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:35,827 - INFO - ./data/processed_ATL03_20200426062625_04690707_006_02.h5\n", - "2024-12-20 19:34:35,829 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:36,426 - INFO - ./data/processed_ATL03_20200726020612_04690807_006_01.h5\n", - "2024-12-20 19:34:36,428 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:34:50,369 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:34:50,369 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:34:50,426 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:34:50,427 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:34:50,505 - INFO - SUCCESS!\n", - "2024-12-20 19:34:50,514 - INFO - ./data/processed_ATL03_20200812130130_07360801_006_01.h5\n", - "2024-12-20 19:34:50,517 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:34:50,842 - INFO - ./data/processed_ATL03_20201024214557_04690907_006_01.h5\n", - "2024-12-20 19:34:50,844 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:35:06,679 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:35:06,680 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:06,723 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:35:06,724 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:06,787 - INFO - SUCCESS!\n", - "2024-12-20 19:35:06,799 - INFO - ./data/processed_ATL03_20201111084118_07360901_006_01.h5\n", - "2024-12-20 19:35:06,802 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:35:20,577 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:35:20,578 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:20,588 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:35:20,588 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:20,613 - INFO - SUCCESS!\n", - "2024-12-20 19:35:20,622 - INFO - ./data/processed_ATL03_20210424130543_04691107_006_02.h5\n", - "2024-12-20 19:35:20,625 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:35:20,955 - INFO - ./data/processed_ATL03_20210512000105_07361101_006_01.h5\n", - "2024-12-20 19:35:20,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:35:21,510 - INFO - ./data/processed_ATL03_20210724084535_04691207_006_01.h5\n", - "2024-12-20 19:35:21,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:35:37,298 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:35:37,298 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:37,337 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:35:37,337 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:37,406 - INFO - SUCCESS!\n", - "2024-12-20 19:35:37,416 - INFO - ./data/processed_ATL03_20210810194056_07361201_006_01.h5\n", - "2024-12-20 19:35:37,418 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:35:43,603 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:35:43,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:43,681 - INFO - SUCCESS!\n", - "2024-12-20 19:35:43,690 - INFO - ./data/processed_ATL03_20211011164449_02941301_006_01.h5\n", - "2024-12-20 19:35:43,692 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:35:50,776 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:35:50,777 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:35:50,794 - INFO - SUCCESS!\n", - "2024-12-20 19:35:50,804 - INFO - ./data/processed_ATL03_20211023042535_04691307_006_01.h5\n", - "2024-12-20 19:35:50,806 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:36:01,253 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:36:01,300 - INFO - ./data/processed_ATL03_20220122000526_04691407_006_01.h5\n", - "2024-12-20 19:36:01,303 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:36:08,562 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:36:08,608 - INFO - ./data/processed_ATL03_20220208110043_07361401_006_01.h5\n", - "2024-12-20 19:36:08,611 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:36:15,074 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:36:15,117 - INFO - ./data/processed_ATL03_20220722152516_04691607_006_02.h5\n", - "2024-12-20 19:36:15,119 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:36:22,262 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:36:22,263 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:36:22,345 - INFO - SUCCESS!\n", - "2024-12-20 19:36:22,354 - INFO - ./data/processed_ATL03_20220809022037_07361601_006_01.h5\n", - "2024-12-20 19:36:22,357 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:36:23,040 - INFO - ./data/processed_ATL03_20230421022418_04691907_006_02.h5\n", - "2024-12-20 19:36:23,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:36:40,885 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:36:40,886 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:36:40,955 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:36:40,956 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:36:41,051 - INFO - SUCCESS!\n", - "2024-12-20 19:36:41,063 - INFO - ./data/processed_ATL03_20230508131951_07361901_006_02.h5\n", - "2024-12-20 19:36:41,066 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:36:55,609 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:36:55,610 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:36:55,675 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:36:55,675 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:36:55,764 - INFO - SUCCESS!\n", - "2024-12-20 19:36:55,775 - INFO - ./data/processed_ATL03_20230720220343_04692007_006_02.h5\n", - "2024-12-20 19:36:55,778 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:37:05,587 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:37:05,588 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:37:05,684 - INFO - SUCCESS!\n", - "2024-12-20 19:37:05,694 - INFO - ./data/processed_ATL03_20230807085901_07362001_006_02.h5\n", - "2024-12-20 19:37:05,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:37:06,053 - INFO - ./data/processed_ATL03_20231019174319_04692107_006_02.h5\n", - "2024-12-20 19:37:06,056 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:37:21,421 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:37:21,421 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:37:21,485 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:37:21,486 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:37:21,584 - INFO - SUCCESS!\n", - "2024-12-20 19:37:21,596 - INFO - ./data/processed_ATL03_20231106043837_07362101_006_01.h5\n", - "2024-12-20 19:37:21,599 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:37:21,941 - INFO - ./data/processed_ATL03_20240118132244_04692207_006_01.h5\n", - "2024-12-20 19:37:21,945 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:37:22,308 - INFO - ./data/processed_ATL03_20240505195753_07362301_006_01.h5\n", - "2024-12-20 19:37:22,311 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:37:22,973 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:37:22,984 - INFO - ./data/processed_ATL03_20240804153727_07362401_006_01.h5\n", - "2024-12-20 19:37:22,989 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:37:40,694 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:37:40,695 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:37:40,711 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:37:40,711 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:37:40,743 - INFO - SUCCESS!\n", - "2024-12-20 19:37:40,755 - INFO - ./data/processed_ATL03_20181015214513_02640102_006_02.h5\n", - "2024-12-20 19:37:40,757 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:37:48,141 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:37:48,152 - INFO - ./data/processed_ATL03_20181031090209_05000106_006_02.h5\n", - "2024-12-20 19:37:48,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l']\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:37:55,162 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:37:55,162 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:37:55,191 - INFO - SUCCESS!\n", - "2024-12-20 19:37:55,201 - INFO - ./data/processed_ATL03_20190114172500_02640202_006_02.h5\n", - "2024-12-20 19:37:55,204 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:37:55,524 - INFO - ./data/processed_ATL03_20190130044206_05000206_006_02.h5\n", - "2024-12-20 19:37:55,527 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:38:19,751 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:38:19,751 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:38:19,815 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:38:19,816 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:38:19,875 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:38:19,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:38:19,915 - INFO - SUCCESS!\n", - "2024-12-20 19:38:19,929 - INFO - ./data/processed_ATL03_20190501002145_05000306_006_02.h5\n", - "2024-12-20 19:38:19,932 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:38:27,168 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:38:27,169 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:38:27,228 - INFO - SUCCESS!\n", - "2024-12-20 19:38:27,238 - INFO - ./data/processed_ATL03_20190715084425_02640402_006_02.h5\n", - "2024-12-20 19:38:27,241 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:38:28,125 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:38:28,137 - INFO - ./data/processed_ATL03_20190730200125_05000406_006_02.h5\n", - "2024-12-20 19:38:28,140 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:38:35,555 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:38:35,570 - INFO - ./data/processed_ATL03_20190828183731_09420406_006_02.h5\n", - "2024-12-20 19:38:35,578 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:38:35,918 - INFO - ./data/processed_ATL03_20191029154121_05000506_006_01.h5\n", - "2024-12-20 19:38:35,920 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:38:36,317 - INFO - ./data/processed_ATL03_20191112030032_07060502_006_01.h5\n", - "2024-12-20 19:38:36,321 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:38:36,690 - INFO - ./data/processed_ATL03_20200113000413_02640602_006_01.h5\n", - "2024-12-20 19:38:36,693 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:38:53,712 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:38:53,713 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:38:53,761 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:38:53,762 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:38:53,834 - INFO - SUCCESS!\n", - "2024-12-20 19:38:53,845 - INFO - ./data/processed_ATL03_20200712152347_02640802_006_01.h5\n", - "2024-12-20 19:38:53,847 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:39:01,004 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:39:01,004 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:39:01,095 - INFO - SUCCESS!\n", - "2024-12-20 19:39:01,107 - INFO - ./data/processed_ATL03_20200728024040_05000806_006_01.h5\n", - "2024-12-20 19:39:01,110 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:39:01,455 - INFO - ./data/processed_ATL03_20201026222027_05000906_006_01.h5\n", - "2024-12-20 19:39:01,458 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:39:18,569 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:39:18,569 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:39:18,628 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:39:18,629 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:39:18,712 - INFO - SUCCESS!\n", - "2024-12-20 19:39:18,723 - INFO - ./data/processed_ATL03_20210110064330_02641002_006_01.h5\n", - "2024-12-20 19:39:18,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:39:19,044 - INFO - ./data/processed_ATL03_20210223163627_09421006_006_01.h5\n", - "2024-12-20 19:39:19,047 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:39:19,400 - INFO - ./data/processed_ATL03_20210426134011_05001106_006_02.h5\n", - "2024-12-20 19:39:19,410 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:39:27,100 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:39:27,100 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:39:27,195 - INFO - SUCCESS!\n", - "2024-12-20 19:39:27,207 - INFO - ./data/processed_ATL03_20190126165310_04470201_006_02.h5\n", - "2024-12-20 19:39:27,210 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:39:28,243 - ERROR - An error occurred: cannot convert float NaN to integer\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:39:28,256 - INFO - ./data/processed_ATL03_20190709211703_01800407_006_02.h5\n", - "2024-12-20 19:39:28,261 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:39:35,269 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:39:35,269 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:39:35,358 - INFO - SUCCESS!\n", - "2024-12-20 19:39:35,367 - INFO - ./data/processed_ATL03_20211102045156_06221307_006_01.h5\n", - "2024-12-20 19:39:35,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:39:35,867 - INFO - ./data/processed_ATL03_20220721041049_04471601_006_02.h5\n", - "2024-12-20 19:39:35,869 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:39:52,985 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:39:52,986 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:39:53,041 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:39:53,042 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:39:53,129 - INFO - SUCCESS!\n", - "2024-12-20 19:39:53,154 - INFO - ./data/processed_ATL03_20221019235040_04471701_006_01.h5\n", - "2024-12-20 19:39:53,166 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:40:07,376 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:40:07,376 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:07,433 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:40:07,433 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:07,514 - INFO - SUCCESS!\n", - "2024-12-20 19:40:07,524 - INFO - ./data/processed_ATL03_20230701235411_01802007_006_02.h5\n", - "2024-12-20 19:40:07,526 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:40:14,861 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:40:14,862 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:14,926 - INFO - SUCCESS!\n", - "2024-12-20 19:40:14,937 - INFO - ./data/processed_ATL03_20181207072958_10640107_006_02.h5\n", - "2024-12-20 19:40:14,941 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:40:15,473 - INFO - ./data/processed_ATL03_20181224182519_13310101_006_02.h5\n", - "2024-12-20 19:40:15,477 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:40:32,239 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:40:32,239 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:32,296 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:40:32,296 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:32,380 - INFO - SUCCESS!\n", - "2024-12-20 19:40:32,398 - INFO - ./data/processed_ATL03_20190308030958_10640207_006_02.h5\n", - "2024-12-20 19:40:32,400 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:40:39,158 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:40:39,159 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:39,180 - INFO - SUCCESS!\n", - "2024-12-20 19:40:39,189 - INFO - ./data/processed_ATL03_20190325140514_13310201_006_02.h5\n", - "2024-12-20 19:40:39,196 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:40:56,502 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:40:56,503 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:56,566 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:40:56,567 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:40:56,647 - INFO - SUCCESS!\n", - "2024-12-20 19:40:56,669 - INFO - ./data/processed_ATL03_20190606224932_10640307_006_02.h5\n", - "2024-12-20 19:40:56,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:41:04,212 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:41:04,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:41:04,304 - INFO - SUCCESS!\n", - "2024-12-20 19:41:04,326 - INFO - ./data/processed_ATL03_20190624094450_13310301_006_02.h5\n", - "2024-12-20 19:41:04,330 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:41:10,986 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:41:11,030 - INFO - ./data/processed_ATL03_20200604052846_10640707_006_01.h5\n", - "2024-12-20 19:41:11,035 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:41:35,893 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:41:35,894 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:41:35,952 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:41:35,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:41:36,016 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:41:36,016 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:41:36,106 - INFO - SUCCESS!\n", - "2024-12-20 19:41:36,117 - INFO - ./data/processed_ATL03_20200621162404_13310701_006_01.h5\n", - "2024-12-20 19:41:36,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:41:36,529 - INFO - ./data/processed_ATL03_20200903010832_10640807_006_02.h5\n", - "2024-12-20 19:41:36,533 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:41:36,881 - INFO - ./data/processed_ATL03_20200920120352_13310801_006_02.h5\n", - "2024-12-20 19:41:36,885 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:41:50,499 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:41:50,500 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:41:50,557 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:41:50,558 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:41:50,632 - INFO - SUCCESS!\n", - "2024-12-20 19:41:50,645 - INFO - ./data/processed_ATL03_20201202204823_10640907_006_01.h5\n", - "2024-12-20 19:41:50,649 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:42:07,867 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:42:07,867 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:42:07,874 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:42:07,875 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:42:07,930 - INFO - SUCCESS!\n", - "2024-12-20 19:42:07,940 - INFO - ./data/processed_ATL03_20201220074344_13310901_006_01.h5\n", - "2024-12-20 19:42:07,942 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:42:15,489 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:42:15,489 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:42:15,593 - INFO - SUCCESS!\n", - "2024-12-20 19:42:15,603 - INFO - ./data/processed_ATL03_20210321032334_13311001_006_01.h5\n", - "2024-12-20 19:42:15,605 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:42:15,933 - INFO - ./data/processed_ATL03_20210602120807_10641107_006_01.h5\n", - "2024-12-20 19:42:15,935 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:42:23,276 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:42:23,277 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:42:23,371 - INFO - SUCCESS!\n", - "2024-12-20 19:42:23,382 - INFO - ./data/processed_ATL03_20210901074802_10641207_006_02.h5\n", - "2024-12-20 19:42:23,383 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:42:32,504 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:42:32,504 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:42:32,580 - INFO - SUCCESS!\n", - "2024-12-20 19:42:32,590 - INFO - ./data/processed_ATL03_20181023091845_03780106_006_02.h5\n", - "2024-12-20 19:42:32,592 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:42:32,943 - INFO - ./data/processed_ATL03_20181208190538_10870102_006_02.h5\n", - "2024-12-20 19:42:32,948 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:42:33,282 - INFO - ./data/processed_ATL03_20190122045836_03780206_006_02.h5\n", - "2024-12-20 19:42:33,284 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:42:33,633 - INFO - ./data/processed_ATL03_20190309144538_10870202_006_02.h5\n", - "2024-12-20 19:42:33,638 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:42:54,627 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:42:54,676 - INFO - ./data/processed_ATL03_20190423003826_03780306_006_02.h5\n", - "2024-12-20 19:42:54,679 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:43:04,071 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:43:04,072 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:04,148 - INFO - SUCCESS!\n", - "2024-12-20 19:43:04,159 - INFO - ./data/processed_ATL03_20181125195614_08890102_006_02.h5\n", - "2024-12-20 19:43:04,162 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:43:04,558 - INFO - ./data/processed_ATL03_20190923053146_13310402_006_02.h5\n", - "2024-12-20 19:43:04,562 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:43:25,321 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:43:25,322 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:25,389 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:43:25,389 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:25,452 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:43:25,453 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:25,503 - INFO - SUCCESS!\n", - "2024-12-20 19:43:25,515 - INFO - ./data/processed_ATL03_20191223011133_13310502_006_01.h5\n", - "2024-12-20 19:43:25,522 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:43:48,345 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:43:48,346 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:48,405 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:43:48,406 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:48,466 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:43:48,467 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:48,515 - INFO - SUCCESS!\n", - "2024-12-20 19:43:48,527 - INFO - ./data/processed_ATL03_20200222221516_08890602_006_01.h5\n", - "2024-12-20 19:43:48,530 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:43:55,625 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:43:55,626 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:43:55,725 - INFO - SUCCESS!\n", - "2024-12-20 19:43:55,735 - INFO - ./data/processed_ATL03_20200407080809_01800706_006_02.h5\n", - "2024-12-20 19:43:55,738 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:44:18,453 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:44:18,454 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:44:18,465 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:44:18,466 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:44:18,505 - INFO - SUCCESS!\n", - "2024-12-20 19:44:18,517 - INFO - ./data/processed_ATL03_20200822133451_08890802_006_01.h5\n", - "2024-12-20 19:44:18,520 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:44:18,865 - INFO - ./data/processed_ATL03_20201005232741_01800906_006_01.h5\n", - "2024-12-20 19:44:18,867 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:44:35,157 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:44:35,157 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:44:35,210 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:44:35,211 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:44:35,289 - INFO - SUCCESS!\n", - "2024-12-20 19:44:35,302 - INFO - ./data/processed_ATL03_20210202174342_06221006_006_01.h5\n", - "2024-12-20 19:44:35,306 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:44:35,645 - INFO - ./data/processed_ATL03_20210220045435_08891002_006_01.h5\n", - "2024-12-20 19:44:35,648 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:44:49,790 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:44:49,791 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:44:49,848 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:44:49,849 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:44:49,925 - INFO - SUCCESS!\n", - "2024-12-20 19:44:49,937 - INFO - ./data/processed_ATL03_20210705102719_01801206_006_01.h5\n", - "2024-12-20 19:44:49,940 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:44:56,979 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:44:56,980 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:44:57,036 - INFO - SUCCESS!\n", - "2024-12-20 19:44:57,046 - INFO - ./data/processed_ATL03_20211102044325_06221306_006_01.h5\n", - "2024-12-20 19:44:57,049 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:44:57,386 - INFO - ./data/processed_ATL03_20220103014711_01801406_006_01.h5\n", - "2024-12-20 19:44:57,389 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:07,078 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:45:07,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:45:07,167 - INFO - SUCCESS!\n", - "2024-12-20 19:45:07,177 - INFO - ./data/processed_ATL03_20220403212702_01801506_006_02.h5\n", - "2024-12-20 19:45:07,179 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:14,615 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:45:14,615 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:45:14,709 - INFO - SUCCESS!\n", - "2024-12-20 19:45:14,721 - INFO - ./data/processed_ATL03_20221117223340_08891702_006_02.h5\n", - "2024-12-20 19:45:14,722 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:45:15,149 - INFO - ./data/processed_ATL03_20230101082633_01801806_006_02.h5\n", - "2024-12-20 19:45:15,151 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:15,738 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:45:15,751 - INFO - ./data/processed_ATL03_20230317164937_13311802_006_02.h5\n", - "2024-12-20 19:45:15,754 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:16,872 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:45:16,886 - INFO - ./data/processed_ATL03_20230616122853_13311902_006_02.h5\n", - "2024-12-20 19:45:16,888 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:17,218 - INFO - ./data/processed_ATL03_20240215005123_08892202_006_01.h5\n", - "2024-12-20 19:45:17,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:17,530 - INFO - ./data/processed_ATL03_20181220184041_12700102_006_02.h5\n", - "2024-12-20 19:45:17,533 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:24,574 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:45:24,574 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:45:24,664 - INFO - SUCCESS!\n", - "2024-12-20 19:45:24,675 - INFO - ./data/processed_ATL03_20190105055736_01190206_006_02.h5\n", - "2024-12-20 19:45:24,677 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:45:41,289 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:45:41,290 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:45:41,346 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:45:41,347 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:45:41,427 - INFO - SUCCESS!\n", - "2024-12-20 19:45:41,440 - INFO - ./data/processed_ATL03_20190321142037_12700202_006_02.h5\n", - "2024-12-20 19:45:41,442 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:46:02,756 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:46:02,757 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:02,816 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:46:02,817 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:02,875 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:46:02,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:02,925 - INFO - SUCCESS!\n", - "2024-12-20 19:46:02,937 - INFO - ./data/processed_ATL03_20191219011953_12700502_006_01.h5\n", - "2024-12-20 19:46:02,939 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:46:19,417 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:46:19,417 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:19,481 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:46:19,482 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:19,564 - INFO - SUCCESS!\n", - "2024-12-20 19:46:19,575 - INFO - ./data/processed_ATL03_20200318205941_12700602_006_01.h5\n", - "2024-12-20 19:46:19,577 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:46:32,908 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:46:32,909 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:32,959 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:46:32,960 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:33,024 - INFO - SUCCESS!\n", - "2024-12-20 19:46:33,036 - INFO - ./data/processed_ATL03_20200403081628_01190706_006_03.h5\n", - "2024-12-20 19:46:33,040 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:46:33,643 - INFO - ./data/processed_ATL03_20200617163925_12700702_006_01.h5\n", - "2024-12-20 19:46:33,645 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:46:50,777 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:46:50,777 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:50,839 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:46:50,839 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:50,934 - INFO - SUCCESS!\n", - "2024-12-20 19:46:50,949 - INFO - ./data/processed_ATL03_20200916121913_12700802_006_02.h5\n", - "2024-12-20 19:46:50,951 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:46:58,521 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:46:58,523 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:46:58,625 - INFO - SUCCESS!\n", - "2024-12-20 19:46:58,638 - INFO - ./data/processed_ATL03_20201001233605_01190906_006_01.h5\n", - "2024-12-20 19:46:58,640 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:47:15,449 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:47:15,450 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:47:15,507 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:47:15,508 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:47:15,601 - INFO - SUCCESS!\n", - "2024-12-20 19:47:15,614 - INFO - ./data/processed_ATL03_20210914185844_12701202_006_02.h5\n", - "2024-12-20 19:47:15,618 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:47:30,074 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:47:30,074 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:47:30,090 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:47:30,090 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:47:30,120 - INFO - SUCCESS!\n", - "2024-12-20 19:47:30,133 - INFO - ./data/processed_ATL03_20220315101830_12701402_006_01.h5\n", - "2024-12-20 19:47:30,135 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:47:47,086 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:47:47,086 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:47:47,140 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:47:47,141 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:47:47,221 - INFO - SUCCESS!\n", - "2024-12-20 19:47:47,232 - INFO - ./data/processed_ATL03_20220330213523_01191506_006_01.h5\n", - "2024-12-20 19:47:47,235 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:48:01,531 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:48:01,532 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:01,539 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:48:01,540 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:01,623 - INFO - SUCCESS!\n", - "2024-12-20 19:48:01,637 - INFO - ./data/processed_ATL03_20220629171522_01191606_006_01.h5\n", - "2024-12-20 19:48:01,641 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:48:02,904 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:48:02,919 - INFO - ./data/processed_ATL03_20220913013820_12701602_006_01.h5\n", - "2024-12-20 19:48:02,922 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:48:19,409 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:48:19,409 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:19,467 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:48:19,468 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:19,548 - INFO - SUCCESS!\n", - "2024-12-20 19:48:19,559 - INFO - ./data/processed_ATL03_20220928125511_01191706_006_01.h5\n", - "2024-12-20 19:48:19,562 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:48:26,584 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:48:26,584 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:26,674 - INFO - SUCCESS!\n", - "2024-12-20 19:48:26,686 - INFO - ./data/processed_ATL03_20221212211759_12701702_006_02.h5\n", - "2024-12-20 19:48:26,689 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:48:27,125 - INFO - ./data/processed_ATL03_20221228083454_01191806_006_02.h5\n", - "2024-12-20 19:48:27,128 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:48:33,818 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:48:33,819 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:33,910 - INFO - SUCCESS!\n", - "2024-12-20 19:48:33,921 - INFO - ./data/processed_ATL03_20231211035621_12702102_006_02.h5\n", - "2024-12-20 19:48:33,924 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:48:41,701 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:48:41,701 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:41,805 - INFO - SUCCESS!\n", - "2024-12-20 19:48:41,815 - INFO - ./data/processed_ATL03_20240310233541_12702202_006_01.h5\n", - "2024-12-20 19:48:41,819 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:48:42,173 - INFO - ./data/processed_ATL03_20240326105220_01192306_006_01.h5\n", - "2024-12-20 19:48:42,176 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:48:51,387 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:48:51,388 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:48:51,473 - INFO - SUCCESS!\n", - "2024-12-20 19:48:51,482 - INFO - ./data/processed_ATL03_20181027091027_04390106_006_02.h5\n", - "2024-12-20 19:48:51,502 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:48:51,962 - INFO - ./data/processed_ATL03_20190110173323_02030202_006_02.h5\n", - "2024-12-20 19:48:51,965 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:49:05,568 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:49:05,569 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:05,629 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:49:05,629 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:05,718 - INFO - SUCCESS!\n", - "2024-12-20 19:49:05,729 - INFO - ./data/processed_ATL03_20190126045022_04390206_006_02.h5\n", - "2024-12-20 19:49:05,731 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:49:12,630 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:49:12,631 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:12,650 - INFO - SUCCESS!\n", - "2024-12-20 19:49:12,659 - INFO - ./data/processed_ATL03_20190427003006_04390306_006_02.h5\n", - "2024-12-20 19:49:12,662 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:49:29,100 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:49:29,100 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:29,134 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:49:29,134 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:29,211 - INFO - SUCCESS!\n", - "2024-12-20 19:49:29,223 - INFO - ./data/processed_ATL03_20190726200942_04390406_006_02.h5\n", - "2024-12-20 19:49:29,226 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:49:42,273 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:49:42,274 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:42,304 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:49:42,304 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:42,365 - INFO - SUCCESS!\n", - "2024-12-20 19:49:42,381 - INFO - ./data/processed_ATL03_20181224062232_13230106_006_02.h5\n", - "2024-12-20 19:49:42,383 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:49:51,559 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:49:51,560 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:51,618 - INFO - SUCCESS!\n", - "2024-12-20 19:49:51,629 - INFO - ./data/processed_ATL03_20210918064035_13231206_006_02.h5\n", - "2024-12-20 19:49:51,631 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:49:59,631 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:49:59,631 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:49:59,702 - INFO - SUCCESS!\n", - "2024-12-20 19:49:59,712 - INFO - ./data/processed_ATL03_20211218022032_13231306_006_01.h5\n", - "2024-12-20 19:49:59,714 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:50:00,352 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:50:00,363 - INFO - ./data/processed_ATL03_20220318220022_13231406_006_01.h5\n", - "2024-12-20 19:50:00,367 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:50:07,238 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:50:07,239 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:50:07,327 - INFO - SUCCESS!\n", - "2024-12-20 19:50:07,339 - INFO - ./data/processed_ATL03_20220519190412_08811506_006_01.h5\n", - "2024-12-20 19:50:07,341 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:50:07,657 - INFO - ./data/processed_ATL03_20220916132009_13231606_006_01.h5\n", - "2024-12-20 19:50:07,660 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:50:08,043 - INFO - ./data/processed_ATL03_20200708014758_01940806_006_01.h5\n", - "2024-12-20 19:50:08,047 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:50:31,361 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:50:31,361 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:50:31,391 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:50:31,392 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:50:31,419 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:50:31,419 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:50:31,454 - INFO - SUCCESS!\n", - "2024-12-20 19:50:31,466 - INFO - ./data/processed_ATL03_20200803121633_05980802_006_01.h5\n", - "2024-12-20 19:50:31,469 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:50:55,526 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:50:55,526 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:50:55,545 - INFO - SUCCESS!\n", - "2024-12-20 19:50:55,558 - INFO - ./data/processed_ATL03_20201102075621_05980902_006_01.h5\n", - "2024-12-20 19:50:55,561 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:50:55,979 - INFO - ./data/processed_ATL03_20201207183135_11390906_006_01.h5\n", - "2024-12-20 19:50:55,982 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:51:03,247 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:51:03,257 - INFO - ./data/processed_ATL03_20210105170741_01941006_006_01.h5\n", - "2024-12-20 19:51:03,259 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:51:10,000 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:51:10,010 - INFO - ./data/processed_ATL03_20210201033616_05981002_006_01.h5\n", - "2024-12-20 19:51:10,013 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:51:17,864 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:51:17,910 - INFO - ./data/processed_ATL03_20210502231606_05981102_006_01.h5\n", - "2024-12-20 19:51:17,911 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:51:34,206 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:51:34,207 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:51:34,260 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:51:34,261 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:51:34,302 - INFO - SUCCESS!\n", - "2024-12-20 19:51:34,332 - INFO - ./data/processed_ATL03_20210531215210_10401102_006_01.h5\n", - "2024-12-20 19:51:34,335 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:51:34,770 - INFO - ./data/processed_ATL03_20210607095120_11391106_006_01.h5\n", - "2024-12-20 19:51:34,774 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:51:58,786 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:51:58,786 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:51:58,820 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:51:58,821 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:51:58,858 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:51:58,859 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:51:58,886 - INFO - SUCCESS!\n", - "2024-12-20 19:51:58,899 - INFO - ./data/processed_ATL03_20210801185558_05981202_006_01.h5\n", - "2024-12-20 19:51:58,903 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:52:13,397 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:52:13,398 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:52:13,443 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:52:13,443 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:52:13,494 - INFO - SUCCESS!\n", - "2024-12-20 19:52:13,506 - INFO - ./data/processed_ATL03_20210906053116_11391206_006_02.h5\n", - "2024-12-20 19:52:13,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:52:13,874 - INFO - ./data/processed_ATL03_20211031143557_05981302_006_01.h5\n", - "2024-12-20 19:52:13,877 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:52:30,503 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:52:30,560 - INFO - ./data/processed_ATL03_20220130101548_05981402_006_01.h5\n", - "2024-12-20 19:52:30,563 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:52:39,029 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:52:39,076 - INFO - ./data/processed_ATL03_20220306205103_11391406_006_01.h5\n", - "2024-12-20 19:52:39,080 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:52:39,451 - INFO - ./data/processed_ATL03_20220501055538_05981502_006_01.h5\n", - "2024-12-20 19:52:39,454 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:52:39,915 - INFO - ./data/processed_ATL03_20220530043148_10401502_006_01.h5\n", - "2024-12-20 19:52:39,917 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:52:40,268 - INFO - ./data/processed_ATL03_20220605163058_11391506_006_01.h5\n", - "2024-12-20 19:52:40,271 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:53:07,135 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:53:07,136 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:53:07,143 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:53:07,143 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:53:07,175 - INFO - SUCCESS!\n", - "2024-12-20 19:53:07,193 - INFO - ./data/processed_ATL03_20220731013539_05981602_006_02.h5\n", - "2024-12-20 19:53:07,194 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:53:14,698 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:53:14,698 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:53:14,754 - INFO - SUCCESS!\n", - "2024-12-20 19:53:14,772 - INFO - ./data/processed_ATL03_20220904121054_11391606_006_01.h5\n", - "2024-12-20 19:53:14,775 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:53:28,983 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:53:28,983 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:53:29,013 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:53:29,014 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:53:29,054 - INFO - SUCCESS!\n", - "2024-12-20 19:53:29,065 - INFO - ./data/processed_ATL03_20221003104652_01941706_006_01.h5\n", - "2024-12-20 19:53:29,067 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:53:46,462 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:53:46,462 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:53:46,513 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:53:46,513 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:53:46,581 - INFO - SUCCESS!\n", - "2024-12-20 19:53:46,599 - INFO - ./data/processed_ATL03_20221029211524_05981702_006_01.h5\n", - "2024-12-20 19:53:46,603 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:10,762 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:54:10,762 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:54:10,809 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:54:10,810 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:54:10,865 - INFO - SUCCESS!\n", - "2024-12-20 19:54:10,879 - INFO - ./data/processed_ATL03_20230128165520_05981802_006_02.h5\n", - "2024-12-20 19:54:10,883 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:25,288 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:54:25,289 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:54:25,310 - INFO - SUCCESS!\n", - "2024-12-20 19:54:25,323 - INFO - ./data/processed_ATL03_20230305033031_11391806_006_02.h5\n", - "2024-12-20 19:54:25,326 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:54:25,675 - INFO - ./data/processed_ATL03_20230429123455_05981902_006_02.h5\n", - "2024-12-20 19:54:25,676 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:25,966 - INFO - ./data/processed_ATL03_20181021191118_03540102_006_02.h5\n", - "2024-12-20 19:54:25,969 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:26,703 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:26,716 - INFO - ./data/processed_ATL03_20201115070544_07960902_006_01.h5\n", - "2024-12-20 19:54:26,719 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:27,102 - INFO - ./data/processed_ATL03_20201121190455_08950906_006_01.h5\n", - "2024-12-20 19:54:27,105 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:27,577 - INFO - ./data/processed_ATL03_20210220144449_08951006_006_01.h5\n", - "2024-12-20 19:54:27,581 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:28,206 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:28,218 - INFO - ./data/processed_ATL03_20210423114835_04531106_006_02.h5\n", - "2024-12-20 19:54:28,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:29,473 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:29,490 - INFO - ./data/processed_ATL03_20210515222529_07961102_006_01.h5\n", - "2024-12-20 19:54:29,493 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:30,519 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:30,534 - INFO - ./data/processed_ATL03_20210716192916_03541202_006_01.h5\n", - "2024-12-20 19:54:30,537 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:31,535 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:31,550 - INFO - ./data/processed_ATL03_20210821060433_08951206_006_01.h5\n", - "2024-12-20 19:54:31,553 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:54:31,988 - INFO - ./data/processed_ATL03_20211015150914_03541302_006_01.h5\n", - "2024-12-20 19:54:31,992 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:33,635 - ERROR - An error occurred: No objects to concatenate\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:33,651 - INFO - ./data/processed_ATL03_20211120014433_08951306_006_01.h5\n", - "2024-12-20 19:54:33,653 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:34,511 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:34,526 - INFO - ./data/processed_ATL03_20220114104907_03541402_006_01.h5\n", - "2024-12-20 19:54:34,528 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:35,483 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:35,497 - INFO - ./data/processed_ATL03_20220218212421_08951406_006_01.h5\n", - "2024-12-20 19:54:35,500 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:54:36,238 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:36,250 - INFO - ./data/processed_ATL03_20220415062831_03541502_006_02.h5\n", - "2024-12-20 19:54:36,252 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:36,777 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:36,789 - INFO - ./data/processed_ATL03_20220421182808_04531506_006_02.h5\n", - "2024-12-20 19:54:36,792 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l']\n", - "Processing strong beam: gt2l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:38,104 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:38,119 - INFO - ./data/processed_ATL03_20220514050505_07961502_006_01.h5\n", - "2024-12-20 19:54:38,121 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:39,129 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:39,141 - INFO - ./data/processed_ATL03_20220715020854_03541602_006_02.h5\n", - "2024-12-20 19:54:39,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:54:39,654 - INFO - ./data/processed_ATL03_20220721140804_04531606_006_02.h5\n", - "2024-12-20 19:54:39,656 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:40,639 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:40,654 - INFO - ./data/processed_ATL03_20220813004456_07961602_006_01.h5\n", - "2024-12-20 19:54:40,657 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:54:41,324 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:41,336 - INFO - ./data/processed_ATL03_20220819124411_08951606_006_01.h5\n", - "2024-12-20 19:54:41,339 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:41,699 - INFO - ./data/processed_ATL03_20221013214842_03541702_006_01.h5\n", - "2024-12-20 19:54:41,701 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:42,315 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:42,330 - INFO - ./data/processed_ATL03_20221118082353_08951706_006_02.h5\n", - "2024-12-20 19:54:42,332 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:42,670 - INFO - ./data/processed_ATL03_20230112172825_03541802_006_02.h5\n", - "2024-12-20 19:54:42,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:43,722 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:43,738 - INFO - ./data/processed_ATL03_20230217040342_08951806_006_02.h5\n", - "2024-12-20 19:54:43,741 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:54:44,327 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:44,342 - INFO - ./data/processed_ATL03_20230512114412_07961902_006_02.h5\n", - "2024-12-20 19:54:44,346 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:44,716 - INFO - ./data/processed_ATL03_20230518234317_08951906_006_02.h5\n", - "2024-12-20 19:54:44,727 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:45,096 - INFO - ./data/processed_ATL03_20230713084729_03542002_006_02.h5\n", - "2024-12-20 19:54:45,097 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:45,745 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:45,758 - INFO - ./data/processed_ATL03_20230817192232_08952006_006_02.h5\n", - "2024-12-20 19:54:45,760 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:46,066 - INFO - ./data/processed_ATL03_20231012042650_03542102_006_02.h5\n", - "2024-12-20 19:54:46,068 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:46,721 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:54:46,736 - INFO - ./data/processed_ATL03_20201119065724_08570902_006_01.h5\n", - "2024-12-20 19:54:46,739 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:54:54,996 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:54:55,048 - INFO - ./data/processed_ATL03_20201125185636_09560906_006_01.h5\n", - "2024-12-20 19:54:55,050 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:06,085 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:55:06,096 - INFO - ./data/processed_ATL03_20210120040113_04151002_006_01.h5\n", - "2024-12-20 19:55:06,098 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:55:06,429 - INFO - ./data/processed_ATL03_20210224143628_09561006_006_01.h5\n", - "2024-12-20 19:55:06,432 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:07,250 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:55:07,264 - INFO - ./data/processed_ATL03_20210519221709_08571102_006_01.h5\n", - "2024-12-20 19:55:07,266 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:08,347 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:55:08,360 - INFO - ./data/processed_ATL03_20210526101619_09561106_006_01.h5\n", - "2024-12-20 19:55:08,365 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:08,746 - INFO - ./data/processed_ATL03_20210818175703_08571202_006_01.h5\n", - "2024-12-20 19:55:08,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:22,850 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:55:22,868 - INFO - ./data/processed_ATL03_20210825055614_09561206_006_01.h5\n", - "2024-12-20 19:55:22,871 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:39,608 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:55:39,609 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:55:39,627 - INFO - SUCCESS!\n", - "2024-12-20 19:55:39,638 - INFO - ./data/processed_ATL03_20211019150055_04151302_006_01.h5\n", - "2024-12-20 19:55:39,641 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:55:39,970 - INFO - ./data/processed_ATL03_20211124013613_09561306_006_01.h5\n", - "2024-12-20 19:55:39,973 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:40,653 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:55:40,665 - INFO - ./data/processed_ATL03_20220216091649_08571402_006_01.h5\n", - "2024-12-20 19:55:40,667 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:55:55,468 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:55:55,479 - INFO - ./data/processed_ATL03_20220222211602_09561406_006_01.h5\n", - "2024-12-20 19:55:55,481 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:56:11,732 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:56:11,745 - INFO - ./data/processed_ATL03_20220518045644_08571502_006_01.h5\n", - "2024-12-20 19:56:11,747 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:56:18,466 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:56:18,510 - INFO - ./data/processed_ATL03_20220524165551_09561506_006_01.h5\n", - "2024-12-20 19:56:18,514 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:56:18,837 - INFO - ./data/processed_ATL03_20220817003641_08571602_006_01.h5\n", - "2024-12-20 19:56:18,840 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:56:33,346 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:56:33,358 - INFO - ./data/processed_ATL03_20220823123554_09561606_006_01.h5\n", - "2024-12-20 19:56:33,361 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:56:43,861 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:56:43,872 - INFO - ./data/processed_ATL03_20221115201621_08571702_006_02.h5\n", - "2024-12-20 19:56:43,875 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:56:44,544 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:56:44,556 - INFO - ./data/processed_ATL03_20221122081533_09561706_006_02.h5\n", - "2024-12-20 19:56:44,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:56:45,584 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 19:56:45,597 - INFO - ./data/processed_ATL03_20230214155613_08571802_006_02.h5\n", - "2024-12-20 19:56:45,600 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:57:00,762 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:57:00,763 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:57:00,779 - INFO - SUCCESS!\n", - "2024-12-20 19:57:00,793 - INFO - ./data/processed_ATL03_20230221035526_09561806_006_02.h5\n", - "2024-12-20 19:57:00,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:57:18,705 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:57:18,717 - INFO - ./data/processed_ATL03_20230516113550_08571902_006_02.h5\n", - "2024-12-20 19:57:18,720 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:57:34,018 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:57:34,031 - INFO - ./data/processed_ATL03_20230522233501_09561906_006_02.h5\n", - "2024-12-20 19:57:34,043 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:57:41,925 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 19:57:41,935 - INFO - ./data/processed_ATL03_20190513215648_06970306_006_02.h5\n", - "2024-12-20 19:57:41,937 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:57:53,059 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:57:53,060 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:57:53,159 - INFO - SUCCESS!\n", - "2024-12-20 19:57:53,171 - INFO - ./data/processed_ATL03_20190714190018_02550406_006_02.h5\n", - "2024-12-20 19:57:53,174 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:58:00,863 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:58:00,863 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:58:00,903 - INFO - SUCCESS!\n", - "2024-12-20 19:58:00,913 - INFO - ./data/processed_ATL03_20190812173630_06970406_006_02.h5\n", - "2024-12-20 19:58:00,915 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:58:16,098 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:58:16,099 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:58:16,164 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:58:16,165 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:58:16,224 - INFO - SUCCESS!\n", - "2024-12-20 19:58:16,235 - INFO - ./data/processed_ATL03_20190908040505_11010402_006_02.h5\n", - "2024-12-20 19:58:16,250 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:58:16,634 - INFO - ./data/processed_ATL03_20191207234455_11010502_006_01.h5\n", - "2024-12-20 19:58:16,636 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:58:17,046 - INFO - ./data/processed_ATL03_20200210085607_06970606_006_01.h5\n", - "2024-12-20 19:58:17,048 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:58:28,045 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 19:58:28,089 - INFO - ./data/processed_ATL03_20200307192440_11010602_006_01.h5\n", - "2024-12-20 19:58:28,092 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:58:35,078 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:58:35,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:58:35,151 - INFO - SUCCESS!\n", - "2024-12-20 19:58:35,162 - INFO - ./data/processed_ATL03_20200412055954_02550706_006_02.h5\n", - "2024-12-20 19:58:35,165 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:58:41,976 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:58:41,976 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:58:41,998 - INFO - SUCCESS!\n", - "2024-12-20 19:58:42,008 - INFO - ./data/processed_ATL03_20200606150429_11010702_006_01.h5\n", - "2024-12-20 19:58:42,012 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:58:50,181 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:58:50,181 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:58:50,212 - INFO - SUCCESS!\n", - "2024-12-20 19:58:50,223 - INFO - ./data/processed_ATL03_20200810001543_06970806_006_01.h5\n", - "2024-12-20 19:58:50,224 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:58:50,500 - INFO - ./data/processed_ATL03_20200905104415_11010802_006_02.h5\n", - "2024-12-20 19:58:50,502 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:59:06,211 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:59:06,212 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:59:06,253 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:59:06,254 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:59:06,334 - INFO - SUCCESS!\n", - "2024-12-20 19:59:06,345 - INFO - ./data/processed_ATL03_20201010211927_02550906_006_01.h5\n", - "2024-12-20 19:59:06,353 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:59:06,687 - INFO - ./data/processed_ATL03_20201108195531_06970906_006_01.h5\n", - "2024-12-20 19:59:06,690 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:59:07,010 - INFO - ./data/processed_ATL03_20210207153527_06971006_006_01.h5\n", - "2024-12-20 19:59:07,013 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:59:31,656 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:59:31,657 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:59:31,687 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 19:59:31,688 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:59:31,708 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 19:59:31,708 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:59:31,750 - INFO - SUCCESS!\n", - "2024-12-20 19:59:31,765 - INFO - ./data/processed_ATL03_20210306020400_11011002_006_01.h5\n", - "2024-12-20 19:59:31,767 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:59:32,117 - INFO - ./data/processed_ATL03_20210410123914_02551106_006_02.h5\n", - "2024-12-20 19:59:32,119 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:59:40,498 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 19:59:40,499 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 19:59:40,549 - INFO - SUCCESS!\n", - "2024-12-20 19:59:40,561 - INFO - ./data/processed_ATL03_20210604214350_11011102_006_01.h5\n", - "2024-12-20 19:59:40,564 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 19:59:41,022 - INFO - ./data/processed_ATL03_20210808065508_06971206_006_01.h5\n", - "2024-12-20 19:59:41,026 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 19:59:41,346 - INFO - ./data/processed_ATL03_20211107023508_06971306_006_01.h5\n", - "2024-12-20 19:59:41,348 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:00:04,885 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:00:04,886 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:00:04,941 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:00:04,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:00:04,983 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:00:04,983 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:00:05,025 - INFO - SUCCESS!\n", - "2024-12-20 20:00:05,036 - INFO - ./data/processed_ATL03_20211203130341_11011302_006_01.h5\n", - "2024-12-20 20:00:05,039 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:00:05,432 - INFO - ./data/processed_ATL03_20220205221457_06971406_006_01.h5\n", - "2024-12-20 20:00:05,434 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:00:05,745 - INFO - ./data/processed_ATL03_20220304084331_11011402_006_01.h5\n", - "2024-12-20 20:00:05,747 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:00:29,357 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:00:29,358 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:00:29,381 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:00:29,382 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:00:29,417 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:00:29,418 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:00:29,462 - INFO - SUCCESS!\n", - "2024-12-20 20:00:29,473 - INFO - ./data/processed_ATL03_20220603042329_11011502_006_01.h5\n", - "2024-12-20 20:00:29,476 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:00:29,800 - INFO - ./data/processed_ATL03_20220708145843_02551606_006_02.h5\n", - "2024-12-20 20:00:29,802 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:00:37,841 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:00:37,842 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:00:37,860 - INFO - SUCCESS!\n", - "2024-12-20 20:00:37,869 - INFO - ./data/processed_ATL03_20220902000322_11011602_006_01.h5\n", - "2024-12-20 20:00:37,871 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:00:45,108 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:00:45,158 - INFO - ./data/processed_ATL03_20221105091433_06971706_006_01.h5\n", - "2024-12-20 20:00:45,161 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:01:01,987 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:01:01,987 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:01:02,009 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:01:02,010 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:01:02,096 - INFO - SUCCESS!\n", - "2024-12-20 20:01:02,110 - INFO - ./data/processed_ATL03_20221201194302_11011702_006_02.h5\n", - "2024-12-20 20:01:02,113 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:01:24,215 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:01:24,215 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:01:24,226 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:01:24,227 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:01:24,248 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:01:24,249 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:01:24,292 - INFO - SUCCESS!\n", - "2024-12-20 20:01:24,304 - INFO - ./data/processed_ATL03_20230204045421_06971806_006_02.h5\n", - "2024-12-20 20:01:24,306 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:01:24,671 - INFO - ./data/processed_ATL03_20230302152246_11011802_006_02.h5\n", - "2024-12-20 20:01:24,678 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:01:50,438 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:01:50,439 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:01:50,475 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:01:50,475 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:01:50,529 - INFO - SUCCESS!\n", - "2024-12-20 20:01:50,548 - INFO - ./data/processed_ATL03_20230407015805_02551906_006_02.h5\n", - "2024-12-20 20:01:50,551 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:01:50,888 - INFO - ./data/processed_ATL03_20230601110225_11011902_006_02.h5\n", - "2024-12-20 20:01:50,891 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:08,197 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:02:08,198 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:02:08,216 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:02:08,217 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:02:08,282 - INFO - SUCCESS!\n", - "2024-12-20 20:02:08,294 - INFO - ./data/processed_ATL03_20230804201313_06972006_006_02.h5\n", - "2024-12-20 20:02:08,300 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:16,282 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:02:16,283 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:02:16,335 - INFO - SUCCESS!\n", - "2024-12-20 20:02:16,346 - INFO - ./data/processed_ATL03_20181024071849_03920106_006_02.h5\n", - "2024-12-20 20:02:16,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:02:16,689 - INFO - ./data/processed_ATL03_20181029185440_04760102_006_02.h5\n", - "2024-12-20 20:02:16,690 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:16,991 - INFO - ./data/processed_ATL03_20181122055455_08340106_006_02.h5\n", - "2024-12-20 20:02:16,993 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:17,346 - INFO - ./data/processed_ATL03_20181218162324_12380102_006_02.h5\n", - "2024-12-20 20:02:17,349 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:17,792 - INFO - ./data/processed_ATL03_20190116145920_02930202_006_02.h5\n", - "2024-12-20 20:02:17,795 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:18,160 - INFO - ./data/processed_ATL03_20190417103919_02930302_006_02.h5\n", - "2024-12-20 20:02:18,164 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:18,555 - INFO - ./data/processed_ATL03_20190522211426_08340306_006_02.h5\n", - "2024-12-20 20:02:18,567 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:18,907 - INFO - ./data/processed_ATL03_20190723181804_03920406_006_02.h5\n", - "2024-12-20 20:02:18,911 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:33,321 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:02:33,322 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:02:33,378 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:02:33,379 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:02:33,443 - INFO - SUCCESS!\n", - "2024-12-20 20:02:33,455 - INFO - ./data/processed_ATL03_20190815045501_07350402_006_02.h5\n", - "2024-12-20 20:02:33,468 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:02:43,134 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:02:43,135 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:02:43,174 - INFO - SUCCESS!\n", - "2024-12-20 20:02:43,185 - INFO - ./data/processed_ATL03_20190821165414_08340406_006_02.h5\n", - "2024-12-20 20:02:43,188 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:03:05,770 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:03:05,771 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:03:05,802 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:03:05,802 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:03:05,829 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:03:05,830 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:03:05,870 - INFO - SUCCESS!\n", - "2024-12-20 20:03:05,882 - INFO - ./data/processed_ATL03_20191016015852_02930502_006_02.h5\n", - "2024-12-20 20:03:05,884 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:03:28,691 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:03:28,692 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:03:28,719 - INFO - SUCCESS!\n", - "2024-12-20 20:03:28,731 - INFO - ./data/processed_ATL03_20200219081349_08340606_006_01.h5\n", - "2024-12-20 20:03:28,734 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:03:35,687 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:03:35,734 - INFO - ./data/processed_ATL03_20200316184225_12380602_006_01.h5\n", - "2024-12-20 20:03:35,738 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:03:46,654 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:03:46,655 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:03:46,705 - INFO - SUCCESS!\n", - "2024-12-20 20:03:46,716 - INFO - ./data/processed_ATL03_20200414171825_02930702_006_02.h5\n", - "2024-12-20 20:03:46,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:03:47,827 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:03:47,842 - INFO - ./data/processed_ATL03_20200421051736_03920706_006_02.h5\n", - "2024-12-20 20:03:47,845 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:03:54,463 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:03:54,509 - INFO - ./data/processed_ATL03_20200818233325_08340806_006_01.h5\n", - "2024-12-20 20:03:54,512 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:04:01,395 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:04:01,395 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:04:01,450 - INFO - SUCCESS!\n", - "2024-12-20 20:04:01,460 - INFO - ./data/processed_ATL03_20200914100157_12380802_006_02.h5\n", - "2024-12-20 20:04:01,463 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:04:01,812 - INFO - ./data/processed_ATL03_20201019203709_03920906_006_01.h5\n", - "2024-12-20 20:04:01,815 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:04:02,177 - INFO - ./data/processed_ATL03_20210216145307_08341006_006_01.h5\n", - "2024-12-20 20:04:02,181 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:04:19,844 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:04:19,845 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:04:19,861 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:04:19,862 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:04:19,900 - INFO - SUCCESS!\n", - "2024-12-20 20:04:19,913 - INFO - ./data/processed_ATL03_20210315012141_12381002_006_01.h5\n", - "2024-12-20 20:04:19,916 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:04:34,060 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:04:34,060 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:04:34,089 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:04:34,090 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:04:34,139 - INFO - SUCCESS!\n", - "2024-12-20 20:04:34,150 - INFO - ./data/processed_ATL03_20210412235744_02931102_006_02.h5\n", - "2024-12-20 20:04:34,156 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:04:50,803 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:04:50,850 - INFO - ./data/processed_ATL03_20210419115655_03921106_006_02.h5\n", - "2024-12-20 20:04:50,871 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:05:04,810 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:05:04,811 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:05:04,830 - INFO - SUCCESS!\n", - "2024-12-20 20:05:04,841 - INFO - ./data/processed_ATL03_20210712193735_02931202_006_01.h5\n", - "2024-12-20 20:05:04,844 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:05:05,202 - INFO - ./data/processed_ATL03_20211116015252_08341306_006_01.h5\n", - "2024-12-20 20:05:05,206 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:05:28,431 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:05:28,431 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:05:28,457 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:05:28,457 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:05:28,509 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:05:28,510 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:05:28,579 - INFO - SUCCESS!\n", - "2024-12-20 20:05:28,591 - INFO - ./data/processed_ATL03_20211212122125_12381302_006_01.h5\n", - "2024-12-20 20:05:28,597 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:05:42,958 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:05:42,958 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:05:42,995 - INFO - SUCCESS!\n", - "2024-12-20 20:05:43,007 - INFO - ./data/processed_ATL03_20220110105727_02931402_006_01.h5\n", - "2024-12-20 20:05:43,010 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:05:43,375 - INFO - ./data/processed_ATL03_20220214213239_08341406_006_01.h5\n", - "2024-12-20 20:05:43,378 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:05:43,722 - INFO - ./data/processed_ATL03_20220711021716_02931602_006_02.h5\n", - "2024-12-20 20:05:43,725 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:05:44,079 - INFO - ./data/processed_ATL03_20220717141626_03921606_006_02.h5\n", - "2024-12-20 20:05:44,082 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:05:53,875 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:05:53,876 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:05:53,939 - INFO - SUCCESS!\n", - "2024-12-20 20:05:53,949 - INFO - ./data/processed_ATL03_20221114083211_08341706_006_02.h5\n", - "2024-12-20 20:05:53,951 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:00,471 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:06:00,514 - INFO - ./data/processed_ATL03_20221210190042_12381702_006_02.h5\n", - "2024-12-20 20:06:00,519 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:06:01,143 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:06:01,155 - INFO - ./data/processed_ATL03_20230108173645_02931802_006_02.h5\n", - "2024-12-20 20:06:01,157 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:01,483 - INFO - ./data/processed_ATL03_20230213041205_08341806_006_02.h5\n", - "2024-12-20 20:06:01,486 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:01,804 - INFO - ./data/processed_ATL03_20230409131634_02931902_006_02.h5\n", - "2024-12-20 20:06:01,806 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:08,644 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:06:08,645 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:06:08,728 - INFO - SUCCESS!\n", - "2024-12-20 20:06:08,738 - INFO - ./data/processed_ATL03_20230416011550_03921906_006_03.h5\n", - "2024-12-20 20:06:08,749 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:15,823 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:06:15,824 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:06:15,880 - INFO - SUCCESS!\n", - "2024-12-20 20:06:15,890 - INFO - ./data/processed_ATL03_20230813193054_08342006_006_02.h5\n", - "2024-12-20 20:06:15,893 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:06:16,526 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:06:16,539 - INFO - ./data/processed_ATL03_20230909055925_12382002_006_02.h5\n", - "2024-12-20 20:06:16,542 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:16,908 - INFO - ./data/processed_ATL03_20231008043518_02932102_006_02.h5\n", - "2024-12-20 20:06:16,912 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:17,254 - INFO - ./data/processed_ATL03_20231112151033_08342106_006_01.h5\n", - "2024-12-20 20:06:17,264 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:17,615 - INFO - ./data/processed_ATL03_20181127173038_09180102_006_02.h5\n", - "2024-12-20 20:06:17,617 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:28,188 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:06:28,189 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:06:28,231 - INFO - SUCCESS!\n", - "2024-12-20 20:06:28,242 - INFO - ./data/processed_ATL03_20190102040559_00720206_006_02.h5\n", - "2024-12-20 20:06:28,245 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:29,280 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:06:29,293 - INFO - ./data/processed_ATL03_20190226131040_09180202_006_02.h5\n", - "2024-12-20 20:06:29,295 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:42,511 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:06:42,512 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:06:42,542 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:06:42,542 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:06:42,572 - INFO - SUCCESS!\n", - "2024-12-20 20:06:42,585 - INFO - ./data/processed_ATL03_20190402234550_00720306_006_02.h5\n", - "2024-12-20 20:06:42,588 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:49,820 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:06:49,821 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:06:49,920 - INFO - SUCCESS!\n", - "2024-12-20 20:06:49,931 - INFO - ./data/processed_ATL03_20190827043005_09180402_006_02.h5\n", - "2024-12-20 20:06:49,934 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:06:59,928 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:06:59,975 - INFO - ./data/processed_ATL03_20191126000956_09180502_006_01.h5\n", - "2024-12-20 20:06:59,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:07,400 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:07:07,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:07:07,444 - INFO - SUCCESS!\n", - "2024-12-20 20:07:07,454 - INFO - ./data/processed_ATL03_20191231104507_00720606_006_01.h5\n", - "2024-12-20 20:07:07,457 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:07:07,798 - INFO - ./data/processed_ATL03_20200129092110_05140606_006_01.h5\n", - "2024-12-20 20:07:07,801 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:08,150 - INFO - ./data/processed_ATL03_20200224194940_09180602_006_01.h5\n", - "2024-12-20 20:07:08,160 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:08,527 - INFO - ./data/processed_ATL03_20200331062448_00720706_006_01.h5\n", - "2024-12-20 20:07:08,530 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:15,875 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:07:15,927 - INFO - ./data/processed_ATL03_20200525152929_09180702_006_01.h5\n", - "2024-12-20 20:07:15,929 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:32,880 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:07:32,881 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:07:32,941 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:07:32,942 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:07:33,005 - INFO - SUCCESS!\n", - "2024-12-20 20:07:33,017 - INFO - ./data/processed_ATL03_20200630020440_00720806_006_01.h5\n", - "2024-12-20 20:07:33,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:07:33,373 - INFO - ./data/processed_ATL03_20200824110915_09180802_006_01.h5\n", - "2024-12-20 20:07:33,375 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:40,405 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:07:40,406 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:07:40,456 - INFO - SUCCESS!\n", - "2024-12-20 20:07:40,468 - INFO - ./data/processed_ATL03_20200928214429_00720906_006_02.h5\n", - "2024-12-20 20:07:40,471 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:54,729 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:07:54,730 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:07:54,776 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:07:54,777 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:07:54,823 - INFO - SUCCESS!\n", - "2024-12-20 20:07:54,835 - INFO - ./data/processed_ATL03_20201123064905_09180902_006_01.h5\n", - "2024-12-20 20:07:54,837 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:56,131 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:07:56,144 - INFO - ./data/processed_ATL03_20210124035255_04761002_006_01.h5\n", - "2024-12-20 20:07:56,147 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:07:56,493 - INFO - ./data/processed_ATL03_20210126160025_05141006_006_01.h5\n", - "2024-12-20 20:07:56,505 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:08:06,295 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:08:06,295 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:08:06,315 - INFO - SUCCESS!\n", - "2024-12-20 20:08:06,325 - INFO - ./data/processed_ATL03_20210329130412_00721106_006_01.h5\n", - "2024-12-20 20:08:06,331 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:08:20,399 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:08:20,400 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:08:20,407 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:08:20,408 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:08:20,428 - INFO - SUCCESS!\n", - "2024-12-20 20:08:20,440 - INFO - ./data/processed_ATL03_20210523220850_09181102_006_01.h5\n", - "2024-12-20 20:08:20,443 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:08:37,622 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:08:37,623 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:08:37,635 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:08:37,636 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:08:37,670 - INFO - SUCCESS!\n", - "2024-12-20 20:08:37,682 - INFO - ./data/processed_ATL03_20210628084402_00721206_006_01.h5\n", - "2024-12-20 20:08:37,715 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:08:38,508 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:08:38,528 - INFO - ./data/processed_ATL03_20210822174844_09181202_006_01.h5\n", - "2024-12-20 20:08:38,531 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:08:52,032 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:08:52,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:08:52,096 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:08:52,096 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:08:52,147 - INFO - SUCCESS!\n", - "2024-12-20 20:08:52,159 - INFO - ./data/processed_ATL03_20211023145237_04761302_006_01.h5\n", - "2024-12-20 20:08:52,161 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:08:52,501 - INFO - ./data/processed_ATL03_20211026030006_05141306_006_01.h5\n", - "2024-12-20 20:08:52,503 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:08:59,801 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:08:59,848 - INFO - ./data/processed_ATL03_20211227000354_00721406_006_01.h5\n", - "2024-12-20 20:08:59,851 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:09:16,290 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:09:16,291 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:09:16,316 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:09:16,317 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:09:16,386 - INFO - SUCCESS!\n", - "2024-12-20 20:09:16,397 - INFO - ./data/processed_ATL03_20220220090831_09181402_006_01.h5\n", - "2024-12-20 20:09:16,400 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:09:30,025 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:09:30,026 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:09:30,079 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:09:30,079 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:09:30,128 - INFO - SUCCESS!\n", - "2024-12-20 20:09:30,138 - INFO - ./data/processed_ATL03_20220327194347_00721506_006_01.h5\n", - "2024-12-20 20:09:30,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:09:46,861 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:09:46,861 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:09:46,885 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:09:46,885 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:09:46,945 - INFO - SUCCESS!\n", - "2024-12-20 20:09:46,956 - INFO - ./data/processed_ATL03_20220522044820_09181502_006_01.h5\n", - "2024-12-20 20:09:46,958 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:09:47,631 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:09:47,643 - INFO - ./data/processed_ATL03_20220626152342_00721606_006_01.h5\n", - "2024-12-20 20:09:47,646 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:10:10,584 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:10:10,585 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:10:10,595 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:10:10,596 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:10:10,650 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:10:10,651 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:10:10,724 - INFO - SUCCESS!\n", - "2024-12-20 20:10:10,735 - INFO - ./data/processed_ATL03_20220821002822_09181602_006_01.h5\n", - "2024-12-20 20:10:10,739 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:10:24,212 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:10:24,213 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:10:24,266 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:10:24,267 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:10:24,312 - INFO - SUCCESS!\n", - "2024-12-20 20:10:24,323 - INFO - ./data/processed_ATL03_20220925110334_00721706_006_01.h5\n", - "2024-12-20 20:10:24,329 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:10:24,680 - INFO - ./data/processed_ATL03_20221119200803_09181702_006_02.h5\n", - "2024-12-20 20:10:24,683 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:10:25,374 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:10:25,385 - INFO - ./data/processed_ATL03_20221225064301_00721806_006_02.h5\n", - "2024-12-20 20:10:25,388 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:10:32,130 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:10:32,174 - INFO - ./data/processed_ATL03_20230218154755_09181802_006_02.h5\n", - "2024-12-20 20:10:32,176 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:10:48,427 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:10:48,428 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:10:48,478 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:10:48,479 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:10:48,526 - INFO - SUCCESS!\n", - "2024-12-20 20:10:48,538 - INFO - ./data/processed_ATL03_20230326022309_00721906_006_02.h5\n", - "2024-12-20 20:10:48,540 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:10:54,981 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:10:55,025 - INFO - ./data/processed_ATL03_20230520112730_09181902_006_02.h5\n", - "2024-12-20 20:10:55,030 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:11:18,101 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:11:18,102 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:11:18,157 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:11:18,158 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:11:18,215 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:11:18,216 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:11:18,273 - INFO - SUCCESS!\n", - "2024-12-20 20:11:18,285 - INFO - ./data/processed_ATL03_20230624220227_00722006_006_02.h5\n", - "2024-12-20 20:11:18,289 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:11:18,610 - INFO - ./data/processed_ATL03_20230819070641_09182002_006_02.h5\n", - "2024-12-20 20:11:18,612 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:11:25,226 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:11:25,271 - INFO - ./data/processed_ATL03_20230923174141_00722106_006_02.h5\n", - "2024-12-20 20:11:25,273 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:11:32,788 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:11:32,789 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:11:32,876 - INFO - SUCCESS!\n", - "2024-12-20 20:11:32,886 - INFO - ./data/processed_ATL03_20181204052950_10170106_006_02.h5\n", - "2024-12-20 20:11:32,889 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:11:33,803 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:11:33,816 - INFO - ./data/processed_ATL03_20190128143438_04760202_006_02.h5\n", - "2024-12-20 20:11:33,817 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:11:44,305 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:11:44,306 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:11:44,362 - INFO - SUCCESS!\n", - "2024-12-20 20:11:44,375 - INFO - ./data/processed_ATL03_20190305010951_10170206_006_02.h5\n", - "2024-12-20 20:11:44,377 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:11:45,290 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:11:45,303 - INFO - ./data/processed_ATL03_20190429101419_04760302_006_02.h5\n", - "2024-12-20 20:11:45,305 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:11:52,160 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:11:52,161 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:11:52,212 - INFO - SUCCESS!\n", - "2024-12-20 20:11:52,222 - INFO - ./data/processed_ATL03_20190603204925_10170306_006_02.h5\n", - "2024-12-20 20:11:52,224 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:12:06,214 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:12:06,226 - INFO - ./data/processed_ATL03_20190729055357_04760402_006_02.h5\n", - "2024-12-20 20:12:06,228 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:12:15,832 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:12:15,833 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:12:15,908 - INFO - SUCCESS!\n", - "2024-12-20 20:12:15,919 - INFO - ./data/processed_ATL03_20191001150521_00720506_006_03.h5\n", - "2024-12-20 20:12:15,921 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:12:23,105 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:12:23,106 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:12:23,131 - INFO - SUCCESS!\n", - "2024-12-20 20:12:23,141 - INFO - ./data/processed_ATL03_20191028013354_04760502_006_01.h5\n", - "2024-12-20 20:12:23,143 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:12:29,927 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:12:29,975 - INFO - ./data/processed_ATL03_20191202120904_10170506_006_01.h5\n", - "2024-12-20 20:12:29,977 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:12:36,836 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:12:36,837 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:12:36,873 - INFO - SUCCESS!\n", - "2024-12-20 20:12:36,884 - INFO - ./data/processed_ATL03_20191228223737_00340602_006_01.h5\n", - "2024-12-20 20:12:36,886 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:12:37,193 - INFO - ./data/processed_ATL03_20200302074848_10170606_006_01.h5\n", - "2024-12-20 20:12:37,194 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:12:37,506 - INFO - ./data/processed_ATL03_20200426165327_04760702_006_02.h5\n", - "2024-12-20 20:12:37,507 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:12:54,297 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:12:54,298 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:12:54,356 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:12:54,356 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:12:54,445 - INFO - SUCCESS!\n", - "2024-12-20 20:12:54,458 - INFO - ./data/processed_ATL03_20200601032839_10170706_006_01.h5\n", - "2024-12-20 20:12:54,460 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:13:08,723 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:13:08,723 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:13:08,772 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:13:08,773 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:13:08,853 - INFO - SUCCESS!\n", - "2024-12-20 20:13:08,865 - INFO - ./data/processed_ATL03_20200726123314_04760802_006_01.h5\n", - "2024-12-20 20:13:08,866 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:13:09,154 - INFO - ./data/processed_ATL03_20200830230825_10170806_006_01.h5\n", - "2024-12-20 20:13:09,155 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:13:18,747 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:13:18,748 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:13:18,776 - INFO - SUCCESS!\n", - "2024-12-20 20:13:18,787 - INFO - ./data/processed_ATL03_20201025081259_04760902_006_01.h5\n", - "2024-12-20 20:13:18,788 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:13:19,348 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:13:19,361 - INFO - ./data/processed_ATL03_20201129184814_10170906_006_01.h5\n", - "2024-12-20 20:13:19,363 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:13:39,952 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:13:39,953 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:13:39,995 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:13:39,996 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:13:40,020 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:13:40,021 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:13:40,065 - INFO - SUCCESS!\n", - "2024-12-20 20:13:40,079 - INFO - ./data/processed_ATL03_20201226051650_00341002_006_01.h5\n", - "2024-12-20 20:13:40,081 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:13:49,589 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:13:49,635 - INFO - ./data/processed_ATL03_20201228172419_00721006_006_01.h5\n", - "2024-12-20 20:13:49,636 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:13:49,917 - INFO - ./data/processed_ATL03_20210424233245_04761102_006_02.h5\n", - "2024-12-20 20:13:49,919 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:14:09,492 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:14:09,492 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:09,517 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:14:09,518 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:09,564 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:14:09,565 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:09,646 - INFO - SUCCESS!\n", - "2024-12-20 20:14:09,659 - INFO - ./data/processed_ATL03_20210530100800_10171106_006_01.h5\n", - "2024-12-20 20:14:09,661 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:14:19,783 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:14:19,794 - INFO - ./data/processed_ATL03_20210724191237_04761202_006_01.h5\n", - "2024-12-20 20:14:19,796 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:14:26,730 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:14:26,731 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:26,807 - INFO - SUCCESS!\n", - "2024-12-20 20:14:26,820 - INFO - ./data/processed_ATL03_20210829054754_10171206_006_01.h5\n", - "2024-12-20 20:14:26,821 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:14:40,166 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:14:40,167 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:40,213 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:14:40,214 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:40,277 - INFO - SUCCESS!\n", - "2024-12-20 20:14:40,289 - INFO - ./data/processed_ATL03_20210924161631_00341302_006_02.h5\n", - "2024-12-20 20:14:40,290 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:14:49,939 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:14:49,940 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:49,963 - INFO - SUCCESS!\n", - "2024-12-20 20:14:49,974 - INFO - ./data/processed_ATL03_20210927042400_00721306_006_02.h5\n", - "2024-12-20 20:14:49,975 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:14:50,254 - INFO - ./data/processed_ATL03_20220122103228_04761402_006_01.h5\n", - "2024-12-20 20:14:50,256 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:14:57,421 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:14:57,422 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:14:57,491 - INFO - SUCCESS!\n", - "2024-12-20 20:14:57,501 - INFO - ./data/processed_ATL03_20220226210742_10171406_006_01.h5\n", - "2024-12-20 20:14:57,502 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:15:11,280 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:15:11,281 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:15:11,334 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:15:11,335 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:15:11,400 - INFO - SUCCESS!\n", - "2024-12-20 20:15:11,413 - INFO - ./data/processed_ATL03_20220423061224_04761502_006_02.h5\n", - "2024-12-20 20:15:11,415 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:15:27,097 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:15:27,098 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:15:27,114 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:15:27,115 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:15:27,157 - INFO - SUCCESS!\n", - "2024-12-20 20:15:27,167 - INFO - ./data/processed_ATL03_20220528164735_10171506_006_01.h5\n", - "2024-12-20 20:15:27,169 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:15:34,422 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:15:34,433 - INFO - ./data/processed_ATL03_20220723015219_04761602_006_02.h5\n", - "2024-12-20 20:15:34,434 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:15:41,938 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:15:41,938 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:15:42,009 - INFO - SUCCESS!\n", - "2024-12-20 20:15:42,019 - INFO - ./data/processed_ATL03_20220827122737_10171606_006_01.h5\n", - "2024-12-20 20:15:42,020 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:15:58,318 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:15:58,319 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:15:58,345 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:15:58,346 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:15:58,405 - INFO - SUCCESS!\n", - "2024-12-20 20:15:58,417 - INFO - ./data/processed_ATL03_20220922225605_00341702_006_01.h5\n", - "2024-12-20 20:15:58,419 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:15:58,702 - INFO - ./data/processed_ATL03_20221126080716_10171706_006_02.h5\n", - "2024-12-20 20:15:58,703 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:16:05,134 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:16:05,178 - INFO - ./data/processed_ATL03_20230120171151_04761802_006_02.h5\n", - "2024-12-20 20:16:05,179 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:16:12,827 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:16:12,837 - INFO - ./data/processed_ATL03_20230225034718_10171806_006_02.h5\n", - "2024-12-20 20:16:12,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:16:28,561 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:16:28,561 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:16:28,603 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:16:28,604 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:16:28,658 - INFO - SUCCESS!\n", - "2024-12-20 20:16:28,670 - INFO - ./data/processed_ATL03_20230421125121_04761902_006_02.h5\n", - "2024-12-20 20:16:28,672 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:16:42,793 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:16:42,794 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:16:42,851 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:16:42,852 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:16:42,940 - INFO - SUCCESS!\n", - "2024-12-20 20:16:42,953 - INFO - ./data/processed_ATL03_20230526232637_10171906_006_02.h5\n", - "2024-12-20 20:16:42,956 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:00,089 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:17:00,090 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:17:00,138 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:17:00,139 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:17:00,202 - INFO - SUCCESS!\n", - "2024-12-20 20:17:00,214 - INFO - ./data/processed_ATL03_20230825190553_10172006_006_02.h5\n", - "2024-12-20 20:17:00,217 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:06,975 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:06,987 - INFO - ./data/processed_ATL03_20231020041016_04762102_006_02.h5\n", - "2024-12-20 20:17:06,990 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:17:07,311 - INFO - ./data/processed_ATL03_20200118213016_03540602_006_01.h5\n", - "2024-12-20 20:17:07,313 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:08,301 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:08,316 - INFO - ./data/processed_ATL03_20200223080530_08950606_006_01.h5\n", - "2024-12-20 20:17:08,318 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:17:08,963 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:08,976 - INFO - ./data/processed_ATL03_20200418171006_03540702_006_02.h5\n", - "2024-12-20 20:17:08,978 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:09,958 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:09,972 - INFO - ./data/processed_ATL03_20200425050917_04530706_006_02.h5\n", - "2024-12-20 20:17:09,974 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:10,937 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:10,951 - INFO - ./data/processed_ATL03_20201017082939_03540902_006_01.h5\n", - "2024-12-20 20:17:10,953 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:12,290 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:12,306 - INFO - ./data/processed_ATL03_20201023202849_04530906_006_01.h5\n", - "2024-12-20 20:17:12,308 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:12,981 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:12,995 - INFO - ./data/processed_ATL03_20210319011319_12991002_006_01.h5\n", - "2024-12-20 20:17:12,997 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:13,308 - INFO - ./data/processed_ATL03_20210416234925_03541102_006_02.h5\n", - "2024-12-20 20:17:13,310 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:13,619 - INFO - ./data/processed_ATL03_20210723072827_04531206_006_01.h5\n", - "2024-12-20 20:17:13,620 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:13,926 - INFO - ./data/processed_ATL03_20211216121305_12991302_006_01.h5\n", - "2024-12-20 20:17:13,928 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:14,218 - INFO - ./data/processed_ATL03_20220120224817_04531406_006_01.h5\n", - "2024-12-20 20:17:14,220 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:14,517 - INFO - ./data/processed_ATL03_20230119052730_04531806_006_02.h5\n", - "2024-12-20 20:17:14,519 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:14,826 - INFO - ./data/processed_ATL03_20230413130807_03541902_006_02.h5\n", - "2024-12-20 20:17:14,830 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:16,281 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:16,296 - INFO - ./data/processed_ATL03_20230420010712_04531906_006_02.h5\n", - "2024-12-20 20:17:16,298 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:17,206 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:17:17,217 - INFO - ./data/processed_ATL03_20230719204635_04532006_006_02.h5\n", - "2024-12-20 20:17:17,221 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:17:17,547 - INFO - ./data/processed_ATL03_20231018162610_04532106_006_02.h5\n", - "2024-12-20 20:17:17,548 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:17,853 - INFO - ./data/processed_ATL03_20200802003223_05750806_006_01.h5\n", - "2024-12-20 20:17:17,856 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:35,406 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:17:35,407 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:17:35,453 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:17:35,454 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:17:35,491 - INFO - SUCCESS!\n", - "2024-12-20 20:17:35,504 - INFO - ./data/processed_ATL03_20200828110056_09790802_006_01.h5\n", - "2024-12-20 20:17:35,509 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:43,191 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:17:43,192 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:17:43,284 - INFO - SUCCESS!\n", - "2024-12-20 20:17:43,297 - INFO - ./data/processed_ATL03_20201031201211_05750906_006_01.h5\n", - "2024-12-20 20:17:43,300 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:17:50,033 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:17:50,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:17:50,088 - INFO - SUCCESS!\n", - "2024-12-20 20:17:50,101 - INFO - ./data/processed_ATL03_20201127064045_09790902_006_01.h5\n", - "2024-12-20 20:17:50,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:18:13,418 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:18:13,419 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:18:13,426 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:18:13,426 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:18:13,469 - INFO - SUCCESS!\n", - "2024-12-20 20:18:13,481 - INFO - ./data/processed_ATL03_20210128034437_05371002_006_01.h5\n", - "2024-12-20 20:18:13,483 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:18:13,802 - INFO - ./data/processed_ATL03_20210130155207_05751006_006_01.h5\n", - "2024-12-20 20:18:13,803 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:18:28,438 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:18:28,440 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:18:28,458 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:18:28,458 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:18:28,484 - INFO - SUCCESS!\n", - "2024-12-20 20:18:28,497 - INFO - ./data/processed_ATL03_20210402125553_01331106_006_02.h5\n", - "2024-12-20 20:18:28,499 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:18:28,808 - INFO - ./data/processed_ATL03_20210527220029_09791102_006_01.h5\n", - "2024-12-20 20:18:28,811 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:18:38,610 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:18:38,620 - INFO - ./data/processed_ATL03_20210731071149_05751206_006_01.h5\n", - "2024-12-20 20:18:38,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:18:45,298 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:18:45,299 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:18:45,379 - INFO - SUCCESS!\n", - "2024-12-20 20:18:45,390 - INFO - ./data/processed_ATL03_20210826174024_09791202_006_01.h5\n", - "2024-12-20 20:18:45,392 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:18:59,912 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:18:59,913 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:18:59,931 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:18:59,932 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:18:59,997 - INFO - SUCCESS!\n", - "2024-12-20 20:19:00,011 - INFO - ./data/processed_ATL03_20211027144417_05371302_006_01.h5\n", - "2024-12-20 20:19:00,014 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:19:00,355 - INFO - ./data/processed_ATL03_20211030025147_05751306_006_01.h5\n", - "2024-12-20 20:19:00,363 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:01,363 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:19:01,378 - INFO - ./data/processed_ATL03_20220128223137_05751406_006_01.h5\n", - "2024-12-20 20:19:01,382 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:11,201 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:19:11,202 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:19:11,279 - INFO - SUCCESS!\n", - "2024-12-20 20:19:11,290 - INFO - ./data/processed_ATL03_20220224090016_09791402_006_01.h5\n", - "2024-12-20 20:19:11,293 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:24,577 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:19:24,578 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:19:24,591 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:19:24,592 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:19:24,654 - INFO - SUCCESS!\n", - "2024-12-20 20:19:24,668 - INFO - ./data/processed_ATL03_20220526044001_09791502_006_01.h5\n", - "2024-12-20 20:19:24,671 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:32,091 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:19:32,102 - INFO - ./data/processed_ATL03_20220729135134_05751606_006_02.h5\n", - "2024-12-20 20:19:32,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:19:32,452 - INFO - ./data/processed_ATL03_20181118060318_07730106_006_02.h5\n", - "2024-12-20 20:19:32,455 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:42,907 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:19:42,952 - INFO - ./data/processed_ATL03_20190112150746_02320202_006_02.h5\n", - "2024-12-20 20:19:42,956 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:19:43,338 - INFO - ./data/processed_ATL03_20190217014308_07730206_006_02.h5\n", - "2024-12-20 20:19:43,341 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:43,713 - INFO - ./data/processed_ATL03_20190413104740_02320302_006_02.h5\n", - "2024-12-20 20:19:43,717 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:44,070 - INFO - ./data/processed_ATL03_20190518212247_07730306_006_02.h5\n", - "2024-12-20 20:19:44,072 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:51,135 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:19:51,136 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:19:51,168 - INFO - SUCCESS!\n", - "2024-12-20 20:19:51,179 - INFO - ./data/processed_ATL03_20190713062708_02320402_006_02.h5\n", - "2024-12-20 20:19:51,182 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:19:51,589 - INFO - ./data/processed_ATL03_20190719182620_03310406_006_02.h5\n", - "2024-12-20 20:19:51,591 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:19:51,937 - INFO - ./data/processed_ATL03_20190811050320_06740402_006_02.h5\n", - "2024-12-20 20:19:51,941 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:20:05,986 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:20:05,987 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:20:06,027 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:20:06,027 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:20:06,090 - INFO - SUCCESS!\n", - "2024-12-20 20:20:06,102 - INFO - ./data/processed_ATL03_20190817170232_07730406_006_02.h5\n", - "2024-12-20 20:20:06,104 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:20:16,006 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:20:16,007 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:20:16,077 - INFO - SUCCESS!\n", - "2024-12-20 20:20:16,089 - INFO - ./data/processed_ATL03_20191110004315_06740502_006_01.h5\n", - "2024-12-20 20:20:16,092 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:20:29,670 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:20:29,671 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:20:29,718 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:20:29,719 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:20:29,785 - INFO - SUCCESS!\n", - "2024-12-20 20:20:29,796 - INFO - ./data/processed_ATL03_20191116124227_07730506_006_01.h5\n", - "2024-12-20 20:20:29,799 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:20:37,453 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:20:37,453 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:20:37,522 - INFO - SUCCESS!\n", - "2024-12-20 20:20:37,532 - INFO - ./data/processed_ATL03_20200110214656_02320602_006_01.h5\n", - "2024-12-20 20:20:37,535 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:20:47,465 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:20:47,524 - INFO - ./data/processed_ATL03_20200215082209_07730606_006_01.h5\n", - "2024-12-20 20:20:47,527 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:20:54,153 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:20:54,154 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:20:54,219 - INFO - SUCCESS!\n", - "2024-12-20 20:20:54,228 - INFO - ./data/processed_ATL03_20200509160249_06740702_006_01.h5\n", - "2024-12-20 20:20:54,232 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:20:55,004 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:20:55,017 - INFO - ./data/processed_ATL03_20200516040159_07730706_006_01.h5\n", - "2024-12-20 20:20:55,019 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:02,342 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:21:02,343 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:21:02,389 - INFO - SUCCESS!\n", - "2024-12-20 20:21:02,407 - INFO - ./data/processed_ATL03_20200710130629_02320802_006_01.h5\n", - "2024-12-20 20:21:02,409 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:09,946 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:21:09,947 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:21:10,037 - INFO - SUCCESS!\n", - "2024-12-20 20:21:10,050 - INFO - ./data/processed_ATL03_20200814234144_07730806_006_01.h5\n", - "2024-12-20 20:21:10,056 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:19,665 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:21:19,712 - INFO - ./data/processed_ATL03_20201009084617_02320902_006_01.h5\n", - "2024-12-20 20:21:19,715 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:21:20,031 - INFO - ./data/processed_ATL03_20201107072221_06740902_006_01.h5\n", - "2024-12-20 20:21:20,034 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:20,354 - INFO - ./data/processed_ATL03_20210108042612_02321002_006_01.h5\n", - "2024-12-20 20:21:20,357 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:27,524 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:21:27,575 - INFO - ./data/processed_ATL03_20210212150129_07731006_006_01.h5\n", - "2024-12-20 20:21:27,578 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:34,576 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:21:34,577 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:21:34,649 - INFO - SUCCESS!\n", - "2024-12-20 20:21:34,670 - INFO - ./data/processed_ATL03_20210415120514_03311106_006_02.h5\n", - "2024-12-20 20:21:34,673 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:21:34,999 - INFO - ./data/processed_ATL03_20210507224208_06741102_006_01.h5\n", - "2024-12-20 20:21:35,002 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:43,032 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:21:43,033 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:21:43,078 - INFO - SUCCESS!\n", - "2024-12-20 20:21:43,088 - INFO - ./data/processed_ATL03_20210514104119_07731106_006_01.h5\n", - "2024-12-20 20:21:43,091 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:52,971 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:21:52,971 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:21:53,044 - INFO - SUCCESS!\n", - "2024-12-20 20:21:53,060 - INFO - ./data/processed_ATL03_20210708194554_02321202_006_01.h5\n", - "2024-12-20 20:21:53,063 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:21:53,396 - INFO - ./data/processed_ATL03_20210813062112_07731206_006_01.h5\n", - "2024-12-20 20:21:53,399 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:21:54,240 - ERROR - An error occurred: cannot convert float NaN to integer\n", - "2024-12-20 20:21:54,254 - INFO - ./data/processed_ATL03_20211007152553_02321302_006_01.h5\n", - "2024-12-20 20:21:54,257 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:22:08,494 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:22:08,494 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:22:08,545 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:22:08,546 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:22:08,606 - INFO - SUCCESS!\n", - "2024-12-20 20:22:08,619 - INFO - ./data/processed_ATL03_20211112020112_07731306_006_01.h5\n", - "2024-12-20 20:22:08,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:22:16,179 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:22:16,179 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:22:16,252 - INFO - SUCCESS!\n", - "2024-12-20 20:22:16,263 - INFO - ./data/processed_ATL03_20220106110546_02321402_006_01.h5\n", - "2024-12-20 20:22:16,266 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:22:16,617 - INFO - ./data/processed_ATL03_20220506052140_06741502_006_01.h5\n", - "2024-12-20 20:22:16,620 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:22:33,665 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:22:33,666 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:22:33,705 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:22:33,706 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:22:33,765 - INFO - SUCCESS!\n", - "2024-12-20 20:22:33,776 - INFO - ./data/processed_ATL03_20220512172052_07731506_006_01.h5\n", - "2024-12-20 20:22:33,778 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:22:40,748 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:22:40,748 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:22:40,822 - INFO - SUCCESS!\n", - "2024-12-20 20:22:40,835 - INFO - ./data/processed_ATL03_20220707022536_02321602_006_02.h5\n", - "2024-12-20 20:22:40,838 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:22:41,161 - INFO - ./data/processed_ATL03_20220805010143_06741602_006_01.h5\n", - "2024-12-20 20:22:41,164 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:22:41,801 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:22:41,819 - INFO - ./data/processed_ATL03_20220811130052_07731606_006_01.h5\n", - "2024-12-20 20:22:41,822 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:22:49,598 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:22:49,598 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:22:49,646 - INFO - SUCCESS!\n", - "2024-12-20 20:22:49,661 - INFO - ./data/processed_ATL03_20221005220520_02321702_006_01.h5\n", - "2024-12-20 20:22:49,664 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:22:59,782 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:22:59,834 - INFO - ./data/processed_ATL03_20221110084030_07731706_006_01.h5\n", - "2024-12-20 20:22:59,837 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:07,394 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:23:07,394 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:23:07,460 - INFO - SUCCESS!\n", - "2024-12-20 20:23:07,470 - INFO - ./data/processed_ATL03_20230104174503_02321802_006_02.h5\n", - "2024-12-20 20:23:07,473 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:23:07,820 - INFO - ./data/processed_ATL03_20230209042023_07731806_006_02.h5\n", - "2024-12-20 20:23:07,823 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:08,222 - INFO - ./data/processed_ATL03_20230511000003_07731906_006_02.h5\n", - "2024-12-20 20:23:08,225 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:14,971 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:23:15,021 - INFO - ./data/processed_ATL03_20230705090414_02322002_006_02.h5\n", - "2024-12-20 20:23:15,024 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:22,353 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:23:22,354 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:23:22,407 - INFO - SUCCESS!\n", - "2024-12-20 20:23:22,417 - INFO - ./data/processed_ATL03_20190107154149_01560202_006_02.h5\n", - "2024-12-20 20:23:22,420 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:23:22,756 - INFO - ./data/processed_ATL03_20190408112141_01560302_006_02.h5\n", - "2024-12-20 20:23:22,760 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:23,084 - INFO - ./data/processed_ATL03_20190710190835_01940406_006_02.h5\n", - "2024-12-20 20:23:23,086 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:23,463 - INFO - ./data/processed_ATL03_20190806053720_05980402_006_02.h5\n", - "2024-12-20 20:23:23,465 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:39,942 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:23:39,943 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:23:39,976 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:23:39,976 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:23:40,039 - INFO - SUCCESS!\n", - "2024-12-20 20:23:40,050 - INFO - ./data/processed_ATL03_20191009144841_01940506_006_02.h5\n", - "2024-12-20 20:23:40,053 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:23:40,413 - INFO - ./data/processed_ATL03_20191105011714_05980502_006_01.h5\n", - "2024-12-20 20:23:40,416 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:23:54,391 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:23:54,391 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:23:54,417 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:23:54,418 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:23:54,474 - INFO - SUCCESS!\n", - "2024-12-20 20:23:54,485 - INFO - ./data/processed_ATL03_20191210115225_11390506_006_01.h5\n", - "2024-12-20 20:23:54,487 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:23:54,814 - INFO - ./data/processed_ATL03_20200105222056_01560602_006_01.h5\n", - "2024-12-20 20:23:54,819 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:24:04,694 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:24:04,742 - INFO - ./data/processed_ATL03_20200108102826_01940606_006_01.h5\n", - "2024-12-20 20:24:04,745 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:24:11,504 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:24:11,552 - INFO - ./data/processed_ATL03_20200408060812_01940706_006_02.h5\n", - "2024-12-20 20:24:11,555 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:24:18,093 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:24:18,094 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:24:18,139 - INFO - SUCCESS!\n", - "2024-12-20 20:24:18,149 - INFO - ./data/processed_ATL03_20200504163646_05980702_006_01.h5\n", - "2024-12-20 20:24:18,151 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l']\n", - "Processing strong beam: gt1l\n", - "Processing binning for beam: gt1l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:24:25,925 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:24:25,926 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:24:25,959 - INFO - SUCCESS!\n", - "2024-12-20 20:24:25,969 - INFO - ./data/processed_ATL03_20200705134029_01560802_006_01.h5\n", - "2024-12-20 20:24:25,972 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:24:35,722 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:24:35,723 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:24:35,767 - INFO - SUCCESS!\n", - "2024-12-20 20:24:35,782 - INFO - ./data/processed_ATL03_20201006212745_01940906_006_01.h5\n", - "2024-12-20 20:24:35,784 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:24:48,875 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:24:48,875 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:24:48,895 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:24:48,896 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:24:48,957 - INFO - SUCCESS!\n", - "2024-12-20 20:24:48,966 - INFO - ./data/processed_ATL03_20210103050011_01561002_006_01.h5\n", - "2024-12-20 20:24:48,968 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:25:05,912 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:25:05,913 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:05,927 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:25:05,928 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:05,974 - INFO - SUCCESS!\n", - "2024-12-20 20:25:05,984 - INFO - ./data/processed_ATL03_20210406124733_01941106_006_02.h5\n", - "2024-12-20 20:25:05,987 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:25:06,313 - INFO - ./data/processed_ATL03_20210703201953_01561202_006_01.h5\n", - "2024-12-20 20:25:06,314 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:25:06,592 - INFO - ./data/processed_ATL03_20210706082722_01941206_006_01.h5\n", - "2024-12-20 20:25:06,593 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:25:19,024 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:25:19,025 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:19,045 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:25:19,045 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:19,085 - INFO - SUCCESS!\n", - "2024-12-20 20:25:19,095 - INFO - ./data/processed_ATL03_20211002155952_01561302_006_01.h5\n", - "2024-12-20 20:25:19,096 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:25:42,893 - INFO - Calculating Kd for beam: gt1l\n", - "2024-12-20 20:25:42,894 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:42,952 - INFO - Calculating Kd for beam: gt2l\n", - "2024-12-20 20:25:42,952 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:43,004 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:25:43,005 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:43,081 - INFO - SUCCESS!\n", - "2024-12-20 20:25:43,093 - INFO - ./data/processed_ATL03_20220101113944_01561402_006_01.h5\n", - "2024-12-20 20:25:43,094 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:25:43,369 - INFO - ./data/processed_ATL03_20220103234715_01941406_006_01.h5\n", - "2024-12-20 20:25:43,370 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:25:49,965 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:25:50,013 - INFO - ./data/processed_ATL03_20220402071936_01561502_006_02.h5\n", - "2024-12-20 20:25:50,014 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:25:50,295 - INFO - ./data/processed_ATL03_20220704150705_01941606_006_02.h5\n", - "2024-12-20 20:25:50,296 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:25:57,552 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:25:57,553 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:25:57,607 - INFO - SUCCESS!\n", - "2024-12-20 20:25:57,621 - INFO - ./data/processed_ATL03_20220930223925_01561702_006_01.h5\n", - "2024-12-20 20:25:57,622 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:26:07,163 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:26:07,163 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:26:07,216 - INFO - SUCCESS!\n", - "2024-12-20 20:26:07,226 - INFO - ./data/processed_ATL03_20221230181902_01561802_006_02.h5\n", - "2024-12-20 20:26:07,227 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n", - "2024-12-20 20:26:07,510 - INFO - ./data/processed_ATL03_20230102062635_01941806_006_02.h5\n", - "2024-12-20 20:26:07,511 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "No Strong Beam\n", - "Strong Beams Found: ['gt2l', 'gt3l']\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt2l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:26:14,120 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n", - "2024-12-20 20:26:14,169 - INFO - ./data/processed_ATL03_20230403020615_01941906_006_02.h5\n", - "2024-12-20 20:26:14,171 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:26:21,552 - INFO - Calculating Kd for beam: gt3l\n", - "2024-12-20 20:26:21,553 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-12-20 20:26:21,622 - INFO - SUCCESS!\n", - "2024-12-20 20:26:21,636 - INFO - ./data/processed_ATL03_20230630093812_01562002_006_02.h5\n", - "2024-12-20 20:26:21,638 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt3l']\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:26:28,789 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:26:28,800 - INFO - ./data/processed_ATL03_20230702214544_01942006_006_02.h5\n", - "2024-12-20 20:26:28,802 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l', 'gt3l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:26:51,545 - ERROR - An error occurred: No objects to concatenate\n", - "2024-12-20 20:26:51,558 - INFO - ./data/processed_ATL03_20190212021707_06970206_006_02.h5\n", - "2024-12-20 20:26:51,559 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Strong Beams Found: ['gt1l', 'gt2l']\n", - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing subsurface filtering for beam: gt1l\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-12-20 20:26:59,891 - ERROR - An error occurred: zero-size array to reduction operation minimum which has no identity\n" - ] - } - ], - "source": [ - "h5names = glob.glob('data/processed_*.h5')\n", - "\n", - "\n", - "for jj in range(len(h5names)):\n", - " # code from chao (in Main.ipynb)\n", - " atl03_file_inloop = h5names[jj]\n", - " ATL03_h5_file_path = os.path.join(workspace_path, atl03_file_inloop)\n", - " # print(ATL03_h5_file_path)\n", - " shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", - " # print(shoreline_data_path)\n", - " GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", - " # print(GEBCO_full_path)\n", - " OutputPath = os.path.join(workspace_path, output_path)\n", - " # print(OutputPath)\n", - " \n", - " \n", - " #Get the gebco list\n", - " GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - " \n", - " #Initialize with an empty list\n", - " GEBCO_file_path_lists = []\n", - " for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - " #put the find one into the list\n", - " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - " \n", - " # print(GEBCO_file_path_lists)\n", - " \n", - " # Get all other necessary parameters\n", - " horizontal_res = horizontal_res\n", - " vertical_res = vertical_res\n", - " subsurface_thresh = subsurface_thresh\n", - " Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n", - " \n", - " # Configure logging\n", - " logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", - " \n", - " \n", - " # When all paramters ready, call the main function\n", - " main()\n", - " # delete the hefty h5 file once done with processing - only store calculated kd values\n", - " os.remove(ATL03_h5_file_path)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "a67064df-8b1e-4c65-ba47-14b022e6dcfc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "FF = glob.glob('data/data_*.csv')\n", - "FF.sort()\n", - "all_turb = pd.DataFrame(data=None,\n", - " columns=['time','lat','lon','z','turb'],\n", - " )\n", - "\n", - "for jj in range(len(FF)):\n", - " df_full = pd.read_csv(FF[jj],header=0)\n", - "\n", - " \n", - " df = pd.DataFrame(data=None,\n", - " columns=['time','lat','lon','z','turb'],\n", - " )\n", - " # try loading each file\n", - " df['time'] = df_full['time (UTC)']\n", - " df['lat'] = df_full['latitude (degrees_north)']\n", - " df['lon'] = df_full['longitude (degrees_east)']\n", - " \n", - " # check for various names for depth column\n", - " if 'depth (m)' in df_full.columns:\n", - " df['z'] = df_full['depth (m)'] \n", - " elif 'z (m)' in df_full.columns:\n", - " df['z'] = df_full['z (m)']\n", - " elif 'depth_reading (m)' in df_full.columns:\n", - " df['z'] = df_full['depth_reading (m)']\n", - " else:\n", - " print('')\n", - "\n", - " # check for various names for turbidity column\n", - " if 'turbidity (ntus)' in df_full.columns:\n", - " df['turb'] = df_full['turbidity (ntus)']\n", - " elif 'turbidity (NTU)' in df_full.columns:\n", - " df['turb'] = df_full['turbidity (NTU)']\n", - " elif 'sea_water_turbidity (NTU)' in df_full.columns:\n", - " df['turb'] = df_full['sea_water_turbidity (NTU)']\n", - " elif 'sea_water_turbidity (RFU)' in df_full.columns:\n", - " df['turb'] = df_full['sea_water_turbidity (RFU)']\n", - " elif 'sea_water_turbidity_1 (1)' in df_full.columns:\n", - " df['turb'] = df_full['sea_water_turbidity_1 (1)']\n", - " elif 'NTU (ntu)' in df_full.columns:\n", - " df['turb'] = df_full['NTU (ntu)']\n", - " else:\n", - " print(FF[jj])\n", - " \n", - " \n", - " df = df[df['z']<2]\n", - " \n", - " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", - "\n", - "\n", - "all_turb = all_turb.dropna(axis='index')\n", - "all_turb.reset_index(drop=True, inplace=True)\n", - "all_turb.to_csv('results/all_turbidity_compile.csv')" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/03_calckd_buoys.ipynb b/icesat2_kdph-main/03_calckd_buoys.ipynb deleted file mode 100644 index d65c61a..0000000 --- a/icesat2_kdph-main/03_calckd_buoys.ipynb +++ /dev/null @@ -1,1490 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "bc036035", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import glob\n", - "from datetime import datetime, timedelta\n", - "import matplotlib.pyplot as plt\n", - "from scipy import stats\n", - "\n", - "%cd -q '/Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data'\n" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "61cd619c", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "5f48f327", - "metadata": {}, - "outputs": [], - "source": [ - "def calc_kd(z,par):\n", - " z = np.abs(z)\n", - " # remove nans and negative par values (bad data)\n", - " z = z[(par>=0) & ~np.isnan(par)]\n", - " par = par[(par>=0) & ~np.isnan(par)]\n", - "\n", - " # calculate Kd from the log-linear slope of the light decay\n", - " lnpar = np.log(par)\n", - " \n", - " fit = stats.linregress(x=z,y=lnpar)\n", - " kd = np.abs(fit.slope)\n", - " rval = np.abs(fit.rvalue)\n", - " stderr = fit.stderr\n", - " return kd, rval, stderr\n", - "\n", - "\n", - "def ooi_run_kdcalc(df):\n", - " \n", - " # get the start time of the file\n", - " t = df.loc[0,'time'] \n", - " # check if there is no data shallower than 20 m:\n", - " df = df[abs(df['z'])<20]\n", - " if len(df) < 4:\n", - " kd = np.nan\n", - " rval = np.nan\n", - " stderr = np.nan\n", - " return kd, rval, stderr, t\n", - " \n", - " # if there is data, check for multiple casts:\n", - " df.reset_index(drop=True, inplace=True)\n", - " dt = df['time'].diff()\n", - " df['cast'] = 0\n", - " cast = 0\n", - " for jj in range(len(df)):\n", - " if dt[jj]>timedelta(minutes=10):\n", - " cast += 1\n", - " df.loc[jj,'cast'] = cast\n", - " else:\n", - " df.loc[jj,'cast'] = cast\n", - " tot_casts = len(np.unique(df['cast']))\n", - " \n", - " # if there's only 1 cast, calculate kd once\n", - " # otherwise loop through casts and calc for each\n", - " if tot_casts==1:\n", - " # pull out depth and par\n", - " z = df['z'].to_numpy()\n", - " par = df['par'].to_numpy()\n", - " t = df.loc[0,'time']\n", - " kd, rval, stderr = calc_kd(z,par)\n", - " else:\n", - " kd = np.empty(tot_casts)\n", - " rval = np.empty(tot_casts)\n", - " stderr = np.empty(tot_casts)\n", - " t = df.loc[:tot_casts,'time']\n", - " for jj in range(tot_casts):\n", - " z = df.loc[df['cast']==jj,'z'].to_numpy()\n", - " par = df.loc[df['cast']==jj,'par'].to_numpy()\n", - " t[jj] = min(df.loc[df['cast']==jj,'time'])\n", - " kd[jj], rval[jj], stderr[jj] = calc_kd(z,par)\n", - " \n", - " return kd, rval, stderr, t\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "# much simpler for ws dataset - only 1 cast per file\n", - "def ws_kd_calc(df):\n", - " # pull out depth and par\n", - " z = np.abs(df['z'].to_numpy())\n", - " par = df['par'].to_numpy()\n", - " \n", - " # remove nans and negative par values (bad data)\n", - " z = z[(par>=0) & ~np.isnan(par)]\n", - " par = par[(par>=0) & ~np.isnan(par)]\n", - "\n", - " # only calculate over upper 10m\n", - " par = par[z<20]\n", - " z = z[z<20]\n", - " \n", - " if len(z) == 0:\n", - " kd = np.nan\n", - " rval = np.nan\n", - " stderr = np.nan\n", - " else:\n", - " # calc ln of par \n", - " lnpar = np.log(par)\n", - " # calculate Kd from the log-linear slope of the light decay\n", - " fit = stats.linregress(x=z,y=lnpar)\n", - "# par_pred = fit.slope*z + lnpar[0]\n", - " kd = np.abs(fit.slope)\n", - " rval = fit.rvalue\n", - " stderr=fit.stderr\n", - "\n", - " return kd,rval,stderr" - ] - }, - { - "cell_type": "code", - "execution_count": 77, - "id": "fa6cd1ba", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.0010991938234688 -0.9986642388432644\n", - "1.0040070941250372 -0.9751482427953707\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
      " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
      " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "FF = glob.glob('icesat2/ooi/data*.csv')\n", - "FF.sort()\n", - "\n", - "ooi_kd_array = pd.DataFrame(data=None,\n", - " index=range(len(FF)),\n", - " columns=['time','lat','lon','kd','rval','stderr','stn']\n", - " )\n", - "jj = 43\n", - " \n", - "df = pd.read_csv(FF[jj],\n", - " index_col=0,\n", - " header=0,\n", - " usecols=[i for i in range(6)],\n", - " names=['', 'time', 'lat', 'lon', 'z', 'par']\n", - " ) #\n", - "df['time'] = pd.to_datetime(df[\"time\"]).round('s')\n", - "df = df[abs(df['z'])<20]\n", - "df.reset_index(drop=True, inplace=True)\n", - "dt = df['time'].diff()\n", - "\n", - "df['cast'] = 0\n", - "cast = 0\n", - "for jj in range(len(df)):\n", - " if dt[jj]>timedelta(minutes=10):\n", - " cast += 1\n", - " df.loc[jj,'cast'] = cast\n", - " else:\n", - " df.loc[jj,'cast'] = cast\n", - "tot_casts = len(np.unique(df['cast']))\n", - "\n", - "\n", - "for jj in range(tot_casts):\n", - " # pull out depth and par\n", - " z = np.abs(df.loc[df['cast']==jj,'z'].to_numpy())\n", - " par = df.loc[df['cast']==jj,'par'].to_numpy()\n", - " \n", - "# # sort by depth\n", - "# par = par[np.argsort(z)]\n", - "# z = np.sort(z)\n", - "\n", - " # remove nans and negative par values (bad data)\n", - " z = z[(par>=0) & ~np.isnan(par)]\n", - " par = par[(par>=0) & ~np.isnan(par)]\n", - " \n", - " lnpar = np.log(par)\n", - " # calculate Kd from the log-linear slope of the light decay\n", - " fit = stats.linregress(x=z,y=lnpar)\n", - " kd = np.abs(fit.slope)\n", - " rval = np.abs(fit.rvalue)\n", - " stderr = fit.stderr\n", - " print(stderr,rval)\n", - "\n", - "# plt.figure()\n", - "# plt.plot(z,lnpar,'k-')\n", - "# par_pred = fit.slope*z +fit.intercept\n", - "# plt.plot(z,par_pred,'r-')\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "f7d21db7", - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n", - "/var/folders/p0/vpgr0c8j2493xrh10b954hv40000gn/T/ipykernel_82733/2592737949.py:32: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", - " df['cast'] = 0\n" - ] - }, - { - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      timelatlonkdrvalstderr
      02019-06-03 13:59:00+00:0044.6589-124.095950.2009450.9975870.003611
      12019-08-06 19:59:00+00:0044.6589-124.095950.3955410.987140.015536
      22021-08-28 20:06:00+00:0044.6589-124.095950.217670.9947690.005421
      32022-07-02 20:07:00+00:0044.6589-124.095950.4438590.9857960.017824
      42019-10-07 20:16:00+00:0044.63302-124.302330.2183620.9996220.001416
      52023-05-30 12:03:00+00:0044.369353-124.954108NaNNaNNaN
      62024-08-26 14:35:00+00:0044.369353-124.9541080.1142530.9854690.003282
      72024-08-26 16:50:00+00:0044.369353-124.9541080.0953430.9891410.002361
      82024-08-26 19:15:00+00:0044.369353-124.9541080.0966780.9989410.000775
      92019-09-08 20:03:00+00:0047.13553-124.270170.2626040.9975220.004492
      102021-06-27 23:32:00+00:0047.13553-124.270170.2446650.9958130.005447
      112019-06-14 01:30:00+00:0046.85262-124.98263NaNNaNNaN
      122020-09-09 23:44:00+00:0046.85262-124.98263NaNNaNNaN
      132022-03-09 01:09:00+00:0046.85262-124.98263NaNNaNNaN
      142022-03-31 11:43:00+00:0046.85262-124.98263NaNNaNNaN
      152023-03-29 17:10:00+00:0046.85262-124.98263NaNNaNNaN
      162024-03-26 21:37:00+00:0046.85262-124.98263NaNNaNNaN
      172022-01-27 21:02:00+00:0040.133907-70.770433NaNNaNNaN
      182019-08-03 15:19:00+00:0040.226633-70.889067NaNNaNNaN
      192020-08-02 12:02:00+00:0040.226633-70.889067NaNNaNNaN
      202021-07-31 18:02:00+00:0040.226633-70.889067NaNNaNNaN
      212022-10-28 21:02:00+00:0040.226633-70.889067NaNNaNNaN
      222019-08-03 15:19:00+00:0040.096817-70.87915NaNNaNNaN
      232021-01-29 15:02:00+00:0040.096817-70.87915NaNNaNNaN
      242021-07-31 18:02:00+00:0040.096817-70.87915NaNNaNNaN
      252022-01-27 21:02:00+00:0040.096817-70.87915NaNNaNNaN
      262022-10-27 09:02:00+00:0040.096817-70.87915NaNNaNNaN
      272022-01-28 00:02:00+00:0040.364917-70.780483NaNNaNNaN
      282022-05-29 03:02:00+00:0040.364917-70.780483NaNNaNNaN
      292022-10-27 09:02:00+00:0040.364917-70.780483NaNNaNNaN
      302018-11-04 06:02:00+00:0039.939333-70.770183NaNNaNNaN
      312019-02-03 00:02:00+00:0039.939333-70.770183NaNNaNNaN
      322020-10-30 18:03:00+00:0039.939333-70.770183NaNNaNNaN
      332021-10-30 12:02:00+00:0039.939333-70.770183NaNNaNNaN
      342022-01-27 21:02:00+00:0039.939333-70.770183NaNNaNNaN
      352022-01-27 21:02:00+00:0040.362005-70.878502NaNNaNNaN
      362022-01-27 21:02:00+00:0040.362005-70.878502NaNNaNNaN
      372019-02-04 12:02:00+00:0039.936-70.879417NaNNaNNaN
      382019-08-05 03:03:00+00:0039.936-70.879417NaNNaNNaN
      392019-11-04 00:02:00+00:0039.936-70.879417NaNNaNNaN
      402020-10-30 18:03:00+00:0039.936-70.879417NaNNaNNaN
      412021-05-01 21:02:00+00:0039.936-70.879417NaNNaNNaN
      422021-07-31 18:02:00+00:0039.936-70.879417NaNNaNNaN
      432022-01-27 21:02:00+00:0039.936-70.879417NaNNaNNaN
      442021-03-10 16:49:00+00:0044.528949-125.3896640.1018060.8186410.011436
      452021-03-10 19:13:00+00:0044.528949-125.3896640.0797970.6261370.017042
      462022-05-09 19:15:00+00:0044.515161-125.3898990.1238110.9986640.001099
      472022-05-09 21:45:00+00:0044.515161-125.3898990.1154220.9751480.003999
      482023-07-02 10:30:00+00:0044.515161-125.389899NaNNaNNaN
      492023-10-01 06:10:00+00:0044.515161-125.389899NaNNaNNaN
      502023-10-01 06:10:00+00:0044.515161-125.389899NaNNaNNaN
      512024-03-30 21:45:00+00:0044.515161-125.3898990.1084110.9910190.002134
      522024-03-31 01:29:00+00:0044.515161-125.3898990.1116990.9844280.003279
      532021-01-02 18:34:00+00:0045.816712-129.754055NaNNaNNaN
      542021-04-03 14:52:00+00:0045.816712-129.7540550.0930020.9817620.002884
      552021-04-03 17:07:00+00:0045.816712-129.7540550.0911180.9897660.002077
      562021-04-03 19:32:00+00:0045.816712-129.7540550.0847950.9884160.002112
      572023-03-24 15:33:00+00:0045.816712-129.754055NaNNaNNaN
      582023-06-29 23:12:00+00:0045.816712-129.754055NaNNaNNaN
      592023-09-28 18:51:00+00:0045.816712-129.754055NaNNaNNaN
      \n", - "
      " - ], - "text/plain": [ - " time lat lon kd rval \\\n", - "0 2019-06-03 13:59:00+00:00 44.6589 -124.09595 0.200945 0.997587 \n", - "1 2019-08-06 19:59:00+00:00 44.6589 -124.09595 0.395541 0.98714 \n", - "2 2021-08-28 20:06:00+00:00 44.6589 -124.09595 0.21767 0.994769 \n", - "3 2022-07-02 20:07:00+00:00 44.6589 -124.09595 0.443859 0.985796 \n", - "4 2019-10-07 20:16:00+00:00 44.63302 -124.30233 0.218362 0.999622 \n", - "5 2023-05-30 12:03:00+00:00 44.369353 -124.954108 NaN NaN \n", - "6 2024-08-26 14:35:00+00:00 44.369353 -124.954108 0.114253 0.985469 \n", - "7 2024-08-26 16:50:00+00:00 44.369353 -124.954108 0.095343 0.989141 \n", - "8 2024-08-26 19:15:00+00:00 44.369353 -124.954108 0.096678 0.998941 \n", - "9 2019-09-08 20:03:00+00:00 47.13553 -124.27017 0.262604 0.997522 \n", - "10 2021-06-27 23:32:00+00:00 47.13553 -124.27017 0.244665 0.995813 \n", - "11 2019-06-14 01:30:00+00:00 46.85262 -124.98263 NaN NaN \n", - "12 2020-09-09 23:44:00+00:00 46.85262 -124.98263 NaN NaN \n", - "13 2022-03-09 01:09:00+00:00 46.85262 -124.98263 NaN NaN \n", - "14 2022-03-31 11:43:00+00:00 46.85262 -124.98263 NaN NaN \n", - "15 2023-03-29 17:10:00+00:00 46.85262 -124.98263 NaN NaN \n", - "16 2024-03-26 21:37:00+00:00 46.85262 -124.98263 NaN NaN \n", - "17 2022-01-27 21:02:00+00:00 40.133907 -70.770433 NaN NaN \n", - "18 2019-08-03 15:19:00+00:00 40.226633 -70.889067 NaN NaN \n", - "19 2020-08-02 12:02:00+00:00 40.226633 -70.889067 NaN NaN \n", - "20 2021-07-31 18:02:00+00:00 40.226633 -70.889067 NaN NaN \n", - "21 2022-10-28 21:02:00+00:00 40.226633 -70.889067 NaN NaN \n", - "22 2019-08-03 15:19:00+00:00 40.096817 -70.87915 NaN NaN \n", - "23 2021-01-29 15:02:00+00:00 40.096817 -70.87915 NaN NaN \n", - "24 2021-07-31 18:02:00+00:00 40.096817 -70.87915 NaN NaN \n", - "25 2022-01-27 21:02:00+00:00 40.096817 -70.87915 NaN NaN \n", - "26 2022-10-27 09:02:00+00:00 40.096817 -70.87915 NaN NaN \n", - "27 2022-01-28 00:02:00+00:00 40.364917 -70.780483 NaN NaN \n", - "28 2022-05-29 03:02:00+00:00 40.364917 -70.780483 NaN NaN \n", - "29 2022-10-27 09:02:00+00:00 40.364917 -70.780483 NaN NaN \n", - "30 2018-11-04 06:02:00+00:00 39.939333 -70.770183 NaN NaN \n", - "31 2019-02-03 00:02:00+00:00 39.939333 -70.770183 NaN NaN \n", - "32 2020-10-30 18:03:00+00:00 39.939333 -70.770183 NaN NaN \n", - "33 2021-10-30 12:02:00+00:00 39.939333 -70.770183 NaN NaN \n", - "34 2022-01-27 21:02:00+00:00 39.939333 -70.770183 NaN NaN \n", - "35 2022-01-27 21:02:00+00:00 40.362005 -70.878502 NaN NaN \n", - "36 2022-01-27 21:02:00+00:00 40.362005 -70.878502 NaN NaN \n", - "37 2019-02-04 12:02:00+00:00 39.936 -70.879417 NaN NaN \n", - "38 2019-08-05 03:03:00+00:00 39.936 -70.879417 NaN NaN \n", - "39 2019-11-04 00:02:00+00:00 39.936 -70.879417 NaN NaN \n", - "40 2020-10-30 18:03:00+00:00 39.936 -70.879417 NaN NaN \n", - "41 2021-05-01 21:02:00+00:00 39.936 -70.879417 NaN NaN \n", - "42 2021-07-31 18:02:00+00:00 39.936 -70.879417 NaN NaN \n", - "43 2022-01-27 21:02:00+00:00 39.936 -70.879417 NaN NaN \n", - "44 2021-03-10 16:49:00+00:00 44.528949 -125.389664 0.101806 0.818641 \n", - "45 2021-03-10 19:13:00+00:00 44.528949 -125.389664 0.079797 0.626137 \n", - "46 2022-05-09 19:15:00+00:00 44.515161 -125.389899 0.123811 0.998664 \n", - "47 2022-05-09 21:45:00+00:00 44.515161 -125.389899 0.115422 0.975148 \n", - "48 2023-07-02 10:30:00+00:00 44.515161 -125.389899 NaN NaN \n", - "49 2023-10-01 06:10:00+00:00 44.515161 -125.389899 NaN NaN \n", - "50 2023-10-01 06:10:00+00:00 44.515161 -125.389899 NaN NaN \n", - "51 2024-03-30 21:45:00+00:00 44.515161 -125.389899 0.108411 0.991019 \n", - "52 2024-03-31 01:29:00+00:00 44.515161 -125.389899 0.111699 0.984428 \n", - "53 2021-01-02 18:34:00+00:00 45.816712 -129.754055 NaN NaN \n", - "54 2021-04-03 14:52:00+00:00 45.816712 -129.754055 0.093002 0.981762 \n", - "55 2021-04-03 17:07:00+00:00 45.816712 -129.754055 0.091118 0.989766 \n", - "56 2021-04-03 19:32:00+00:00 45.816712 -129.754055 0.084795 0.988416 \n", - "57 2023-03-24 15:33:00+00:00 45.816712 -129.754055 NaN NaN \n", - "58 2023-06-29 23:12:00+00:00 45.816712 -129.754055 NaN NaN \n", - "59 2023-09-28 18:51:00+00:00 45.816712 -129.754055 NaN NaN \n", - "\n", - " stderr \n", - "0 0.003611 \n", - "1 0.015536 \n", - "2 0.005421 \n", - "3 0.017824 \n", - "4 0.001416 \n", - "5 NaN \n", - "6 0.003282 \n", - "7 0.002361 \n", - "8 0.000775 \n", - "9 0.004492 \n", - "10 0.005447 \n", - "11 NaN \n", - "12 NaN \n", - "13 NaN \n", - "14 NaN \n", - "15 NaN \n", - "16 NaN \n", - "17 NaN \n", - "18 NaN \n", - "19 NaN \n", - "20 NaN \n", - "21 NaN \n", - "22 NaN \n", - "23 NaN \n", - "24 NaN \n", - "25 NaN \n", - "26 NaN \n", - "27 NaN \n", - "28 NaN \n", - "29 NaN \n", - "30 NaN \n", - "31 NaN \n", - "32 NaN \n", - "33 NaN \n", - "34 NaN \n", - "35 NaN \n", - "36 NaN \n", - "37 NaN \n", - "38 NaN \n", - "39 NaN \n", - "40 NaN \n", - "41 NaN \n", - "42 NaN \n", - "43 NaN \n", - "44 0.011436 \n", - "45 0.017042 \n", - "46 0.001099 \n", - "47 0.003999 \n", - "48 NaN \n", - "49 NaN \n", - "50 NaN \n", - "51 0.002134 \n", - "52 0.003279 \n", - "53 NaN \n", - "54 0.002884 \n", - "55 0.002077 \n", - "56 0.002112 \n", - "57 NaN \n", - "58 NaN \n", - "59 NaN " - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# calculate Kd from OOI data\n", - "\n", - "\n", - "FF = glob.glob('icesat2/ooi/data*.csv')\n", - "FF.sort()\n", - "\n", - "ooi_kd_array = pd.DataFrame(data=None,\n", - " index=range(len(FF)*2),\n", - " columns=['time','lat','lon','kd','rval','stderr']\n", - " )\n", - "cc = 0\n", - "for fname in FF:\n", - " # load the file as a pandas array\n", - " df = pd.read_csv(fname,\n", - " index_col=0,\n", - " header=0,\n", - " usecols=[i for i in range(6)],\n", - " names=['', 'time', 'lat', 'lon', 'z', 'par']\n", - " ) #\n", - " df['time'] = pd.to_datetime(df[\"time\"]).round('s')\n", - " # ooi_kd_array.loc[jj,'stn'] = FF[jj][9:-4] # save the file name if its useful\n", - "\n", - " # calculate kd (there may be more than 1 value if there are multiple casts in 1 file)\n", - " try:\n", - " kd,rval,stderr,t = ooi_run_kdcalc(df)\n", - " except:\n", - " kd = np.nan\n", - " rval = np.nan\n", - " stderr = np.nan\n", - " \n", - " # either put in the 1 value or put in each value...super dumb way to do this but Im in a rush\n", - " if type(kd) != np.ndarray:\n", - " ooi_kd_array.loc[cc,'time'] = t\n", - " ooi_kd_array.loc[cc,'lat'] = df.loc[1,'lat']\n", - " ooi_kd_array.loc[cc,'lon'] = df.loc[1,'lon']\n", - " ooi_kd_array.loc[cc,'kd'] = kd\n", - " ooi_kd_array.loc[cc,'rval'] = rval\n", - " ooi_kd_array.loc[cc,'stderr'] = stderr\n", - " cc += 1 # raise counter\n", - " else: \n", - " for jj in range(len(kd)):\n", - " ooi_kd_array.loc[cc,'time'] = t[jj]\n", - " ooi_kd_array.loc[cc,'lat'] = df.loc[1,'lat']\n", - " ooi_kd_array.loc[cc,'lon'] = df.loc[1,'lon']\n", - " ooi_kd_array.loc[cc,'kd'] = kd[jj]\n", - " ooi_kd_array.loc[cc,'rval'] = rval[jj]\n", - " ooi_kd_array.loc[cc,'stderr'] = stderr[jj]\n", - " cc += 1 # raise counter\n", - "\n", - "ooi_kd_array = ooi_kd_array.dropna(how='all')\n", - "\n", - "# pd.DataFrame()\n", - "# d = {'time' = ff[0,1],'kd': m, 'rval': rval, 'stderr': stderr}\n", - "# df = pd.DataFrame(data=d)\n", - "\n", - "ooi_kd_array.to_csv('../output/icesat2/ooi_kdcalculations10m.csv')\n", - "ooi_kd_array" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "2c841687", - "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", - "
      timelatlonkdrvalstderr
      02018-12-18T08:19:41Z24.597167-81.1813330.204801-0.911410.002248
      12020-08-20T00:54:19Z25.404333-82.21050.000078-0.003740.000411
      22020-10-09T09:36:26Z26.632167-82.55951.567188-0.7979450.023695
      32022-12-06T19:31:24Z27.796667-82.8796670.0019690.5327380.00006
      42022-12-06T20:09:35Z27.7405-82.9283330.0001240.1307190.000017
      \n", - "
      " - ], - "text/plain": [ - " time lat lon kd rval stderr\n", - "0 2018-12-18T08:19:41Z 24.597167 -81.181333 0.204801 -0.91141 0.002248\n", - "1 2020-08-20T00:54:19Z 25.404333 -82.2105 0.000078 -0.00374 0.000411\n", - "2 2020-10-09T09:36:26Z 26.632167 -82.5595 1.567188 -0.797945 0.023695\n", - "3 2022-12-06T19:31:24Z 27.796667 -82.879667 0.001969 0.532738 0.00006\n", - "4 2022-12-06T20:09:35Z 27.7405 -82.928333 0.000124 0.130719 0.000017" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# calculate kd for all of gulf of mexico ctd profiles \n", - "FF = glob.glob('icesat2/ctd_ws/data*.csv')\n", - "FF.sort()\n", - "\n", - "ws_kd_array = pd.DataFrame(data=None,\n", - " index=range(len(FF)),\n", - " columns=['time','lat','lon','kd','rval','stderr']\n", - " )\n", - "\n", - "for jj in range(len(FF)):\n", - " df = pd.read_csv(FF[jj],\n", - " index_col=0,\n", - " header=0,\n", - " usecols=[i for i in [0,2,3,4,5,6,28]],\n", - " names=['','prof', 'time', 'lat', 'lon', 'z', 'par']\n", - " )\n", - "# ws_kd_array.loc[jj,'stn'] = FF[jj][12:-4]\n", - " \n", - " try:\n", - " kd,rval,stderr = ws_kd_calc(df)\n", - " except:\n", - " kd = np.nan\n", - " rval = np.nan\n", - " stderr = np.nan\n", - "\n", - " time = df.loc[1,'time']\n", - " lat = df.loc[1,'lat']\n", - " lon = df.loc[1,'lon']\n", - "\n", - " ws_kd_array.loc[jj,'time'] = time\n", - " ws_kd_array.loc[jj,'lat'] = lat\n", - " ws_kd_array.loc[jj,'lon'] = lon\n", - " ws_kd_array.loc[jj,'kd'] = kd\n", - " ws_kd_array.loc[jj,'rval'] = rval\n", - " ws_kd_array.loc[jj,'stderr'] = stderr\n", - "\n", - "\n", - "\n", - "pname = '../output/icesat2/'\n", - "ws_kd_array.to_csv(pname+'ws_kdcalculations10m.csv')\n", - "ws_kd_array" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "797738d3", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "bcodmo/bcodmo_dataset_518582_2e2e_e9a0_6c3e.csv\n", - " cast latitude longitude depth_w time par\n", - "0 01 21.391 -158.2908 1323 2013-07-02T04:14:31Z 383.36\n", - "1 01 22.75 -158.0002 4743 2013-07-02T21:55:50Z 3588.1\n", - "2 02 22.75 -158.0003 4742 2013-07-03T13:53:21Z 2.2892\n", - "3 01 24.0882 -157.999 4496 2013-07-03T21:56:40Z 1001.3\n", - "4 01 27.0658 -157.9975 5392 2013-07-04T13:59:16Z 1.9284\n", - "bcodmo/bcodmo_dataset_757784_f8fc_ca99_ecce.csv\n", - " Station Site time depth Par latitude longitude\n", - "0 001 Shakedown 2018-05-07T17:46:00Z 3.0 1460.0 11.24758 -56.32338\n", - "1 001 Shakedown 2018-05-07T17:47:00Z 7.0 169.0 11.24768 -56.32336\n", - "2 001 Shakedown 2018-05-07T17:48:00Z 30.0 45.1 11.24788 -56.32324\n", - "3 001 Shakedown 2018-05-07T17:49:00Z 56.0 14.8 11.24816 -56.32307\n", - "4 001 Shakedown 2018-05-07T17:50:00Z 85.0 3.71 11.24842 -56.32296\n", - "bcodmo/bcodmo_dataset_774958_89bb_d996_f2f0.csv\n", - " cast latitude longitude time depth PAR\n", - "0 1 32.1698 -64.5028 2019-05-20T15:52:16Z 15.062 315.99\n", - "1 2 32.1748 -64.4947 2019-05-21T07:11:03Z 11.639 1.0E-12\n", - "2 3 32.274 -64.5 2019-05-21T14:06:26Z 14.377 112.6\n", - "3 4 32.571 -64.6463 2019-05-21T19:43:48Z 13.007 103.71\n", - "4 5 32.4745 -64.5273 2019-05-22T13:57:02Z 14.377 54.236\n", - "bcodmo/bcodmo_dataset_783911_2f9c_8b20_d8a3.csv\n", - " Station time depth PAR_Irradiance latitude longitude\n", - "0 1 2017-12-26T19:16:13Z 0.987 594.0 -64.72202 -87.27946\n", - "1 1 2017-12-26T19:16:17Z 1.979 514.0 -64.72202 -87.27946\n", - "2 1 2017-12-26T19:16:19Z 2.973 458.0 -64.72202 -87.27946\n", - "3 1 2017-12-26T19:16:22Z 3.957 399.0 -64.72202 -87.27946\n", - "4 1 2017-12-26T19:16:25Z 4.954 370.0 -64.72202 -87.27946\n", - "bcodmo/bcodmo_dataset_784290_eebd_40d0_b2f6.csv\n", - " Sta_Sequence Station latitude longitude Water_Depth time \\\n", - "0 1 WF 29.14812 -94.79963 15.9 2017-09-23T00:32:00Z \n", - "1 2 GI 29.066 -94.90167 16.2 2017-09-23T01:51:00Z \n", - "2 3 SS 28.95975 -95.094 16.57 2017-09-23T03:27:00Z \n", - "3 4 S21 28.76455 -95.29817 NaN 2017-09-23T05:29:00Z \n", - "4 4 S21 28.76455 -95.29817 NaN 2017-09-23T08:29:00Z \n", - "\n", - " PAR_Irradiance \n", - "0 NaN \n", - "1 NaN \n", - "2 NaN \n", - "3 NaN \n", - "4 0.16 \n", - "bcodmo/bcodmo_dataset_807119_af4f_a794_1c25.csv\n", - " latitude longitude time par depth\n", - "0 40.2705 -70.82917 2018-04-27T00:19:24Z 1.1092 3.969\n", - "1 40.20583 -70.82883 2018-04-27T01:06:29Z 1.6557 2.977\n", - "2 40.141 -70.82983 2018-04-27T01:53:55Z 1.0538 2.977\n", - "3 40.076 -70.82867 2018-04-27T02:43:26Z 1.2449 3.969\n", - "4 40.011 -70.82833 2018-04-27T03:33:33Z 1.4921 1.985\n", - "bcodmo/bcodmo_dataset_815732_68e0_5c4d_62dc.csv\n", - " Cast_ID time latitude longitude depth PAR_Irradiance\n", - "0 1 2015-03-16T15:56:47Z 31.032117 -76.343633 2.0 1417.0\n", - "1 2 2015-03-16T17:50:10Z 31.005317 -76.334083 2.0 -379.4\n", - "2 3 2015-03-16T19:54:54Z 31.052872 -76.597728 2.0 1350.0\n", - "3 4 2015-03-17T11:53:17Z 31.05692 -76.591803 3.0 54.1\n", - "4 5 2015-03-17T15:30:57Z 31.075522 -76.849018 2.0 1590.0\n", - "bcodmo/bcodmo_dataset_874909_v1_8bf6_bf9e_ab56.csv\n", - " latitude longitude time Station depth PAR_Irradiance\n", - "0 -76.45435 167.91856 2018-02-11T19:19:00Z 67 0.989 838.72\n", - "1 -74.74383 170.3741 2018-02-13T21:25:00Z 70 0.989 4108.9\n", - "2 -74.80015 164.39491 2018-02-14T22:28:00Z 72 0.988 2313.2\n", - "3 -74.7991 164.59668 2018-02-16T20:15:00Z 76 0.963 732.07\n", - "4 -74.69552 164.79597 2018-02-17T20:34:00Z 78 0.989 860.87\n", - "bcodmo/bcodmo_dataset_908342_v1_7e78_d78e_c5cc.csv\n", - " Station latitude longitude time par\n", - "0 9001 -56.5005 -140.70284 2021-02-02T03:45:31Z 40.389\n", - "1 9101 -56.00383 -140.50467 2021-02-02T07:42:22Z -0.001258\n", - "2 9201 -53.4965 -137.0215 2021-02-03T09:27:45Z 0.98411\n", - "3 9301 -53.78167 -137.52467 2021-02-03T13:03:40Z 1.0E-12\n", - "4 9401 -54.07917 -138.0225 2021-02-03T16:28:53Z 105.03\n", - "bcodmo/bcodmo_dataset_915709_v1_1cbb_6b39_1f21.csv\n", - " CTD_Cast Par latitude longitude time\n", - "0 1 1.0E-12 42.4245 -69.75144 2021-08-04T04:48:02Z\n", - "1 1 1.0E-12 42.42576 -69.75328 2021-08-04T04:41:36Z\n", - "2 1 1.0E-12 42.4259 -69.75348 2021-08-04T04:40:54Z\n", - "3 1 1.0E-12 42.42618 -69.75387 2021-08-04T04:39:34Z\n", - "4 1 1.0E-12 42.42645 -69.75429 2021-08-04T04:38:14Z\n" - ] - } - ], - "source": [ - "# Process BCODMO data : only keep unique entries to search ICESat-2\n", - "FF = glob.glob('bcodmo/*.csv')\n", - "FF.sort()\n", - "\n", - "for jj in range(len(FF)):\n", - " df = pd.read_csv(FF[jj],header=0)\n", - " df.drop(0,inplace=True)\n", - " df = df.drop_duplicates(subset=['time'])\n", - " df.reset_index(drop=True, inplace=True)\n", - "\n", - " print(FF[jj])\n", - " print(df.head())\n", - " \n", - " fname = FF[jj][:-4]+'_unique.pkl'\n", - " df.to_pickle(fname)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "e0dd94b3", - "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", - "
      StationSitetimedepthParlatitudelongitude
      0unitlessunitlessUTCmmicromoles photons per square meter per second...degrees_northdegrees_east
      1001Shakedown2018-05-07T17:46:00Z3.01460.011.24758-56.32338
      5001Shakedown2018-05-07T17:47:00Z7.0169.011.24768-56.32336
      28001Shakedown2018-05-07T17:48:00Z30.045.111.24788-56.32324
      54001Shakedown2018-05-07T17:49:00Z56.014.811.24816-56.32307
      \n", - "
      " - ], - "text/plain": [ - " Station Site time depth \\\n", - "0 unitless unitless UTC m \n", - "1 001 Shakedown 2018-05-07T17:46:00Z 3.0 \n", - "5 001 Shakedown 2018-05-07T17:47:00Z 7.0 \n", - "28 001 Shakedown 2018-05-07T17:48:00Z 30.0 \n", - "54 001 Shakedown 2018-05-07T17:49:00Z 56.0 \n", - "\n", - " Par latitude \\\n", - "0 micromoles photons per square meter per second... degrees_north \n", - "1 1460.0 11.24758 \n", - "5 169.0 11.24768 \n", - "28 45.1 11.24788 \n", - "54 14.8 11.24816 \n", - "\n", - " longitude \n", - "0 degrees_east \n", - "1 -56.32338 \n", - "5 -56.32336 \n", - "28 -56.32324 \n", - "54 -56.32307 " - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Process BCODMO data\n", - "FF = glob.glob('bcodmo/*.csv')\n", - "FF.sort()\n", - "\n", - "# ws_kd_array = pd.DataFrame(data=None,\n", - "# index=range(len(FF)),\n", - "# columns=['time','lat','lon','kd','rval','stderr','stn']\n", - "# )\n", - "jj = 1\n", - "\n", - "df = pd.read_csv(FF[jj],\n", - " header=0)\n", - "df = df.drop_duplicates(subset=['time'])\n", - "df.head()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/03_load_turbidity_data.ipynb b/icesat2_kdph-main/03_load_turbidity_data.ipynb deleted file mode 100644 index b2a3d8f..0000000 --- a/icesat2_kdph-main/03_load_turbidity_data.ipynb +++ /dev/null @@ -1,191 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "c6d637a7-d252-47bc-9943-d15b5d7e1348", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import glob\n", - "from datetime import datetime, timedelta\n", - "import matplotlib.pyplot as plt\n", - "from scipy import stats\n" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "f41f85b1-b583-4d36-83f3-b4811cd3efb8", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_745/1937311913.py:21: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " all_turb = pd.concat([all_turb, df], ignore_index=True)\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# figure out how to do this easily for 1 site (ndbc)\n", - "\n", - "FF = glob.glob('data/data_gov-ndbc*.csv')\n", - "FF.sort()\n", - "all_turb = pd.DataFrame(data=None,\n", - " columns=['time','lat','lon','z','turb'],\n", - " )\n", - "for jj in range(len(FF)):\n", - " df_full = pd.read_csv(FF[jj],\n", - " header=0) #\n", - "\n", - " df = pd.DataFrame(data=None,\n", - " columns=['time','lat','lon','z','turb'],\n", - " )\n", - " df['time'] = df_full['time (UTC)']\n", - " df['lat'] = df_full['latitude (degrees_north)']\n", - " df['lon'] = df_full['longitude (degrees_east)']\n", - " df['z'] = df_full['depth_reading (m)']\n", - " df['turb'] = df_full['sea_water_turbidity (NTU)']\n", - " df = df[df['z']<2]\n", - " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", - "\n", - "\n", - "all_turb = all_turb.dropna(axis='index')\n", - "all_turb.reset_index(drop=True, inplace=True)\n", - "\n", - "plt.plot(all_turb['time'],all_turb['turb'],'o')\n", - "all_turb.to_csv('results/ndbc_turb.csv')\n" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "d89f2e0c-4d7e-4535-a1af-d65bffa73cb7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "data/data_E01_waves_mstrain_all_2018-10-24 13:28:38+00:00.csv\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/tmp/ipykernel_745/1631083876.py:49: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", - "/tmp/ipykernel_745/1631083876.py:49: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " all_turb = pd.concat([all_turb, df], ignore_index=True)\n" - ] - }, - { - "data": { - "text/plain": [ - "[]" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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ScCdCMMyQ+2nr4endwmAMzgi8Hz88cfq6OhQenq6z/T09HQ1NDT0+pqSkhJZlmU/srKyQtFUAFHE+aclAEOHIwJPF5fL9+PFGNNjWpdVq1bJ4/HYj7o6rpcBILBqI+ACigA+54jAM2bMGA0bNqxHb05jY2OPXp8uCQkJSklJ8Xk4VcGUUQGtC6YHZ14Y7iacswVXWSFf5uSRIV9kyK38+gUhW9ZFIVsSgFBxROCJj4/X5MmTtXWr78XCtm7dqmnTpoW0Lf5e6ySUl84v/n/+bQN/6wZjsOu5ZPZXAt6G3gy2XYOpX7fg2sE255z97sEbQ7LvDea1gd7Hv3g9nrNZ18G85rUAtD0Sbo8BhFowP1vPlSMCjyTdd999+tWvfqX/+I//0Ntvv617771XBw8e1JIlS0LeloH+A8PxQRjONkViCBzM8s6mXWf7mnNdVij+n/15j66aQP2f9vY+Z7Oug3lNqIIh4DSR+pnvmMBz66236rHHHtMjjzyiK664Qm+88YZeeeUVjRt39pf5Pxd9/UeG84Pww7U39jhsVTBlVEja1N8yHpx5Ydi2SzADwodrb+xxeKuvw13+fNFeesaN5SePHNyXeiC3cX/vdea8c1nuyq9fMKhl+bPMwbzmw7U39ji8NdDhLsIOEJk//F3GmPDcwjvCeL1eWZYlj8fj6PE8AAA4ib/f347p4QEAAOgLgQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADgegQcAADheUAPPj3/8Y02bNk2JiYkaOXJkrzUHDx7UTTfdpKSkJI0ZM0bLly9Xe3u7T82ePXs0ffp0jRgxQl/60pf0yCOPyBjjU7Nt2zZNnjxZw4cP10UXXaTHH388WKsFAACGmNhgvnl7e7tuueUW5efn66mnnuoxv6OjQzfeeKPGjh2r7du365NPPtHChQtljNG//du/SZK8Xq9mz56tr3/966qurtZ7772n22+/XUlJSVqxYoUkqba2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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "FF = glob.glob('data/data_*.csv')\n", - "FF.sort()\n", - "all_turb = pd.DataFrame(data=None,\n", - " columns=['time','lat','lon','z','turb'],\n", - " )\n", - "\n", - "for jj in range(len(FF)):\n", - " df_full = pd.read_csv(FF[jj],header=0)\n", - "\n", - " \n", - " df = pd.DataFrame(data=None,\n", - " columns=['time','lat','lon','z','turb'],\n", - " )\n", - " # try loading each file\n", - " df['time'] = df_full['time (UTC)']\n", - " df['lat'] = df_full['latitude (degrees_north)']\n", - " df['lon'] = df_full['longitude (degrees_east)']\n", - " \n", - " # check for various names for depth column\n", - " if 'depth (m)' in df_full.columns:\n", - " df['z'] = df_full['depth (m)'] \n", - " elif 'z (m)' in df_full.columns:\n", - " df['z'] = df_full['z (m)']\n", - " elif 'depth_reading (m)' in df_full.columns:\n", - " df['z'] = df_full['depth_reading (m)']\n", - " else:\n", - " print(FF[jj])\n", - "\n", - " # check for various names for turbidity column\n", - " if 'turbidity (ntus)' in df_full.columns:\n", - " df['turb'] = df_full['turbidity (ntus)'] \n", - " elif 'sea_water_turbidity (NTU)' in df_full.columns:\n", - " df['turb'] = df_full['sea_water_turbidity (NTU)']\n", - " elif 'sea_water_turbidity (RFU)' in df_full.columns:\n", - " df['turb'] = df_full['sea_water_turbidity (RFU)']\n", - " else:\n", - " print(FF[jj])\n", - " \n", - " \n", - " df = df[df['z']<2]\n", - " \n", - " all_turb = pd.concat([all_turb, df], ignore_index=True)\n", - "\n", - "\n", - "all_turb = all_turb.dropna(axis='index')\n", - "all_turb.reset_index(drop=True, inplace=True)\n", - "all_turb.to_csv('results/all_turbidity_compile.csv')\n", - "plt.plot(all_turb['lat'],all_turb['turb'],'o')\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/03_proc_icesat4matlab.ipynb b/icesat2_kdph-main/03_proc_icesat4matlab.ipynb deleted file mode 100644 index 0f4cc18..0000000 --- a/icesat2_kdph-main/03_proc_icesat4matlab.ipynb +++ /dev/null @@ -1,618 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "8f821b93-0ec9-41db-af0e-61e26934504d", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import glob\n", - "from datetime import datetime, timedelta\n", - "import matplotlib.pyplot as plt\n", - "from math import radians, sin, cos, acos\n", - "\n", - "pd.set_option('display.max_columns', None)\n", - "# pd.set_option('display.max_rows', None)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c20024b9-6169-45ec-a236-69b8b6c03d41", - "metadata": {}, - "outputs": [], - "source": [ - "def calc_distance(lat1,lon1,lat2,lon2):\n", - " if lat1-lat2==0:\n", - " dist = 0\n", - " else:\n", - " lat1 = radians(lat1)\n", - " lon1 = radians(lon1)\n", - " lat2 = radians(lat2)\n", - " lon2 = radians(lon2)\n", - " dist = 6371.01 * acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(lon1 - lon2))\n", - " return dist" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "23b438ae-3319-4256-a476-d547ac56e166", - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      rgtsc_orientcyclesegment_distbackground_ratetrackregionsolar_elevationpairsegment_idlandcoveratl08_classsnowcoverheightreliefyapc_scorey_atcx_atcatl03_cnfquality_phgeometryspot
      time
      2024-03-22 01:15:24.318551296521235.097173e+06593992.4832632216.16729702541862554255-25.5307480.0044.496086-9.50521430POINT (-129.75048 45.78967)4
      2024-03-22 01:15:24.318651392521235.097173e+06593992.4832632216.16729702541862554255-33.3619690.0044.523972-8.77252010POINT (-129.75048 45.78968)4
      2024-03-22 01:15:24.318951424521235.097173e+06593992.4832632216.16729702541862554255-25.9837060.0044.497410-6.65974040POINT (-129.75048 45.78969)4
      2024-03-22 01:15:24.319251200521235.097173e+06593992.4832632216.16729702541862554255-25.7792450.0044.496601-4.52706140POINT (-129.75049 45.78971)4
      2024-03-22 01:15:24.319651328521235.097173e+06593992.4832632216.16729702541862554255-25.6305500.0044.496162-1.68258040POINT (-129.75049 45.78974)4
      .....................................................................
      2024-03-22 01:15:25.504951552521235.103184e+06463590.8205332216.15327812544862554255-26.2457390.00-44.4487195.07593640POINT (-129.75674 45.84372)3
      2024-03-22 01:15:25.504951552521235.103184e+06463590.8205332216.15327812544862554255-26.5386240.00-44.4477275.07516040POINT (-129.75674 45.84372)3
      2024-03-22 01:15:25.505151488521235.103184e+06463590.8205332216.15327812544862554255-49.6454540.00-44.3745926.44118200POINT (-129.75674 45.84373)3
      2024-03-22 01:15:25.505551360521235.103184e+06463590.8205332216.15327812544862554255-14.0022740.00-44.5046819.38809110POINT (-129.75675 45.84375)3
      2024-03-22 01:15:25.505551360521235.103184e+06463590.8205332216.15327812544862554255-70.7925110.00-44.3130239.23861200POINT (-129.75675 45.84375)3
      \n", - "

      20085 rows × 22 columns

      \n", - "
      " - ], - "text/plain": [ - " rgt sc_orient cycle segment_dist \\\n", - "time \n", - "2024-03-22 01:15:24.318551296 52 1 23 5.097173e+06 \n", - "2024-03-22 01:15:24.318651392 52 1 23 5.097173e+06 \n", - "2024-03-22 01:15:24.318951424 52 1 23 5.097173e+06 \n", - "2024-03-22 01:15:24.319251200 52 1 23 5.097173e+06 \n", - "2024-03-22 01:15:24.319651328 52 1 23 5.097173e+06 \n", - "... ... ... ... ... \n", - "2024-03-22 01:15:25.504951552 52 1 23 5.103184e+06 \n", - "2024-03-22 01:15:25.504951552 52 1 23 5.103184e+06 \n", - "2024-03-22 01:15:25.505151488 52 1 23 5.103184e+06 \n", - "2024-03-22 01:15:25.505551360 52 1 23 5.103184e+06 \n", - "2024-03-22 01:15:25.505551360 52 1 23 5.103184e+06 \n", - "\n", - " background_rate track region \\\n", - "time \n", - "2024-03-22 01:15:24.318551296 593992.483263 2 2 \n", - "2024-03-22 01:15:24.318651392 593992.483263 2 2 \n", - "2024-03-22 01:15:24.318951424 593992.483263 2 2 \n", - "2024-03-22 01:15:24.319251200 593992.483263 2 2 \n", - "2024-03-22 01:15:24.319651328 593992.483263 2 2 \n", - "... ... ... ... \n", - "2024-03-22 01:15:25.504951552 463590.820533 2 2 \n", - "2024-03-22 01:15:25.504951552 463590.820533 2 2 \n", - "2024-03-22 01:15:25.505151488 463590.820533 2 2 \n", - "2024-03-22 01:15:25.505551360 463590.820533 2 2 \n", - "2024-03-22 01:15:25.505551360 463590.820533 2 2 \n", - "\n", - " solar_elevation pair segment_id landcover \\\n", - "time \n", - "2024-03-22 01:15:24.318551296 16.167297 0 254186 255 \n", - "2024-03-22 01:15:24.318651392 16.167297 0 254186 255 \n", - "2024-03-22 01:15:24.318951424 16.167297 0 254186 255 \n", - "2024-03-22 01:15:24.319251200 16.167297 0 254186 255 \n", - "2024-03-22 01:15:24.319651328 16.167297 0 254186 255 \n", - "... ... ... ... ... \n", - "2024-03-22 01:15:25.504951552 16.153278 1 254486 255 \n", - "2024-03-22 01:15:25.504951552 16.153278 1 254486 255 \n", - "2024-03-22 01:15:25.505151488 16.153278 1 254486 255 \n", - "2024-03-22 01:15:25.505551360 16.153278 1 254486 255 \n", - "2024-03-22 01:15:25.505551360 16.153278 1 254486 255 \n", - "\n", - " atl08_class snowcover height relief \\\n", - "time \n", - "2024-03-22 01:15:24.318551296 4 255 -25.530748 0.0 \n", - "2024-03-22 01:15:24.318651392 4 255 -33.361969 0.0 \n", - "2024-03-22 01:15:24.318951424 4 255 -25.983706 0.0 \n", - "2024-03-22 01:15:24.319251200 4 255 -25.779245 0.0 \n", - "2024-03-22 01:15:24.319651328 4 255 -25.630550 0.0 \n", - "... ... ... ... ... \n", - "2024-03-22 01:15:25.504951552 4 255 -26.245739 0.0 \n", - "2024-03-22 01:15:25.504951552 4 255 -26.538624 0.0 \n", - "2024-03-22 01:15:25.505151488 4 255 -49.645454 0.0 \n", - "2024-03-22 01:15:25.505551360 4 255 -14.002274 0.0 \n", - "2024-03-22 01:15:25.505551360 4 255 -70.792511 0.0 \n", - "\n", - " yapc_score y_atc x_atc atl03_cnf \\\n", - "time \n", - "2024-03-22 01:15:24.318551296 0 44.496086 -9.505214 3 \n", - "2024-03-22 01:15:24.318651392 0 44.523972 -8.772520 1 \n", - "2024-03-22 01:15:24.318951424 0 44.497410 -6.659740 4 \n", - "2024-03-22 01:15:24.319251200 0 44.496601 -4.527061 4 \n", - "2024-03-22 01:15:24.319651328 0 44.496162 -1.682580 4 \n", - "... ... ... ... ... \n", - "2024-03-22 01:15:25.504951552 0 -44.448719 5.075936 4 \n", - "2024-03-22 01:15:25.504951552 0 -44.447727 5.075160 4 \n", - "2024-03-22 01:15:25.505151488 0 -44.374592 6.441182 0 \n", - "2024-03-22 01:15:25.505551360 0 -44.504681 9.388091 1 \n", - "2024-03-22 01:15:25.505551360 0 -44.313023 9.238612 0 \n", - "\n", - " quality_ph geometry spot \n", - "time \n", - "2024-03-22 01:15:24.318551296 0 POINT (-129.75048 45.78967) 4 \n", - "2024-03-22 01:15:24.318651392 0 POINT (-129.75048 45.78968) 4 \n", - "2024-03-22 01:15:24.318951424 0 POINT (-129.75048 45.78969) 4 \n", - "2024-03-22 01:15:24.319251200 0 POINT (-129.75049 45.78971) 4 \n", - "2024-03-22 01:15:24.319651328 0 POINT (-129.75049 45.78974) 4 \n", - "... ... ... ... \n", - "2024-03-22 01:15:25.504951552 0 POINT (-129.75674 45.84372) 3 \n", - "2024-03-22 01:15:25.504951552 0 POINT (-129.75674 45.84372) 3 \n", - "2024-03-22 01:15:25.505151488 0 POINT (-129.75674 45.84373) 3 \n", - "2024-03-22 01:15:25.505551360 0 POINT (-129.75675 45.84375) 3 \n", - "2024-03-22 01:15:25.505551360 0 POINT (-129.75675 45.84375) 3 \n", - "\n", - "[20085 rows x 22 columns]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fname = 'icesat2_ooi-rs03axps-sf03a-3c-parada301_2024-03-21T22_10_31Z.pkl'\n", - "gdf = pd.read_pickle('data/'+fname)\n", - "gdf" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "1d72dbef-f954-499f-be76-c1de3233b325", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# load time, lat and lon\n", - "fnames = glob.glob('ice*.pkl')\n", - "fnames.sort()\n", - "for jj in range(len(fnames)):\n", - " gdf = pd.read_pickle(fnames[jj])\n", - " # sort by photon collection time\n", - " gdf = gdf.sort_index()\n", - " \n", - " # pull out lat, lon, and calculate distance from first photon\n", - " lat = gdf.geometry.y.to_numpy()\n", - " lon = gdf.geometry.x.to_numpy()\n", - " gdf['latitude']= lat\n", - " gdf['longitude']= lon\n", - " gdf['dist_along_km'] = [calc_distance(lat[0],lon[0],lat[jj],lon[jj]) for jj in range(len(lat))]\n", - " \n", - " # remove unnecessary data\n", - " gdf = gdf.drop(columns=['region', 'sc_orient','rgt','cycle','background_rate','landcover','relief','snowcover','atl08_class','spot','geometry'])\n", - " \n", - " # save as mat for use with Emily's Kd calculation code\n", - " gdf.to_csv(fnames[jj][:-4]+'_formatlab.csv')" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "0b3821fa-6e3c-4755-85f2-c23e80b25907", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAGdCAYAAADT1TPdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAADUAklEQVR4nOyde3xUV7n3fzOEZALJ5ALkTpIJBZIhRaHQkEKoVrkEaHuOeg5aSymNFLXVY+W81lTSQkNL67GnnmN9eyimiNRWfK2eXiBctCoBQqBQpSGXIrkRkhAgVy4hDDPvH9M97NmzL2vf94T1/Xz6USYze6/Zs/daz3ouv8fm8/l8oFAoFAqFQrEodrMHQKFQKBQKhSIGNVYoFAqFQqFYGmqsUCgUCoVCsTTUWKFQKBQKhWJpqLFCoVAoFArF0lBjhUKhUCgUiqWhxgqFQqFQKBRLQ40VCoVCoVAolibC7AGoxev1oqOjA7GxsbDZbGYPh0KhUCgUCgE+nw+Dg4NIS0uD3S7uOwl7Y6WjowMTJ040exgUCoVCoVAUcObMGWRkZIi+J+yNldjYWAD+L+t0Ok0eDYVCoVAoFBIGBgYwceLEwDouRtgbK0zox+l0UmOFQqFQKJQwgySFgybYUigUCoVCsTTUWKFQKBQKhWJpqLFCoVAoFArF0lBjhUKhUCgUiqWhxgqFQqFQKBRLQ40VCoVCoVAoloYaKxQKhUKhUCwNNVYoFAqFQqFYmrAXhaNQKLcewx4vtle3oLXnCrISx2BFYTYiI+jei0IZqVBjhUKhhBWbdtVhS1UzvL6brz23qx6ri1woXeI2b2AUCkU3qLFCoVDChk276rB5f3PI614fAq9Tg4VCGXlQvymFQgkLhj1ebKkKNVTYbKlqxrDHa9CIKBSKUVBjhUKhhAXbq1uCQj98eH3A3Bf/hNXbjuLSkMeYgVEoFN2hYSAKETShkWI2rT1XiN53fnAY++q7kb9+D6ZnOPHu40U6j4xCoegNNVYoktCERooVyEocI/szJ9oHcN8rVdRgsRB040NRAjVWKKLQhEaKVVhRmI3ndtVLhoK4nGgfwKUhD2IcdLpTi1pDg258KEqx+Xw+mY++tRgYGEBcXBz6+/vhdDrNHs6IYtjjRW5ZpejiYLcBDeXFdGdEMQQh41mKBXlJ2LJytg4jMg6zPRJ8hobdhoChITU+qd9uzXz9DBazrx2FHznrNzVWKIJUVDWhfGe95PvKluahpCjHgBFRKPyLphRTU2Kx53vz9RuUBHp4JNiGgt5IGRq3pztxsmNA1JBRsvHRwsgw+9pRhJGzflO/6C2GnIefNKGR9H0UihaULnFj7cJcbK9uwdZDzWjvHZL8TGZCtAEj40dt6MPsUCxJyfjHZwdCXmOPLynWQVTJtb26JbDx0SJkZPa1o2gHNVZuIeQ+/KQJjUoSHynacKu6tyMj7CgpysHy2ZnIX79H8v0vL5+h2bnlXHO1iyWJobB5fzPGjY3Cw3Nduvz2JCXjYmypasYDd2YSvZfZ+GhhZJDq8qxdmGuZZ0br53kkzQ/UWLkFGPZ4sbKiBtXNPSF/E3v4SRIa7Tb/+yjGQ5MVgRhHBKZnOHGiPXRnz+aBX1RrUhHEd83Ld9ajZF4WypblB72X1NCIix6NDxrOA/BhoTslyOggNRSer2zAC7sbdPnt1XpOvT7g3IC09wvwb3y0MjJIdXnY3hwz0fp5HmnzAzVWBLjh9eFIcw+6B4eQFOvAna5EjLLbzB6WbEgTEjfvb8Z37pkSVDERGWHH6iKX6OdXF+mzmxvJaBWH18K9bfTO69KQB0/s+AhtvVeRmRCNl5fPUF2l87tvzsWUdZWi7znRPoDy9+tQtkz5JC32LFUcaMXRlt4gg4jU0Pjxnk8C///D1j48X9mAwpwETE52oq6jn3h8eoU2tPCcTnBGwW4D0caH1MjYerAJEXa74L1r9TA2+9k71TUoezMpxkgMf9EEWx5213Ziw3t16Oy/uRtIjXPgmXvdWJyfqsk5jEBJ5QR3h7hpVx1e298MvpuEJHt/JLkh5SD0vUmS/aSumVZVWkYnHt73ShWvB0StcNtrfz2N5ysbJN9nA9C4UVnlGsk1B4CSea6AQfT0O7X4VXWr7HNpwScKvycfwx6vpDEoRdnSPHQPDhFVA5FeNxsQNC9x710rFwjITRKXU3UZTlWcNMFWBbtrO/GtN46HLM5d/UP41hvH8eqDM001WEgXfxJXKh/sHaKUsePx+icEsVLFkeSGJEXoe+en84cr2LsdAJLXjHTn+cCWahTnp/LeI0bvvIQMFUCdcJscg9wH/7Vjdu9yDGhSL8nrB5rx5GJ/eMLMXK6VFTV4a02hJseKjLCjMCcB1U29io+xfHZmwIMmZSCTXjfuz8G9d60axlayiZQTrgq38Bcp1FhhccPrw4b36ni9CMxr6989iQXulJCQkBEeBKnFnz2Gzr6ripPiTrQP4Jl3a7FdYndTcSD4gWOPZSS6IUkQ+95SeRVCExj3mpG6rT9s7cOHrX0hxo7RiYeXhjyS312JcJuSSf//fXgmZLdNYkCTXnPGICopysGKwmyinb0eVDf3YNOuOs2escnJTlXGyvQNe7C6yAUA4Pryuf9WKv7HwL53hTYIDPnpTtX3uJy5X+kmEtA+rPX7j9qpsRKuHGnuCQr98NE1cA2vfPAP/NsXJwdeEzMimBJLtUaM1OL/7t870NV/jdfQUsK2Q/Ld18xYhjwebDt0RvS9VsvC1wI1ExEJzDWTu2PnGju/PCjtftZy5/XEjo+I37dl5WyiyV/ptW44dynkNRID+tQ5cWOLDbNYvLRXOjSlJ2qeMe5vkOJ0qBoL13vIxofg60+SKyd1rge2VGOhO0XSSK49O4Bhj1fxPCTXe6ymsqqz7yrRWBs7ye7Vkx2DuDTkwZs1rdhb1wXAhgXuJKyam2PJeZkaKyy6B8ky1l/+4yeYmhKDxfmpkkYEN99DSRiEZGLu7L9GfDy9kTJUAH3ckHK9W3JCakLv08qbRQJzzZTuPLdUNftDdwfIFgGtEg/beq8Sva/l4mV87bVDITt4vmdGbTktH8zizhyf+b2Xz86U5VUgrWjRG6XPmBLRPQZuHokc2MYV81srHQfjVZRCzTykxHus5pnaV9+N3LJK0fXj3p9V8WreCMEt+/+wtRebKht5q9vMhhorLJJiyXcPG96rw91TkiQnJKm4Kgl6TMxWQKvFcNjjxYot1ajhTE7lO+sxLS0WX5qRoTifRux9gPLJVCmnL1zC9uoWTE0ei/quy7I+6/WRGyqAdvo5mQnRaOwalHzfqe7LONUd+p34nhk9Kji8Pn+uR01LT0hpshw6+ocs88zKvU5K2xkwqPnKXMOBLf5XWdtJZHwoQcm9pDSUqvaZYp6F/acu4Cszg+e1Zf/9V9R2hHoOlcBX3WY21FhhcacrEalxDslQEAB09g/h+V11msRVpRipCrFiDy6p10Nqcj3ZMYiTHfVBhktH/xDvos1MBB6vF2XL8ol2TkbzZo2010oLtEw8fHn5DCLhNinYz4xeyat85aNyqTjQDHeqNVp/yLlOVvAGcec6RvyvteeKbsaKknuJNIn1sV8fw8+/fkdg7tIqj6m+cxDlO+sDGyeP16uZocKgRbm/llgvMGUio+w2PHMv+Q/TclG5EcHsIkgYiQqxYovhpl11yC2rRPnOevyquhXlO+uRW1aJTbvqQt4nx2g42eF/wKW8CxUHWrHh3ZOmT9xmoqV+DiPcphZm8h/2eLF8NpkiqlnUE+YN6I0cg9MK3qCM+GhUVDXh6XdqUVHVhGGPF4B+c6BSo5x0A8mEbpi5i6ms0gpm41RxQJ8S+dcPNAd+A7OhxgqHxfmpeIKVPCtG9jh1DxDpDb+iMBthqEcnitBiyBgg3EmTeSiZh37Y49XVu7H1kPkTt1no0f323ceLNDFY9tV3Y8q6StyugadGT6xy6/Al+Q57vLwGgdkeXBv8Srx8m5QVhdnQYwqUWw3EXLu6DnJjlDt3TU62hteNBKa6zQrQMBAPj98zGW8dOYMuAYloG4CUOAeeWuLG9sNtis9DultQmx1vNYQWQzlxYKs8QCMRJslUS4Y9Xtz/mXRMS4vDsZYe+ABkjxuL8bFReOuI/NCWVYwBq8NVphbLwcqIN6/ZI8D/mzILfXXTRV1+8xPtA0Ql3kzLksPNPaoTiMPNU262EctAjRUe9tV1Ychzg/dvjHX/zL1u/PSPjYqz37nuR74cDSC4KqFkngtbCcpOwxU5ceAJzihjBjUCsNuAVXOz8PqBVqJ7la86Qo2OkFB1yfiYSPReuU74LfRllA24MUKfq9vX78Gj8/0J4VbLwSJFqgRZDVL5g2qTjhnUVvNpiZx1yyrGFTVWOAgp2DLEjxmNTV+6HR+19aq6gdnuR6HmaHxy0qvmZiEtboxoPwkGG4CH7srCXxq60dpDVj5qBEKTg5w4MIWMWVkJeHP1HERG2FF9uhd1BLkUrT1XQvqWcCtkSEvwxSZ6NSJjWnPDB8neNeEKW8fEaFKcUegasI6sAh9i5ctaGSoMrT1XiMTq9GZ2dgKOtJA9fx0EBSdGQI0VFmIKtgxREXbcPSUJ33rjuKpzMe5HQFwsiY2/9LQVa+a78Oz9/hp4oV1rYU4Ctj0yBwAklWgB4MGCTLjGj0VH/5Du3huhycEqFvxIojg/JWAUfnlmOup2Sk+Qp7oGJXuLkJTgW6G6RA5ORwT6rnrMHsaIomvgmirtFaPg2yjpcf9mJY7Bpl11phoqNoDYUAH81W0RdvMVx6mxwoJUwXbjeyc1efiUanRwxZPEVHIrqpqIzpGZOCZgPDy52H+80xcuobt/CCfO9qN7cFj+QEXgmxw6+q0RGx0p2G3+nixM/6b0eAeR90BO+a6YC90K1SVyoIaKMP9n0WQ4IiICc8w1jxc/3tNI9NlwuAX4Nkp63L/LZ2di+gZzk8OVfKXX9puvOE6NFRakCraHmi9qcj6lDwLXM8FoEfBBGlp5vrIBFy9fC8hdM8djwgH/79gZNHRpV8fPTA7M8X93/AzqO7XVCTCazIRoYrVWI8hPd2L6hj2y7jO5u2AxF7pVEvMo6jnbN4RJ42MC/+7ok3efF7oSQ0KJVuKG1xciZa/H/bvg5b9Y9hqI4QOw7VAzVs+fZNoYqLHCglTBdvQo8yu+T18gW9jlhFa4bn01sttiMMnFehw/Iz4aDxVmofniZUVVJkpZM9/fB2rqukrTd5I2ALdniMfE+fKhClzKOusykzo3Cdfs6hKKdrxVc0bVfT05JRbu9DhZCspG8nxlA17Y3aCo+7McrNQWRS5HW3qxer555zd/1bUQjIKtUD2/DUBqnAP/PCPdyGHx8mbNGdz94z/h0pC461quRsuWKr8IkJDeiRasLnLhpb0Nuhz/nrwkPHr3JNw2IUb6zRpgw81S7MgIOx6Z59LtXE8V56JsaR4eKsxCoSuR93ctzEnAx+sXoVaiP4jv0+M9VJiFsqV5aCgvVqz/wMThuUJ+z1c26KKNQYLdBuSnGXMP3AqofUzT4x3YetCahgoDVw9FKwXnkcLYyFGmnp96VlgwCrbfeuN4yM6TXbJcmDMeL+4mi9fqSWvPEPLX78H0DKdgDwe5Gi1eH7D1YJMuiZF2GwKdqHPLKjU/PnBzN2RUeaAPwbokdR19io4jlUtitwEPzw0W0hMqJybNUxpltwUStQF5nYXZ4xJqXwAYk6+Q6ozCvu9/DjuOtgWuBZMoTjEfuw34oL5b02cxPd4Bmw1o79W+UmXz/mZ80NCN7HFjkRg9Cj1X+WUsbjXu/Yy5m3TqWeGwOD8Vrz44EylxwSGhlDgHXn1wJhbnp+InJrd+53KifQD3vVIl+PfSJW6sme8i3uVuP9yq+SJfkB2HHy7OxdXrXjz262O6GRE3vD48/U4ttle3YNVc/bwcbFZW1ADwh82UhFHWzHdJjpVP8ZfJLXr2/nyUFN1s604aa2e/r/x9ZWP367dIGwV6KjCfG7wWdC26B/3Gk9A95nREYGpKLKYkjdVvUJQA+elO1MioPiHhbN+QLoYKw6nuy9hX300NFRanz0s3I9UT6lnhYXF+Kha4U3CkuQfdg0NIinXgTlciRn0646rpCaQXJ9oHcGnIE1Cq5FK6xI3EsZHYVCntEdJjEqhp6UdNS7/mx2XDyHUz2G3A9Awnas8OhCxcWpZTHm7uwaUhj2xvFONpAiDoBWDeI6T4y+dZIY21M+8rf79WcW+RXSe6iK7jk4unIsJuR2vPFTR2DaJGg4aBDOwkX5Jy04EhD9JtPiybkYb/2HNKs3FQgmF0obYe1KdvTThTkJ2Ao629YZVse8bk4gFqrAgwym5D4aRxvH/LHjcGVTLmuK/dmYHfHzuLazpLZD6x4yNsWTlb8O+r5ubgxd2NYfWAyIFPl+ZE+wBK5t0U0mMWdSZnRqvzPrHjI1nX9aniXDw81yU5DndqDK+hIiQkOC0tFvcTuGvZSc5qmqB1Egp+ne0bCtIG0tJYAYDK2k6sKMwmLjet77yE+k5qqGhNYU4CJic7A89ZuJWvG8U9eUnY/o05AYmIg59cQKsMY8AM7RqzdbCosaIAOT2BIuzAW0fadR6RH6my2ZHWYwgAUp2R6BwQ14B5/UArGjcWB4VRGAOArxppWlosvjQjA+29V7H1UAvROOSULK+Z78Kjd08i8gLUdlxC+fu1KFt2M7dETFXzZMcgTnY0SE5mjEfHKNE2ZqLTWhGU4cPWPkxZV4noiPDt+GkDED3ajivXrdHlVgnVTb3Y9sgc2SHJW42zfUMhkhPl79cRVUuVzMtChN1u6DyutDu1pmPQ8+CbNm3C7NmzERsbi6SkJPzTP/0TGhuDwxA+nw/r169HWloaoqOj8bnPfQ4nT57Uc1iqiY4chQXuJKL3yumuPWa0up8jM0G6VJTJXwnnLs5fnZ2BsqV5KJnnkjRUAP+i/UueMEvpEjcayosDFTZlS/PwycZi7PzufJQU5eCZ+6ahIJusnTvJtQeAVKcjYCiR7jorDrQGOuOSqmoKHdZuu1lmrWfuEBsb/BOdEYq2Vz3hs40vmee/5x4omIgFeUn4ekEm3Gnh05FXiK0HmwL/3+zduFWp6+gP6ng97PESJ4RvPdiKtQtzNelizpDqFJftkNudWg90Pftf//pXPPbYYzh8+DD27dsHj8eDhQsX4vLly4H3/PjHP8Z//ud/4pVXXsHRo0eRkpKCBQsWYHDQ3GQeKbY8NBtTkrVN0FO7o3p5+QwA/C3g2a8lxTpw4plFKHQlmlZaqoYdR9vR0X9FVrXH3rouRefa/o05ktfIbgMyEsgm5XODQ4EJSs6uk+kyLdetbrcBpcVTg0qUASC3rNKwHktzXImIjLBj60GyKqVbhScXu9E9OITfHDmDffXdeKOmDR+29hF/Pik2Ur/BqWBfnf++GvZ4ccOEH3zGxDjDzymXD1v7UL6zHrllldi0q07Wc81UbErJE8ihc2AIqSLNYdntYcxC1zDQ7t27g/69detWJCUl4dixY5g/fz58Ph9++tOf4kc/+hG+9KUvAQC2bduG5ORkvPnmm1izZo2ew1PNnJzx+OTcZek3GsC4MaMR44jgzWXYuLM+ZKddvrNe0/MXuhJlybSrwQcoyLMINTmErtUj81woW+b3fkRG2PHofPHQWX66kzhcxE4GlbPrZAwbuW51rw+IsNuD8kWMDgNuKynApl11eE3hef2JmiOv4/jKihpVz4zdoluN1p7L+NrmatMUaz86o28iv5Yw2i7T0mJlfW5fnbal4IB0/plUd2q9MfSs/f3+mygxMREA0NzcjK6uLixcuDDwnqioKNx99904dOgQ7zGuXbuGgYGBoP/MwkouzplZCYJCbkbMF5NTYi0dXuKG7cSuVcWB5qBScKHQmd3md+XL3eEwBseKwmzi5Ya515Tcc2yFWaMbC66ZfzOJWOl9uLrIbzw2lBcjI4FMZTocOKzSuO8atKYa6vnBYVQ3W1da34qc7JAbSTD+4jIbLbMwzFjx+Xz4/ve/j3nz5iE/37/L6+ryu+aTk5OD3pucnBz4G5dNmzYhLi4u8N/EiRP1HTgPTEiFVPLeCBJiRpva4ZZZRK06Qa2aezORjWTRPtE+gPL3awP/5stvaSgvRlrcGNnfmblWpIq37OQ2uYrEzPmGPfrq2/BRMi8LaxfmKr4vmfwaJscnMsKOFOfIkfDX4qew6N6AoiN2G3BPbrL0G3XAzIRpw6qBHn/8cZw4cQIHDhwI+ZvNFvzI+Xy+kNcYSktL8f3vfz/w74GBAUMNFr365ail5h/m7mTePt6Ouk5r5hmtmR8sqCYnsfXJxe7AZ/kaRsp9eLlZ9WXL3DjaclG0jw9bEE5uRZdfYfYKcssqDb8/Kg60orY9VOOGhGRnJErm5uBhjljeAncSPmzVVmAsnImOtOPKcPhWD1HkMy3NSdzxWmvMjCYY4ln5zne+g3fffRd//vOfkZGREXg9JSUFAEK8KN3d3SHeFoaoqCg4nc6g/4xCz345apFTo68HVjVUCrLikRTrCEo2VpLYKoTch5dPifbdx4tQMi8r5L1czwKDnIqu/HQnKg5or0hMilLl0nMDw3i+siGQgMjA9pBRQA2VW5CPNUyslUtbr3meFZvP59NtGvP5fPjOd76DP/zhD/jLX/6CyZMnh/w9LS0NTzzxBH7wgx8AAIaHh5GUlIQXX3yRKMF2YGAAcXFx6O/v19VwGfZ4FXXUTXU60Dmgnyw0RRxuzx253YUfKswK6p/D5dKQB7ev3yN5X4gp0TIIKdJKvf/t42dR3zkQ0kV5dnYCjjT3mt4FWgvYRpsZScIUCsXPJxzNKjXIWb91DQM99thjePPNN/HOO+8gNjY24EGJi4tDdHQ0bDYbvve97+H555/H5MmTMXnyZDz//PMYM2YMHnjgAT2HJpuVrx9WNOkvmJaMHyzKxRM7PkJb71X4vF580q1PBZEZqoZmMiEmEucvieuscD0KXh9k9cAR85wwIUGpa16YkxAklCUEX5iJ5P2MzDxj6Jw6N4Dqpl7UNI+ccAm7EqF0iRsH/3EetR3WyRmjUG4VmGpGo9E1DPTqq6+iv78fn/vc55Camhr4b8eOHYH3/OAHP8D3vvc9fPvb38asWbNw9uxZ7N27F7Gx8kq59GTY41XU5A3wL3YxjghsWTkbe743H+9/d75uFTNzXIn6HNhi2OBP3rx4WVoQTg1iqo0kIUEmjPPWo3cp2onw6eUIwRgu0aPtiu9VK8NUIgx7vPja5mpqqIQxt6c7LVs1qAZHGKsny8GsJFtdPSskESabzYb169dj/fr1eg5FFWrKtbiLnZ6S95/PTUL/kCckJDCSPC6FOQnY8tCdsnvxKGHV3CzesAxpCfCJZxYhMsKOiqom4tAOA19zwed21YuGkswoTTaSt4+f1VQfaObEOPytvd+SOWgjmX/6bDreWl2If3vrGE6cHcDQ9RsYvBb+3Y2HPL4RNdcKYVaSra45K0ZgRM7K0+/U4lfV8pu92QA8yoq1s131+06e0zSXhe8hYXrcrCjMxou7G4j6TliZ4+sWYPP+fxhWjcXNdwEQaIpIsmgWuhJDhLFIclfue6VKtDqIkcvnGlLbq1s0F/vTi9S4KHT2m6sTkpHg0KXDOEWcZGcUzhE2wKRYCxsQ0mdNDZbJWRkpKLUkfUCQB0XPRZbvsCc7BjEnx++ykyNNL8Xt6U6c7FBWkspHVqIDrT3Si8Y///yAoVVPfN+v4kArEseOJvo8nzopo1gJgNdgKX+/TtRQAfyf595Lz+2qR16qdUKnUnT2X8P0DCc+bh8wbSdKDRVzGOmGSkFWPGpktE0IJ/JSzesRZG5nojBBiRAXm837mzUvec5LjUVp8VTJcVUcaMWKisOanvtkxwBWzQ0ttZULk9PhiCRb/M0uz2bouXxd9TG2VDWH5KAMe7x4ndD7xZc4LF8FU5isRAceKJhIdI8ppfbsAP7Poin6HJxiCE8V56K0eCpmZSVgZma8oedeM9+FwhyyRqNGcmMES/V9eWa6aeemxgoBTJ6JlfjKzAxE2O1ERojWVSFeH5AWN0aRvP6srPggBdjSJW7ijsUjCT7p6u3VLZaJd7f2+Bvs/aXhvG7eQK8PGGW3jchky1sBuw14eK4La+6+Db/71l34/bfnYs18/edJG26Wsk9O1l9na1ZWAkqLp8r4hFWeYu15oED9JlUp1FghRI4QlxG09lxB8wXzmii29lwJSNCXFk8l7tlSnJ+KZ+/PR0lRTsCdyHSL1gpmMrPS78UHN6veTClrPrw+/lCWlpztG5LcCFhx90zhFzhcuzAXqU59+zf9sHhqIISqd7Kn3Qa8uXoO1tx9G69wIxcbAG94p4GK8rczfaadmxorMmAW5/w041RzhTjVNYg3atpMO//Js/2oqGrCi7sb8OLuRqL4v1ApcGSEHckx2rW7Z6YK5vcqdCXq4phNionkbW5IurhyJ1orNcY0iqzEMaKNItfMd2HbI3MsbXSazczMONSuX2T4NTrwjwtBJfWbdtVhyrpK3UUwbbAFzqk2RC8F2yArW5aP6Rnic78PwPG28On6LJfuQfPyvGiCrUwiI+x4clEuVmw9Yuo49N7xSnGsrQ/H2vpkfYZvJ6ZXryVGROylvQ26XavIiFFoKC/G9uoWnL5wCecHriHZ6cDExGjUNPdKarBwDbcVhdl4blf9LVVKy1yD0iVu3gon5n7Rq9x/JDBubBRiHBGGX6OTHYM42VGP53bVIz/dKZkYrhXPVzbghd0Ngao6vb534tjRSIp1YNjjDdyHhTnjDPueViQp1ryu59RYUcD+f3Sbev5wq+UXKtfVUzbd6wO2HmzSVXckyRmFyAg7ugf9+R1yjAw+wy0ywo5Vc11hX2Iuh5f2NgR1VRZSxly7MBev7ZdWCxbDrOdmbOQo/NsXJuPhuS7MfeFPkqrLckn+NOyydmGuKQad1wfDF3C+qjqtNz09l6+jfGd9QN8IwC1tMEeOsuFOE4VHaRhIJn5PQIsp57bbgILshLAyVBbkJQUSadmKrJv/+g/dBcy2H9a3gd+iacmSSrZcD7VQc0LAf29pWWIeDvBVRfFBmnycED0q5DXmmj9qQPInH3mpsXj07kkAgAsaGyoA4Bo/FgDwi6rTmh/b6jD3DxPyzdIhWZ8xjF67hQ0VABi+4cOPd5un40Q9KzIwUyF0QV4SMseNDbtdd2p8NCIj7LqFe8TQW0fj6wXZmL5hj+h7fAB+sGgqPmg4B8CGBe4k3s7BVm7Op6dHgqmKkuo1Qpp83Hs1VAmVuef02oFLcU+uv4P8Lw/K9wxJXXt2OPHNI+blsJkF9/7RU94gnDaJesHu0WU01LMig+3VLablE5ztGwo7QwXwJ1CS9NEJNwqy4/Dw1iNE3+nHexrxYWsfPmztxabKRuSWVWLTrrrA360uk//ofJdkYqEaSAwRtcnHm/c3Y9OuOpQucePEM4tUHUsux1p7MOzxYm9dl+zP5qbGiP6dHU685hlBD5gMmPvnl7eYV9IM+CQXjIIaKzIws7S0vjP8krrsNmD57ExLL8RKqWnpx4etyvRrGLcyY7CYaQRLUTLPL+3/sY45CVKGyLDHC4/Xq7qiiwkZ7DhqrAfiTw3nkVtWiTM98nf9DZ38DRv5wonT082vUjSDU12DGPZ4FbVEocjHrHWQGisyOHXOPIPBomuZKKuLXNhxtM2yC7HZMIunng9/afFUlC3NgztV/kJWMi8LZcvcWPn6YaL7b1ZWvGyNDbHO1oA/PJZbVolNlY2qnwFmV6j0eqsxlrw+4NygfJl5oe+8am5WSN7Tf311poKRhT/VzT3ILatEe588Y9AdRu0prIRZEgvUWCFk0646VDdpqwRLyrS08Hqo2Ls+va1wu82/ID9UmIVZWfG6nktrmMVTr4ffbgNWzc3BisJsNHSRG9qMqF7ZsnwMe7zE9/2UlFick6nDUJCdKBj/1iN82NpzBenx8ssv7TbgkXnWUbHeerA1JDE5xhGhebhuctJYfCF3Au6ZMk7T42qNknvkyzMzLC8caUWSdBb9E4Im2BJgVk4BU/KbFOvAyQ7zu+kWuhIFNUsKcxIwOdkZoo+htxW+usgv9w0AFVVN+DDMGog1dg9g4/3TdemWzOQzVFQ1yZrMffCXwQLy4tPnB67JXjQmp/Ab4no9c6e6BrFdQbiAKb2v6+gzbdPCRigx+d3HiyS7dsvhVPdlnOo2TylbLxiPXmSEPaDv8/bxs6gLw3C7VthtINLL+e5bH2H0KBsW56caNDI/1LNCgBk5BU8V5wZKfvVWaSTBbgPc6XGCf69u6kX0aHuQjD6gn8IkX8zeCtdJLr89ehZf+Z+DmnrPuNdGiXeLMVLkfLZNQSWGkDG78nVtm28yVDf3yAonca+lldR0ub8NIw2Qnx43Ilrp6dmokNFNqahqwsad/tyx/31s7i3raSl0JaKhvBjvPl6E1UXZku/f8F4dbhi8KFLPCgFGJxStme8K6DIANxspmlnaumpulqQGCF9Zm1Zj/z+LJsMREcGrbqr1uYzmRPsAUp1Rmhyr0JWIbSUFQddGiXeLueflfLaxS17XZ6F8FTNDroBfy2hSckxAkTgp1oFLQx7sONqG1p4rKMgW9jAaCfu30UIaICPegfY+8+TUGdgiksMeL6auq9Q0Z88GoLrpInLLKoOuFyP+dqsJMwJATcvN+/me3BRRLTEfgM7+IRxp7kHhJOPCg9RYIcCoxFob/GWifIJhRmlEcHUd2KEoqfN6fcBjvz6Gn3/9jqDFsnSJGyfalbvP/WO4jai23ywtDbV0DshPvuSjurknSBUW8BsEcsNMzEKoZwsAPhVfK5Rx2222EEVivutnppI029DTSqPHLEPlwYJMuMaP5d2IvLS3QfNr7AO/4i5TpWdVx8q4saPRc/m6LvccO6xI2v/H6D5B1FiRwMhd3g+LpwbyL/jg9k9Jj3fgg/pu1LRoN7646FH4zj1TQiaOp9+pJfr8vvpu5JZVhsjrT052Kr6OfIuaGNzrdOrcgOi5S+ZlISnWgX113QB8WOhOwVfumIg7Nu4LyyqszfubMW5sFNr7riIrcQyWz86U9Xmm5LyiqsnvSXAlaPoMCLVfAKxRxk3qNfHBn6v1SddlXLyivTKtGPnpTkRG2C1h3KmloWsQrvFjsW6pO+g5N+u7WfGZnxATqXmbBi6MN5W0/4/RfYKosSKCkQ+LDX5FVCm4/VPW3H2bpuqnfVdvYPnsTMQ4gm8NOeEAvr4dp2SGCBhK5t1c1IY9XsFGd1y414nPTc5dNFfNzQkc/8m3/27JSYuU5ysbAv9frlclP92J6Rv26GY0iB3XTC0jJZgVrqo9OxB4Hsw27tTyYWsvPmztDYRhmOfxlwfDyzuqhDXzXfB4vag4IJ70rbehAtyc4+90JSI1zoGu/iHeOdAGICXOYXifIJvP5wvr22FgYABxcXHo7++H06lt2V5FVZMuVRpCiO04AfHF+tKQB7ev36PJArsgLwlbVs4OOTc3xkvCJxuLAQBT1lUqGkvZ0jyUFOUQGRvssfJdp2GPF1sPNgV5UB6e6zKtHcCtDl+PJKOfuXBmQV4SJjij8GbNGbOHoilr5t86TQM/2ejv2m72PW+3AQ3lxYH1ZHdtJ771xnEAwZ4mJkT26oMzNakGkrN+U2NFhKffqTVFFZFvEhdaTAtzErDtkTma3vBTU2Kx53vzQ15X4sEpdCUCNp/iHeisrAR8ZmK8aMIb+3qJGTUAfy5LqjMSnQPGuvEpoRMkoNwovlUJtw7slGBKi6fibN+Q6eq7fGvO7tpObHivDp39N3NTUuMceOZet2Zly9RY0QizdnncSVzKSLABcKfF4mSHslALFz7PCoMVPRDM9Xppb8MtsRsbSTCeMzZmNXUszNE2N4dCkWJWVgKK81NM86yIFXUAwA2vD0eae9A9OISkWH/oZ5SGtd1y1m+qsyKCWbod7GZRJHkzPkAzQwUAXl4+I3DuiqomPP1OLSqqmoJasX8hd4Jm51OL1wdsPdgU9omGtyJ8OSqlS9xIdkYaOo7a9Yuw5aE7DT2nlbHBv+ufKiDaR9EKn6n6UB+vXyRoqADAKLsNhZPG4f7PpqNw0jhNDRW50ARbEczU7WAmcaMT6KZnOBHjiODd3ZbvrA/Ek//UcN64QRGw/XCrpbw9bBKiR6H36g2zh6E7TLht7cJcPPbrY9hX3y35mfR4R6DqiKlc2nG0Delx0ThnYGjuiR0foffKdcPOZ3VSnA6sufs2RNjtpudTjGQWulNMW2fWzHeFFFJYmfAZqUmYpdvBZGYbWR0xPcOJdx8vEnXDWzXM0t5rvpgVH3YbUPXkF3WtrjGbqSmx+Nc7MoISmWdlJ+CP9d2S+RQv7m6U1DMxAhLD6laic2AIm3bVYe3C3FvKWMlKjEargu7YSrABeHiuf/Nn9DpTmJOAq9f9nnOxqkorQY0VAvj0TTZVNhJ9dnxMJC4oKDtjBJ/kqo/mpcagXqCtvBBfmDoe//W1OxDjiMClIY9lDZJwZNWn1UZWUT3Vg3+9IyOQdyI3pyncDbhUZ5Rmgn5Wg1GkXnnXRGw7NLIqjoRwRBq3JN6e4QwYCcMeL5JiHfjqnRMDysl1Hf04fqZf9XkKshNww+cDYMMoO3C0pRfVTb2B/CxuybhVocYKIVzdjnf/3kGUJ5I9bqxsY6UwJyFwE8tVH71xQ97sz62koYaKtrxV0zqipbv1UFIlYZqGCeVqGKmGCnAzd27DfdOx68Q5Q7Q+zCYjLkp22wiGknlZSIsbE9jQcr2GXBitHKHCgEJCHZMFeUlo77siuEmtaelFYU4C+q/e4G3UyOhinTjTH9Kqw0pYc1RhgJMw1rfAnST72JOTb2ZFv7S3QZb88yeEHVJtoIaKEVy57hX8W0L0KANHog+MurBRAopPFefik43F+NKMDN3PRbkZhj66bgFuT9e22tKK3JE9TnayK9PssmxZPkqKcvDs/fmIsNuJ2pOsrKgRnHdJPLF2m78gorFL3Jte3dQr2VG6urkHU9ZVYtOuOsnzmgE1VhQw7PESlTjabX5VVLmdQ5nQD2NA6OEp/2Hx1CBl2HCopEnRqNmfVQj3pFu2sWtUIvgouw2REfaw7LAdjnT2XcWwx29wv/edInzljjRDz/+FqeMxM1O427vWdPRdDWgykVCYk4CG8mKsXZgbVDnZfIFs06g2NDxubCR2HG3T9NnbvL/ZkgYLNVYUwJQVS1GQnYjICDu2PTKH2DvCuNX1NCAYI4opTX5gy2FL5w7Ybf7k3y4NXe7T0mKJ3ax8jBtza0dQazklj0YlgjPnYfKAKPrC9PpiFq+8FG0Mh5V3TZQ0Nu024NUVs/H7b88LVCHqzRs1bQBAfL7qpl6s+MVhTFlXifKd9fhVdSvKd9YHjqM35y8N4+3j7Zofd0tVc8BItQrUWFEA6cQ8+VONgsgIOx4lvPkLXH4vjJ471dVFLry0twG5Zf4H7MNWawthrSiciNqz2nW+XjPfhZ3fnY+31hSidv0iWZ+124D8tBhcvOLRZCwjxTkgNxFci/NMvsU0QFKdDk29SUkxZFo2TE7D0v/eD4/Xq3gMGQkOzMqKx1PFufjRknzkS4SVmGaNgL/IYc18F++5x4/VNpzKhGWeKs4ler+WjWSVUNepfe4WW+vLKtza20OFkE7M7PeVLnHD4wVePyAe1qlu6kVuWSXyUrWfiNmy8+GUn6JlJQJ3sotxRGDNfHGNg8KcBExOdgZ0QPLX79FsPHNc1qoSSnFGEXmwbl+/B4+wEgoz4qMNGN3NZF7AOAPJKpwbHMKJZxZhx9E2vH38rGQOghTTM+LwRxl6SSc7BnGyg6wKko/23iG09w7hw9Y+PF8pnYvHJKCyDZa1C3OxsqIm6Jm5cFn7cOrm/c2YkhSj+XHDCas1FaXGigKWz84kqtBZPjsz8P837arD1oNk+Sden3aKtF+YOh7piWMDDf0AILdMWVPBkQCzSzzwjwv40gy/NoiQxgFfo8SKqibNxmK3AdtKCvDS3gbLtDAgDbX5gJBOsUb0qVn5+uEgw/FW0gDx+oAdR9uwojAbz+1S971tAM72G6MnIoTUvcLs7tlVmC/tbTDMuP+kW54ExEjDapsBaqwoYMdRsnjkjqNtgY7BZnky/vzJBawuig088BVVTZZYFM3Gv0usD9IYYGvpcLtaM2i522AqaYR2jOGGEbcVVx9ieoYTJ9q1CxFandaeK5qEiBPHjpatx2QG7Odt2OMlnkfjoyPQd1WbUO2tCnuzbQWosaIA0gWrteeK6ZU2jCcB8LtRrebaMxvm+vyttRdT0+KQlTgG65a6BbUGtAp3OD41UhiM3DFKES6dfL0+3FKGCuDf7WrxDF+8HB6tBdi7+5WvHyb+3Lc/dxtqmi9ari1IODF9wx5LicXRBFsFyMlZMbq3jxCv7W/GpSGPpq69NGfUiEkQrWntC2Tys6sf2GzaVYfnKxs0Od+Qx4tLQ/6dn9kGLZc5KqqkKPphgz9nh/QZnpkZHyj9NboxpFZ09PsNs0tDHlkdsZ+vbEB7H92YqYHZyFmljJkaKwog0XhgSpCt4snwAchfvwe//0i7ZNWOgWthsQOXC99Dqkco74kdHwEwvlmlGEwejVGlomZRmJOAJxZMMnsYsnhknkuWxszxtj78qfECjrf1o9vAppBaUnGgFRvePakoqb2xi0zrhCKOVcqYqbGiAKZLphhMTxirJSmd7LB+nNoqMA+pXp6Ptl5/gqNcg1apN2vNfBdK5onft+w8Grll3eFEdVMvXt532uxhEHN7uhNly/zueJL5h4tFbGFFbD3UYvYQwgJ3qpPXiFXr/bZKGTM1VgS44fWh+vRFvPO3s6g+fRE3Pt36MkJqV697UehKFNzhbD3YjPL3a+HxekdMqORWw+sDHvv1MfzyoD6VOhlxUaioakJdB3nexZr5LjRuLMaCPPI2DowceOkSN+S0/YiMsNN71yKc7BiwjDueYk2+PDMdDeXFKFuah4cKs1C2NA9PFedqYqhaIUJAE2x52F3biQ3v1aGzfyjwWmqcA/npTvypvpto4fL6Qks7leIPKfF3Pi3MScDPH5iFmRv3aXIuSjD76ruxr75bl2P/+ZML+FPjBaL32gB8vH4RYj7tSZUqI9H381MnYO3CXCIPEdNpNzLCju3VLWG9Ix9JsBPlv3PPFLwWRjpJVsRu8wtwysmD0XMsajdDTNoBu+HusMeLB7ZUazBCa5QxU2OFw+7aTnzrjeMhk3Rn/1CQ8WIkBdmJ2HDfdPxoST5vaa2W2h8U45AzQc3JScCP9zQEfnc5k8efGs4jt6wSBa4EouZqjLaFFXZTlGA2728OK0FHLoljRqPnivmVSO7UGGx7ZA5yyyo185oqNTo+mxGHqIhRqqoBmfAt4DdSVlbU4HBzjyabDXZndTOhxgqLG14fNrxXZ8hu8o7MeJzpvYruQWkRLrZsP1sgiYEuKiMbG0L1RVbNlZez4PWBeBfJ3E9W2E1RRha9FjBUAKC24xK+8j8HsbpIXL1aDgWuBDSeu4QemWXhx8/0Kz4nV7hSj0IAtiFkJtRYYXGkuccw78mxtj7i9zKdT9k3zLDHG/CydPaZq0RpBuGiBaIF3O/pDzE267ZLZbRkGKVUq1QqhSMRdhs8FrqAWjw3iWNHy16QGaxzJfwaPW9+oxAer/95UgOzoTCKlNgorJ6fEyRcqcZQmZ7hRO3ZAUkFbzOhxgqL7kFzwjxS7KvvxpR1lZiWFosvzchAR/8QtuqU9BkOzMyMw/E25bsRM4mNGoXBa9r0MtHLne77dElhqk7EJsBpabFIi4vWLa8nnLk93YmPNWzAqQVqpgwbgEfnu5AU6xgxbQ6e2PERtqycDcArO8dwWlosnFGjUa1RuEUO97iTgrzsaisWa88O4MMfLcCTb/8dbb1XkZkQjZeXzwjkyFkB64zEAiTFOswegiiMRPytji2Ma1QmJ8dY3tA623fTaCfpmzTs8Woa+w9XfrBoKroGhpARH43r3hv4yZ5TZg9JU5ifdyR53Bj5gLJl+ahtHyDqoMwYbWsX5prWZ+2tmjOIjYoIPJ8rXz+s6vfw+oA7Nu4L/MaNXYOWU7ClxgqLO12JSI1zoKt/yFLuSkow8WNGmz0ExSyaloK/nem39ERf19GPiqqmgItZqG8S4O811dpzxTKVFWbyk72NcKfG4FfV4aVlVOBKRA1hcufm/f5qMS1zPYQoLZ6KnsvDvE0+b0934mTHgOrnKCMuKvD/t39jDqauq5Sc+5fPzkBSrEM3SQMSfPD/Fh6vFxF2uybPHl+4md2qxWxsPp/PwtOmNAMDA4iLi0N/fz+cTqfq4zHVQIC14quUmzxQMBG/OXLG0gs+H3Yb0FBejJf2NoRFRYdYzHrTrjrLdIo2Ei3KTK3GrKx4nB+4htZesty3sqV5gQatr+0n6ySvhIcKs/Ds/flB+XnsKkim6kVNFY0RCarhDjNv6ZFkK2f9pp4VDovzU/HqgzNDdFYcETYMeUbYLBWmfNI1iILsRMs0/iOFrQ6rRVKf3gjtrEgm9GRnJM6FqcS7GN/74m34z33/MHsYmvJha5+s97OrD8VmRHZOhxKYajRuFSQjzHn6wiUcVjkHMPe4xwukxTkCYp81LT0jzihVClvOwEyoscLD4vxULHCn4EhzD7oHh5AYHYmVvzxi9rAonyJ3ctUCtVUUjIIsg186XX5SnxmwheJIE/msZqhEjbLh2g31q89IM1SUkB7vILoPTnYMKj6HkLaHXh49q28czMYK8hjmF09blFF2GwonjcP9n03HJ92D1Mo2iAkx1sxHUfPzf3/Bbbh63b8bZDcEK1uWjzXzXURN6cyE3RtE66aLC/KS4E6N1e6AAmhhqFD8bKpsxIpfHNJ1TpydlRB63k89enQulk9WQjRK5imfa6yguUQ9KwRYwao0m5V3TcT2an3zRKZnOPG7b84lSnIzCyU5C+zdePnOehTmJGByshNZiWOwdmEu1i7M5VWc1FtLZmZmPI4T6v0wz4CWz4LdBry8fIaijroUc6lp0beiraalF1PXVeLR+TcrzvRoJnqrsG/t5xAZYceTi/2J8qcvXML+xgtoJ9Toogq2YcKpc9bSSjACp2MUokaPwmfS4/DTr85EjCMCjogIXZPPTrQPYOXrhy1rqADAk4unIsJux9vH21HXqczNzVWjzU934kR76D2m53VwpzqRnx5HbKwwOystd1gF2Yl4s0ZdGGx6Bv+1o4Q/TMXLifY+XL8x8hKbjWLN/JsKtJERdnQPDskqUCjMSaAKtuHAsMdr2ZLMWVkJcKf5d+hNFwfw68NnNTv2wNANYOgG/thwPqTeXs8qEKtea4azfUN49v58lBTlBKoU3j5+FvWdA4qMC68Ppiy2X56ZTvxeG27urLTU2Ogf8mBvXZeiz7K1LqasM0frgmIMVp8TrM64sVEBBXS51U42ANsemaPf4GRAjRUJmFi9FSnOTwksmnqKE3GrQtiaG519V28p9dJTXTe9Kcwupa4zvHb27ORFEsPjkXnBOzOtNDbqOgeQFKssR4npQP21zdp0laVQRirPVzbghd0NWDXXha0H5T23j863Rl8ggCbYSmLVfBX2gqN10qMQW6qaAxZ6SVEOnr0/H6mf9pHREivnm1Y392DTrjoA6iWutUTONVtd5G+CuL26Bbkp4toG0zOcn1Yu3aR0iRsl8+Q1UhSie1BZy4AdR9sw7PGqLl291bDb/L8p5daC6ScWzqE06lmRwApZ0HywO2FqYVBlJURLikJ5fcDWg00AgD21Xei+dA1eHaos5risraGypaoZ37lnCv7tN8ct8fCv+TQcwhbO6ui/gq0HW0PGNzkpGrs/7iLyjJTMy0LZsvyQ1zftqpO9Q9Oa1p4r2F7dYun8JivwYEEmXOPHhgiqUfGz8CbFGYXb0+N092q/tr8Z826bgLtuG49RJpctUgVbCazW94RPVbSiqkl1YzE1nVS1xAbgh8VT0T04fEs3ayRBTGF22OPF3T/+AJ0D12QdM9kZiYkJY7DQnYKH54a6gK2yyJUtzUNrzxX8qtr6OjVmwqjN8nF1+AY+s2EPhmlZd9jxUGEW1i11G7Y2pcY58My9bizOT9X0uHLWb2qsEGDmBF0yLwtpcWNCdkZsrGZQaYHdBszOitO9RDJcseFm3gaXp9+p1W0R17ucmgRG/luJMWYkn02Pxd/OKhdG04La9YsQGWHH1oNN2FPbha6Bq7Db7JgQEwmfz2f6+NQwKysexfmpaL5wGW/UtJk9HEMpyIrHwvxUvH38rCE5c4xP5dUHZ2pqsFC5fY0xogpGiF8ebEXO+LHYseYuJMZEBl4f9nix9WAT9tV1A/BhdlYCUcdQs4mJGoWEMaPR3iveLNLr01/LIZzxwZ+3saIwOxD+SXZG4qU9p+CV/LS685rN6iIXhj1eYkNlZmYcGroGcWVYzysTyrhYBwBzjYE7n9uHK9dDv3c7q7N2uPLm6kJERthRUdVk9lAMp6a1DzUGKnkzz/2P/lCLe3KTTUm6pZ4VAW54fQG5/aRYB+50JeKG14ft1S1o7B7Ab49qVyZMyigA8WMiMDDkAc/8Q7nFuBX7VRXmJGDbI3Pw2K+P3VJVaJRQZmcn4Nff8JfVjjTPspVJHDsaz//z7Zp4WGgYSCW7aztDGhmmxjnwo+Jc/LqmzdLJnxTKrUD0aDuuUoudQjEFG7QJCVFjRQW7azvxrTeOW8LdTaFQKBSK1bABSIlz4MCT96iqEpKzflOdFRY3vD5seK+OGioUCoVCoQjgA9DZP4QjBkYZqLHC4khzT1Doh0KhUCgUCj/dg8atl9RYYWHkhadQKBQKJZxJinUYdi5qrLAYPzbK7CFQKBQKhWJ54seMxp2uRMPOZwlj5f/+3/8Ll8sFh8OBO+64A1VVVeYMxMpNaSgUCoVCsQir7nIZKsFvurGyY8cOfO9738OPfvQjfPTRRygqKkJxcTHa2oxXJLxwybpqmBQKhUKhWIHo0XY8fs9thp7TdGPlP//zP1FSUoJvfOMbyMvLw09/+lNMnDgRr776quFjMTL+RqFQKBRKOPLjr3zG8MaGphorw8PDOHbsGBYuXBj0+sKFC3Ho0CHDx3OnKxEpTpq3QqFQKBQKHznjo3HvZ9IMP6+pxsqFCxdw48YNJCcnB72enJyMrq4u3s9cu3YNAwMDQf9pxSi7Devvm6bZ8SgUCoVCGUk8sSDXlPOaHgYCAJst2J3k8/lCXmPYtGkT4uLiAv9NnDhR07Eszk/F/zw4E07HKE2PS6FQKBRKuPP8rnrcMKERk6nGyvjx4zFq1KgQL0p3d3eIt4WhtLQU/f39gf/OnDmj+bgW56fio6cXYdnt2rXCplAoFAol3DFauZbBVGMlMjISd9xxB/bt2xf0+r59+3DXXXfxfiYqKgpOpzPoPz0YZbfhla/PxJr5LhicR0TRAfoTUigUijaYIaBqehjo+9//Pn7xi1/g9ddfR319PZ544gm0tbXhm9/8ptlDAwCULnGjobwYZUvz8FBhFhbkJZk9JIpMCnMS8PH6RSPCYJmdHYekWP2TwCNHwsWiUCi6YEblbIThZ+SwfPlyXLx4Ec8++yw6OzuRn5+PXbt2ISsry+yhBYiMsKOkKAcAMOzxIresEiaE7CgKmZzsxI6jbYoaVI6NHIXLwzc0H5MSpmc4MTMzEUdbmnU/1zC9vykUy5MYPQo9V42bn5huy0Yq1zKY7lkBgG9/+9toaWnBtWvXcOzYMcyfP9/sIQkSGWHH6iKXZscbZQPcKWNGxK7fqjR29uG1qiZFn52TY/xDycf0DCd+98252FKlv6FCoVDCg96rNzA9Q59UCD58AJ651224xgpgEWMl3PjB4jyMjVRfLfRAwUSc3rQUu773edxu4A13q1HT0o9zA8rUie/ISrBEzlJhzjhsr26hHj0KhRLAB+BE+wBSDdIHe+KLk7E435zCE2qsKOBIc48moYFJ42MA+ENLtWe104uhaEdH35CmnjSlbKlqRvOFy2YPg0KxNAWuhFvSS905cM2QTdXA1ev6n0QAaqwooKP3iupj2G3AisJsAFC9Y46JopowenFuYAilS9y6VIWlOiOJ3+v1+cdCoVD4sduA7SVz0LjRXxDxYEGm2UMylIJs/UPWFQdbsLu2U/fz8EGNFQX8rb1P9THyUmOxvboFl4Y82Pmxuh//0jVrJICORCZ86l5lV4VpNQl2DgzLen/rhUuanJdCGYmsLnIhMsIeKIhwjR9r9pAMxZU01hCpjQ3v1ZkiCmd6NVA4cqy1V/UxTnYM4mRHPcp31mswIvNIio3EhUvDIzaXggnVATerwioUJusC/mx6pZfqk/PqPXoUCpcFeUnovTKMD1v7zB6KYtbMd6F0iTvotbePnzVpNOZwfuAanl85HWsX5mJ7dQtae67gVNcgqjUWcGNE4QonjdP0uFJQY0Umwx4v6joHzR6GZchMHIsDT34BRT/+QHESq1Vhh+rYtPYoMxo+P3UC/tx4XuWowofPTHTi72doLpaVsduAn3/9DgAIW0kGxpMw7PEGLdJ1nbfWvZfs9GufsKU2AGDTrjpsqWrW9Lc1QxSOGisy2V7dYvYQLEWcYxTWv1driKFSmJOAyclOpMc78OLuRt0n1lVzsxAZERopzUoco+h4t5KhAoAaKmEAEzph/v/m/eFXGu/1AZv3N4fl2LVEKOxVusSNtQtz8divj2Fffbcm5zJDFI7mrMhE6a56pPKnxgt4s0ZefyYb/GXbZUvzUDKPrNJmeoYTbz16F569Px8RdrshO8CtB1uxaVddyOsrCrMtUc48kig0QWRKDXYbULt+EcqW5iFhzGizh6OI6RnOQOhk2OPFuLFRSDFAHZni5wu5EzQ7lg38XmCGyAg7fv71O1TPWzYAqSaJwlHPikyU7qopN5njSsTz/zw96LWKA+K7otqzAxj2eBEZYcfvjmvfvJIPZscGICQeXpCdqHks+FbGlTQ2rK7n6iIXYhwR6B4cQu8V88o51cA8Uy/tbcBr+5sV51JR5LNmvgtrF+ZqFnojOQQjaKrWA0VF4SzKsMeLiqomPP1OLSqqmrB8duYtWcevJT1Xr6OiqgnDHi8AIC1O2qXo9SFQPVXfaWxVzJaq5sBYN+2qQ25ZpWUX1pJ5rrBsvtndHx5l2Tb4vUBrF+Zi2OO1pKJw4pjRmJIkXQnj9QEL/vMv2EwNFcOw24KTgWdnxWl2bL4UBe765fF6FR8/cexovPrgTNNE4Ww+ny+s79OBgQHExcWhv79f8w7MeiQmUYJZM9+Fq9e9+FV1q+R7x42JxMUr8sp9taJsaR66B4csHxcvcCVioTsZpy9cwvmBazje2ouLOu78c5Nj0HBOnfFotwGfnRiP42192gxKIYWuREyfGEf0zNttfgGy6ib1lYHhyoK8JMzOTsTzlQ1mD8WS2G3+vLe0uDFo7bmCrMQxWFGYjcgIOzbtqtN8LnmoMAvP3p8PwG+krKyoweHmHs0M0ZeXfxb/PCNdo6P5kbN+0zCQAHrcTJRQNu9vRmFOAtF7zTJUAOAf5y9hx1Fjwk9qqGnuQQ3L62O3ASvvmoi/NJxHa4+23ouSef6JWG35/eoiF45ZoGzWlTQWSbEOPHBnJs4NDGGCMwrN3Zd5vWheH25pQwUAXl4+Az/eQw0VLrOy4lGcnxowTLjotbYwKQp6HT/FaXxSLRtqrPBgVffuSKW6qRd2GyztwXrriPUNFT68PmDboTNYM9+Fv7X1oaZF/QJrA/DopzH3rQebVGnHlMzzu8Q3//Uf+JBAv6jAlYCjLb263Ctv1ZwJ+h5WvyfNZsfRNpw6Ryu+uExJiQ0qHWYz7PHqtgleUZitm6FiVlItG2qs8EAbxhnP7Mx41Gi4u54QE4HzlzyaHS/c0XIC8wGobrqoSXIgk6+0am4ONlU2Sr5/e8kc//9+qqfx18ZutPZcVTeIT+F+FToHiPO742cMzx8LB96qOYPYqIiQpHxAP+mLaWmxAKDbJruzfwg/3l3P+52MgibY8lB1Sn89jLzkMShbmoeHCrNQtjQPx9ct0P2cVuYGbIEHTguooaIvJ9oHNFnMGSmAyAg71swXL2NfMz9YTj16tF0zQ4UiH2qo8OODf3PAJ3ugl/TFl2Zk6L7JFvpORkGNFQ43vD4cNqDSo/7cFXT0D+HZ+/NRUpSDxJhITM/QNkHYDAqy4xRWS/nwpRkZGo+GYhajCWeWPxxvD1QqrF2YK2iwMBUUTHXDU384gddoThlFJ0jz6MRgVxEy6CF9wShtG9GVne87GQU1VjgcbrqIoevG/BgVB4It1XcfLwp7g6WmpV9R/sJCdwoVWxtBkD5Cg9du4FfVrSjfWY/cskp4vF48VZyLWVnxmJWVgNLiqfhkYzFKl7gDZePlO+vxJie/hELREneaU/VcxMgtsBETblMKo0JsRFd2vu9kFDRnhUP16YuGnu+1/c0YvObBpPExWFGYjXcfL8K//M8hHNUgETKceHiuSzPRIkp44vUBFQeCS9iPt/Wi57K/CozeFxSjqDjQivy0GNR2qAt1ccM+TLhT6l4uzCEriy90JQbySJgO8Xpjloo7NVZCINuvffNuFybEONDacwV1Hf2KO5b6gIBc/XO76pGf7sSJdu0y7NVUahgJ04Ts6nUvClwJONLcGzLu8TH+Ds+UWwdGRdhMh5sVnqGpKbH41zsy0NF/JcSgo+iDWkMFANLjQ8t9GeOCz2BhV9qRJLC702/m+bE7xOuJWSru1FjhUJgzHq/8+bTk+4puS8LcyeMBABVVTZq0V/f6oKmhAgCPzHNh60HrC9vdvn6P5IJgVUPFboPmRiYlGDNvX2bx2F7dgtMXLoWUOBvBv96RESiHjbDbqVhlmPDi7kb0XB7Gd+6Zgid2fIS23qvITIjGy8tnBEr/99V1A/BhoTsl4GEe9nhxR1Y8jrb0iR5/68FWPLnYjcgIO5bPzlSteSSFUCd6I6DGCoc5k8Yhfsxo9ImofsaPGY05k8YF/r2iMBvP7aq33OQxPcOJsmVuRNjFXehW2DmafX4lsMWfXtrbgNqz2lTIULRheoYT7lQnfnO0XfExpqXFBjrMMsZCbFSE4SGpG14f1v3h44BY3ZOLp8IGG9r7rgaUUV/a20BDZRaDryN0Y9cg8tfvwfQMJ959vAhr7r4t4FneuLMOp84NEAsOen3A1oNNiLDbUVnbRfSZZGckzg0o2/ixu3QbDZXb52F3bSe++cZxwb//D09/BCsq3tptQEN5cUDembsbs9v8Nx9A8wGU8MnGYk2ls1PjotDZf02DkVEA//19z9QJ+GODeikC5llhXPhfe+2QYQq2QpsJ7pgA8XkoxRmFrgF6f1mJ6RlOFOaMU+Upk7vZfLAgE6e7L8nubzYtLRY7vztf1mekkLN+U2NFgN21nVj/7smghzt6tB1Lb0/F81+aLiijbDX3bNnSvMCOkLHejehTcSswLS0W938m/ZbsjbJmvguHTl/Ex2etHfrKiHegvU+7Kgl2CbVWHXO1GhPDsMfLG17YXt2ie5iAEh5MS4vFyY5BWZ9hryVaQY0Vjbjh9eHffvMRdp7oDJHh5u5oGIY9Xjz262PYV9+t6ViUwm5uxcetbKj4G425UHHAOt/fCiE5NtzxcO/98vfrLHX99IbrrbTCs8MekxhWMrAo4QXpPSYXOes31VkR4ce76/E+x1ABbsYh+dT8IiPs+PnX77CMXohY5vat3gNpdZELZcvcWDPfZZnfywe/u94MPjvRiQV5SXiwIBNlS/NQu34Rflg8FbOyEjBzohNfzJ2AB+7MRFKsIyAMVbbMfUupL7N1JtYuzEWhyf1SAHnaFwXZ5o+XEn6YmavCQBNsBSBZyLdUNWPtwtyQH9EqeiHczG1uGOiG1zeidlkxUaNw6doNoveybZPSJe5AtcfvP2qX7R7Vmhsm/Si/XTM3cC9v2lWH6Rv2CN4fz+2qV5zvZDXvkVxae66g/P06vH6g2TLfQ0r7woohaiO5Pd1p+ZClFRGLIhgNNVYEIOmzwM7E5uaBlC5x40R7n6lt5FeyWpTrOVlZZfEhNVSAm/07AL+xEhlhR/fgkOmGCgCcN6FEuyArPmDIklQjMN5FuZTMywp7nZDKv7fj/BXye00udpu/u7ScuYNPz4NBKlxVkJ2gSTduwC9m5poQg/2NF9DeZ42+TSXz/B7U+16povIChExLi8WXZmQE1jMrQHNWBHj6nVr8qlp6UhWL6Q97vJiyrlKzMcllQV4StqycbZnYulWpXb8Iv65pwQuVjZYwupQQPdqGq9eVj94og3NifCTO9FlTL8cq2AA8Mi8LWw+2Em8uhHbAJHkqWv/2dpu1OlaXLc1D9+AQnQMJWJCXhJ9//Q7DDBQ56zf1rAhAqtInlM8C+HfsSrKuuTgi7BhS0DyqrffqLZ+XQkL++j1mD0E1agwVwDjPGDVUpPHBL/c+PYNcaJA77zCQeIi1/u2tZKgAQF1XH/5wvNPsYYQwbuxoJDkdqO8035vLkBofbRlPChdrjsoCqG2qt6WqGZeGPLh01aN6LEMeL1beNVH2eDITonVvG05RhkXyeSkW5uP2AZTMk5f8vXl/M9b94WNUVDVh2OM1rY+LlfhrwwXD5sCsROFwHJeLl69bylABzJPSJ4EaKwIwSbJK8fr8O/bWXm3itr86dAar5rpQtjQPX74jVfoDAF5ePoNOVhbkqeJcfLx+ERbkJSE+erRh511510TDzkVRjw9AXUcfGsqLUbY0D0mxZFVib9S0oXxnPaasq8Sek9bzKBjNwDX1G0Y+bABKi6fiocIslC3Nwycbi3H31GRdzmUE7IKMG14fqk9fxDt/O4vq0xdNS/pnQ8NAIjDuVCtk0ftdw80ozEnAlofuxNvHyCYhK1vKtyr/+7cOvLC7wdB7ygbgk87Lxp2QoglMku2KwmxFgm5KZdVHEsMefR60R+e7sObu24JeM2K+nZWVgCvDN1DXqW2yMFOevLu2Exveq0Nn/00xxdQ4B5651x2i3G4kNMGWAL6SXzNVS0kT4vyJeuHRyDDcGDvajsvX5ecRUeTjTnWi9/IwOge0U6INJwpdifiiO5mqz1qI29Od+KfPpodUgRohvKdHwjDTp2h3bSe+9cbxkPWFiUS+ytNqRg1UwVZnwk0JcqRoDNgA3C4j6ZAyMrBadYkZjBkNiPRWpZgMuxpLz+pLZgOqh2r06qJsvH+iK8ijwj13SpwDB568B6M0UtGkCrY6ozafxWhqR4ChAgA/LJ6Kdx8vwoMFmWYPhWIgt7qhAmhvqCREj9L2gLc4bFXz0iX6qWL7ALyuU3uLX1S1CBoqzLk7+4dwRGYDRK2gxopCSpe4kZ8WY/YwiBgpc/2ZHn+ysmv8WJNHooykscYl01IoYvRe1U/U7lZmS1Uzhj1erF2YiycXT8XMzDjNz6HXfE563O5Bc8KxNMFWIcMeL2o7Lpk9jFuKN2raMDZqFNYuzMVzu+p13XGrFVnjIzJyFHCZ+vJHEsmxUbgy7MGgDPVkysjF6wNWVtSgpqVnxHoEk2LJy7O1hHpWFELaOIyiLZv3N+OlvQ3IT9c3P0lrQwUw7yFXg956MNNSw8M7KcRDd2VSQ4USRHVz+BoqsY4I0WfebgN6L18zbDxB5zblrCMAql9iHpv3N4ddkq3dBnwxL/w0GFYUZul6/JOd4eudtNuAj1r7zB5G2GODv2dU2dI8OB0jP5fGnRobYhDYAGQlRuOzE40pEhFigcQc5fUBj735EXbXGq/fQ40VhVD9Eooc4seMxo/3NJo9DNmQ9Me6VVld5MKZvluznFpL/mV2OsqW5aOkKAfJzvDzPsql9/J1NG70C/09VJiFwpwE+AC09lzF386Yuwn7/UdnAUh7VDe8V2e4UBw1ViQY9nhRUdWEp9+pDUhYA+rl+I0iDIYY9pBc4x4L5ao4o2iqmlqmZzhRusSNzIRos4cS9vy/o2exaVcdACB7XHgmz8uhc2AIK35xGCsKszF6FGR11zYCH8STbc2qCqI6KyJs2lUXol7Lrqcvf7+OqN59Qkwkzl8yRkkyK9GBoslJcI0fa7p43a1AybwsPLnYHRANzIiPhg8+vPO3Ts0VJinWIi9lLJJjIvGXf1hrsQlX1sx34Tv3TBkRjUWtTnLsaJwbVLeB+q+vfhb3fzZd1TGozooGMMI+XE8XU09/3ytV2HpQ2lApmZeFo+sW6FZ3z2bNfBf++oMvYOM/346Sohy092nTl4giTMWBVix46S84feESshLH4OG5Lqyam4OGLmqojHTquy5TQ0VDtlQ1IzLCjukZ+uVtUE8z8H8WTVZtqADGFwxQfzAPwx4vtlSJGyJiCZ55KWPxlTsyAxLMgF+Xxehdg5y8mqzEaDhG29B4jiYOy6W19ypaa84AAJ7bVY8CV0LYVgNQKGbh9fmrLN99vAj3vVKlOIm+ICseC/NTcfrCJZwfuIZkpwOu8WMDTfrYXtDr3hv4U303jrf1a/hNrM2fGy6o+jyjZHunK1GbARFCjRUetle3qFpsGs9dDjJUGBb851/UDUyCLVXN+M49U7DjaBtae64gPd5BLFXe2mOcF+b2dCdOdgyMyAXd67NeDHqkM8oG3FBxL5XMcyHCbo2Gpbc6TJXlu48X4dKQB0/s+AhtvVeRmRCNF7/8Gcx6bp/kb7R9dWHI3MumpCgn6N+PfX6KpEQ+aT+2cKBLRKVWCsYz9cy9bs0k90mhxgoPasuSmR0C+6Eof78OnQP61qd7fcDt6/dY+qFiGmYNe7x4YEs1PqSlnwEeLMjEuYEh7KvvNnsovFi1R8/YqAgMDHkUfz4tzoGSohysXZiL7dUt+O2xdjR2DWo4wpGFngs32xsc44jAlpWzg/6+usglalSsme9vg1JR1RTSZFCM0iVuAKEGK5OjCEC3fj9GoyY9IG7MaLzwpdtN6b5MjRUetChLPn3hUuCBSY936NbPgYsF15IAJfOyULYsH4C/v1JxfqoqY8UGYI4rEa6ksTh46gLaeq4GfX+7DRg3Vlly86ysBADAh63GeUlc48fi6XunWbJJZmFOAvqvat+WXgu+UeTCT/94SvE1O33Br/USGWEPbDBoh+NQpqXF4kszMrB8diamb9ij+T1qtyEQqhFi7cJcnDjTj8PNPSHPOmNUcJ+f53bVB4oiAH+YnwkFsY2Z0iXugMEqZOiMFINFKdGjR2GBO8WUc1NjhYcVhdnYuLNe1cL/Vs0ZSxsORsM2VJjJ4nfHz6g6pg9+tcjpE+Pw1x/cEzIJMZOqEorzU9Dac8VQY+X0hUvYXt2C3BSnpYwCG6wd2vrm3bfh8jWP4oXkzZoziI2KQOkSN4Y9Xni83hHl9teKkx2DmHfbEGIcEZIeDiWsLnKJekD4qjMBvyG97ZE5eGlvA++YmKIIBu4x2MYM22DlUrrEjbjoyLDUS9IKpmS5cNI4w89NjRUB1E5UdKILpuJAKyLs/olI69yAzfubMW5sFB6e6wqaaCqqmhSdh9nhrXz9sKpxFboSZfUIebNGnfGmF0LDT4mNQkbiGCxwJ6F7cFiXtvVSrJnvCuyKAeU73837m1HddBG1Z83PpXKnOtHQZf44+NhS1Yy1C3M1PSZbDkIIsZyS6qZevLi7DlsPigsYCn2ebcwoHcOthFmNDKnOCg8VVU3UDRyGcCe9p9+pVaTAOj3DidnZ41QtvnYb0FBeDAD49hsf4o8N5xUfyyykvAvMd4yMsBs+kdsAPDo/dIEb9nixsqIG1Sa1sdeCsqV5WFGYHeQlbO+9iq2HWsweGgB/6etLe5WF3W5Pd+Ltb80VDbVwGfZ4DQmN2gA0bizmHctINlSmJMfgk3PkbS/eWj1HM88K1VlRCWmC7a1Ws6+n/oEWMDskRg3z1DlloZQT7QOqvQSMSzsywo60hPBqzVCQHYcv5k6Q9A4yieQkpf5a4wN4d/iREXa8tabQEF0jPWC8ekw44tn7/TL0kRHW+TL/sUd5ftDJDv8zGfzdxJchtdWZpPgA/KLqdMjrwx7viDVUAGBaKvm8nmpCyTIDNVZ4IE2w/WHx1EB/h7KleXiwIFPnkemL3eYv4+RO8nab393+7uNFvIuA3eZ3XVuFLVXNKH+/1rQ8i0JXYtCOX6nRZAa3pztxtLWf2BPU2nNFk8UkS4Fs/cqKGsG/lS5xo6G8GAvyktQMy3D48jaGPV68NkIWS8bAlYORTWN/vOeTwGaHQew+GwmMiSRvHmlGyTIDzVnhYUVhNp7bVS86AdttwKq5wbuCiqomA0anH6vmulC2zI0nFwtnxAtlzG+vbkHdTmssyl6fP0fGLLaVFAT+/6ZddZZOTuXy8Vl5v2FW4hhNFpO5U8Zj3735skI41c092LSrTjDPIDLCjp9//Q5LVlfxMSEmkve7/PJg84jKgZN7vxjdNJadv7JpV11YhxRJ+PUR6Vw5mw34+ddmmlKyzEA9KzxERtgDZXBC5Kc7Q3ZAZjc3lGMh81FxoBlL/3s/tle3YEVhtqCbNtRFbTf9u1uFwpyEwP83Ojxi9PVnQhZaLCbN3ZcDIRz2NZRiS1VzoLkoHyTPslU4f2kYz7x7IvBvponqFhMSl/UkK3GMYINYPsyYWzbvb0bPpWHDw5t8yHke9MLnA+wmWws0wVYEKcnnNTwJfmYmYj1UmIWM+GhNmhdyk1WFtAnYjOQkNDkw1y4p1mFYovYXcyfgp1+didXbjhq2E2QL/E1dV6l69/9gQSZc48fK1vEoW5onWG7KEE735khW1PV7pLOw9WBryHdjyxtwCaffTwl8qt7MPLJ2YS7R86W3aOOYyFH4eP0iTcNActZvaqwIQJqB/lRxLh6eGxxnFurWnJ/uVNzvgoSypXlo7bmiqAJGCEYRUqz7NJuvvXYorMIeepIwZjR6r6hvGEbCtLRY1HcOGr64PVWci3f+fhYnO7RTfJX7rDxUmIVn7+df5NhoXSmUFDsa3Ro0hLuVmJ4h/rsyBjAfQvOqkPHDxv8+lynl9SRwK8DS4x2wwYb2vqs4dW7AMnPqsumpeOWBmZodjxorGiCnfJlv4RbyRFwa8ugmif/JxmJsr24xtOya611SWi5MoXBJdUYRtagoLZ6KCLudqBR22OPVpJTcbgN+uDhXEy/mrQBjLGw9KO0tykuNxVdmZvD+jsy8ym1S2NF/RTRPjZmnrLqZYhvcQuJ3VsBmAxrL+cu7lSBn/aYJtgLISQLjExVi8jqYh2vjzrrARProfO3VH20AXtrbgLULcyWTg7WEEYmKjLBj2OPF2V7atZmiDZ0D14hc25sqgxVFGUVSbiJ4R/8Q0WJJwuoiFx6e68ILuxssuahYCcb7TFo1Vt85iPKd9SjfWR9Qp2UWx8gIO7oHh/CbI2eIrzt7Q7XloTsN7XxPCpP3ZfVwl4+n751RUGNFACVJg+yFGwDK368NsfaZiXTNfJem1rMPN1U4jZw8vT7gsV8fQ0f/VU1DARQKABRkJ8oO2zCbh9f2a19Fw/Wi6iE7P9IYZbchMsKuqGqsuqkXU9ZVBgwONYs547GwGkyiuhl6RUowspScDa0GEuCBgizYZOYReX3A1oP+8uX7XqnidUuyvTAN5cWaZ3rrmRMjxL76bmqoUHShX0U3Za0NlcKcBDSUF4tKslNCYRY3NVVjm/f7tZOULOZbqpqxfPMhbN5vzdAKo61jlPidWowuJWegxgoPu2s7cc9Lf4GSbJ4XKhtx78/Eq4gABB66tx69K5DEOtKx26yvgkuxFkY2dFyQl4SSeVmCoohvPXpXUKw+XHbCZsMsblIdlaWoOCCeRCuE1wfUNFsvTwUAshKjA0rMZnks5EDSGVu3c5tyVguzu7YT33rjODr7lTVr8oFMWIsJnwx7vChd4sbKu7IUnS+ceHLxVLz7eBFK5o3876oVY0fbUeBKUKUzwSgTU8RJjY9G2bJ8NJQXBylTc70pjEbIA1sOh8VOmA+jZEvYi1tkhJ0++xxae64it6wSm3bVmeaxkINUZ2w9oTkrLG54fdjwXp1hapH76ruRW1ape0mzVTjb5zcA0+Ks/1DqiRw9hO9+cTLW3H1bIFF7S1UTuggqZNgwyaZ1HX2WrISwCsxiwSTH86G0UqPAlYgaiyihPliQibFRowzJtSlwJQQVF5Qty8fRlt5bYr4jhUkNYLx6VjWA+XTFjIR6Vlgcae5R7FFRitdnTp6JGTCLQTi4O/XkycVTUVo8lei9q+b6F01GJViuocKEGHPLKsPGULHb/LoxRp9Tyr3NJHcqWUyOWMRQAQDX+LEoXeI2pNljdVMvflXdivKd9QEPwruPF+H2dBoO5rL1YCtWzbWuB5SvcaiRUGOFRfegsYbKrQR7MQinxn568PuPOhBht0uGZtbMD3a5/vKgvJ2wDUB100VFC+zU5LHyPqABMzPjUVo8FQ3lxfjSjAxDz83XPoON2vwUq2yW2c8h0+yx0KAuuowH4b5XqmT3oGIoMKnjrxF4fUBanENzI9JuU9YolIvcBpRaQ40VFkmxDrOHoBi7DbJ2K4ljRxvac4KJdYZbYz89aOzy60hsPdgsmHDMdrkOe7z42muHZAuQ+aDMa1cyLwv/Osv4DuLH2/rw4u5GvLS3ASsKsw3LqwD814nbbZfdv+axXx+zrHteDtycg5f2NhjeqE+NJzk31Xgj2khae64EjMjS4qmqn4GshGh89c6J+Nc71Rv/ZnvEac4KiztdiUiNc6Crf8gyOyExCrLjMDU1PqjzMemO5Z9npBnWmbgwJwFXr3vx2l9PU00KFkwIsGReFtLixvAqsG7aVaeLXggfbA2RYY/XUHFBBnZp/xyXfI0VNbB1kqysIiqG3QbMzk7AkebeoHuG3WemoqoJrT1XkOKMCrvncdsh6Q7B4Qw7byrCbid+7m0I9t4x/27tvYrWGm2umdkJwNRYYTHKbsMz97rxrTeOh/z4DJ+bMh6Fk8bhhcpG0w2ampZ+2O12rFvqli26ZJShYrf549a3ujdFjK0HW3HimUXYcbQNrT1XAl2vX9rbYMhiMjUlFv96R7C8OdOt2KzFbEtVM048s8hQtVGmQu9s35ChJdNasmquC2lxDkxKigmSo2fuJ5J+ZxTzYOdNyZnPffBvCicnO3XrJdTRb65nRbfeQC0tLSgvL8cHH3yArq4upKWl4cEHH8SPfvQjREZGBt7X1taGxx57DB988AGio6PxwAMP4Cc/+UnQe8TQozfQ7tpObHivLijZNjXOgWfudWNxfqqsvkFGYEaXX4owpD1t2PAZx0IGs9aIdS0uf78Orx8wxrPDpWxpHroHh8Ju928lmLkBAL2OYUDJPL+x2dpzBZ19V7GvvlvW53+waCp+vKdR+o0cVt2Vja2HWkTfY7f5hUy1LF22RG+ghoYGeL1ebN68Gbfddhtqa2uxevVqXL58GT/5yU8AADdu3MDSpUsxYcIEHDhwABcvXsTKlSvh8/nws5/9TK+hSbI4PxUL3Ck40tyD7sEhJMU6cKcrMdAaW4/Y3fQMJ2rPDigWPdq8vxkr75qo+bjEmBgfhWEvcI5nYTZqobUatesXIcYRESg1/u2xdjR2Sav78l0ro0I/QlUwm3bVYetBcwwVwP+cPXt/Pn5//CzOXxo2aRThDTM3GJn/Q1GO2q7QSgwVAPig4Zzke7wm9gUCdDRWFi9ejMWLFwf+nZOTg8bGRrz66qsBY2Xv3r2oq6vDmTNnkJaWBgB46aWX8PDDD+O5557TtIuyXEbZbSicNI73b1pWs9htwMSEaFzz+JAR70Bbr/KKJKPjuWf6Qo2UwpwEeL1ATcutGfbZcbQNJUU5QVodVvZ2CVXBWKGhWlbiGNz3SpUqQyUmMgKXhpVL9o8UbsWNgxYkx0bh3KA8L2k40tpzlfB95oWCDK0G6u/vR2LizdKz6upq5OfnBwwVAFi0aBGuXbuGY8eO8R7j2rVrGBgYCPrPSIY9Xs3igSnOKHh9/hulsWtQlaFiFaqbem9ZQwUIfZiXz8609K5WqArGbBl5uw345xkZqjWIRoKh4k6lmiRm8cg8Y6vSrI6ZSbaGGSunT5/Gz372M3zzm98MvNbV1YXk5OSg9yUkJCAyMhJdXV28x9m0aRPi4uIC/02caGzoQ8tac7kCXxTrw36YN+2qw/QNeyy/q31tfzMusRoGatVQzW5TvtCuLnLhybf/rn4QI4Avz0xH7fpFdNE0GLvNL8r46C3Su00KM/sCAQqMlfXr18Nms4n+9+GHHwZ9pqOjA4sXL8a//Mu/4Bvf+EbQ32w8rY19Ph/v6wBQWlqK/v7+wH9nzhgb+jC71nykYLcBpcVT8VBhFlJio8wejiawH2Y1aqdG4wOQv35PwMOixT3+hdwJaCgvxpdnpsv6HNM0sHSJG229ZK7pkc6KwmzEOCLoomkwjCZN6RI37a0Fc/sCAQpyVh5//HF89atfFX1PdnZ24P93dHTg85//PAoLC/Haa68FvS8lJQU1NTVBr/X29uL69eshHheGqKgoREWZt7iZXWs+Ulhd5MKau28D4L+mVsnrUNObg3mYrRBGUQKTo6LFPf7nxvN4aW8D1i7MJdZryUp0YOd370aMwz8tZSZEEyUnj2RGs9YGRiQwHPVfwo1pabFIinVg2ONFZIQddWf7zR6SqYyNHIUZmcaJiPKhW+kyAJw9exaf//zncccdd+CNN97AqFGjgv5eWVmJZcuWob29HampqQCAHTt2YOXKleju7iZKsNWjdFmMYY8XU9dVWt61b2UKXYl4a01h4N/DHi+mrKs0cUQ3WTPfhRPt8hr+scXUAFiutF0ux9ctwKzn9mmyIE7PkN+kc1paLL40IwP/PCMDMzfuUz+IMMcG4FGOovFjvz4mu6yVIh9/KCgLrx9ovaXnfCbO8eqDM7E4P1Wz48pZv3Xz6XR0dOBzn/scJk6ciJ/85Cc4f/48urq6gnJRFi5cCLfbjRUrVuCjjz7Cn/70J/z7v/87Vq9ebWolkBiREXbqjlXJtpKCoH9HRtg1l/6X2wvDBr/GQVKsAxcJq0/ioyOwIC8JD9yZGdiFAeEfKpy5cR8SxozW5FhKEmRPdvjbEcx6bh8Sx1DdSh/8Xq8l/1WFiqomAECyMzxag0xNiUXZ0jw8VWxuEzyleH1+Ac1b2VABblaTbXivDjdMcuvp5ln55S9/iVWrVvH+jX3KtrY2fPvb3w4RhSMN9RjtWWFY+t/7cbLj1nZRK4Wv1fjT79TiV9XGqOrqxa0gzme3AQWuhFtSkTjVGYnOAfP1XvxyBw609li/erC0eCrW3H0bhj1eQ9RzV941ccRL8pvNW6vnCMp6yMUSnpWHH34YPp+P9z82mZmZeP/993HlyhVcvHgRP/vZz0zNSSHF6K6wI4ktVc0BLwRDRrz6rqBmwwhwdfRf0bRrqhWYlhaLHyyais9PGY/6zktmD0cx09JisSAvSdZn7DZ/c8dzg+YbKgA+lTuwvqECAC/ubgwkbic79Z/XqaEC3ZNguwfNufdo12WFrCjMHnELkhKyEh2YkhSD+Ghydz2jhMjGN4IcrRUHWrFSosRvWpo89/iCvCR8srFYsH283rfiyY5B/HhPI/7UeAF9V6/rfDZ9KJnnws7vzsfPv34H8WdmZSWgobwYaXFjaFKrAhgDfsq6SnT2y5NqyIgPj1CX1eBuBLUmKdac34UGhGXASKgz3XFXzXWplkcOd5Tu8Lh5HWf7wmOnSMrWQy28LRS4ybjDHi9e2N0guhDabcDPv35HoIxy7cLcoPvQyKaH4UxanH+SZXKkSEJZxfkpspuEUrSh76p+nqxbtR2IGmwAUuL8rWfMgBorhPC1jLfbgOTY0Tg3GJ47TTNJj3cEWtVnJY4ZEWEgLifaB1AyLwtpcWOCDAu2m5akuzFX34At5c/AGD/UYBGmtedKYMPhmhAjaaywdXNG4v0J+BPRvzwrA/+575TZQwnh0jX9PAQ/LJ6KCLvfCE2Pd+DF3Y3UcyYC47l95l53oEee0VBjRYQbXh+ONPdgS9VpfNBwPuTvXh+ooaKQW2VyqDjQik82KutUyi1ZBYK9e+nxDthgQ3vfVWQljsHahbkYNzYKz1c2aPgNlGG3+fsOqZXL15J9dV1443Ar8X3HNhKtGqYcM3oUrly/oeizNgCLb0/BN+++DT/946lb4nkE/N971dycoGey5/IwNfRFSIlz4Jl73ZqWLcuFGisC7K7txIb36tDZP7LCE1bB6IkxxRllWnuDrQebAgJ4XMQaBnIvEZ93j81zu+qRlxqrYqTq+ELuBCTHOTBpfEzAgyQ0ZjPc8KQ5E9xQHWDdMKVSQwW4WRINWM+w1JNH5oUqsVLBPX6+kDsB3yiahDtdiaZ5VBh0FYUzAj1Kl3fXduJbbxy33F6qZF4WkmIdeKGy0XJjI+VWjBUnO6NQ9YN7QvJMAEiWc9ptQEN5cVjkpJQtzeNtH8/2Bp3qGkR1c48Jo5PmwYJMuMaPDQnVAeEv9CeGGtXmcGN6hhPvPl4k+Pdhjxdffe0QjrdJK9bmpcagsevSiLx2fF5dPZCzflPPCocbXh82vFdnqQWV2ekxiZV5qU7UdYbnLshK19Uozg1cC1E9fm5XPQqyEyUnOq/P75kJB/l+JgmVm4i+ojAbJUU5AfVnq+IaP5bX2AKAP3w0cktiR+Jiq5TICDvGjSUrsc6IH4N3HivCyooazQxwv2KuC1sPmuvh8QFYu9BaQn7UWOFwpLnHEqGfp4pzA7kITLWHEaJKIxkzvTrc83p9IJ7g9tV1G/a7J8dEImdCDA4398i+VlmJY3jDPs/tqsfqIn8bAyvfvkIVP/e9UoXajvDVlqHc5ET7AMrfr0XZsnzB95CqAzPvq2nRzlPIhB+fXJxrekuF7dUtgsa7GVCdFQ5mCd5wGWW34dn781FSlBMIAVBDRR1zTCq5U49xP/y5S8OoVmCo2G1AR/8V3vuU0dqwuuotXwPHS0OeWyaX41ah4kCrqBbJ6W4yw9Q1fiy2V7foMi9HRtjx86/fYaqWl9XK9amxwsEswRsubJd6OIQArI7d5u9JtCbM+jrZbcBCd4rZw5DE77oO73YJN7w+PP1OLSqqmgKL2RM7PtLlXGNG06nXTLiilAzDHi+xp2RFYbbmCzpb3ZuRNTALLbqvawl9Yjjc6UpEapxDd0VQKZgbRS/LXWusPvcyZailS9woLZ5q9nCIWV3kwsNz+VVrrYDd5u/1lBbnCIv7VAgbgOcrG/Cr6laU76xHblklNu2qQ1vvVV3Ot3bhVHyysRiFIt4+uw2aN/g0AzkVamNH2zEleayOo/EjZGSQzreFOQmIjLBrvqBz1b1Ll7gFVav1hK0xZBVozgqHUXYbnrnXjW+9cdzUHIe23iuoqGrCjqNkiX1fnZ2BnPExqDjYhHMGNFvj5tRsr24Jm2oJrctQ1VZTFOYkoKa5N+QY09JiA56+lYXZ2HqoRflJNGRWVgLcac4gkbun36k1e1iiMLovXEVhBr6cos37m2V37ybBBgSu21trCgMJyacvXML5gWtIdjoCVUkbd9ZZPnwmRX0necPXy9e9+OTcZR1H46euox8VVU0hlV+knpLJyf7KlRWF2XhuV72mhjp3DHyq1ctnZyJ//R7tTsqBK0RpBaixwsPi/FS8+uBMU3VWth2S51I/P3gNzRcuG2KoAH6RrGfvv5mkpsdDqyVbqpqxdmGu5ruhNfNd+M49U1RNHJMmxOLzU5Phgw/v/K0T9Z0D8MHfj+dkR73ljMDi/JSQxLt0C/dxKcxJwLZH5iAywh4iqiclTtiqg2eFezo+RWIGOfdqXmoM4h2Rli0NtxIftvbhw9a+QPI3U6JLer2Z95EoUMuFbwzce6Siqknx8fnagDDwaQxZBWqsCLA4PxUL3Ck40tyD7sEh7Ks7h10fd1p2Mf4Tj8KunrxQ2Yiey8OBm1qPh1ZLGPdqSVGOZobVmk91CNRMHADwRk0bAGXVSsnO0fhCXgreqjljiBdQyD1sMz1wGgp74h32eIPaO6xb6iZ2+afGRcluwieFVKUF29tCyldmTkRJUY6keCDlJowHDfB7MEjmBu4zoLWg3PLZmaJ/H/Z4UVnbpejYjM6MmDfPah4VBmqsiDDKbkPhpHEAgPs/m45hj9f0cjKrwFa/ZB5Wq6tAMu5VLQwrdgxZqyQ7JZfs3MB1ZMSPMSxcKeQebu/TJ7dDLgvykpAaHx3UiuBrm6tR09ITUk5NmkuxwJ2Cv53p1bQqSOyeUWpsMMdkhw0qa7vwYWt4h5GMgO15ldurC/Bfc48XmjS23XG0TdCQVWuInmgfwKZddShd4g45B58+kpUMF2qsyCAywo7UMG9oxqh0Mjdk9ekL+KMKrwz7IQduTpRbDzb59UG8N5A4NgrjY6Pwm6PtWn0NRbDdq6VL3DjR3qc4H4C9IzM7a/7NTz0zeiLlHjb7GjC09V7FpSGPZA8gr88fZiMhK3EMokfbNTVWhK6XWPsFOcdkwgYrCrOpPhMBjOd1RWE2kmIdcKc6A+FYBrFnYNjjxdaD2niV2Q039eiszp2zAX4jiBsiMxtqrMjEKpOyUk53X8LGf7498O/fHlNnQLDDKwwv7W3QzLuS6oxCpwY9ffjCF9semROiLCuXLVXNOPHMIqKwkt0GFLgSNE+YvOZR3h+GhKeKc/HwXPGEuxWF2ZbIrWnsIk/mJMFu87vlp2/QNpmRz9U/7PHiNYWLkVB4zurhWSvx9vGzvM/xtLRYfGlGhqinQcuqzVNdgyEGZvnOes0CrWzDbHt1C94+fpZXEZ0bIjMb6/h4woQVhdkWjM6TU9PSEySIlKlBtcNr+5sC+hTl79dpJmA3PcOJ6qe+iE82FqNsaR4eKswSLfUUQyh8oXaYXp/fbSulh5DijMIPF+di0gTtGw1OT3fqWtrog0/SHfzS3oawfi6EWF3kwo6jbZp7JnYcDfaGDXu8WPOro4rvR7HqjdIlbpTMy1J4ZHVMz9CmX5scpibHKPpcXSd/0unJjkF0Dw6JPgOkoWCSZ6S6uYd3HFregr87fga5ZZUo31kv2bqFrf1iJtRYkUlkhB3LppOLdNkAPFAw0d/kbZ75ehncOv6Xl89Qfcxzg9cC+hRaxGwZmPgq49Jet9SNL7qT4U51yloY3alO3p2BkDCUXFp7rkjqIXQNXMPzlQ2BZFot+a+v3aGreNQvDrQECaVxYUIX4RppyEvlX9yYBGo9lDzZx9y0qw5T1lXiz59ckH0cRudGauf75GLjd8Zr5rvw7uNFhhss/zprYmCD407V5txSCzapx11KRVvt8pCRQFaVV99J3oCRu2aYBQ0DKeCL7hS8d4IsG9sH4PzANay/Nz9gmb9+wNyJnT1RxjgiMD3Duu3hmfiqmtDSl2em876u1SLETFTsxEYh16rW3J7uRIwjIrBY6eHuPz94DeU76wMxbLbmQ3q8w3CFZa31j65cuxGilcM2OvUI/TLHVJKjEucYhftnZMhKgjRysYmJtOPwUwsQ44jAsMeL2rPyngMmN+R09yXZ+XRMOCwywh6o7NECvnA3w7DHC4/XK3lfMiraQnNZVqIDrT3qpDLSnQ509A1p7gm0gvQ+NVYUkBgdKev9++q7kVtWifx0axgF3Mn33ceLcN8rVZYYGxevD6q6moopMWqxCDECXwxaT5JS/NNnbxpipUvcqjVfxGBi2K+Z6EWx24ATzyzC6m1HNdMTae0JrWRix+vXLszVVEOIuSeHPV5FxuWkCTFBGkckGLnYXBr24vb1e/DIvCy0XLhCdN2YKi62Abbop/tlnzsvNTYoH0NPsTZAXnUOW0WbbfCf6hpETUuPakMFAGpa++BOjUWdDCE+EqyQq0nDQApoOCf/RvD6oMgYmJYWiwV5SbI/J4TQ4v3u40WoXb9IF8VOtRxWsSiJxfJXFGarDss9Mi/0+Ea2SOBOoD/74BPdz2mmV5D5PbXsdCsG4zXSMszGfAel3o5F+fJ7RRm92PjgbxhIqv80wRkVaNzKPE9K8ulOdgwG2iX8/iNtqw+511BOfl7JvKygUB0T2o4ebRfMUVGK1oaKVaT3qbGigDO9xu1S6jsH8fLyGZKLqt0G/J9Fk5HsjBJ9n9DiPezxYsfRNtydm4SninNRWjwVDxVmaWoosbkjM574vUqeY5JYvtpGYflpMShbFnx8v2BTp+JjyoU9gY7kppfs39NIY5Bx/5cucWNamrrkaO49qdTbsWqusJicEFoY5nryVs0ZbNpVF/Samnw6OaXpJHAX7PL3a2Xl51UcaMXXXjsU1CgzXJ7X/HSnJfRWaBhIAUbuUtjVJlJCRY99fgoe+/wUXtekmEaA2Pv10pVJHCsvlCaHWVkJ+OWqO7HjaBuefqdWNLavRm+ltuMSlv73/kBZo5Yl2ySwQ1CMYKGScxe6EkNE07RGbZ7Jk4unYs3dtwEwPn7OnO9LMzJwskN5eO/EM4sQ47g55SqZR9bMJ+/ZwtXqWDU3CxUHrNkZm09k0kr5dOxN3qZddYquY3VTb2CeeW5XPQpcCWGhf1N7dgDDHq/pBovN5/OFweUSZmBgAHFxcejv74fTaUzW+bDHiynrKg05FwA8VJiFZ+/Pl2WEkKoRSiX4FeZorwsC+CukfnPkjOTDWpCdgJoWeefnW3ylBJ3CUThr1V3ZeOa+aapULe02oKG8GAB0UzzV4h5ingHA3xeFRNMlwRGBpZ9Jw+nuS7z3A6nmTdnSPJQU5ai+T5jjMMidR4Q8hUICYmoM59mZsTjapm04gQTmfmTPVWbm03HnjXCdK9TCvXe1Qs76TT0rCoiMsOu2iPPR2XcVwx4vb/dNISNErDkaA4kbsrqpV3VXYT4mjY8hEqvKz3DiaGtoR2Ix+BIvxQSOwlU4KyMhWpXiKRC8Y2QUT9UK5TEwE/3V617VzwrbC0Ha26l3yIM3j/i9kttKCkKeGwCSCw/b/a/2PuF6hCIj7CiZ55IMJ7AbMXLhM1TVivPZAPz60XmY+8KfcP6SMY1RGfiqbt59vAiXhjz40v89gE+65Xdkjhplw7Ub5Hd0YU4CJic7eedXI0OQfIwbOxoXL183/Ly0GiiMmZzsNMxYYaqJGAtfjYXL3oV19l0levAKshM17eTKXgCkKku2HmzFqrnSEzqDVLiBKzXNXI+r172GhEO0pLF7AP/v6FlFnxXyNL20t0GVofJUcS7a+64GTfRqGz2y7xfm98pNcRKVhkupcMrtA6Om/xU37LNpV52oRLsNwKMieVdqDVUh8lL9OQpH1y3AvT+rwscyS4/VwrcwxjgiMGfSeEXGCqmhInW9hcZmJGYYKoA1qoGosaIQo3887qSrpOmU0nDB5JRYTJ8Yp9nEyCwAFVVNkguj1wekxTmwZr6LaOwkx2N2bkLXozAnAa4JMTg/cA2tF6/gk27yzrdG8lsFhoqYdLjahL8181149O5JIa+r7XLN3C9qwl2b94f2QwGEjQ+7DVg1NwtJsY6gvCcASIp14Kt3TsT5gWs403MZDefIFtDmC5dRUdVE1OelIDsB27/B700B9E2mTo93BHIU3vuO36vxxI6P0NZ7FZeHrqO9T32JrRhCc6vec+7H64NziswYg1zyUsaivku+AScHq1QD0ZwVhQx7vJq4yxfkJSFz3FhsPUg+CRe4EnGkuSekydaquVlIixvDa8Co2YUtyEvC2b4h1SJn3N380+/U4lfV0olqTL4C20Br7BpATbMyz9ZDhVmIHm0XvR5aC4+ZjVQjQoA8F4QPpvW8EFL33/QMJ2rPDgjmGWnhRSh0JeKtNYW8f+Ma/x39Q7KeSbmQCIhxczfYqPmtSOELh3zttUO6epTFvree+SJ8+UB8G0JAOnRoNHrPVSQKyUqhOSsGoNZdzpAaH42yZW48uTgXj/36GPbVd0t+pkYgJ4OboV6+sx7T0mJx32fSVO3CSMZEgtJqCOZ9TB4OM2kpJT3egRd3N4q+x+y5SMsqiC9MHY+CnPFo77sa2NnzLQZqXNzs1vN8iHkwGINEyFuolRfhcHOPYFUDO8fLX+2hb/6SHA8gH0aEI7jVK0aIWq4SaZipV25ZQXYC1i7MDXpNrAux1fLb9JqrSDY4RkKNFQVo6YJlL8R6lAmf7BjEyQ7xhdkodhxtC5p8ScIDfC5INUludhtgg80SOyN3qhMNXfp6EwDgz59cwJ8ab/adEWr9rtbFzdd6no1UgrhQUrhWSY0+iBsAgLW0asQMErW/ldykeaWilgAwMzMe3YNDaO+VDh+lxYn3tlGTMyRETUtvUE6g0HPHhOLXzHcRh6WlWDPfr/PEZ8TnpcZqqhVDAl/OmVWgxooCtJo8uQux1eKhWsNXDSE3wZHvOHJYXeRCe1+ovLpWyHHJfnlmOlYUzpWdeyQX7r0qlHSqNrdEyhsAkFWpcdHSiyB1LLOrPdic6hJeqNT+VrMz4+EcE6mZ11QIJoRAGvIl+a25Ri/jKVXzuzHPhMfrxdaD4uPcUtWMhvJirF2Yq7gVCDeZl8+I317dokrXRy5COWdWgRorCtBq8uQuxMtnZ+oehxaD6c/R2XdVl0mMzxgjCQ9wOXVO/g6PfTy11SlCTM9w4nffnIutB5vwQmWjZE4CY5jwLd5aeFXkVkZp4WbXIzyhpREvdSyzqz3Y1LQIh60AdVV6Na19qhV5xeA+vxmEXuO/NHTjKe8JnB+4hmSnA67xY3kNeO5z03N5WBMvJInYG2OUryjMVtz24at3TkRS7M1EZr55gNQgVSstYbVwjxDUWFGAFi5Yvptjx9E2VcdVg90G/PzrdyAywo6n36nV5fhCGeVy9GM27aqTneC3IC8p8N0A/zg27qzXPNbLdJddc/dtkpOnWM8iLUIRn586Hn9mhX744POEqO3erId3cEVhtiZGPElVg5W8m14fsPVgU0C5l0FNVRQbPUIMGQkOrJiThVVzc4Lubx/h09bWexVv1pwJek0obMlGj/CQGK09V1R54d464v+OYt+NZPNQmJOA/qs3VBU/rJqbZXlDBaC9gRShts/GiWcW8d4cZu7q2IunHhO22OIM3NwpcZuZsVG6iKfGRwcd78Xd2iRHc2EWf8A/ea6Z7wq5T0h6FqkNRdgApMeT/YZvHw8tfy5d4kbt+kWQe4vrVeLoF0/LUn0cbvLmsMeLiqqmoH4tVijRZPNCZWNQzxzG4yZ0fxRkx5naA6i9dwgv7m7ES3sbgl4/q6LcmQnRcHsHcSld4kZDeTHKlubhocIsv+rqPO0aULJJj3doMl9LfTeheQTwP+fVTb2qqzSZvkXDHq+q4+gN9awoQK27nJtoymDGro7Py6M2Hi51fKUoXcTZ19XfgEy//ijsCUyOx0joGEp4dL4LiWPFG1oy1HXyV/HEOCLw6Hx597iUQaqGsmX5ONrSq6oahZ28KVbtYaQ6tRQ+3PRyrV2YK2msH23tlyWiqAd8OVFazG1SCdwAf05UhF2ex4Uk7+yFykbMyUkgOyABYt+NO4+c6hpENUe6gk189Cj0Xb0h6/zVTcFJxlaEelYUUrrErXi3J7QYGbWre6o4N7DzaCgvFpSf1+I8fMdXipJFnL3bl9OATOnmlDspk3iMpI5BCuO1WbswFzXN4iEgNluqmnl3VWK7Or7z6jXJMR6Qz05MQIErQfFvw9w/Qt4JZpF1pzkVn0MvtlQ145cEui+MiGKhhgupUjbvv3lfadH1me25lAPjcSktnkr0u+anS+t1+eBf4LW6T6S+GzOPrFvqlsyTkWuosMdA4sEyC+pZUUGEXZmtJ7QYRUbYMS1N33I10oxvscRX0gZwo+w20bwMEo8Dtz2AXJjdvtwQ0tcKJmLS+JjA+JbPzsT0DXtkl1krQYlni+kf89LeBtmiVXy5K+w2BE8unoobXh8+aDgPwId7cpMQYbcHlTgCfqEyrauaxFSGGcGyG14fnq9s4D8Ai6zEMUT3wdaDrXiEoGePkXh9wN66LqL3tvZcwbZH5si+DxbkJaH3ynWiRpZTksYSSd+vrKjBW2sKNdNIUep1jIywE+WSATdzz0jQMpzM/m5C86MR1WokHiwzoMaKQoY9Xrym4MGTWtDUtqEXo9CVKGv3KxTG2LiTLMlVaGIRc8Gzx6e2mzD7eHIf8knjY0LcyUrKrJW0RVAysVc39eLu//gAnf3XiD/DprK2KzA2qev+YWsfAKBkXpZg2wKSpEgpxCqiqpt6MT0jPiASuKlSPA+Jee5I7gOpFg8F2XE42tpveInzmR4yYz0rcYyieyg1Phqp8dFExoqNcKPGFuIrXeKGx+tVFYZVG04iSSA3q3Kd+W5iz9Pla8q8JnIgkSAwA2qsKGTl64cV3dR5qbGBsje+RUvLfBEuk1PklyryxYDlKs+ykRJcAqBKEE2o942cHZmQQSm3zFqoI27JvCyULcsXHYOS6galhgoAfNjqj1nLUSmtONCKd//WyduZV6qBoBQkHhBmB0iSMM0YkqT3QWvPFTx7f75gzpFeTQTFODco/fuy7125lV3p8Q5ib3FmQjQaRXRgGLhCfP773q7Ia6WV55LJ/bGKng5w87uRzI9GYKUSfgZr+XnChGGP8pb3JzsGUb6zHrlllbyxQa3yRfjQKoGXJP7MN7GQLkCXhjyyq36YvImd353Pmxsi57uLJYryVRzw5eWIVW1UHGjFfa9USY6Dfa5ZWfrnIChRKeUzVNgI5cNIQeoB+fqWQ0QLHyOnrrTFAzfnSKraiyTXRw/4ukSTVna9uLsRHf1XiMadlkCuts1d+MqWkeVCcdEqgdtKwn8Mq+beVLK1AlYq4WegxooClCR5cRFLZiJNbAT8EyNJoq+WZaUkBhXfxEK6AD2x4yPZk4k7NUZ0B0+a4FcyTzp0IZY0O+zxYvNf/yEZIjzRPoDy96UT2ZhzudOMa9KpJUqTIkl3dkdb+4nex4xBqaHNh5jhyv6bO9WY304ozMtUdknB9BcjSTDddqgVyc7RROPq6L0SYrByr12hK1Hwd9E6gdsor8G/zk7H5Alki35anENzI6pA5JqKYZUuy1xoGEgBWt7sQslM/vguRHeN0zOcgQf4SHMvPhZJDMtPd2qaMKVEeZb0urX1yk+kre24hPL361C2jH9CI4nh56XGIi3OIaoaKobcHJvXDzTjycVkiWxW3OmQouR50fr7MmNQ2uJBCLH2AczfSopydC+ZB8TDvHJCQrVnB7DyrixsOyQ+3nMD14nG9ceG87xlsdxrx+R3nb5wSVLBVgnM8es69G3GyDA1yQlHRAROndemzYBctpcU+P+XdU3HxURi18ddGBjyCH5O67VCK6ixogAtJ1KhZKZhjxdbD0pnrTM7lpMSDyDzXq0NFjk6IqTXjTQezkXO4s9Hfac/RKckOVRJDgM3ni+GVrlMd2TG41hbn7qDyETJ86J17hYzhmGPF0mxDrhTnajvHAjKddFTdjwtTn9jU+o6ly5xY9zYKMnKKa8PaNd48STJYVLSN4oUJcn6amTs2QndJHT2XUXvFTLjjwR36k2Do3twCL85cob4u5xoH8C6P3ysqaGoBdRYUYDWEymfVU0aMvnWGx+iwDWO6L16ZHiLTTDcSpjlszOJuiy/vHyGZJkwH2KLv5zSZbnJoWrk8Ul3VFqUfq6Z70JSrMNQY0WpS1mrUlf2GIQWrBRnFB6Z68LDc7XJieCrAPv9R+2qjyuGDfw5YtxxkDbxPCGjfFcOZpTFKtlIMHpFjFfiXN9V9F71wG4DFrpTcG7wmqjXm/HOka4VWvdi+/LMdADKe4y9UeNv/aJFVZ9WUGNFAVpOpAD/joh0EftTw3n8qeE80XuNzPAWKr+TqjZZXeRCjCNC8fUV+o5K4sGb9zdj3NgoyZbpamLNnX1X8fQ7tURlzWr6n2QlRqN0iRvDHq9u1WZ8FGQnin4nsdLu0iVuVDddVKVaC/jvqZf2NgjeT10D1/B8ZQPODV6VrNKSovz9Orx+oDnIY2NEc9I5ruDrLPT8FbjIErWjIvTJDibZNCkp9xc7lpyNBNe7JjZOPmVc7ue1XitIYIxzLXqMqa3q0xJqrChk7cJcvLa/WXVNvtDOU48cBaPyHsTK7060D2B6hhO1ZwdEH3KlC7PQd1RqqLFd5uxdBntCresgS/Lkg72jIm3Yxg691bf34ugZ6cV853fnAyCbPPl+H6WI5VFI6bNs2lWn2lApmeffIeeWVUq+t+JAK4629OLdx4sE3yO2kN73SpXq8Spl26f5CYD488eorkpp0jxwZyZ+vOcT7QcK8WdRa80e0o3ErKx4FOenBn5PEoOJNAxudJNFxqtTUdWk2fmsIBRHjRWFbK9u0UQ8SCiZTw+9leYLl1FR1aRrHJLEmq89O4ATzyzCr2tasK+uG4APC90peHhucMUCezL4fx+eQcO5S6LHFQs5aGGoMbuM6qaLmi3mfMcHxHcx3NDb7I37REuIp2c4EeO4+aiTJEdzJ+v23qv45SH593xdRz/vPSelJ+HxerH1oPqE1CcX58ryfJ1oH8Az79Ziw32hHhaxhdTj9ZpmqKyZf3MOIXn+SDRpvlE0STdjRehZJNVgkgPpJsWdFhd4puQYTKR5NlzDprPvKlHoJ9kZiXMD4vIADNwNn5aedCsIxVFjRSFqbwSpZD493IckcUi1LljSXJvV246ipqUn8N4PW/vwwu4GwcXy3e8U4Sv/c1AyhCS0K9LS+NN7USINPzEcXbcA9/6sircabHqGk9dTILUr5JuES5fkBd6fHu/Ai7sbJa/nh619+LC1L8QrJbWgalU5w4xXDtsOtSLCbg+qLLOKWBcbvjmE1DArdCUGPX/c4w17vEQN/ZSMmW9DcWnII1nur2R3L1dXRw+DiYH9TD39Ti3RZxZNS0X0aDuRV2bV3KygsaXHO0TeLR+zheKosaIQtTt17o3FhV21oLYFOBehB09IcZXpO0MySZDe0NXNoc24xDwXzGI3O3tcSE4Ae5IVU401OnbMR6xjFAaHpCWzhcJPQrz3nSJcGvLgiR0foa33KjITovHy8hlBHhUucqsvuO8n6bPCwL7nkmIdhuXMnL5wCdmJY2V/ruJAMyLsIDaujGJBXhJS46MFjVjS529ySiy2lRQIGqtaeY658HmSSZNAlezuSTYpcnI8mI2E2mRsOUZUSVFOYGPx9vGzgutBxQG/kc3MEzfkazFKjsVMqLGikBWF2di4qx4+hU8098Zio6YnjhzYOxWpPixT11XiUQJhJi1uaD7PBbPYlczLwg+Lp4aEj6S+Q8WBVkzPcAr2ezEKEkOFC+muLsYRgS0rZxMdU4skRiWx+C1VzXjgzkxZ51HDwVMX8GbPGUWfZZ4Pqyie2m3Az79+h+jvJGcRFDNW9dhF84nWya1WkTsuObo6pDkez1c2BHmBlSDHiAIQVFkkBntO/6DhnKKxSY3FLKxRQB2GfNBwTrGhwsAnRS4m0641zE6FNM5N0j5c7xu64kArNlU24sPW3kDo6KW9DUTf4UT7ADxeBClnFmTF6zpeLWHul2GPFxVVTXj6nVpUVDXJlrPftKsOuWWVKN9Zj19Vt4q2f5BCbksArw84NzBEdGwt6lFaCZv/8cE8H2a7vxlWEezmSZWab3h9ovfNqXPahzrZScCAspJ/JZshqdYISnI8xBTISVCiAk4aYr+p7aJdRZdWrQ7UQD0rCrjh9eH7v/276uNw3ZpmuJtbe67I2jmSxI31iHULwUwaJ9r7iL7D6wea8cQXpwT+7RwTqePotMXrA1ZW1ITkGsipltAjJs/s0Ft7rhB17J3gjJIU3LLb/IuzkoZ3WsJ4nvRCzrOSHBsl+R7SXDcx74Ca3mdCsJOAGeR6rEh393xeQ5LKHSW/85aqZnznninYcbRNtpdSrgq4nCacALDAnUT0PIqhp1CiXKixooBDpy7gyrA2rbrZN6AZ7uasxDGydxRicWO9Yt1SkE6uPgC3r99jWht4tYjl+ni8Xl6dELaM+Vs14iGRzfuljVGhEBLpZD9pfAyRa750iRtHW9TrrKiB+X56aNOUFk+Vlfezt64Lj949Sfq4hOE5IQNVi95nbIT6+sj1WJHs7qUqecTyXZT8zl5f6HwiZ/MgZkRxn7OMeLLmkcxzuGpuDjZVNpJ/mU+RyosyC2qsKOBtDdUo2TLglbWdmh2XBLmS0AzcSUYrzRGjULrm2G3+3W3nwDVNx6MVFQdaceh0D74yMyMwySjJf1pZUYO31hTy/k1sMVi7MJc4Ds9MgFLl0x+baKiwd/IF2Ym8hiJDYU6CbG/EnpNd+M2jd+F//3aWsDyV3K3PLIJbDzbhhcpG0Xue6y1VE/bieorEQlJyPBnsPmhCqPUaKq3A5F5buV5KvtwhoeeWRCOHneeyZr6870OSF2UW1FhRwOBVbXo4SMmA641cSWgG9iRj1tiN5qni3IAOzNR1lZb1zLD7G0mpBQtxuLmHt48UyWIgp0mglGt+5euHia4z3wKphVG5am4WXtrbIHp/M8bV1evyQyfH2/oxdV0l7syOIzJWFriTZB0/MsKOCLtd8hpyvaVqwl5yFm45845UbzOSEDpJCLt0iRsn2vs0CYPxnY8ksV0s6VjqUnG9T3IaWPJ93kpQY0UBbb1kO4/46Aj0XRXubiklA66EWVkJcKc5Aw8C32SrRhKaXea3sqJGdLc5Upie4Qxyvz8qc7diBoxasBJ8CA31kS4GDeXFgf9PEocXqkiRkzfxtYKJmDQ+JqgHVf76PZKfY/Jith7kN0aktF7YJf0VVU1EY+XiA1DTQuaNtMEm2ZqBuxg2X7hMdOzWnitB4UKt8874Fm458w5J+Fmr/miTk52aGCvc85GIzanJWyTxPglhpdwUIaixYiJaqXSyGW234dn7b+Yt8O1el8/OxI6jbUETH6kFroeBpSXjxkTi4hUyxUdSuF1I5e5WwhFuKEDOYiC3GzcfckKTjBYFA6nhUJCdGBB+U5LIW9N8c0HTK6+FwYZg7Z3ynfUoyI7DDZ8dTAn/ucFrgoaXFKe6BpFbVqnb+IUMhdIlbhz4xwWc7JDusi4WnpKbfCqGlgnVzPlIQ1Rq8hZPtA9g0666IIOD1Pg58cwiUU0mK2Dt0VmU7HFjcapbesci5lUBtFPpZFPTEurCZ+9eN+2qC+loXL6zHtPSYvGlGRmoXb8Iq7cdxeHmnhDX+qq5WThxpt8wb0phTgImJ/u9RHtPdqGmRXq38+3PT0JH/1CIcJxauOq/axfmjujwF3fCJl0MTl/wt0SQKzjHRU7exIu7G9FzeTiQ50Ka+zU5JRbDHi+2HlRmdLIXYC0UpwtdwnkxfLcZ2yPzYWuf4vMC/InbWnP6wiVUVDWFGLBOwkVSzIiQq1QLBHuh0uMdsMGG9r6rSI93SFarkZKVOEaWOq/aMnmuB4vU+NlxtC3wvN7w+nCkuQfdg0NIinXgTlciRpHUw+sMNVYU8PLyGURuZq2YlZWAN1fPwcrXD0u6J8VcnWKx0JMdgzjZUR9YjLeVFGDrwaaA+Noou12RcTUhNgrnB5XlDlQ39WLSBH8jvIqH75Ss4mEnbzI9YdjeJK6RpgS5pdJ87nQjS7uV0tEfrIVCuhi8WXMGsVERku5kqdi9nN2t0p5NWYljVFfgscMng9fENydSTE6JxZaVswMqxBlxUfjzJxd0N4hJ7sevzs7A+YEhfNB4QfG9+1bNmZCqGTl5VctnZ/IaO4B8kTWjcu1+/9FZoq7bzLyt1qvDnf9Jw4DM+3bXdmLDe3XoZD3/qXEOPHOvG4vzU1WNTS3UWFFAjCMC0zPEH7Ixo+24cl0bvePi/BRERtiJY6l81jmpO1DrZn1qW82zPRq3S1xzdnIY385eS7l9pfkUTB6R1UNIWw8248nFubIWAwapSgiS2L2SsIqcHB1m4dq4U5moF4OW4ZNTXYNBBnVjl3RoRA5qEpEnJ8ViclIs/tR4QfH5+ZJv5fxm3A0i00ajbFm+LKVauaq5ajjZQf79WnuuYN1St+pwInv+7+onE0U8NzCE3bWd+NYbx0N+p67+IXzrjeN49cGZphos1kz7DQPefbwI0zOcgn8nNVSklnL2bkCJq5NB7g7yRLs2XYXbe8nUSqVgJrbpGU5eJcqSeVlIinWIqrqWLnGjZJ64aqTWTBofg5KiHDx7f34gXCCkqGklgpUwyRQ32fCpMwPCCs1cRVC555MLs3CpVWqtbu7RbHeu5bH4+FrBxIByc9nSPKya6yKumGrtuWIZJV82FQdacd8rVQDIlGqt1OeJy6muQU3u+86+q3j6nVp8bXM1/thwnugz42IjseG9Ol6vGfPahvfqcMPEuDf1rKjg3ceDm8cNDXtkyXuTqHSyvQVyXZ1srDjRKKH27ABOPLMoSDGyo38oJLGQT5hp0646xfkJShFS3OQmoZ7qGpSVN8DXNVdruPeMnLJOvnCk3PLS0iVueLxeTXO7uDouaqo+tAznGREaZAxnwP9b5JZVEn/W7CZ2YpxoH0D5+3UoW+aWTO7WWnhTib6OEEy+oZioH8l9sq++W/a5R9vtQaEfLj4Anf1DONLcg8JJ42QfXwuoZ0UlTPO49x6fhzO98vqQrC5yoWwZWd8KQFk/CQYrTzZy8PpuJoM9e38+ugeHUHFAeqduZM8lBinHCROqevb+fGwrKUChK5HouHabv89KQ3kxFuTJ096QA989MzlZ2JvIRU1FEUNanHb37aysBDSUFweeKTVKrQXZCZoYFzb4Fzy9b0vuJkbuor2iMJu47xAATEuLRdnSPHztzonyBqqQ1w/c9OSxnyvGm8mg1abNBv/8LOd5kIJ977N7bjGesE82FuPR+dp7G+02YMZE6b5eANA9qI2nXAnUs6IRch5+bk27nFJPuf0kGPQurZTDrKx4FOenoqN/SFHJKDPhkO7Uv3PPFFNcv3x6JXzITfZjG6Q///odupScCnno5Bi93Pf+nlD5mV01UntWO0VkJveLQc3CdUNtF9NP8QEYGFKXmEsCdxMj57vbALy0twGlS9ySeSFs7RkAWL3tqOIxy4H0WdNq08b8+lpvAhu7BwSTiAFlnc6lWF3kQiqhlH9SrEObkyqAGisaQfrwM5U9XENETqmnEh0LLUortcKdFhf4rhF2+Q8eM0GQ7tS/9H8PaL6YT0uLVa0NAYhXaHHhM0j1+l2FPHQrCrOJqhsAf4VBRVVTIKmY5HoBoVUjWsBnfKlbaLRLOCK9LkoQ2sTI+e4+hCZNk26WJjilmy9qhVBpNBstN21bqppx4plFmm4Cf3v0LICzgX/zhbO5839n31VFoR8b/AKXpUvcuOH1ITXOga7+Id5nzwYgJc5fxmwW1FjRCNJEPe7uTilKdCysImbGnijZDx7TaI+kPBkgNxA/IdDEkUOhKxGwkc1Op0QqOkiT/R4syAwI0snxtgFAVqIDrT3krlspD52cfiNMJVf5znpZS7uSeT9xzGj0XBFug8FnfKlZuBa4k3C8rdcSnko+GN0koXtGyXdn8onkbJYmjY8hOrYWOTt8pdF6GvdMSFrPTaBQuwL2/P/0O7WKjv3D4qlYc/dtAIBRdhueudeNb71xPOS3YJ7dZ+51m6q3YkjOyrVr1/DZz34WNpsNf/vb34L+1tbWhnvvvRdjx47F+PHj8d3vfhfDw9oqkOoNaaIeaYtzPSld4saDBZmmjoGr4cE8eM//83TJmCx70TErD2fLytnESXXVzT2BvBkupKFD1/ixIbF3LtwYd6ErEXYbiA2VBwsyUbY0LyinQ+xca2TGzvVe0x/7/G3EuV8MkRF25KfLzznwJ8bn6FqtpBTm++787nzRe0ZJ1Qk7p0IsL4QNSZ6L3QZ8vH4Rcc6WEHyl0ey8NQYtq/Fae64YUt0nVF0HKJsHmXuYzeL8VLz64EykxAWHelLiHKaXLQMGeVZ+8IMfIC0tDX//+9+DXr9x4waWLl2KCRMm4MCBA7h48SJWrlwJn8+Hn/3sZ0YMTRNIE/UKshMt0STKNX4s0fv4djtsVdn23qv45aEW2QsRV8MDuCkSdvW6l7fShW/Hb0Yezpr5Luw42ibrM0IN1LSUCAduLiCbdtXJqiwSWszFYHf1ff1gC86Z2ImaLQYoJzy6aVedov5JBa4EbNxZh6zEMSjITiBSVtaTp4pz0d53lSgczBXjK5kn3BuJD7l5PnL0T2pa9FHR5Xv+uN4htoJtVuIY3PD6gtobCHG25zK+8uohAD78+8IpAID/2POJ5sa5mNinknlQKMy7OD8VC9wpt6aCbWVlJfbu3Yu3334blZXBpXJ79+5FXV0dzpw5g7S0NADASy+9hIcffhjPPfccnE7tMq31hPQB7idIpCPpyqkW0hJobokweyybdtVhW3WooTI7Ow5HJRqzMQ/eisJsbK9uwdvHz6K+c0DUMOK7Dkbm4bCNJbluV6GJRo1ujhBydSRK5ilvXhYZYUfP5WFTDRXA3wZCTAyQj2GPV9F9Y4NfEFCrclW1rJnvCmqyKYYWqq1KdvEkeS4VVU2G9yUSu1eGPV68sLtBckxskTy1LQ+k2HmiA5W1XWB6QT08129wyG1Ey9308a05ZpUni6GrsXLu3DmsXr0a//u//4sxY0Jv8urqauTn5wcMFQBYtGgRrl27hmPHjuHzn/98yGeuXbuGa9duTo4DA+pEnbSA9AGu6xzAa389Heg/wbbkhTok88Vd1UK624lxRMiW7ZcyVBheq2qSNJiqm3oxPSNedPHRIzueD3ajLyUTNp9Bq0Y3Rwi5Jalpccqz+60isFVxoBWHm3pEczS4yClbnpUVj9F2O6o5/bKMhNurRm6XXC1UW9WEsaXyXOR6bJicnN8db0d9p/pEd74F2yoFCQzHzwT3gtpU2RBIkBWbB8U2fSRq0lZBN2PF5/Ph4Ycfxje/+U3MmjULLS0tIe/p6upCcnJy0GsJCQmIjIxEV1cX73E3bdqEDRs26DFkxcipkBByLQp9XijBSi1KS6C1WqBId+NCIRQ2zET42K+PKcqKJ4Hd6EuJ25XPwJHjIieFtBcIg5ryXa0FttTA7W0l9azI+d5TUmLxmyNn1A5RMWvmu1R1sR72eCUb6ZHADn8xRovcikShjYfcDcC828bLmnfFji+2YJMmk8tlQV4SzvYNoa5T+WabW6XFDs0yPd3YHhgupJ2grYJsY2X9+vWSxsLRo0dx6NAhDAwMoLS0VPS9NltoLMzn8/G+DgClpaX4/ve/H/j3wMAAJk40RniID8Yijx8Tgb4r+uklkCzaclFSAm30AiUWq2UTGWHXTXMEAP5nfxNueH2BB1/OrktsR6rUaORj0666QAUOKXyTOGko0oqqyKQTrZzF8fzANd3v+dS4KJzjnId7DyjtYv3Lg9p0IGeHv5gKL6nqG1LkbgA272/GUcJcIRuEnz+pBbtkXpZmHZgZ7DYgc9xYzTZW7LWB653/sLUPL+xuCPpd/J3Gm4g7QVshzxJQYKw8/vjj+OpXvyr6nuzsbGzcuBGHDx9GVFRwnf2sWbPw9a9/Hdu2bUNKSgpqamqC/t7b24vr16+HeFwYoqKiQo5pFkZ17gTIF225yC2Blrtz1wI5CaZSRkReaiyR25jL+cFreL6yAc9XNgTcqqlOBzoHpKttpLwjSoxGLkrc/HxGlBy3sFbVWHpIzbMnWj7ji3RXbrcByU79hbA6+/2eRqk8LSXsreP3UqtFqPoGkL8jV5J/drytj+h9ealO3utI4iXWstUDw6q5WZq2/WDWhu7BIUlPCUAeMtdrzVGKbGNl/PjxGD9+vOT7/vu//xsbN24M/LujowOLFi3Cjh07UFBQAAAoLCzEc889h87OTqSm+sui9u7di6ioKNxxxx1yh2YoRnbuZDB7J1v+vvyduxbIWRSlPBVN5y8rMlbYyEmw5CawCnktlOjmMMdi9GnkwjWi5LqFtarGykt1qnKH8+H1AVsPNuEvDedxmJNrIsfFv7rIJUu1syA7DtdvAN2XriE51oFF01JwbvAaccUNSZ6WfIyt5FC6I1+7MBe7P+5Cq8y2JVJ8eWY67+tGe4mZOSgp1qH5eU9fuCQZqlSyXv3lk/Nwp8VZoiJIt5yVzMxgLY+YGL840KRJk5CRkQEAWLhwIdxuN1asWIH/+I//QE9PD/793/8dq1evtnQlkFYxYLmo2clyF8nlszMFK334uO+VKkVlnmpRktRXusSN79wzJdBgMjMhGi8vn4EYRwSe+sMJfQYqADuBVctkNjVePaGKADlNBgHtqrG+PDMdRYPjNDf+N1U28r7OGF9r5gsbLGx1z2GPl9goq2ElmLf3DuGjM31YXeRCQ3kxsfCh1u73Be4kfNhqXPWSkh25Xl5qsfnDiM3fgrwkpMZHB82xSkXcxNArVFl16gKqTl1AapwDz9zrNlVrxVQF21GjRmHnzp349re/jblz5yI6OhoPPPAAfvKTn5g5LEm0igHLQU0mPt9EwHWBiy2a5e/XmmKoAPITTIHQ79vYNYjpG/ZgdZGLWFFTK5gJUctkNqVevclJY/HV2Zm8hqmcJoPsRUjMk+V3d7cSVzsZFVJl2FLVjIbyYsmkRDVGGfv3ZZLApb6i1u73VXNzBA03vWAbAlI5UHp6qcXmD9LNn5owZWp8NJ69P1/ReUmxQf9QZVf/EL71xnFTxeEMM1ays7Ph42n+lZmZiffff9+oYWiCXjFgMfLT+eOuUpBOBEKL5rDHq0vcVgpSPQDuNTEjYU6MrMQxirwWQqipxvrq7EzBBVCuQB33txDS5Imw24mqnfTU2RCCbRSsufu2gPQ4H6VL3DjwjwuK+/hs3t8syxjTctcvp0WCVjALspQ3US8vtdj8cfrCJZwfuIZxMZGShojf6HYpargK8BsmWotZZiZGEwt9KsUHv1G04b06LHCnmBISor2BFGH8D1V7dgDDHq8sg0XJwrZ5fzMuX7sR6EUjR49CC4R6mgh5h9jvByD5fbcebFU1+ciB8Roo9VrwoTTOLuWZkyNQJ7YAcXeRpNVOZuVj/faYvxM0STLrl2Zk4GQHWaksH2pL3dUg1hesZF4W0uLG4O3jZzXLHbrh9WHJf1XxHo+9MRo3NkpTL/WE2Eh8NiM+EPZlUBpmunmPyt+0CVUhaS1mOXfyeEPUvH0AOvuHcKS5xxTROGqsKEBpDFiNO1GJa1jpwsYk0T63qx55qbGyP1/gSkQNodw7SfWDmHeIra9R4EogMgrS4hyYnuHUPbTFeA20lNVXuqivEtBaYCAVqOvoH+I19MTCWSTVTmb1eWrsGkT5zlB9FqEKIiPaO2jRQ4xv/FK/A9OqQW04zgZhPSk2W6qaMWNivPIT8XB+cBj76rsDYd/SJW7FlXLs+yEtTv79KVSFBGjbVHbS+BgiA0irqrvuQfLGqFpCjRUFfL0gW1EM+IfFUxFht4f0oqjr6CeSapa7UKndrXp98tvXM31mhCY9uaWZpN4hrw/EFTqN3QOoPaufocKd6LSU1Sft7s2FnegrFE6TmuzcqTGSJZdC4SypaictDIHCnAR8fmoy0ULJhTG2PF4vIux2Qc+REaqmSvK02EiFXkqKcgL3AFvkLTLCHjBoVlbUhFRRkUL6Ga8POKfTwsf+PbceJPeI5KXG4iszQz27SuZSoSokhtIlbowbG6XofmVgG7ZSXkxAG+NITnWcllBjRQFyG9kBN7tc8k1CFVVNRMaK3N2n0bvV6RnOwAOjhXYIoE954W+PntX2gBA3wjr6pSc6uw1YPjsTFVVNoomISnvSsBN9xRay6qaLgh6n2o5LkudRmhxKYiwxnZ75jOCSeVkoW5ZP3NNFCCFXP7eCSK9kYDW9mgCyRG4g9Bqy74GX9jbIaoQJ+Eu2j7b2y74mSTFRaO/Vb6cuN3TT0DnIO08pmUu53eX5aO9TV6bNNWxJ5l3uby/H45Ia529saAbUWFGAEitbbLdEuqu84fUF8lZIkk2N7kp8on0Am3bVBSZbJdohXMzWlmG4IzMeEaPsOErQDZqNXy1SesKclubE9A17RBMR1bQ5ONU1KLmQebxeTTxOcvqwcHtk8XUBZq4xMwlPTYlBfWew4bT1YCsi7H7PgJ7eD3YFEfMdTnUNyl7chdC7V5PQdVHqiWBrh9QQ9gVjsyg/Jajnjdn4wG9sy5H2Z6g40IwIu3ZKymzE5h2xeZfPmHmgIAv3vPQXdBIYV8/c6zZNb4UaKwqQc4ORyKaTJlw9X9mAF3Y3ID/didqzA5J6HUZ2JWbQWiPCrFwGNsyufdOuupBcHClDkNQz9DGPkcDeDasVkqpu7kFNi/iCqlXVl9w+LGyYkue0uDFBhviLuxswdV2l4A6QmzNzor1Pl87IbM8RE06Zuq5S+oOEmN2rifQemJUVj+L81MAmad0fPpZ9Lsbb3HN52FINA/l+g8gIO7ISHWjtkecF2rxffD5UsqFckJeEn3/9DsVzLJ8xU7Y0D99+8yPJz3q9ik6pCdYQ/Q8zVhRmg8S4/MGiqWgoLyZy65YucWPNfJfkcb0+vweDe3Mzk/WmXXWKjqsVzGSuBcMeLzxerwm1V8FsPdiK+16pEpxQ+a47gxaeoc37m7Hr407VxzHCwyaWHMp4dsTG4fX5F8zuwSE8e38+Sopy8JX/OYiKA2TaRluqmjHs8WJysn6ikuzfdOXrhzWtZlFjnBvphXSnxaGkyB/WVtKTCgAKsv3hhKRYB9yp1hEBFfoNdn73bkXHW1lRI/g3ZkMph9T4aM379SSMJWthU/ZOLW6Y1L2UGisKIL3BfrK3ES/tJU+eKl3i9hs3xVMVL9DMZM097qq58h4INWgxaW7aVYfcskpsqmw0XICPC2MgirF5fzMuDYU2stTKM3SMsA+K2QiFO+WGsZj7WK4godcHPPbrY6jr0C+BmvlNhz1eTb03cquAhj1eVFQ14el3alFR1YRGjVsWiMHWUVHqFekf8iC3rBLlO+s1b7fAYANkVTSK/QYxjghMz5BvVFU39whuZgD//FwyL4v4eOz7j/37c+d9OZBW+Fy8PIwjGoU85ULDQAoRyrxmI6VOKpR3EmG3a1ri7M+bUO5mnZMdj8MtfcTv5y7QpF18Gczou6QFt6/fE5BoZ1AS67Y67tRYNHQNysrdkRuiYHr7KAlNadXNlg/2Yqa1BpFUFRD7OTrVNYgaTv6UUTDXQK2gmxoDJTc5Bp90X5L8/o/McyEtzkH8DDK/gdCc9e7jRYpaj0iFx8uW5cPjBbYdEr/fmWuvZesOQF6FDy1dDkNKl7gx5PFK3mB8cUshkbOSeVm4fkPduLieDTVCYkxio1i+APczzES2vboFbx8/i/rOgaDPlu+sF6yeUZtIykaPbr5i+BBqnEZG2FGYk6BL/oRZxDlGB3rdCBmg3MleSbduv/y9tWAbFFqFXUjy2ozs8C5FXmostle3YO/JLtO8nv8ya6Jgl2GG/LQYlC1z49KQBxt31kuOlanEkjIE3n28CJeGPPi3t47hT40XiMZLUiW34b58fNTWK2oIrS5y4aW9DZq17mC405WIxLGj0XP5uuR7aelyGDJMYKgwrKyowVtrCgGIew4qDrQi1UkWPxSC69lQMqnOykrAm6vnBCbmRwnlupmHSWpiZXcuZk8EWpYqz3ElalalIQfuLmrbI3OIjb1wgEnUFZp4tVtYzbtiXEOXz6DQKsT35OKpolL/VvM0MkKMZsFsiJjnS+heq+u8hPteqULt2QECQyULZcuEBeS4hkCMIwIVqwpk/TYk8/C7jxeh/P06vM7J0WLuv+/cMwW3r98jegwlRQ6j7DZsvD9fMsnWzNJlmrOiAjluYCZuSeI56By4pjhnhS/mqmRSLc5PCanfF0vUtdtu6mBIJVFyYScHkxpWUtfHbgO2lRSgMCeBfCAawYQwGCIj7Hh0vnE5Q3rD5IXwxchJkmhJsNuAhe4UdQfhMCsrHoWuRNFkc+Y+btxYjLKleXioMAtlS/N4E+VJE+2leOdvwsnTWnoarYDd5m+poQa2d0ssH0+oGIE7njXzXQGNHpIeXuz7vnSJm3iOIZ2Hy5a5ee8/AMhfv4e4EaZclkxPC8zhfNhAS5fDFrkeiy1VzRg3NopoIlc61/PFvUlEydgIJZmxa/SZZmDJTkegjxAA5JYpL+PcUtWMHy7OJXqvlNeEuQ7bHpmD3LJKw93nL1Q2oufycJBIHiCuLmkVNz8J++q7kVtWGSJRr9XCurrIhQcKslSpe3Jxp8Xh2fvzRXVeuPLzYmglDVDXGaxPxEYPUUSjeao4N+j6bq9uIfLM8IVxp6XFIinWEaQ3pSYf78QziwI9hJT28CLxnMpNnuaWF8v1rikNUZYuceMzGQlY904tei4PB15PjXPgmXvdpnVcBqixogq5HguvD9h9krxjc6GMMIYNCEnuBPw3udwkRbFEPzHBIbWdc70+wAcfUVfkLStn42cffCLZIM8MrRngZv7Kifa+QG7O2oW5ouqS7L+lxzvw4u5GSy9UXNc46cIqlkvENt6mbxB3d8uFeV5JxApJk8LFEu1X3jUR26vPEF0TIde9VUQRlVLoSsSjd08Keo20DxXTyZud98buBcaI0al5RnYcbQvcC0p7eL20t0Fycyk2p0rda0o2Aae6lHUHB4Al01OxKD8FR5p70D04hKRYf+jHLI8KAzVWVKBE0EdOJvXklFhMSooh0jD4WsHEEENFyU2u5nbUYmI92zdEZFwwjcqkEj0BssotvWDn5rC7RK9b6hbtn7NpV53isRqdWMwstKS//9cKJmLS+BhBz4ZQAqEahHa2fAsFX86VVKPDlYXZ+OWhlqDrvr36DPLTyRpmCiVgWkEUUQ3bSgpCXiPZQKwuciHGEYHuwSHRzs1qQ0rse1ZJDy/SOXbtQn6PMUlVjxLvGpN2oLR1wyi7zZTOymJQY0UFkRF2lMxzyTIIkmIiiXthyJmoJo2PCXlNyU3OV9FCihYTa1bimMCELacsXKgxGwMTwnpgSzVRHya94O4M+a6x2oRKdsNM0iaZamAWWtLff9L4GEHPhl45GgWu0LwCoYo8Pri9dUh+HyZngrTK4vSF0N5LerXMMKJCbc18YW+CVFiUtMWE3EarXNj3LKnHh230ks6xfIYoaTKv0k2g1mriZjMyvoVJ7K7txPsnyJVF7TZgcX4a0XttQKAtvZT3TWjXqKRclIFPXE4KtQmH3A6iJ55ZJOnp2VLVjPL36wLiUr+qbkX5znq/oBxHiCkywo5ihTFXu81fMaCVJ1RIcVjtYm23+buCMySMiVR8LDm09lxRda8yqMnRmJ7hFDx/dVNv0D2hNBF48/5m2YYkiaECAG/VnOG9Z+UqnIphg9+I2PbIHN1UrZmkVanNDiOCKZTILCesqHSc7HuR5FpzwzlKQ0dyknmVbgK1VBO3AtSzopDdtZ341hvHZbnbVxe58PBcF1FX2Efm3XwoSFymXOtZqQQ2g9zuuYxnIzfFqVjsifs9dhxtI8p8rzhArjkgR6RtQV4SUuOjQwT7tAxRcHc/ahMq89NDGyIaQVbiGGL3vthOT8kukrsbX1lRw5vrpbRZnxaQhOaEvJrM/9fivvMBgftN6rci7aS88q4sZCaMkczv4UMsf4j0XshLVTbn8N2LJB4fNkpCR4C8ZF413rXfHmsHAFm/iVWhxooCbnh92PBeHbGhwr3RpSaJ6RlOlC0LnaxIHyCtdBlIJwstdDX4dmJa9dVhGwOREXbkpYxFfZe012mCMwrP3p8f9JrW+S9co1DNd06Ni5KtrKkFXI8YwH99CnMScPW6XyJcaPKUs4v82p0TcduEmJBjGdWwUQ6JYyJx8cqw9Buhv/ueud+kfqttj8yRzB+aEBOJDfflC/5dDaT3QpxDfBkj0cxhw9eZWOh+VRI6AuR5ZNQUCTR2DaJ8p3jYOVygxooCjjT3ELXTBvxlew/PdYXkTwD8kwTT4ZeLUNkwu4wP0DbmTzJZaGEYPcCTHEx6fhLYgnwAkJFAZqycH7jG+zr7t3jlz/9A7xUyN78QSpL8+Ojs5x+v3nB3qNzJnpGGFxICZLN8diax5+u2CaG5L1Yt9SU1VIBQA1brPB72/cb8VisranC4uSewqDNhs9VFLkzPEE4SPn9pmDeRU26LDT5IPQpSxqkPoeXTUmMhqRhj3qfEmyjXI6PWu6ZG3dYqUGNFAXIqekbZbYIlj6TWO0NkhB3dg0P4zZHgckg9FGBJdAG0mkT5koMB7ZILDzf3BBl0yU4yuWix97EnM7W9f+Qm+akhI8H/nUiTvMUQKpcHbl6fTbvqREMyQPDkueMoeeiSb3ca7qW+DJW1XYH5QGsDjFvW+tLeBtHfSConZPP+Zly+diOgt0RSTUUCiSFAmig8ym4L8ZJqhVzPN6DcI0Mi6yBGOCfdUmNFAXJ6I4hNnqTWOwNJ9vjV68o7b7KRyi0AtNnFihlFWmmk+BC8U3WNH0v0OZL3qTUu+JL8SMtdlaCFkcLww2JxmXjSJEL25CnH2ODbnZLuWI0u75bLh603PRtaPdMM7LJWkt+I5Dox+XEk1VRyDJbSJW54vBCUn796nazztZZGLJ/XSO7mU65HRqvQvtxcRCsRfuaVBbjTlYhYxyii92oVyiCd+DPio1Wdh6kWIJlQtJgApIwiMZn/zARlRuMfPjoj+X4pzxLTnn3jzjoUZCvvlcH9/sMeL2rPGp93Ihe7DVg1V3zCI00iZEv3yzE2+H4f0oqkR+aJV31wD8FUgxkpi8Us8KfOaX8/MJUmRofNNu9vxmt/PY2n36lFRVWTZMXhpl112HqwOcRgWjU3C6VL3MT3S11Hf+B8zLNLOgbueIQqD5nN57P35weMAaHzDHu8SIp1wJ3q5L2nCnMSAtospB7sKUn8Hmou4ep9pJ4VBYyy27Dpn27H47/5m+j75Eosi0E68ZMqwPK9h0mqI3URkk4Uha7EkHb2JJ1mGYTi6m0yvATMWO97pQq1HaF6FlzEjCihhGK+3XphTgL6r94QrFaobroY9G+r5lxwIfG8kU6KbOn+tQtziTxV7Go5NqQ71tIlbhxtucjrwUocOxpr5ufwyvBrXQ1GQnVTr2r3Pxdmh23GwsVuoaBUb6jiQCsi7HasXZhL1FH5w9Y+fNjah/Kd9SHPKWmIilQXhXmvUCgMkE7QZ+cMkav0kt0gUvP2Da/Pcuq1ADVWFLPss+l450SHaBt7PiEqpZBOKiQKsGvmu2Tny/BBGndlVCy55wP8Ow8xmWl2kqbSDsrMLvzSkIcovLLqrmzBiUtsAvXBb5ww8vrM97nvlSrBc51oH8B9r1Th3ceLAFh/1yPHyJTjVWRP+HKr5biQ5BBs2lUneC/0XL6OTZWNgfezXealS9w40d6nu6Aal4Js7TuIM8+dmQiFh0g9yd+5Z4rscB73/ewxCM2LckKaQhVUXGFBKeSq9H7SLV00ILWB3l3biQ3v1QUVkFihLxBAjRVVbHloNp7bWYdfHGiGj+eJYVvHajOw5WSPM5Mr34PB2Mdy82UYuPHaVXNdvDonDOwdOLcxl1gSnhbl0Az56U5ERtjx2K+PEb2/7eKlgBHFloNPj3dITlg1zb1B3ikSA+lE+wAuDXkQ44gwffEQ4sGCTExMjA5cC7HyYwYl+TxbqpoDHWblVMtxEcshIHWrCy2k2x6ZgynrlDfsVMLklFhcvk5mbJPCXBM9E7pJUaI35PUBT+z4SLMxbN7fLDgnkXg3mG7rWiswq1XpZSPmERXSDuvqH8K33jiOVx+caarBYvP5+JbZ8GFgYABxcXHo7++H0+k0ZQxiQlQMpHkgYucg6R7MlOhJeSLkjIcxUNgNxRjsNr8xUHt2gDjMI5UsJlYqqZSSeVk48I8eNKpo8EVK2dK8gGG2ettR7KsX9r4xLMhLwpaVs4l/Zy3JSoxGa89Vwb8zbePF9DgYI4Cvz47csEnpp+0C+Dp7a1HFUFHVJKuCy24DGsqLg86tVcIjKQWuBNQ0C3tzbABul/HcsL+T0d9FCPZz8/Q7tfhVtbQeztSUWEOe6WlpsURGQ0aCQ9Mkdga1CeFSHtEbXh/mvfiBoCSHDUBKnAMHnrxH05CQnPWbelY0QqrWX0nJmFwvhg3B8WAtxiPl4WD6n5TMy0JanLiKpb+dexNek5gY9aiEqTjQKishVw3sUE5br7ARwIZ5n9Fdou02YN/3P8dbbsrugCw0nuqmXkxdV4nbM0INVmZXuma+S5aX7IXKRt7KD0A8bEiK3FAbXwWFlqqyJIgZKoB/IfvdN+di5euHiUJUBdmJgWtnZqNPNm8fPxu4xqQexsyEaEOMFVLvhh6GCqBcpRfwb4R+/vU7RJ8VKe0wH4DO/iEcae4xrcEhNVY0QI50Mmnohc9IsNv8XgfuosAgZ54hGY+cHdfWg60hu09uzgk3ydZo5CTkqoE90ZJOppkJN6u4xBYPrUtuGbewUNgEAHLLxEMePvAbmEwYZc18f3fsx359jMjLJJRT8Nr+4KqQ8p31spPCAWUVenwGDlNWK7aBMJLt1S2YnOwkMlYmpwTnQVjhu9R1DgRKqknz4V5ePsOU9hJGMybSzluoQEJqfLTk8/GLqtNEx5KjMaY11FjRgN9/1E70PqkdHTvcItQWnevFSI934MXdjYoeVrHxyBV84xo/WuachBPcBLaXl89A/vo9kp97efmMoH/zGQ83vD5izxkJfPL3XOO1oqpJ9W/IiIbNyk7Anxq6FR+P72OMZ0dInI4PJXkafAbOpl11ljFUAHkJs9z3+b2e5n8XtseXpKorxhFhqCfSLNR0Tpe6J4Y9XnzQcJ7oWHI0xrSG6qyoZNjjJXYRit007Pp9KXff1oOtWFGYjWfvz0eE3a548u/suyqoMaCkhJZpca+0o+1IgJvAFuOIwPQM8Vjs9AwnYiT6mwBAmwaVQrOy4lHoSoTd5l/oxbpUA9pVJ71R04ZNlcqMail84O9gLYTcTsZ8FRRaS+BrAeMNU9L52iol8+xOwUIaS9yuzmJaTBSgQ6I1zPbqFiJvrdMRgTtdyjWl1EI9KyohbcEtJGIFyE/WY3sx1CwmbH0LLZoIvlVzBtGj7YZ3tM1Pi0Fd5yXTJ9vpGU7e3f27jxfhvleqeEMl0zOcgbJlNnp5pq4Me1HX2RfyulDli17VSXooyMrJC5OTc7JqblbIMa2yuDMwBgiJR4KpjmNjpZJ5vt5FUjILfO/r6B/C1oNkoVQjFI3ZuVdGep23HmzGk4uFnwvS335GZoKpeivUWFEJ6Q+dFBvF+7rSHRpzXrWLiZaLlA/mdLSt7bikSwWRXE60D/A2dQP8BsulIQ+e2PER2nqvIjMhGi8vnxHkUZEKA2pBvcRxN+/3a1cw49KrtNWH4OZyWoS42EY8k8zt10HyYaE7JaShKClbD/oFyNi/q5UWdyDYo1e6xI3qJn7BO4D/PrVSyTx3LHKaCnLf9+Ri/jwsLarWSPj/7Z17UFXXvce/53gEfIEoKiAGIRqQUDOKVk9FvVcSLGombfJH07TGJEyqjUZNO5OKxsY0D5Ib296mbdLYep17pzM1tyG2mVAq5EbxEWtFcXwgJC0oRwOhRgVCLAis+4fduNnsx1r7cc7e8PvMnD84rL3PXvu391q/tX6ve2ZMRNLYEQOULLliZcWUz4ORfyKv7BdNT7DzsoSh0GWLiIRBqoWPiYZRSkhhfl3dvbbkfFCGZ0YihHYwoBbmqodeWHikUBYodCq0VR6qatfz9nAwFSOGq2eZlffLzHsjNz28Wfk3FJfVGR5z27gRaNQJC7eK2pjCcy/d/L7fnTkBiXEjbA1X58Hu3UzescDsHCDCw8FUzUKOZp4XuxCZv8lnxSI8NmIJaRdDbls3u0L7xtzbANxcTfBmODS6NrlJS9SuT9xEqnXDU3dE6ackMkaq1a7JTuarDWKE0gekaFkWCnNTbTm3HPmzb9fz9nFzu26GYalfvOZbOVI9HQDwcVYJ+va8VHz0QgGCNtn6C3NTUVSQgTmp8ZiTOhabvprZV0NGQiQ6UYLn/t+ZPAZbl8/A5oJM3XZWeb/2H/jt0UZdXyonKFqWhdrnC7B1+Qw8HExFXuYES+fjKUkBhGeXTm/3hEf2vH1xElJWLGJmkJUPema3X7O37cU3d3yIru5e3D8rxdQ5lChfGnJcu8nTSzPwcDAVc1LHcrWvONdi6Lhq1Qk5Y9LovkF16/IZqH2+AF+fNcXcyTSQP6dbV2Sj0KD4nyjKZ9+O540nJf2vDzag4bJxanIl8gn+4jW+3ZKL164jKuDH71YHEUy3Vn7j5vF+vPLnOlRduIqqC9fwUlntgGeMd/KTt9MrrCc5tJauX4TChel4ZEH4FjFqCzwnkUxJI4b78X+cETJKRIrBAs6b4Hhq1PE6M0cS8lmxiPwl5/UzkNIyr148DZ+0mteqpbDNx/5VDdbq7qXaS6N0XGu6dp0rV8ZgYfWiNDzx79MA3NyuFQ0hVPMJsiOSpPbTz9HS/s9+W7t2r9CUtu6tK7IQ8Bs7pc5IHIXa5g7d51FrANVyqOTxKUiMjUZzW6dRt9DLgE/bzOWLEPUVk7fjzYGixZH6q6rHK5+xyWP5wkuldlrmjzuTx+D+WSkDTDFRAT9WLzIOF06Ki0ZTq7Y85t4Wh6rGVq5xy0xSTbNYNXsyYMBulxJ5DqrJY2OEC1WKjPe8uyK8zsyRgpQVC1ixcb5cVofS002WnULtcmrV077ljmu89s1HF6SpeuJ7BTVfACvOpvLB1q5IEuUA7sQKTakAfT8/0/CZr/u0A4/l8teMUqLmKFm0LAtPLrkDy187oFoa4M6k0TjbZFxNW2JCrLrDuxHSPeZNWiZ/p5xeQUvPQ4+25bEfPvh0J+azn7Qjd9o/VeVkFE0lrca1kltK9XaONbZyXatoUk2z2BWSrnetVuYN6d7xRD6JFB2VMFszLhyQsmISO7TvSEevyOHVvnmTNRUty+rzxHeT86geWp778lWQ2eq3doWba50TcCZyRznB8vpDJMfFqKbZNzOAAsYDvIiiAgC3J4zm2h2QI1c+eN8D+TvldNHAXgbDGmVyzl/pwO6/hnTb6O1oSFlv/+tQw4DyCPI2Wqv1H/7xDNd1SoTDt8OuhYTWtRrNG2o7JmqV3AFwRT65ZVfEDkhZMYEbE0LxkJUUi9pm/oKDWmilg1eeS9LSpagl+YvU2d2L/9hrHE1hhN93s8ible116Txq9TO0JkkzZje7ws3VzgnwTaAi16222ybiD/Gj+7Jt2Va2OxpJnpME4K/vo1Q+eN8DiXDUfRJRpP/R1mmpTIhWBl+lWUprtS76Hoi2VyusafTs2aUQqV0rz7yhDOnXqrGm1i8374rYASkrJnBbQiheHpg9GSuDC2zRvkXtm8oXqau7F9vLzeUWSIqNxj13Jg6oX2NFJmo7S3qTJMOtFQ+vH4+ICYEXNSdVQH0CFVXq1O4J74Qh+UNIcpcG2BdKa4SeOycWBvPSbjm6Ss/xrw/+Db/7awiffd6F6zcG2lHUShPIj+d9D9xSNNDvAxI0cj8pUXNG5pGLkZ+JyHvA4yQqR22RIRXW1FuY2bWQkLLGyhWLpmvXufo6zO/TDDM22y8tzCh0kYLyrJiAt3y52zizbSlXWvdwIbpivjtzAv7zwdmqfdDKECsxMyUWwfTx3KtgkdwDgLGypMxTYMdugV7uA7VB6IXSGq7nVplnRXleHsXwpt/SzRpWamZA3h09p3JQ6P2+UQFOs6Ysrd+YPDYGPvhw8dp1TB4bg2MNV/C+yUgUXmamxGLSmBguJfueGRPx61Vz+33HKxd5Lh01eN+DGYmjkBI/CpNiY/ryrwADk7tFBfyG59SLbrEr34wVvz2tnChW+qWGnj9RuKJ/ROZv98xcHsJN2R5FmPnc3rA+iEaIrDJ9AG6fOFpVUenq7sWZS/r+P2cuteHtNQu4V8GilbRF/RfsWGGLOqnyPrebCjKwevE0zfPymDJ6mb7jt9JUoLXCc8pPQStzM3Dr3hX/qUbVrKJ3LC9q8in+U42jmUzlnLrYhhmJPVxt1ZyRzYRHq8H7Hpxr7sC55ls7PM+Xnhtg0nzxT+fw6IJUw3Ifejs+dpnqbj7/5s5h1oQkEjGlpfjY8Ww7hTv3e1yOSCK4cDEzJdYwR0W4cxbwIE/ElJWkrVkzaF+7iGIhTRI/ui8bhQvTLdfLkNqZyVOg7LtafouZKbG25T7gLXL36AJ9u7fUVzt480ADnn/vVnI8ZX6acETQqCXu450c5Md2dd80E/EkBFRiJe+O3wfMmyqew0U++etxe8LAZINmqzurIX8PHpo3BffMmIisJONEl8pbJSnIognxJCT5Xb/Ra1sSP1G0zF1mEv1pYebZdgO0s2KCcDjKiXLqYhuC6eNRteUezH6hQrftmwcaMH5UtOlaKaIY2UUlBWJlcKrhFqza6sGuVZ4cM4OxmTwFek7I0rF22ZXNRLBoUbQsC+NHRVuu5wOor0AlxbowN1U4B4UIWg6kojtrVnwJrPjlBNPjkZU81vQq3sjhWmvyNBO6rYdaegQnUY4FThUOFUXr/bNzjBN9tt0CKSsmKVqWhVMXr1mOQrGTNw80cCtQL5XV4qWyWs2wOFG0JlSRQdzsS2TnKk/C7GBsxSNf61g7vfxFI1j04M3iaoVdhy/g0QX6OVusojbAi0wOVrfUrTjsayWK42WGQTJLrcnTTsVXSTgCGORjgVO1r0SQ50/ZebB+wDhq5xjnxOIuHJCyYgGrGSndgHywM+tVrqWQZE9Wr4SsNYibfYnsXuUBzg7GkcauTJXh8N3Sy9liF2r9EIl6euXP+iH4Rr4EkZwUHpg9GQvb+R3P5dip+Mpx+n7Ix4JIpqFQ5nX6cXntgJ1laUz+fn4mV+QUzxjnxOIuHJCyYgG3CdMqZpyr9FaVRknvzGZgVSshb6RY3HS8q0dFTQsAhvysREMzmFODsRuwY7dmZXCq49ViAfWcLVIETUn1JdQ1t5s+t1Uzhw8+y1vqkRpH5PlmzCqvTqRod/p+PLogVTicWAuzZU6UeZ14dud4XA9e+XMNtq5QD3uWcGJxFw5IWbGA0xkpIwWvV7nVVYnZDKxSxWkRlJEpVReuobisVjNEV8Lt9TLCjdLcN29qPI6ed3Z3UZq81BSsYX6fJYXJipljRtIYlNc0c/2O3m5BpMYRed+dMF+axa77oVQk/D4ge3Isdh02dsLlOfd3FqWZrpsmFb/debAef7/8OX531DiTsJQmQe+Z3HnoAvZUf4K1/zZNc5zy6q4xKSsWcKOjrR3wOlfZYVsWzcAKDAzBNqs0SRFGgP5OkhszQ0YimVMknBCNVni8E5vSSdeKmUPi7Cf8Ozp6uwVRAb+mydQO1CZtN+8M2jWubirIQMDv71c/xy7fp2/Om9J3/6Sxgbd8QOak0TgVakXGM2XcuzLSmMxTm+tKxw08X3pO16zvxV1jUlYsoif07MmxOHNpYHp7Jwcmu+CxG9thW/5YsYXPk3dBaa6yqjSFs6KrHdidxZL3NyOhlBut8HgmtsLcVPzgq1mWzRwlJy5xV1aXY6Rw8eQJMovfB5x6dineOtboqZ1Bq3mIpBB8eX0vOyOMrIRz134qVsdK4sKVL4TGOiOzvtd2jUlZsQE9oWutgB94/TCON14z9XtqdlKztlMteF48O2zLR89fQVd374CEaU8uuQNf2rZXt0+SkmFVaXJjmJ4WkUjmFAknRJEVntHEtuvwBQT8fksJ3KQdHDMYKVxORr88vjANo2MCnni2lcjH1b9f/hz/aOvsy2BrtEuivOd23mMrfk5WSB030tRYZ5QEzyvPBikrNiESdtrV3YuxI83deq2V0o/La21b+fI6V9nxcmopCm8dazRUvqRj7VCa3Bamp4bdWSx5CXctrDsmjsJ76xcJ9UGqAMxTWM8MZu4Br8Il8uwlxkYjOzmWKx1/MG2cK7fzRdCbTAN+fjOGne+3FT8ns0hjMk/SNyVeWozpQcpKmLFq99daKRnZINX+p/cbPBOFXS+n1TwXzyzPsqw0eSGyK1LJnMKtyM1NG8fl3C3fsfzG3Nuw67BzihzvPZiTGo+sZLG8RSLPXnNbJ5rb+OoGTU80zgLrZUTMGHa833b4OZlFGpPNRuB5YTFmBCkrYcSK3Z/3RdF7eeX/s6tAmx0vp5U8F6njRlpWmtwYpqdGpJI5hVuRS1fxB5CjpvDzDOBWFDnee1CQnSh8fqfMB15QwK3Ca8Ywe4/NJM1UG4cbLnfgt0cbxX4cA8fkqIAfhbmpunW31BgMzwIpK2HCjN3fzIui9/Iq/2dXRIn0cu46XI+Xy+qEfGfsSuf9/fxM08qKG8P01IhUMqdwhtYaKY5WHX3NKnJO5qZwwnzgFQU8XPA6YifHjbTF2VQ51u48WC90/Lfn3dZXXVp5DVtXZOPY+avcQRqD5Vlw/wg9SDBj8z5SfxUjhvt1C+5ZgbeoH++5Vi+ehu8IFrgzsv/yHmvGluuDuYKAkYK3EKHdAxOPLOxCT3G0w9HXrCIn+jyKolUI0yxeUcDDiVGx0a0rsm0bD5WIFL9dvSgNL3z9S7rX8O66hSjMTRtQ/FSNwfIs0M5KmDC7ovNaWC2vWcjudN4i93fEcD+euvuOsBVytItIJnMyY+7bXJCJi9eu4+PmdhxpuKLblud5sOroa1WRczo3hdx88L/HL3Jl5vVaDpVIE6lwXZ53V0o0xyu7rSuy8IOv3gqrP9fUNqifBR9jzNP5V9va2hAXF4fW1lbExsZG+nI02Xmw3nSmza3LZ3jOk1vNAdJsrgcec5XI/fXi/ZSj5rMRroFJkoVRzhHljpWWY/mdyWNw/6wUrufhh388g/85Imar17sms4QjIR/v81ykSHzm5jwZhPZ7EEyPx38/Nt+S7CKRKNIqIvM3KSthQkpKZGZl+HAwFT+6T7/ew1Cnq7sXdzxjnPTJ7wNqny9w/UtshBsGJlGlyeo1807gg2G3gWe8GCzP8lDDDe+uWxCZv8kMFCasONENBk9up4kK+LF6kfH9HSz2WzckcxLdUrd6zbxOrl7M2KrEq/VbCGPc8O56EVJWwogZu/9g8eQOB9L9VRvgRe3BBB/hHHh5J3CvZmxV4sX6LQThFGQGigDybUAj50MvRau4ha7uXuw6XI+KmhYADPlZiZ5zpiW0iaTPTiQgswExWCGfFY8x1AZfgrAKTeAE4X1IWfEgNPgSBEEQQwlysPUg5HRFEARBEOrQ0p0gCIIgCFdDygpBEARBEK7GcWWltLQU8+bNw4gRI5CQkID777+/3/8bGxtx7733YtSoUUhISMD69evR1dXl9GURBEEQBOERHPVZKSkpweOPP46XXnoJS5YsAWMMp0+f7vt/T08Pli9fjgkTJuDQoUP47LPPsGrVKjDG8POf/9zJSyMIgiAIwiM4Fg3U3d2NqVOn4rnnnkNhYaFqm7KyMqxYsQKhUAjJyckAgN27d+ORRx5BS0sLV3TPYIkGIgiCIIihhMj87ZgZ6MSJE7h06RL8fj9mzZqFpKQkFBQU4OzZs31tjhw5guzs7D5FBQCWLl2Kzs5OHD9+XPW8nZ2daGtr6/chCIIgCGLw4piyUl9fDwDYtm0bnnnmGbz33nuIj4/H4sWLceXKzYytzc3NmDRpUr/j4uPjERUVhebmZtXzFhcXIy4uru8zZcoUp7pAEARBEIQLEFZWtm3bBp/Pp/upqqpCb28vAGDLli144IEHkJOTg127dsHn8+H3v/993/l8Pt+A32CMqX4PAEVFRWhtbe37hEIh0S4QBEEQBOEhhB1s161bhwcffFC3zdSpU9He3g4AyMq6lS4+Ojoa6enpaGxsBAAkJibi6NGj/Y69evUqbty4MWDHRX6O6Oho0csmCIIgCMKjCCsrCQkJSEhIMGyXk5OD6Oho1NXVITc3FwBw48YNnD9/HqmpqQCAYDCIF198EU1NTUhKSgIAlJeXIzo6Gjk5OVzXI/kHk+8KQRAEQXgHad7mivNhDrJhwwY2efJktnfvXlZbW8sKCwvZxIkT2ZUrVxhjjHV3d7Ps7GyWl5fHTpw4wd5//32WkpLC1q1bx/0boVCIAaAPfehDH/rQhz4e/IRCIcO53tE8K6+++ioCgQBWrlyJ69evY968efjggw8QHx8PABg2bBhKS0vxxBNPYMGCBRgxYgQeeughbN++nfs3kpOTEQqFMGbMGE0/F7O0tbVhypQpCIVCgy4sejD3DaD+eR3qn7eh/nmXcPaNMYb29vZ+EcFaeL7qspMM5hwug7lvAPXP61D/vA31z7u4tW9UG4ggCIIgCFdDygpBEARBEK6GlBUdoqOj8eyzzw7KUOnB3DeA+ud1qH/ehvrnXdzaN/JZIQiCIAjC1dDOCkEQBEEQroaUFYIgCIIgXA0pKwRBEARBuBpSVgiCIAiCcDVDWll5/fXXkZaWhpiYGOTk5ODgwYO67SsrK5GTk4OYmBikp6fjV7/6VZiu1Bwi/du/f79qBe3a2towXjE/Bw4cwL333ovk5GT4fD784Q9/MDzGS/IT7Z+X5FdcXIy5c+dizJgxmDhxIr72ta+hrq7O8DivyM9M/7wkvzfeeAMzZ85EbGwsYmNjEQwGUVZWpnuMV2QHiPfPS7JTUlxcDJ/Ph40bN+q2c4P8hqyy8tZbb2Hjxo3YsmULqqursXDhQhQUFPRVhFbS0NCAZcuWYeHChaiursbmzZuxfv16lJSUhPnK+RDtn0RdXR2ampr6PtOnTw/TFYvR0dGBu+66C7/4xS+42ntNfqL9k/CC/CorK7F27Vr85S9/QUVFBbq7u5Gfn4+Ojg7NY7wkPzP9k/CC/FJSUvDyyy+jqqoKVVVVWLJkCe677z6cPXtWtb2XZAeI90/CC7KTc+zYMezYsQMzZ87Ubeca+ZkpUDgY+PKXv8zWrFnT77vMzEy2adMm1fZPP/00y8zM7Pfd6tWr2fz58x27RiuI9m/fvn0MALt69WoYrs5eALA9e/botvGa/OTw9M/L8mtpaWEAWGVlpWYbL8uPp39elh9jjMXHx7Pf/OY3qv/zsuwk9PrnRdm1t7ez6dOns4qKCrZ48WK2YcMGzbZukd+Q3Fnp6urC8ePHkZ+f3+/7/Px8fPjhh6rHHDlyZED7pUuXoqqqCjdu3HDsWs1gpn8Ss2bNQlJSEvLy8rBv3z4nLzOseEl+VvCi/FpbWwEA48aN02zjZfnx9E/Ca/Lr6enB7t270dHRgWAwqNrGy7Lj6Z+El2S3du1aLF++HHfffbdhW7fIb0gqK5cvX0ZPTw8mTZrU7/tJkyahublZ9Zjm5mbV9t3d3bh8+bJj12oGM/1LSkrCjh07UFJSgnfeeQcZGRnIy8vDgQMHwnHJjuMl+ZnBq/JjjOF73/secnNzkZ2drdnOq/Lj7Z/X5Hf69GmMHj0a0dHRWLNmDfbs2YOsrCzVtl6UnUj/vCa73bt348SJEyguLuZq7xb5BcL2Sy7E5/P1+5sxNuA7o/Zq37sFkf5lZGQgIyOj7+9gMIhQKITt27dj0aJFjl5nuPCa/ETwqvzWrVuHU6dO4dChQ4ZtvSg/3v55TX4ZGRk4efIkrl27hpKSEqxatQqVlZWaE7rXZCfSPy/JLhQKYcOGDSgvL0dMTAz3cW6Q35DcWUlISMCwYcMG7DK0tLQM0CAlEhMTVdsHAgGMHz/esWs1g5n+qTF//nx8/PHHdl9eRPCS/OzC7fJ78skn8e6772Lfvn1ISUnRbetF+Yn0Tw03yy8qKgrTpk3DnDlzUFxcjLvuugs/+9nPVNt6UXYi/VPDrbI7fvw4WlpakJOTg0AggEAggMrKSrz22msIBALo6ekZcIxb5DcklZWoqCjk5OSgoqKi3/cVFRX4yle+onpMMBgc0L68vBxz5szB8OHDHbtWM5jpnxrV1dVISkqy+/IigpfkZxdulR9jDOvWrcM777yDDz74AGlpaYbHeEl+ZvqnhlvlpwZjDJ2dnar/85LstNDrnxpulV1eXh5Onz6NkydP9n3mzJmDb33rWzh58iSGDRs24BjXyC+s7rwuYvfu3Wz48OFs586drKamhm3cuJGNGjWKnT9/njHG2KZNm9jKlSv72tfX17ORI0eyp556itXU1LCdO3ey4cOHs7fffjtSXdBFtH8//elP2Z49e9hHH33Ezpw5wzZt2sQAsJKSkkh1QZf29nZWXV3NqqurGQD2k5/8hFVXV7MLFy4wxrwvP9H+eUl+3/3ud1lcXBzbv38/a2pq6vt88cUXfW28LD8z/fOS/IqKitiBAwdYQ0MDO3XqFNu8eTPz+/2svLycMeZt2TEm3j8vyU4NZTSQW+U3ZJUVxhj75S9/yVJTU1lUVBSbPXt2v9DCVatWscWLF/drv3//fjZr1iwWFRXFpk6dyt54440wX7EYIv175ZVX2O23385iYmJYfHw8y83NZaWlpRG4aj6kcEHlZ9WqVYwx78tPtH9ekp9avwCwXbt29bXxsvzM9M9L8nvsscf6xpUJEyawvLy8vomcMW/LjjHx/nlJdmoolRW3ys/H2L88ZQiCIAiCIFzIkPRZIQiCIAjCO5CyQhAEQRCEqyFlhSAIgiAIV0PKCkEQBEEQroaUFYIgCIIgXA0pKwRBEARBuBpSVgiCIAiCcDWkrBAEQRAE4WpIWSEIgiAIwtWQskIQBEEQhKshZYUgCIIgCFdDygpBEARBEK7m/wFD72hmMVX1mgAAAABJRU5ErkJggg==", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkoAAAGvCAYAAACkQvo1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAADUZ0lEQVR4nOzdd5gV5cH+8e/U08v2wu6y9CICigWsWAIaS+xRo7HHEruJ0WisMTZsMbEl/vQ1TaPGLoqIXaSJCkiHZcvZfvb0Nu33h5H3JZZYOQd4Ptc1l+w5c2bm3ks9NzPPPCM5juMgCIIgCIIgfIZc7AMQBEEQBEEoVaIoCYIgCIIgfAFRlARBEARBEL6AKEqCIAiCIAhfQBQlQRAEQRCELyCKkiAIgiAIwhcQRUkQBEEQBOELiKIkCIIgCILwBdRiH8CWzLZtIpEIgUAASZKKfTiCIAiCIHwFjuOQTCapr69Hlr/8nJEoSt9CJBKhsbGx2IchCIIgCMI30NbWRkNDw5euI4rStxAIBIBPftHBYLDIRyMIgiAIwleRSCRobGzc+D3+ZURR+hY+vdwWDAZFURIEQRCELcxXGTYjBnMLgiAIgiB8AVGUBEEQBEEQvoAoSoIgCIIgCF9AFCVBEARBEIQvIIqSIAiCIAjCFxBFSRAEQRAE4QuIoiQIgiAIgvAFRFESBEEQBEH4AmLCyRKTMrPM7lrMykQ7XtXNoYMmM9hXXezDEgRBEIRtkihKJeS5jnncvvJfWI6N43zy2uOtbxJSdf425TKCLjH799f1dstyrnntCbJSDseS2Xf49ly/19HiIcaCIAjCVyI5zqdfycLXlUgkCIVCxOPxb/0Ikzd6lvCbJY/gOPCf3+GOA7pkcvnI49i/cZdvtZ9thWVbHPDw78g2JcHik4vMNqCA1alyzHY7cdGORxT5KAVBEIRi+Drf32KMUglwHIe7Vz37uSUJPnmt4Kjcu+ZBfvXeZZv/ALdAR/6/O8g2Jj/5QQGkf/8TUGpMHlv8Pse/cnaxDk8QBEHYQoiiVALas3305GOfW5L+rxQu3hywuPP9n26eA9tCJbNZ+mp6PilHn0cGtbHAyu4Kzph95GY9NkEQBGHLIopSCUibua+0Xt5WCas53hzQuGLeyd/vQW3B/vjKK+D5LyvJoAwoxOwQp8wWl+AEQRCEzyeKUgmo85T/13UkCVTJxnEkWtLVlOmt/GjWWZvh6LY8XdH4f1/JAWyIWOUEvBK7vnDx935cgiAIwpZHFKUSENJ81OhhvmhYveN8sjR6ogxYbhwkdMWkwpvmV+/9aPMe7BZgryFjPhm4/WUksB0JSbJxHJkyNc0eL4kxS4IgCMKmRFEqETdPPA0J5zNl6dOfFcnCzKuYjkKZK4VbNql3xVmcHsyv3jxk8x9wCTt8r0mwWvvkbrfPYwO9Mk5VnkHyACDhV0xCqsOeL59FV1dkMx6tIAiCUMpEUSoRQwO1nNiwP4pkf6YsuWSDUe4eVmSqcWzYLbyO9lwZA4aHuOGixpdh2qyzMU2zOAdfYiRJYjf3eKS49NkzSxaQh1zEg+OGYD6PIpnYEqQdnUwmzKGv38nsj18oxqELgiAIJUYUpRJyxugDGKkMwWfmqVCS1Gkxhum9aAWb9+MNWA40uvvoGAjjd3KszFYjyxISkDXc/GjOuURjfcWOURJuOe3HqCtCsNAF6X/f/pYHlurkVnoxB+XZPtCKkVfJZ1Xa02W4FQskKK+Kc9ny17nt3buKmkEQBEEovu+tKLW0tHDaaacxZMgQPB4Pw4YN4+qrr6ZQKGyyXmtrK4cccgg+n4/KykrOP//8z6zzf0WjUc477zxGjRqF1+ulqamJ888/n3j88wfw5vN5Jk6ciCRJfPDBB5u8J0nSZ5b77rvvW2f/Nh6Yei7jvNuxIVXG2lQlS1N1dJs+CobCOF87TkJF8dpIqoKUU9AlE8NRkCwJSZY4Z8EvmdPyt6JmKBWvXfVrKvMqmY9d5OZ6ya7wkq1yUEdn2NG3AaPdg6uywMpECEmVqVd7wQRVtrEVhX7lZU545TfFjiEIgiAU0fdWlFasWIFt29x///0sW7aMO+64g/vuu49f//rXG9exLIuDDjqIdDrN22+/zaOPPsqTTz7JJZdc8oXbjUQiRCIRZsyYwZIlS3j44Yd56aWXOO200z53/UsvvZT6+vov3N5DDz1EZ2fnxuWkk0765qG/IzP2OpM7tjuGhmyUSZ71TPatozaXZnywg2Aoww7hCK9ERzOQd7NHeC3deTdZRSZr61T4kvxpwys8suSqYscoCU9fezW7emoJZuLUFqJU9ySo+jiD6ZaRaw1W9peTkMMoksnSZBOSG/oLXrBhSqAVm9Xs/7y4u1AQBGFbtVkfYXLrrbdy7733sm7dOgBmzpzJwQcfTFtb28Yy8+ijj3LyySfT09PzlR8L8vjjj3PCCSeQTqdR1f99fN3MmTO5+OKLefLJJ9luu+1YvHgxEydO3Pi+JEk89dRTHHbYYd8oz3f5CJPPszyyjiuX30CDK06FniKk5XkxOhbHVuiLBqitTrCndxUh0+BFcziSqdDgjpLMuqj29lOhVXPFzg9958e1JXr/oxWcPvtBKqvyaLrBgKHjBBUMSUGTLXzk6c8HaPZF6IjWYngVbhjxDDe370cho4E7zdwD7i92DEEQBOE7ULKPMInH45SX/++cQXPnzmXcuHGbnPGZPn06+XyeRYsWfa3tBoPBTUpSd3c3Z5xxBn/5y1/wer1f+Nlzzz2XyspKdt55Z+677z5s+4vvK8/n8yQSiU2W79OY+qE8uPMdLOxrYObaifz948l0d5WTsFxMbGhjd+9qDFQe7tkF03LhUwqkLRXDVokYNbSmDU5+7Yzv9Ri3FDuOH82sE64g5TbpU4NYHjdIEiNDnVgplf5cAJdt0EsZtqkgm7AuU4WDAy4Jn6Rw7qsHFzuGIAiCsJlttqK0du1a7r77bs46638vY3R1dVFTU7PJemVlZei6TldX11fabn9/P9dffz1nnnnmxtccx+Hkk0/mrLPOYqeddvrCz15//fU8/vjjzJ49m2OPPZZLLrmE3/3ud1+4/o033kgoFNq4NDY2fqVj/DbCwSBvHHo7VaFepgxZzSHDP2SfwGpkI4eUk3mubQINoV7ypsKGZAjVkhkR7MJyZFTZoszTy7GzTvjej3NLUFkdZs4hd2LFJHKORNbUWN7VgOmSqfb0IQdM8m1+LJ9DWE0xL9HIGE83ElDrjrHSauTwF48rdgxBEARhM/raRemaa6753EHQ/3dZuHDhJp+JRCIccMABHH300Zx++umbvCd9zgPOHMf53Nf/UyKR4KCDDmLs2LFcffXVG1+/++67SSQSXH755V/6+SuvvJIpU6YwceJELrnkEq677jpuvfXWL1z/8ssvJx6Pb1za2tr+6zF+F1RZ5tkfPsj7sTqeWbkDL6/ZngW9o3jDHkpFeYqoGcDMSQwJ9bEkU8eyXAPNni4cZAa7kvg1g0NnnbJZjrXUud06C0+7CXUVuN0FXCETl7vAQKScfJsXM2yh5CT2K1vJykQdSzsakSwb01ZAVum16zj0heOLHUMQBEHYTL52UTr33HNZvnz5ly7jxo3buH4kEmGfffZhypQpPPDAA5tsq7a29jNnjgYGBjAM4zNnmv5TMpnkgAMOwO/389RTT6Fp2sb35syZw3vvvYfL5UJVVYYPHw7ATjvt9KWDtSdPnkwikaC7u/tz33e5XASDwU2WzenNH96N250hXJcgFEwjmQ5up0AuIzMo3E97qoKpwRVkHZ11mSp6owEKlkJO8VCvpTl1rjiz9KlFv74J+yOF3IBOPubGqFCQvNBsxJhWs4xne7Zj+9AGMpJGvtfFhlwNimRT5U7j1lT2efbcYkcQBEEQNoPvdTB3R0cH++yzD5MmTeKvf/0riqJs8v6ng7nb29upq6sD4LHHHuOkk0760sHciUSC6dOn43K5ePHFFz8zBqm1tXWT8UORSITp06fzxBNPsOuuu9LQ0PC52/3DH/7AL3/5S2KxGC6X67/m+74Hc3+RHf/+KxqrBnCpJrYjkc9qRKwwU4KrWW7UMc7XzmB/nPXpGgwbCrZCvZ6gXEuzLFvDn6b8DVkWU2gB7PzQJYS1ApVKDstr04uftO1mjH8DS3sH4/Eb+PIGvaobv7sAKGh5E7eWo9f2Mf+QO4odQRAEQfiaSmIwdyQSYerUqTQ2NjJjxgx6e3vp6ura5AzStGnTGDt2LCeeeCKLFy/m1Vdf5Re/+AVnnHHGxgPv6Ohg9OjRzJ8/H/jkTNK0adNIp9M8+OCDJBKJjdu1rE+eWdHU1MS4ceM2LiNHjgRg2LBhG0vSc889x5/+9CeWLl3K2rVr+fOf/8wVV1zBz372s69Ukorp/eNvJmvpFEwZn2lQE0gQdGVYa9cyyhOh3JXhrRXboVg2S7ONUAAZGwuFDF4Om/0zEgnxmA6ABafcRqzTy7rWclIpL2aXDgOwdGAwLpeF3KcR83twFST29reQzehYEvSZZZiWi+mzPn9aCkEQBGHr8L0VpVmzZrFmzRrmzJlDQ0MDdXV1G5dPKYrCCy+8gNvtZvfdd+eYY47hsMMOY8aMGRvXMQyDlStXkslkAFi0aBHz5s1jyZIlDB8+fJPtfp0xQ5qmcc899zBlyhTGjx/PXXfdxXXXXcdtt9323f0SvkezDvgD/kwjSVUhZ0KlK0mzuwePKvHhmpE0DOolYvsJK2mWRRp5q2c4QTkLSDQF4xz91nUs7VtR7BglYcEvbybvs4m2BchKOk5BQevSCNgZsjUOzgDI3gKrcn5c3jSjQ93IpoMsQdIKsN9M8TBdQRCErdVmnUdpa1OsS2//1yWz7mdt+iOcrIrXmydQlYSsQatchY2CJ1dgpL+HFyPjOHzkB6zM1DLE00NIztOddnPKsMvYoW7Xohx7qdn1D5diuCXskAOSjJy1qahMY+QkanxR1iSbqFITVLn7qNELvJYcjQSocpZqPcqz0/5S7AiCIAjCV/B1vr9FUfoWSqEoAcx49Xlezb1MxqXjAJpkU+8M0BorZ0yoi/eiQzisaRFdagUJQ0N3TMb4umnrD7HarGZS+fb8bmdxVgRgyh2XQWWaQUYBt8cgX1GgJd+AacAgzwBBJcNqow63bJLOuNBUC1uRwHKQVYt5B20ZZyQFQRC2ZSUxRknYfH6x38HcPOkS5C4HWjSMdW6MlE6lP8HbfSPZb9BHdEtl9Bd8aFisStRimgo5S8frsuhOv8mRL3/xY2O2JXMvuomaznpaLD/tYQ9px021FqMqn8JDnjVWHdup7WTSOprLYmSoA9kCB4nhnm4OeeXkYkcQBEEQvkOiKG0lxtc289oJt1PTHCFXbrLWCVHrifGjYe+TcoXoNQNojoGbPLrj8Fr7SMaVdWBasCpVTw9w/pxjih2jJDx96eU0bwiR6vXR2V1BJBEiGvDS2VlFUMqwJN6Eg4NtQTKvMTqwAQnwKAYDRpDdn/l5sSMIgiAI3xFRlLYyj+//CM1VvQyvHiCmhVlVqGGg4MIl5fFLGRZEhzK9Zglxx8OizGA8momNhIHGG91DOHTmycWOUBKe+O1VHGmMRe0AzbGRspDVFWJRL7Yqobgc6tw9tBUqWVeoRcUkXXBj2W6CPofdXz4b0zSLHUMQBEH4lkRR2gr9c6+H6e73YJsFyuUksmmzLlHNytggDqv5gH+17MCh4Q9wqRZtmQqatSgAqs9iQqiP38w9qMgJSsPlp53MDyuGIsdB8oFWZSEFICjHqdYGiBiVDNd7SMRcDPb10GJUIFkGmuyQTweZPOvXJBJ9xY4hCIIgfAuiKG2l5hx6N8tX1pMdcNGoDrCTu5V8QuXptRP4QWgpa7RKogUfNjK14RgApiVjKhoLk83s+ex5xQ1QIq792ZlM6aqDDlDWWnj6TNKql3TGhT+RZnl/HT5vFjMHKAq7BFspODKOCYO0Pm5dchwvfvRCsWMIgiAI35C46+1bKJW73r7MgS9fiLuQpULK4AvkaDFDKLKE4Uj0FMoZK0VYSS0+LUekrZzDRi1mVnQMuwRbKBTg3r0eRlXdxY5RdH/5+4vcseF1jICErEpYXgdfwaGqMYqWMuhw1UDBQZEs8BSwTS/NnggbCjWEpB5GKLX84Qdf/BxBQRAEYfMRd70JG82cfic1+niWKjUsL9QSNYN05CvozlawvdzOWrkKG4msoWDEfEQTOuBQ7UqzsH8IR7/2c3q6lhY7RtGdePwPuXn7o/BvsKhwp2l0xalSokR7g0S0GjAcPGaGgD9LKCehahbtqXKQodpj87HZzx4vnFPsGIIgCMLXJIrSNuC+6T9ncvloLBMGOwPs4Gkl5M6y1GnAsBV8Uo5oSyWTRq6mUy6jTouxIVdGNuNmbKiHf7b+nDU9S4odo+h+cPAu3HfcOWRXQ8wboL+2DEtXGKu1QlxGD9vIeZnOXi+anCOrupFMGRsIahJuzWDaS6cXO4YgCILwNYiitI24c9fT2VuZyhqnnJVGNRYQkNNkMtC2oo7BVb0oapr2TJhT6heyIR1E9ZhoksU/Onflzc6T+eeqx4odo+gm7DiUf5z5G2hxcA0YhNQ8650KNF8BqcdFZ7sfb4OFlXNQZYlx/lYGcjp5FBzJS9IJMO3Zs4odQxAEQfiKRFHahlw17UiuGnwc7l6IrSmne00N5VmJvYcvxRVIsyLVwJSyFuammnHLDmF/lqTjJl+Q6LCqea77BR7++Lpixyi65qZqXj3ltyRTKt0ryoiuLCfb5SJVqRAclkY1MqTlALJtsZ23G8PQCZPHsmRsR6HcnWa/F84tdgxBEAThKxBFaRvzw7E78dghv0WvihKujiJ5CixOD6LXCvHTpgX4dJMVsXJWRaoZ7+rAkDW8HgPLkekt+HiqrYNfzT2z2DGKzut3s+D0W9DDGbyNcXzDU1i9DumMl7wWQLctjq9fwAt9wxmnR9iQD5J3PvnPrZMy/JLBDs/9ivUta4qcRBAEQfgy4q63b2FLuOvti+RyOfabdRl71rRSoWVYnyvjg2g9le4Uy1obGFnbzchQhGWxRg6rWk5WNXhlYCzjfF00qf2sSk3inqniuWa2bXPYQ2fRGwqBB+SMzPhwC37ZYFGhAielUBYy8LtzKLLNikw9LgzyKTeWW8IxbSZ6Vf60/43FjiIIgrDNEHe9Cf+V2+3mnUPv5I0NTdy7aC9eWr4dPT1l9OTCTGlcy/BgF91WGYm8mwFZZUq4DZdsIQHzs81k6ebnb51Q7BhFJ8syz572APYSC6wsljfFErOcNzubaY6m8PlN3Eqe1fFaVkaqcUyH8XIHMg6yDA4yq8wB9n/lxGJHEQRBED6HKErbuLnH3EltZT/bNbawQ+N6RgQj+IMG7/cOZl1fJT+pX4AkWTzbPQ5HUVkfLUfCxlAVoqbMbs9dVOwIJWHetbfDchllgxeXpaBLEp2aD1uTaclU4cnncAIKquGw5uN6Jles4tNzuY7qImeXseuTFxc3hCAIgvAZoigJvHv4bXgKBSKxCpZHmljVVcUh5SuZWL2OuKISVnMszdYxzNNDm1nB1MBaFByypoc9q9Zx4FNiFm+Aub/6PWYnKJKFqyyLXikh520KCY2s7kbJW0wodNDT6OWd9DBMCxwLbGRsR6MuHGX6K2cUO4YgCILwf4iiJADwz4MfwecpsP/g95lcvQqvf4ADq1YzNzqcF/q2o8qdYVVHNUFfBrcMYTVL2nAz1B+l1/Jy6uviMhzAvOtvZdLaXUh1++iMhegxw/hdeTTZYPD6JAsYwshgJ46jocgg5aBSjgOQNgLEC2F2fu4X2LZd5CSCIAgCiMHc38qWPJj7ixz67GX4ynvoy3tQFZmwmqbOFWdRSxNquc1pVe/yl75dyHS7GFTbx+4VG/hr2y7Uq1F8njwP7/EIsiz692svv8vlbz6Pq0fCcUFuV5uwlCVfATnbRcGRkOMOnnIbxchjeTRcpkHWdlHhGiCZ0vjnbldTXV1b7CiCIAhbHTGYW/jGnj30JhqNkSTifrrbw6yK1LGwv5FgRYZz6t7hr7270qDHqKmMc2LTAub2DUFyQMMhFgtw8euHY5pmsWMU3T7Td+P5835JaucUqb0tTI9DLOwildVxJFD7HWTJwa/GyBouNClLpT6AAyhSDsXjcPC8Gdz57u+LHUUQBGGbJoqS8Bm37HMZ49yDGd4Q4fChSzigag2ypPBE3/b47CyxjJfB3h7ytsbqQiX9HQHyho5fM+hVw1wx/wgikY+KHaPoKmvLWHD6HTDfQml3MHtAjTiYERlX2KGyuo+BzjCqz8ZdcOg0y5FkkBwXOdNDc6CXRzpbmDrzwmJHEQRB2GaJS2/fwtZ46e3/WtC+mvNn/xnTUcCBmso4/aaP44e9xxB/lDtW7UdW0chH/FQ09FLo8tI0pIt1A9UoqsH/7HgpzdUNxY5REna84xIC4QQezcZda9PRUQG6hBq2qZSSeLUsrZkadFeeRJ+b6vIkYVeOrKOTTUFKKjD3kIeLHUMQBGGrIC69Cd+JnRtGcPe0M9huSDsX7Dab08e8zUXjZtORK+f6j39IVtHoXlVJfaiHXStbSaguevJ+MnmVaMrPX9tOYda6hcWOURLev+g27EKYlD9Ad74cV5VFXWUMLQOKUqAlV4OtSASVJHoZqCmLpOHGAZJaGY5WyfSnji12DEEQhG2OOKP0LWztZ5Q+ta6njyNfuxV3mY0EgEM66iE74GVkbQeVNXGiXWHC1Qm287XxbGQHUgUXh9cv5unIOH5YO4LfTflZkVOUhl88dSevme1ogU9+k7bpIKUllIBDSO+ja30V3hqLZErD43dwqTkMyYOsGNQ4vfilPI9M+2eRUwiCIGzZxBkl4Ts1tLqSBUfegNJl4PRo0KdSqyaoqe1ndEOEge4QMZeL3oKXpb2DObxuMVYBbCRCLos5iTUc8OIlxY5REmYcfiEPDT8bqS9HpZ6kLpCkorKPQqdDtLMcT7VDtl+hvjKGU5DojFdjGYAD7UY163I1TH3p9GLHEARB2GaIoiR8Jaqq8vZP7wQlx6BgjLpwAlfeYdbSCehlObzuNHsE17I0UU17rgK330JSHCTJQUIibxv8dPZPix2jJIzfYRhvHHMbXW8H6YkHGchVoodkfJk8qahC1aAkPYkQbk+WkJJhimcZtiUjSxJ+j02N22T3F84tdgxBEIRtgihKwtcy97jbSRs27XhxV6cob+xnXLANb9bhyZYd+MnghbzSPpJGbxSfnCGWdgMQt32sztZy/uzDihugROi6zsKrbsH+yIa8icubI1uv4VZs4tEgHr1ALBNGclm8b4/AkRVG662kTBcGChOC7ew768xixxAEQdjqiaIkfG0vHv4A+Tx0R8roaw3zcvtYdq5bw4jyPh5aP5mqsiyjXD28HRuFots4gAQ4Gkiqw6XvHFzsCCVj3pW3YazX6ev2YqQ1EpKHGH7MuAtdyRNSEpgFhUIGVrQNQk5ZGLYKikImH2T/p0RZEgRB+D6JoiR8I28d9EfKgzEkn0k84+Nva6awLlvJdhVdTHKvZ1WunJa+SnQ3SNjI/75nICd7WZ+v4PhXTipygtKx8JKb8SRs1LiERzWpsJIM0vtRPBYpfORzCtv51lFTnsAXyFGppXBsBUmCsL/AlGcvLHYEQRCErZYoSsI39vKh9+FRbXYtW8eeVWuY7F1LSE+zyqxldW8tnqCF43xyNqnaN4BdAMuU6E6W49VMpr0gHqb7qfkX3Eq+U0LVLawymUiwAiutYOQUmj0dpDIhUjE3YSXDqlgNWUsGR6LMlaPBF2fyC+eL58MJgiB8D0RREr6V+UfexHKzkbe6hzKnayxzO4YRSQfxl9nIkoMi25h5ie5ckEpXilp3DxlJwVYh6vg5+vVTxBf8vy2+5mZczzjYbwMLQFouUe3Eae2tJ97uYvCgGDk81Oj9rIw3YNkSkXyAsJYFNPZ+6WJaWtYUO4YgCMJWRRQl4Vube9DNeDSLQFmOQFkBXbORJRvDACfjYGDhmApBV5qRSoKhwSgpU//k3z5Z5ojXf8aqno+LHaMkvP3ILdQFVHz+NG41i5HRGFfbgX9UntZcBVnDIS55QQLFY9KdC9GWDSPJErqW5+Q1t/PswueKHUMQBGGrIYqS8J1YcNRNBNJ+jKyDbmTx2FkKObB0GdVQGVLWw2C5n0fW7s64QIRhcvTfk1dKlOkpfvb+A7wXWVTkFKXhmctvYFJwO8yAQ7rgZWV/A9m0Tp03QtwJkSn4sBWJwXI/7m6LlKOB5WCikMv6uKHrDc6f9etixxAEQdgqiKIkfGdeOfIqfhTcFcmRyKfdVOgFKvU4tZ4BRsldLGkbwaghHXycrKQlXwFAztSQUHBkmd8u/gN3LPlTkVOUhltOP5sDK7ejkLKQOy0yXV5WpZsxEjK2KjFE62VduoraphipmBc0Gx8OjiWh6vCRNcARr15U7BiCIAhbPFGUhO/Ub/Y9mmtHnU4+pjPR7mVCLorV6+fV2FjGDltPT8bFSCnKilwNShbcmknWUkCCguLn6c6Puey944sdoyRcdeyZ/Hb4cWT9EoFhKSrdCRoqBjAzMutbq2jQ++iOh9BdForlkJYUUBwkCcaHOonaGfZ67uxixxAEQdiiiWe9fQvbyrPevolYJsPhL/+S2kASl2wyYHtRTZkKJc38bDOK5FCuxEFX8LsLtCbCVEgZBlJ+akMDGIbDSwfdV+wYJWHNqgjHvng75cssPP48ub0tYqqfQlRF9VsoHhuXlMXK+CBogyMz0bueD+JNVHrjpJIw+5D/V+wYgiAIJUM8600ourDXy8wD72JltIH50RGsijWwtlDFB2YTquFQRgq316JcS6BjgiOTsRVsS6LXDLBfwyomP31xsWOUhOEj63n2iEuJT1LonuAnkQ5CVsJVbqFrFrqdwZI9FEyZCgYoZCUWJ+uxgTQ+DLzs8PQvix1DEARhi/S9FaWWlhZOO+00hgwZgsfjYdiwYVx99dUUCoVN1mttbeWQQw7B5/NRWVnJ+eef/5l1/q9oNMp5553HqFGj8Hq9NDU1cf755xOPxzdZr7m5GUmSNlkuu+yyb7Vv4etxu1XeP+Z31Ll7qM6mCSfzBI00g6v7MV0SbvJIusraRBVhOUutlcQTyiNJENLyNHrj/HDmOcWOURLqm6p569SbIGkhrc+jdBTwqFlkBeykn0KvTrg8Sb9TQaU3BpaKbMuARGwgiC7DHs+I58MJgiB8Xer3teEVK1Zg2zb3338/w4cPZ+nSpZxxxhmk02lmzJgBgGVZHHTQQVRVVfH222/T39/PSSedhOM43H333Z+73UgkQiQSYcaMGYwdO5YNGzZw1llnEYlEeOKJJzZZ97rrruOMM87Y+LPf79/452+yb+GbefXge9l35s9xaTa6bJLLy5T78kiorB6oxCsbZE1wGx7c/gLZvBvHgbTsJpoMsOuzl/HGtF/jdm/blzd1XeW9825jt2fOxV4SJPs+2I02rroCFdIASTuAVbAZsD0M8g5gAhIyvVYAVQPLdrPHy2fz5g/+iCyLk8mCIAhfxWYdo3Trrbdy7733sm7dOgBmzpzJwQcfTFtbG/X19QA8+uijnHzyyfT09HzlcT+PP/44J5xwAul0GlX9pPs1Nzdz4YUXcuGFF37uZ76LfYsxSl/P5H9ehuS3KNgqFuCSHXxWgYwDg+UkHUoIA5nDKt+nwpPhpe7tac+U4ZLz7FrWwmXj7qUyWFvsGCVhz7+eiRkOIuuABbkcjPB3si5TSY0nTjRXjuazcVt5zIxCVndjAZJhMtTdzsU1P2fSxKlFTiEIglAcJTtGKR6PU15evvHnuXPnMm7cuI1FBWD69Onk83kWLfrqc+p8GvTTkvSpm2++mYqKCiZOnMgNN9ywyWW1b7LvfD5PIpHYZBG+uveOuYlqswY5baDbJnbaosxOkOkN0KkGsZDQbJvaQIpX+sbiMnJgg9dl8l50GP9vxUmsHhBzLQG8dcL9SEsN7BU5rFYTVbbojoXx2RaxfDmaz6RaGSCadTMo0IORAskBl8um067mkp6/culLlxY7hiAIQsnbbEVp7dq13H333Zx11lkbX+vq6qKmpmaT9crKytB1na6urq+03f7+fq6//nrOPHPTp6hfcMEFPProo7z22muce+653HnnnZxzzv+Od/km+77xxhsJhUIbl8bGxq90jML/eubQX3B4427obptAhUksECDYlCKPhNu2OGv4G/RmvbSlwixJN2B2uYgVdJIFDwuyjZw3/8+8uf75YscoCe9edidqrYo7VMAnG/gDGWw/qF6TKiVJa7qcsJPj41gjBUlCNhyyORVddcg7ft6y05ww8+fFjiEIglDSvnZRuuaaaz4zSPo/l4ULF27ymUgkwgEHHMDRRx/N6aefvsl7kiR9Zh+O43zu6/8pkUhw0EEHMXbsWK6++upN3rvooovYe++9GT9+PKeffjr33XcfDz74IP39/d9435dffjnxeHzj0tbW9l+PUfisX+92BKfWHshoWqkpxNlJWc/ZzW9zeOMiFsWaeHTDzgTtAi6XxaBQnEJBR1cNco5Oo57ild4/cuvCPxc7Rkl465g7yK8Pki6o5C0fck6lUFD4eE0j4VyWlOkGQ0LzOeheE1tRiBfcYCuYBR8bJJN9Zp5c7BiCIAgl62sP5j733HM59thjv3Sd5ubmjX+ORCLss88+TJkyhQceeGCT9Wpra5k3b94mrw0MDGAYxmfO9vynZDLJAQccgN/v56mnnkLTtC9df/LkyQCsWbOGioqKb7Rvl8uFy+X60v0IX82p4/dnl84xnPbunaw2qnhr9QhMQ2KEtw/FlOh3eWGdm9SYDHJeYlywHVPWsA2J9fkaKvMvce3c97l6yj3FjlJ0cy+/kZ9dcycLG1sJqgZut4E/AHHLT94CKQDutI1hyrgqM+ystrKoMARTVhjlS1LI5tlz5gm8deBfix1FEASh5HztM0qVlZWMHj36Sxe32w1AR0cHU6dOZccdd+Shhx76zJ02U6ZMYenSpXR2dm58bdasWbhcLiZNmvSFx5BIJJg2bRq6rvPss89u3N+XWbx4MQB1dXXfat/Cd2dc3SDeOOQGiEkUCjq2o7M2X4mZkfBFJEJj+kkVvBiGTIWapkmO0pouw3QUPk438GzEzymzTyh2jJLwwDUX8tP8bqTzOn1WBTnbS8ELLs3BbZhIKYdC2MFJa8zPD8MtFbAKMhLg8cgMUi0mv3T6f92PIAjCtuZ7G6MUiUSYOnUqjY2NzJgxg97eXrq6ujYZ/zNt2jTGjh3LiSeeyOLFi3n11Vf5xS9+wRlnnLFxFHpHRwejR49m/vz5wCdnkqZNm0Y6nebBBx8kkUhs3K5lWcAnA7XvuOMOPvjgA9avX88///lPzjzzTA499FCampq+8r6F759b11lw4k1g5qlSklTLWfxVOeKVMrFsgHxe5eD6pWwwKhjl60HRTRrdUUxLxhWAyZXrmP6MeEwHwIXnHMXLR12LvaJARX+ecJeF1CORKehY9SZaDuqlKJYNWdtB92f4OF6FLJn02pXsrPaw45MXFDuGIAhCSfneitKsWbNYs2YNc+bMoaGhgbq6uo3LpxRF4YUXXsDtdrP77rtzzDHHcNhhh22cZwnAMAxWrlxJJpMBYNGiRcybN48lS5YwfPjwTbb76Zghl8vFY489xtSpUxk7dixXXXUVZ5xxBv/4xz++1r6FzWfJj2/B48kQNTwMpPyoisN2wXZ2rmhhba6SfYMr+Z/WXYg7LlwUqPPFANAtqAkn+fFLpxY3QIkoL/ez+KobSZsWuaCE1lBAs21GSj3kHJU2rRxHdkgnwwx3deOooNsOCg7rrFpGBXvYe+aZ/31HgiAI2wjxrLdvQcyj9N074OlzKCvPY6Lgl/P47CzVeobXukdSUCV2q1rLopYh7FG2hpeNMVw8aDbPpCawvKcK3bKZd5QougC2bbPLXy9ADesgSyCZSBborgLJRJBGf4TefAW6O006X8mUyhV0pEPEHA9J088QNcJj08WYJUEQtk4lO4+SIPw3Lx12DwNxD93dQVq6q/k42sic7uEYbpsplWtY21tFg3eA1+wRFOIyPq+B6ajoOlSWp/jBi+J2dwBZlln407sxMgmMDhVjwE1+wIvjWIwtW093rgrLLdGopJCdHHN7hjHS24Ui2aDIbKCevZ8Xv0tBEARRlISS89Ihf8CKumgo72R83QZ2qVvHSFcvry0dR7mdp0MKky+ojPH383RkeyQbLAd8ikE8F+KcN44udoSSsejYP6EEe1GSaVS9gJnQWVFoxO8eoMKMsyZWw3ahCLgtXhsYS60c+/cnJTSXyYS//KqYhy8IglB0oigJJemdM29gTfsIPlrYTNfKGtRWncpgmuXuWmJ5F+V2lulDlxA1PKhWHhmJvoKPgqMwd+VYrn17erEjlIz5xz2I5dIwLJ2MHMDI6SQT5QxIYeqCMT7MNDBZasG2JJalhuDkP7kab6KjhGDKCxcVOYEgCELxiKIklKy5J15NY20dH+eqmOs0EUmFkVMGRweWMLV+NU+07oBXs1ibrsbJqaiSjQRoboM9a9ez979+gWmaxY5REhadejvy0hxSwUKVLAqSRsGWSNo6Q3M9zEsOp9wdR8Kh2dsF2NiAqkLG0pnywlnkcqlixxAEQdjsRFESStr/HHkJk5obKfMkqQsM4HIsZmeG8W66mZAny9pUBcgKdcFO+lNePEqeVMKDJDkken0c9eaZRKN9xY5REhbddDuuDxyUVQ6KKaEUVOLxMDGfhmJb9KYqUJUcG/I1THS3Mdzdj2kBlkzIrbDHzGuJ9vUUO4YgCMJmJYqSUPLu/8HZHFF9AD24SKoqcXS6Ez6WJ+swDBeVDJCWfNi4CHlTWKaGJjtYGZ1C3sNFiy/g1XViBm+A9265hV3r67AHHAqmRN6RGYhVYwU1/L44jqPj1jIsTVSxqrsG05BAsXHJFrIicd/Ko3hr/kvFjiEIgrDZiKIkbBEunDqN348/FVIqdtyHlfBQbiXx+fIM4GcgGyIopenvDzJ0VCuduRCS5WDkNGxN45I3NnDHgruLHaMk3H3iRVzSvBuunjyKZuEoFlIO8jkfde5+7LxMgz9BQdVx9cl4XQ4DhhdHsnkpNZFLOl/mseWvFjuGIAjCZiGKkrDF2GvkaP6+1/nkFcjKJl1mGfGUj2zGR1hKk8trZGNefj78DZ5vH4OrIYfHU8C0FTxB0LS/c8GblxU7Rkn4yUGHcOOOP8XTGsPttVA9JioFLElCdmD9QC3JlESuzIYCxNI65FUMFAoZnbvb/sFxs35T7BiCIAjfO1GUhC3KsIYG3j38MqQeL2E9SblnANWwaFtRj5NVuGG/x/goNoiF88ehekzKQkm8Sh5JhqgRYmVmgB+9LGaeBth394k8fsItJFtUCt0ujJyfnlgFA6aHXJeMpoLPb6PrOcYGOlC8NmEpjSxDpS6xNp/nR7PEI08EQdi6iZm5vwUxM3fx2LbN2a8dx4SqTkxkRrq76TODPN82mo8WjCU0fgC/UUAvyzHK1c07q0fyw+0+oCcdIKDmWZiqZPYBDxY7RkmI9iTYb9Zvsbo1JN3BqgBfuYmcA92TIxPVMDUFxZa5dOSr3PDevgwaEac/HSJngkc2ee+w24odQxAE4Sv7Ot/foih9C6IoFZdt2+x0z3XkbQ0kkOIK7tocSnmeoFkgVBPDY1ksj1dhdfm4aM/nWdQ/hA35MEnceMjx/LQ/FTtGSeiK9HDgzNvxVufQVRNDcZNMqzS7umhNV+MqyPgqEwRkk9ZkOS6fjZ2TsGSJoCtGNu8w95D7ix1DEAThKxGPMBG2CbIs8/6511A+tJOKUIJwY4KyQJIRtZ3YZQU0y6Y9FkIeUHEqc/SYHlbnKnBpNraj0pGp4KQ5R2HbdrGjFF1tfTVzf3IN2bd1Brr8ZLo15AR0pquReyV8lQl28XeyfmUZw/ztVCtR+PdfsbK2Gwc/k8XDdAVB2AqJoiRs8d46+A8MGA4VdX34y9M4BahzYiyPVZHq95FB5YwRb7JwYDgdmTJ2DragSBaKCn6fyhEvn04m01XsGEXndrt5/+ZbcLdkqaweIFybZlCoh5OGvkvS9PDigpEEh6Zpd+rp7A+A6ZDNSigyGJLGKFeGY2afWOwYgiAI3ylRlIStwpLTbiHZo9CyZBCrljeybMUI7DYf3sosp018nYXJYXRmgmDJLG9vRFEtTEvGoxoEPSZnvHQ5K3sWFjtGSXjv2rsYiMukZ5YTeaOeh97dFyujMXZCJ6bsRTVTSKqOFJCp9iUIkcEBCrZES76cs2b9qNgRBEEQvjOiKAlbjTkn3EtZQ4ERo1vYa9f3OWi3hUwa1MbbPSNZFqshlg1yStO7fFyoo9KJoqgOeVsljc776cG82nYhCzv/XOwYJWHBMfdghXPIe+ZwTcmi+w1ShkZhg0w+HUDyOiT6QbGhN1aObtuEXAU0ReF9czi7PHOxuKQpCMJWQQzm/hbEYO7SdPHL/49Z8dUoOuCAYytU6TF2C2xgVmQiocoYacuFbSiMDnWgKA5zNwxnYqidHreLqSEfV+x8a7FjlISJt16Kz5Cw6wADbI8DlTLpXhhSESUjacSdAFrexO0zSVkaqm3T6OtjQ7qCh4afytjR44odQxAEYRNiMLewTbt9+qn8cvB+uDI2tfk8ZdkC8f5K3s4OJVjeT9rSMByFXatWEzM8RPMuMqZOIuOlQU9SI73LNQvOKXaMkvDBL2/BSNqYaZuCbmPrFnXpXnwug3jeR8L24zIMLM0mldcZIXVRkBQ0xcaRNH7echd/ffvhYscQBEH4xkRRErZKJ+26P0/scxF9HhW9JkVlYw+WJNOVC5M3dHYOryKdUVFVB68kMcLXzZj6NmwkhpT1Ecv28It5RxU7RkmYf+OtqDkdaUBB7tOI9FVhKxpJzYUnVyArKUiKhq7lyesamgJ5W0OSwa1I/HHgfW5576ZixxAEQfhGRFEStlpNdbXMO+h3SFkL0hIBM8fulasZFuwlkqgkqgTRpDzvtg8l0A87hzawNluNG5P2zhoCWpZjZ59c7BglYe4vbmB4fYi85iA5ElYCHAP8vhSKoqBLGQbnu+mOB/iRazEdhTJsE2TJocKX55nuFk6f/ctixxAEQfjaRFEStmqqqjLr0PsZSLkxNYXV2XpsyyFj6qiGzHsbRjNFWUvNkH5WFaoxkck6OjI2A4UAAU+eH716erFjlIRHf3w5x0jjsIM2is9GNy3ieJCsAqFYllanFssts8Buwo6qSDjEEj4cJCq9BVJKH6fNPqnYMQRBEL4WMZj7WxCDubcsu/zxCvp9XmxJBgeGuLoxWgPsMGkVDcEBnh6YyM6BFj5sa2Rc3QY0XUWV8ywfqKXcl+CRPf5W7AglYdnyFo6fdw/l1Xk02SKZ0bE8Gk1mN5ZXoTNbhi0raFqOSjuHJdnIksV4fx/z4/VIhTwvH/pQsWMIgrANE4O5BeFzzP/5DUxuyrCndzW7+dYxtW41x0x9G8Nl86+BCdRoCfYoW0NfdwWmqlHpjZEyXXgx6UqWc+UbBxU7QknYbkwzr/7wSlIpBXudjD+Zp0aP0uEqJ9JZiY2EZDmQhT689KbCKJjIEgwNxhkVTnLcrOOLHUMQBOErEUVJ2Kb8bd8bGFu9E30hjRfz2/G32M6szA7i7EFvMjW4isteOZadtv+YTEElqBeIFAJECx4CqkG3HmLKExdgmmaxYxRdZXWQtw79HXFJJ5ny0tsWxsooOB4HTSug2nm0PASlNJLXoSVWw8pMBQ7QY4VZnx7Evk/8vNgxBEEQ/itRlIRtzmV7n8P+vv0w1npR+h1SPQGunXME/1o4mT22X0Leltm+opvetA/VkFC8Br1pL6ak4rZVTp9zKolMX7FjFJ3b7WbB2TNw1hoYHlAkCysr4YvZgIIrVGCgEKSMfnx5hw67gnWpStyyARqMKuvk2FdOLnYMQRCELyWKkrBN+uXuR/K3w06mqiJGc0MHkycup2JYDx7ZYaeaDvKWysepWqwCyJJCRtMomDJOTmZ9rJYzXr+UmChLAMy7/U6cjIScgmB5lrSsYWUUYoYPl5Sgt7uSYG0ajSy5qIaXAgAJxUtbuoonPphY3ACCIAhfQhQlYZs1ur6Z34z6FVgwIRxhj/oWGkL9vBwZxaK+Jpw0pDUdOe+we9U6dgq0YCgySBJu2eLsty7htda5xY5REt4/5RbMFoW+PjfJgkYaCSshEepVCdTnSNhurLyGz2WQsFQogMcpoLlNOqwwj76/l3jkiSAIJUkUJWGbNql5OA/vfg9PrZjAzFVjeLdtKN6CRW/GT0Jz47YsCqpMbz5APuPCxsbKqki2Q3eyjL+suIcnl71Z7BglYd4VtxJcZxKsNAlVObirIFrvpYoYuZSKL24QDGRY21OLRzfxZB0cC9amqskXLPa44VIKhUKxYwiCIGxCFCVhm+d1u3nvmFtJyTIuj4nutwgoObqTIcoCKarcKfbzL+epxZNQKm0wHNpzAfKmxrruOu5rf5xL37252DFKwjvX3I61EIz3INGlk+rQya73UeukUGtMOvvLsGWZsBnl42wjqS4fdd4oBVSOnf4xd75+KKlUqtgxBEEQNhJFSRD+7bXpN6OnCrhdBrVlCbarjjDS28NQp5/7396PXNDG6dbZd7sPaahIU+/rp2Bp+HSD51dkOeKl64odoSTMveI2nHUSXiNLdd0AdpNF0vDS0xGiIEk0OBGknItMQaK6cYDxch+ZlIuwnueFJ3fi6JkX8FHn68WOIQiCAIiiJAgbud1uHjvsIRa/NYRlbwxjw7uNPP36ZF5aOQ51eBafKTO8qpPX14wim3KR9+tUkEKSwKPZqNp6jnjxjGLHKAnz/98tNC+qIfuah8xAGFVyaLD6GedeT3+6is5YGUbWRSiXx+9NUefO0poNkY172LumnVNem8kD74tHngiCUHyiKAnCf1hy6TW4q5JIlRauqgKqoyG1uthj2DJW91YytDJGIqeyob+KwU299Kc9SICmOKxJVnLd/P2KHaEkPPqHX3HEztNJvQu5Ng/d0UqWfjySgqnh+GUaAzGOCr/P2x2jWWFW89TqMciOg0fLE67K83hbkoOfPr/YMQRB2MaJoiQIn+PN02eQz1jkEhrZgoTlMenOVlKmm3RlXPS7fNTFMvRpbtyagZFV0GUTV1Lh1ZYdmPp3MZkiwEVHTecfF11EpZGkvCJN49Ao5Z4Mpwx6hx+Xz2dpphG/ZqJ4bKx3VILjE6zqrEeRbDqz1QxVOtjub5cXO4YgCNswUZQE4QssPPdGFLeEvzaGrlskLRgIy3TkqqnoMgmPiLEhFiZZcJGRVSRHwijI2F6J48cvYpeHLyl2hJIwfGg9D55xHe64TI2RZVygm+U9g1jVM5QBJ8CA7uPRd8fj6tI4YOePeDPVRMrQQZLY2dWOXjDY9dGLih1DEIRtlChKgvAl5p92LZak4krJpNZXUdkJE6va8I1MsC5WDjKk20L4/VlW5ioxKhwMQ6GARk+6gmNeOlU88gSorAzzh6OvY95HTXTqAewqla4aN++2N/PMP7bDN0dj9KFtrB0IsYOrG3ONjoSFlZOoL08Qc4Ls9MylYq4lQRA2O1GUBOG/eO/IGSSMcqKDLDaEvCxPV9Md9+EUVJItYXJeaC7vRR1QwZDIxDx45QKy4jC+sp3Dnzif9bHlxY5RdNX1YebfeC1t/6hm8XVD+Oi3zehPuwgZDnv99CNcWpbWfBlrghVYlVDrTvDCnHEkc26MnIam2Ux+7lLW9ESKHUUQhG3I91aUWlpaOO200xgyZAgej4dhw4Zx9dVXf2ZCudbWVg455BB8Ph+VlZWcf/75XzrpXDQa5bzzzmPUqFF4vV6ampo4//zzicfjm6zX3NyMJEmbLJdddtkm6/zn+5Ikcd999313vwRhqzHv7MupT1eR79VItQToaa2mP+5n2LAIzZV9xLI++hWdqvIEu9euomBpYEn05QJkXDrHPfUwc1bfVewYRSfLMnP+ciPJXQr4pyQYdth63NUpZsWHE0mW01sRwF6sUXBkflo1j9SOPhL9YSTlk/9e67x9XPjRNdy86NFiRxEEYRuhfl8bXrFiBbZtc//99zN8+HCWLl3KGWecQTqdZsaMGQBYlsVBBx1EVVUVb7/9Nv39/Zx00kk4jsPdd9/9uduNRCJEIhFmzJjB2LFj2bBhA2eddRaRSIQnnnhik3Wvu+46zjjjf2/X9vv9n9neQw89xAEHHLDx51Ao9F3EF7ZCzx5/KVe++C9mD7yH7ZdQFJu442Hgo3LM4XmqPFni7WU077SUx9bvhGPINHkHWKEMYqgW55nYWloWzefUSX8rdpSi++CWm5j06yvpc7thB1Atm555XkyfgtHscFTZhzz6x50oPyFGu8eH5kiAQw4XsVyQJyMLmTewiH/tf2uxowiCsJWTHMdxNtfObr31Vu69917WrVsHwMyZMzn44INpa2ujvr4egEcffZSTTz6Znp4egsHgV9ru448/zgknnEA6nUZVP+l+zc3NXHjhhVx44YVf+DlJknjqqac47LDDvlGeRCJBKBQiHo9/5WMVtnyvrVrFxe/+DyYKOBAK5UgZLgIpiwMmLCKZc/HPpZNRcrDvpCUs625guDlAvF5hsCvKMHcd5034fbFjlIT9T7uQzK46WUUFt8U4rZ+97FX886kdqPxxmo/XDyJbCX7NQPYajAj2sCZbC30SVJiUM8DLBz9Y7BiCIGxhvs7392YdoxSPxykvL9/489y5cxk3btzGkgQwffp08vk8ixYt+lrbDQaDG0vSp26++WYqKiqYOHEiN9xww+de0jv33HOprKxk55135r777vvSwaL5fJ5EIrHJImx79hk5kkemnsGulcvZqXIDEwOt/KjpfX66y2wWdg/liWWTsdMy+475iA+izSTSPj5Y34yDRJU7iZH5kOkvXFDsGCVh9oN3oq3zUfGuQdWzBt2zgryQHk98P4Vla5ooVFvIbnDnDRS3zLq+KhRMJEfCpUMOP3s9e2GxYwiCsBX73i69/ae1a9dy9913c9ttt218rauri5qamk3WKysrQ9d1urq6vtJ2+/v7uf766znzzDM3ef2CCy5gxx13pKysjPnz53P55Zezfv16/vznP29c5/rrr2e//fbD4/Hw6quvcskll9DX18eVV175ufu68cYbufbaa79qZGErtn1zMzPCD7Hjn3+PXAaODFIOzCwoDkwds4yP8oPQjDyDtAQfSUNQJRMJCPnyTFHWssszv2L+j8Qz4t646Wp+ds0feaM2gp5VcRQHyWuRcUt4FJlAV4ZCvYPfTJP1exke6mZlzyd/uco4LnTLYfoLZ/LC9D9+5i9LgiAI39bXvvR2zTXX/NeysGDBAnbaaaeNP0ciEfbee2/23nvvTYrKz372MzZs2MDLL7+8yed1XeeRRx7h2GOP/dL9JBIJpk2bRllZGc8++yyapn3huk8++SRHHXUUfX19VFRUfO46t912G9ddd91nBoZ/Kp/Pk8/nN9l/Y2OjuPS2jdvp77/Am5MwLJVxg9pJ6DJr4g24rTy5AS9EVVzNOfYc9TEFS2WSewMDip+/tuxMIWGz+NgZxY5QEhbPX83P/vIADHWhKA5OzEQaYWF7JVx2gVzMhVQFsmJgWwqKImEaErpiM9rXQaPSx7nb/4XKcG2xowiCUOK+10tv5557LsuXL//SZdy4cRvXj0Qi7LPPPkyZMoUHHnhgk23V1tZ+5szRwMAAhmF85kzTf0omkxxwwAH4/X6eeuqpLy1JAJMnTwZgzZo1X7pOIpGgu7v7c993uVwEg8FNFkFYePwMknEvBUVlWbSBtZEGCnEXoaSN2eMmF5KobeilSo0xkPOysrMGWXJQVIfySpODXjlbzA8E7LDLCObddTN0ZTHqLeztJXStgBZ1KBTcSFUQdqcwW7xovRIOoP97iqrWQgVz0uO47L0LeGONGLMkCMJ352sXpcrKSkaPHv2li9vtBqCjo4OpU6ey44478tBDDyHLm+5uypQpLF26lM7Ozo2vzZo1C5fLxaRJk77wGD49k6TrOs8+++zG/X2ZxYsXA1BXV/el67jdbsLh8H/dniD8X4svupbaoEH/+gqSa8vIt/pZ3VdHYFSc7SasZ7x7AyvTg6gopFE8Bnnjk0tEiuLgyDKHvHgumcxXu9y8NZNlmQU334ZsFJA1k6zHg1Vl0zyoFySb/o/LUeQCTjUgQ00gCjmFMi2NLSuMr+7gb52z+etH1xc7iiAIW4nv7a63Ty+3NTU18cgjj6Aoysb3ams/OTVuWRYTJ06kpqaGW2+9lWg0ysknn8xhhx22cXqAjo4O9ttvPx555BF22WUXkskkP/jBD8hkMjz11FP4fL6N262qqkJRFObOnct7773HPvvsQygUYsGCBVx00UXstNNOPPPMMwA899xzdHV1MWXKFDweD6+99hqXXHIJJ598Mnfd9dXmuxF3vQn/6bhHL6R8cAcZyY1bMikjQbknw9JkI3oK5JTB4KH9rGprYLleRciVJZdRUfIyExrXc8WYe6n0Vxc7RknY5cZfYtheUBUkVx6lOo87LWPUOkguUOMSmpojo+kcHFrKy9ntOKZqHjM/3pF9h33A+tTO/HH/2/77jgRB2OaUxF1vs2bNYs2aNcyZM4eGhgbq6uo2Lp9SFIUXXngBt9vN7rvvzjHHHMNhhx22cZ4lAMMwWLlyJZlMBoBFixYxb948lixZwvDhwzfZbltbG/DJJbLHHnuMqVOnMnbsWK666irOOOMM/vGPf2zcrqZp3HPPPUyZMoXx48dz1113cd11120y2FwQvq5/HHsnAx/tQqbLy0Dax7p0LR93DGY7p51Er0pFQwpsiRVKBam4Tian4ffkKZgq1Wqa2xecypK+j4sdoyTMv/xWKpIScl0CpcYAB+zBDpYE7piDV0mTLXgxCxJPtYxlsBnDkmUyUR/zkkMZXTaPK949vtgxBEHYwm3WeZS2NuKMkvBFXl31IfctvAsz5yEcTBGqSjOyuod13TW8E2vG1BT8coH2Lj97j13Px2uaOGT4+/Sk3bQrlZzauA8HDhVf8gB/fHk2/3h1Ft7BJpqrgOm1Sbi9OIZEVpaY4O5mFRUcHv6IDivE2lgNmidH0GXQnvcTdByePkDMuC8Iwv8qiTNKgrAt22/kBH6zx1W06X7aklV8tHoo//PhbryTbybraLhsk4G0i+qKLJ2ZAOVVcTzeHBnTRVcmxD2tb/GP5Zf99x1tA34+fX/uP/4schUmkVCIHrWMTEFnr9qVuFKw2qxgx0InphvefX8Mwyr6GGb1UrAVMoaPqdXLOeK5U4sdQxCELZQoSoLwPRnf1MzrR1zNQECl3+siY+mQkyj3Z4n0eHErDo0VA3RuqCY64CVu+2j2RclZKqps83pbG9e/c0mxY5SE7SYO5bE9rqR8UQzv4hS+ZWneigynviLJHukWqur7efWjEfgCBd7sHUpteY4R/j5AotadoksOc/dbexY7hiAIWyBRlAThe+T3ell01E1UhmIokkM65SGb0tlr7AYqwklWrGqkrGaAAxs/Yn2qnP6MF10xkSWJVVSzVupjx39cUewYJaGuoZpXb/oj1jqFobVxxhk9jAl2EJFdvPDKbmD5Uasz7JRZx/yeeka4uvBpWTyygctls3igiQNmnlXsGIIgbGFEURKEzeDVg+7GZZn4FAMnp7F09WCMtI5bz7FXcBXdapgGY4DnOybQ5B9AVwo4gCPL7FAW4adv/rTYEUrGe4/dzpquMjo7alnw7jiyTpgxI1roKdcZ1t2DpUhMHNTNnyJ7E9ANVmdqsG1YnhrEEAb48fMnFzuCIAhbEFGUBGEzmXfijVT4exnhijDB28bkyjXsNWYlS3ONBNJZnm8ZT6Ayz4DpoT/nx+NYAEwIdfJhSwOnzD6hyAlKx3vX30GmI0doTQxptoR/tcEu9gY+9tUwYVQ3b/YNw6ukqc338E50KPmcjpSDMWW91AViTJ95WrEjCIKwhRBFSRA2o+cP/hMJaTRxVaMzFsaKQ88GH//aMAlvdYFaf4wyPUvG0tlB6SRtqOQsnWTWj1uzeXHZxGJHKBlz/vAHOvYO4tq7QPMefexY205dVYq/tU9Glg2kmIUS0MkbMnLcpokobakwMSPAQK6SM189qtgRBEHYAoiiJAib2TOHX0pd2Vg6tCAfmY14mgy2H9qK353BrVq0ZcrwWQZmuUOdK8VjXduB7ZBVdD7KVXLVa4eIR57823sn3US8vYoXOkcy0xhDVnGjZXMc6fsQf5XNuu5y+tJhCsicN2U2L63ZDtXO40gyq/L17D7z5+J3KQjClxJFSRCK4O69L2T7ws6YkoSm2aRtN1nLQ3cuREUhz/jQBlYlK9hF7WLA8FNVEUeyHbqNIHvXr+Lst48jlRKPPAF44cobcb8TJtnqx8qqlPsKPNmyM11GkP5cGLnPZHejlSXdDSiVsFvFemwbMqabMd4o1719CLFYrNgxBEEoUaIoCUKR3HzgyVw54kSkdhV/DzTFUuyqtBKuSLE2X82R4RVcu2IqVkZml6EtNBQGqNdj6JrF0t5mpr18M+u7FhU7RkmYdc/1DJtbR+xxjZ6V5cR6AjgLZbT1Mof5ljJx8AbuWjGNIYEOZvdvh9+dRlMLOJJDwJ/mqNcvYl2XmBFdEITPEkVJEIpov8GTOGq7n+B4bJqb+vAFTSZpnShxhd8sm4aZ1xld00Gy4OXV6CgqNBO3bGIgM6Qsyuyec1jU9WaxY5SEhx64mP123JHajxMcpyzk5yPf4aej3+Kp3u25df10RgxpZWdvB6taanGSEuP1DmQg4+iMDOb4yeyHuP7tPxY7hiAIJUY8wuRbEI8wEb4rC9at4cevPobjlkACx5RQ8ja7jlqL7rKx+h0qKpIcHF6Dx8lx0eKjGV/fQmchTL0/wQ/CIY7Z7g/FjlESbv/jEzxZeBt7qI4kOZTrcRra+jAbPSxeNZhBw7uI5Kto9vezLl7OCc3zWROrY25iMGPdHZhagMd+cE+xYwiC8D36Ot/foih9C6IoCd+lnmiUE1+7luraJKpiYVoKWtxiRaKaCY0b2MPXxdBQG08unswiox48NrpmcXjNMl5pbWbqoB7O2/m5YscoCc+98B43vPYMdrmGJAPYOI0GHjlLyu1jV2UdSbfKarOO+lwKyW3TkivHb+bIyjqDw908vv//FDuGIAjfE/GsN0HYAlWXl/PykXdRlR+gvaeM9r4wWjjPMaMWs6e/jSGhNpa3DOb19DB2HNZCFhVdLaDKNgW3Tm9B4ro3Dyx2jJJwyEGT+fMxp6AV4qQHOaQGKVgemYpCgkZjgLjmYkWsnh+Wf8TUQSuwWgzsgoSZ1TAMGcOUOHrWccWOIQhCCRBFSRBKzIypTxLqL3Be86scV7OIKaE1VJPkobf35Z4NezCqPsLizgZcFhzXsJB58QZsR6LelybgynDX/KnFjlASxu0yktcuuxXXsjj1Vh9lhRSqz2GDFWZtrJofNi4hlgrzWs8YOgZV4fS6qK6OgQGmS6NOy3Ppu4cUO4YgCEUmipIglBhZlnnilHu4d9We/GLO8Zwz52R+tehwVtgV7DFmOW2pENmCju7OMViN0+GEaN1QBoDXZ5Is+Lng1YOLnKI06G6dt666CcULI2t6qKjKckDdEkJKAaWgsCpdReebCoWkRLBugHwBVB/kbBVUCdIy058/U8y1JAjbMFGUBKFEvXL0H5D1PHaZias8R9yj817XcKy8TtiX5ZdDX+H3G6ZS40lR7S+wPl5GwVJYa5cTtco5+IVTih2hJHi9Xl486m7mPtjAks7BzOsZTUFWef21ofRGXGS3D+K3ZEJ2ga4FDUi2TTiVJ6ClWdg/BL9a4I5Z+5LJJIodRRCEIhBFSRBK2PyTbmJIoJtxoTYG+/oZV9bKxeNf5tymt/j9hv1wBwosXNTAweM/pD0foqu3AlWSaHYPcETTcn7x+hHibAifnKVb/NfbyC930d/pJ9brpbeunLwRxpUxqFD6aG+vRh2ZpSHcg6w4xLJleCwDtwc8NTY3vvFTEpnuYkcRBGEzE0VJEErcv6b9idWdQ8nqOh8lm5ix/gf8dWAnvK48789r5sBxK1kSqWfPqpU0lffSrA7QliojZ7rpsfz89r0jSKVixY5REhZc+1tc7+apXNZDU6aPkdZqjIJC12v1qGV5ylwJ7C6dAclDazbEUSMWYBoyOTSSeS83LfoZiyMfFTuGIAibkShKgrAFeO3431EW91AWscivDLLmg0b8cZuz9nqH1clyxla0sbhtMM+1jafRE6HVDuHRcvQaQVYa5fz2gxPpi64pdoySMP+xm0i4gnRRzjpPI4pLRdk1R6AhhTSgkChzUW4V6EwFyXs0lq6qRbUtEqYHVYLfzLmXq2bfVewYgiBsJqIoCcIW4vGjbsLrrmXC2JWUD4rSr7poS/iZXL2OpZFGep0AU8raaE1XUO+KkjVUvEoeZJAtN3/4+BzeWy/mWQKYd9sMRruDyHEDd5uNO2Ni5yTqh/WgJiTWFMq4YPhs3uwdgatKYrTUidc2yFsae9auY1FiDae9eGaxYwiCsBmIoiQIW5CnTvwFSv/eFFISVU4ax5ZY2DEUy+8w1t+DpuWY1T2WYe4Y967ek9GuXmTbIagWmFzRwf+sfZhX19xX7Bgl4W9n/5ID2J7sIAMzLENG5oNEE64em/NGvMWz0QksXN7ED2oXc+9r05g6cgXVahJVthk6qI/OmM6PZ55R7BiCIHzPxMzc34KYmVsolvvffI0X2h9nXH07Xj2LLMm83jKGguowKdxGFC9rspU0q0myLg0nI3HOiNfpyAaZl2hk34odOXLcr4sdoyTMmf0BV732EA2j02gui6RfoXdpgFh1gP2bPqJ+Q4pF1khSOZ2KIUn09TbBXTO8+85Idh6/klha5q+HPFrsGIIgfA1iZm5B2Mqdudc+/GHadazsrmR+ZCQLu4bQ7O/ihOELeCM+jGXpGnbWI5heh2n+dWR1mY50CF0xqXBnWRx/hz9+8INixygJ++4/kb+ecgWx+R76XG4KtsaEiRs4q/wNVv9rCPPyo6mqTbLLqLX4g2kWpIaRzuk4tkQejX41yBEvnVTsGIIgfE/EGaVvQZxREootVzA58KkL6XTKsR2ZkCfFKK0bI+dFrjDxFiRyhkxzuJe+vIbPsvD5C4QKWQqajCnDVZNnFTtGSSgUCkw95yr0wSqyz8JrZdlt3HKeXTiJfSes5ANnEOUfZwjsl+TDlc0E5ALDGiKsMapo1gb4IBJm/nF/LHYMQRC+AnFGSRC2EW5d5bUf/4Fmq58x/l4aXBkKuou8T2EsMRI5FUc3GebqYaS3jx7TQ8GWkW0Zy1ap9GQ56c0Tix2jJOi6zrt/vglPvJ+yWJJyV47enjLcQ7JY5RbeeRaZCTKFjJv0sjI0bAqWTsFUKegaB41cy+mzji12DEEQvmOiKAnCVuCln/wRJ18gnvagmTKd/QHeTNczLNTLlMA6Xu8awupoDcOq4nSmQ6h+A8NSKdOzDPLHOWHWT4sdoWTMnHEvLbafVW/U8P7Tw0g9V8ZrH4xj6DHdeCSHha+PonpkN70DOvJylbCdxnHArRh8EBvC5OfPK3YEQRC+Q6IoCcJW4tmj/gQDecyCyX51Kxmm9rMqWYbk2BiGi0FV/cSTHrySydMdE2nLhgDwOAWCeo57F+4mZvH+t0W/vQkjKJHfSaH6hzECrgKvzBrL0heHUlXdTzThYbuREbq8PqqSOQLpHKoEpi4xOdTBOXN+XOwIgiB8R0RREoStyJwz/kBnV4hnVk/ko0gjKzsbWJWrpKoiRWu0mpykUuNL8YOqZexa1UJPzo+syuQUjd5cmH1fvIRUKlrsGCVh0UPX4HSb9H4cwIzIBK0C7hEZAtUpJgxpo3duFcHqBL0fB3l3XRPrM2FkGSq1PB35MBe9LR5MLAhbA1GUBGEr8+aZdzDW60EzDIaFeljbXU8q58GIupAdB8OCtckqmsN9GLZM1PHhk/LEHC+ZrJf/WX0IrV1zix2jJMz7/e9w2g2kFSo1dpJBnXHSz4VYnqyhcvt+ep6owDcyzcShLSxa24ja7xAteOizArhMmV3/cUmxIwiC8C2JoiQIW6HHT/wVPxy6F2nJRdLtYkWyinzIgZRMNOvjiOHvM79vCG2ZACnDTV9bGWrWQlFtXu0Yz71rb2BV5P1ixygJC//2O/Jqno41ZeSqdJRxJvozCpmcC2N7m3yVRE7TKLS7Ccp5ui03smMT1C1G1fSy68yLih1BEIRvQRQlQdhK/Wr/w/jZmB+xo6eFPXzr2N4TYfqoD9m1voV3e4fTkXajBNykcworlRrG6T04lowpyZT789y27lZW9z1T7BglYe5fbqXMlhiQC3SkQgzs7GYgoLHLuPVkMjqrX25EcWR2G7mGVclBjJV7aE0HafTECWg2k5/9ebEjCILwDYmiJAhbsR+Pm8o5E+5laTZEux3i9cgIXmkfQt6lo4U9dCT8rFjewM7la1HKTXIJnXxCR5NNXHKBX3/wLI+uuqfYMUrC8/9zPXtIE/F+nMG7vkDi7TCvPTGW/t4QkqQybeoSFqQaQIOI7aPSTrMiXYFbM9gx2M2PX/+JGCwvCFsgUZQEYSs3sraa/7f3DFZ11tCpVmAHvLQky8ivl/lg+WDGD1vPD8tX8If1e+GrTTK1eTk9hSCGJdOarkTnPu764MFixygJt15wKruMaUCdnKeiNkPDXnH2GruG2t27eT02kr5CkF2TbTS4YhgBmbZcNQVLw7AlXBmJn719LLGYGCwvCFsSUZQEYRtQW17OrOPvJLtGJZnQyeU1cj6FQwPL2CnUxk1t+5NPufHEHMZURYgkwyxP1YMkUaFliFpPc8V74tlwAL+/7jx2WDOCaF6jzS7j9fWj6cxX4O82aW7tJRdyKKR1ehMqhWUe4gUXQZdJ3tboNEL8ZP4veb9VzIYuCFsKUZQEYRshyzLPnHwffdEQHf2VfJwcxOvqcO5fvB+SJFFm5Thtx9eYFx9KvTZAmStPIaMg49Ds72V2r8nN7x1V7Bgl4e7rz+aMUQfidOfRIxn0aI7KmhjeYA4j48b2ZPkwPpza0f1IhszigUa0vIkqg+VoXPHxY8xYOKPYMQRB+ApEURKEbcy8n9zIhEALZck8FVaGsJVhWmA5Z095hfnJIeTjGrOjIxnmaqehPErG0VBlG9XtMHOgiRsXnVXsCCXh1MP34659TsMIuvDX5xlQ3BgemWV6FR+sH0s5OQZULw16FwnbRZ8/SLKgkcFNTvHzevdKDnxFzOItCKXueytKLS0tnHbaaQwZMgSPx8OwYcO4+uqrKRQKm6zX2trKIYccgs/no7KykvPPP/8z6/xf0WiU8847j1GjRuH1emlqauL8888nHo9/Zt0XXniBXXfdFY/HQ2VlJUccccS32rcgbC0eOvgvaJ4sFZVxRo9vZa1SznPrdySfUHkz2czUitW8sn4HzhvyKv2ml4KlAWApMhXSEi6ad0GRE5SG3Xcayy0jjyXaFaRnfgNrlo0kGLXQh+RIaG5q1T7aEtVUmylGhjqpduWpJYoD1CtpjJTE1BfE71IQStn3VpRWrFiBbdvcf//9LFu2jDvuuIP77ruPX//6f8c5WJbFQQcdRDqd5u233+bRRx/lySef5JJLvniStkgkQiQSYcaMGSxZsoSHH36Yl156idNOO22T9Z588klOPPFETjnlFD788EPeeecdjj/++G+1b0HYmsw87o/kCo20JytoSVfRYpWRVzUq3BleXj+eCyfOwpRVBgwfqxLVWBZIEgTkHBk7ypFvnlHsCCVh6r478Pf9L0RRupHHxciEJSrMfnx6lg39FZSraRyfzbJkHapTIKX5UDBRJYeComOkYd/nxJklQShVkuM4zuba2a233sq9997LunXrAJg5cyYHH3wwbW1t1NfXA/Doo49y8skn09PTQzAY/ErbffzxxznhhBNIp9OoqoppmjQ3N3Pttdd+pkB96rvYdyKRIBQKEY/Hv/KxCkKp+X9Lb+aFtnW0xipQFId9Gj/mhzVLiNke1ucq8Wsmj66fQDwfRHVZnFP3JvOsoSTzGomMiyf3+1OxI5SERCzNDx64Fm2kiaTauJIOOBLNjd2sz1Uw1OyjpRAi7/EQkPKk+1zYfhW3nEdXs7g1eGLfPxc7hiBsE77O9/dmHaMUj8cpLy/f+PPcuXMZN27cxqICMH36dPL5PIsWLfpa2w0Gg6iqCsD7779PR0cHsiyzww47UFdXx4EHHsiyZcu+1b7z+TyJRGKTRRC2dKeO+xXV7pEcNmYhp23/OiPKulicaaLP8mOj8lTrdsQdH7Li4HMM2rN+APKmiqVrXPnmAUVOUBqCYR+vnXsdWncOzWXhqjHIVUB3NkjZQJp1mXIyHi+KZBKSkujlJmZSxTJlbNuNlIHjXv0JmYz4/4oglJLNVpTWrl3L3XffzVln/e9A0K6uLmpqajZZr6ysDF3X6erq+krb7e/v5/rrr+fMM8/c+NqnZ6yuueYarrzySp5//nnKysrYe++9iUaj33jfN954I6FQaOPS2Nj4lY5REErdvftcgt+5iCfW7sjC/qGsiNfyXOsE/tkxkR4jhFRQkRWHE+rfxdA1ZGwU2UaSYXFqKLfMm1rsCCXB63Xz2pn3kE5C/8cezA6dXNyhJxzECOhoUgE7qdG6oZamjgFC/hTmKhUMid5ckN5CBQe/fSUd0dnFjiIIwr997aJ0zTXXIEnSly4LFy7c5DORSIQDDjiAo48+mtNPP32T9yRJ+sw+HMf53Nf/UyKR4KCDDmLs2LFcffXVG1//dPbbK664giOPPJJJkybx0EMPIUkSjz/++Dfe9+WXX048Ht+4tLW1/ddjFIQtxQU7HMiBZQcwr2Mo87qG0Z6swsy40FUHSbE5seZtWtMBugnTHwuAJOE4kCh4Ge6JMvXl88hkYsWOURLmHXE3UlzGW5/FDLnwyAakZUY4fWR7dbZ3t7BUH4zXnyY/UsLnyeEybAqSjulonPbKUzz8gRjkLQilQP26Hzj33HM59thjv3Sd5ubmjX+ORCLss88+TJkyhQceeGCT9Wpra5k3b94mrw0MDGAYxmfO9vynZDLJAQccgN/v56mnnkLTtI3v1dXVATB27NiNr7lcLoYOHUpra+s33rfL5cLlcn3pcQnCluzC3Q9h0upR/GnZDQzofmTJZjf/agp5F525IFF3GMmBpCOjoGPbIDkQt9xYls6x717K33e7Bb83XOwoRTf3ilvZ40eXkJusYhgulMYcaceDb3mBDyaOYFBlB31zKvFNKtCVDjDB28kSp56cqbF7/QpqpA1cOOs07pwmZkUXhGL62meUKisrGT169JcubrcbgI6ODqZOncqOO+7IQw89hCxvurspU6awdOlSOjs7N742a9YsXC4XkyZN+sJjSCQSTJs2DV3XefbZZzfu71OTJk3C5XKxcuXKja8ZhkFLSwuDBw/+VvsWhK3dniNG8ts9bqfMlaTan6CFaroCIWLuMPm0xtpoGbobHAc8Tp49alfR5B0gl3fRkqrktLkX8GLLA/99R9uAt5+5De/KAuWuPN60TqS/hrLdMujhNNE3K5HGOIQ9eXKORrpcZ7irC6+ex5QkVvdVoXj6+OHfT//vOxIE4XvzvY1RikQiTJ06lcbGRmbMmEFvby9dXV2bjP+ZNm0aY8eO5cQTT2Tx4sW8+uqr/OIXv+CMM87YOAq9o6OD0aNHM3/+fOCTM0nTpk0jnU7z4IMPkkgkNm7XsiwAgsEgZ511FldffTWzZs1i5cqVnH322QAcffTRX3nfgrCtaqqs4OF9HqYr66elu4qW9ipW91SQU2XcPgkTFckxaOmtIFbw8kG8Cc1lANDsi3HlojX8dekpRU5RGt58+A4OGbIH9vos9jKJrvYgZoeGMsbB58vTki1jN/8G1qYr+DhRRbkng2prFEwXOwU7qC7Ls9tjFxU7hiBss763ojRr1izWrFnDnDlzaGhooK6ubuPyKUVReOGFF3C73ey+++4cc8wxHHbYYcyY8b9T+xuGwcqVK8lkMgAsWrSIefPmsWTJEoYPH77Jdv/vmKFbb72VY489lhNPPJGdd96ZDRs2MGfOHMrKyr7yvgVhWybLMo9PvRu1zECvMnAHHFK2D9MCySzQ3lnB0U2LGevqIG6phF0ZJAmQHAKeAm8ls9z7wfRixygJFx9zCPed9HOswTZ5t0bGoxMtc6GuUtjB38Fio57BWi+SrtGd8vHSwu3ZtW4djuPQ8lEN+aiXU2ceXewYgrBN2qzzKG1txDxKwrYgl8tx2IsXM2CFkCUL05YZXd6Ny84zxt9Jn+Xh5b7xaJpFhTvJcF+UD2OD8LpN9guuICAXOHOHN4odoyTYts2+f7wUWZVAczCrbEJ2jh7HjexWCbmyDKeT96NDubLpFWbnB7PwzeG4h1j4y9KYwNMH3PeZYQyCIHw9JTuPkiAIWx63281LR9xDtd1HjRqn1pVkomcD9XqSDUaIl3snEPZnSBsabt3ig1gd8bQPW5JwawYJVePqBeLMEnxylm7Oz28hXWGTqVXISG5iHg91FVkwbRqMXuZ2jebK2pnEfTIt6QpqxiWIZbyYmsJIbzd7PH1+sWMIwjZFFCVBEL6S5378JyKyn0g+yCOtU3g5th0rjUZk3aQn6WdkZR+VUopxwS5SCS+aZAJQpyZRZJVT53z53bLbClmWmXfMbeizFIIfpGlo6ye3QSWzIsCKyGCurX2edrWMF9vHkXlExy1nSPfpuGyDdNZHKl/GIc+dTiSyvthRBGGbIIqSIAhf2fxDb6Mi2I+tOaQNhUgiRLUvyYiKPvx2lnRe5d3OEZRXJNklsI606SYnKQx3xRle1sfFbx1c7Agl483f/w4tq1PfYTI91sLFg+dwVMWH9Ja7eLFvDOmndfxHGyR7wthhiCU9oBnIpoTPa3L0R7/n9RULih1DELZ6oigJgvC1zDrgAap8JjWhBKPKuykYOvGsm5ylsDQ6GMtUqQ7HCKg5IrkAEaOMbtOHTzZ5KzaOG946DNs2ix2jJLx8460saRvFs/0j+bO2I89Lo3j+uYlE/xTA3E/BiWmsaS2nvrqPajVOkzeBhUTGcGEMaPxhw9387YNHih1DELZqoigJgvC1zTnwFmp0mVVddXRFw3T2VvJB2zCC/hzD6zvZJ7SctnQFQzxR7LzC4nw9hiODIjO4LMLuz19GX6K/2DFKwqwHf0NDXy25BV7oV8kPdVF9aJYNS2pZuaKG8u0SGAk3mU4Pb8aG4vOlKXOnIKXSkazlntaFHP/KxcWOIQhbLVGUBEH4Rv4+9S4OHSqz7+Cl7Dx0NfuPXMLB9R8wJbCOpckGarU0/bKX4WoUPxniBS+OAy61gKWqXLTgYuase6nYMUrCX/74S05o2In0EpvIUj+r4mX4hyYYPKYPuV8mlExTXz9AR3cNcsGgJ+9HCluYyIwMR0macXZ6UpQlQfg+iKIkCMI39ttdrmGXwJHotkW8EGBFooGs6WW7UDsDipsRVpQX06PY3tNC2nCjWgaxnA9ZshkcGuAXH7zO42vEIzoALvj54Tx1yW8Id8aptrMEsxb5Do09mj/GKnd4q38sXidNXVkCOaniDWcJyykkGzqMSkaW97PLM2JiSkH4romiJAjCt3LCuJ9w6ajrcTtJyvUMGUvDVZDoyfp4JTeCPQPLGDDCvBEbya6Va6hwNCRZQpFtyn1Zfr90Cee8KyZ6BagdVM5Lf7qDPk0nopfR1xjimY7JdGohvNksdfUxugsheruCpAtuwv4MkUwQBxgjdxOQ0kybeWaxYwjCVkUUJUEQvrWR1cO4dcc/kzCgIEOLXcZYbzvVcpINmRqe7JpErTzAhEA7bycGY2YVwkoWSYJYNshA7iN+MvuCYscoCbqu8/75N6DYGcKhGBVVCYaF+1AG58n2eTHW+lGH59FjFuu6augeCKCbErppETcqGMh42enpC4sdQxC2GmJm7m9BzMwtCJsqFArs/vxvsDXlk7+GOSBbMNrXyl7VqyBfw5/6xiA7Jjt6u1gcbySVdnPcqHd5uX8s9XKcf+z/cLFjlIyJf7sU13I/WBLUZvCNSTOQc+NLm6QTKhWhNMmQnx2VFgxV5oP+ZiSPzUhXN905F7MPub/YEQShJImZuQVBKApd11lwxM0E8kmOqFrAifXvcMKgd9hOy/F2zw78qW8MRk7h+MGLWJqsJWtqZFMqsiRTcHRSeQ9nv/bjYscoGR/85BaclVH08QmkkIM3a6LmLHKdOkF3npTmh5TEumg5S7ONVFtxsKHanUDXLI6YfWqxIwjCFk+cUfoWxBklQfhik5/4FYYsI2s2sgpWVsXlynBU44c8tXYSBVmhYMuoukmFHiduB6l1x9Edk3o9yu27PV3sCCVjp1t/idqng0/CqrLAtnGaQU1KBOUkITXDilw1w2uidPUH2Lm2lfeSTewdXMNAVufXI29haPPQYscQhJIhzigJglB07x11M9gSo1097B1exfTapZTbBZ5q25EsCnlTI9nrYUp5C+3ZKlyygSNDAY0+08+N83+AbdvFjlESFv7yVpRVBVweE7fLIeQ2aYpFGRLpQbZsVqVqaDDTbIiWY3o0FkSHoMsWvUaQkMfk+OV3cd3cu4odQxC2SKIoCYLwvVl01O9YMzCUF1q258WO7VmfqSCW9mA7kO5X2WXUet4fqEVVHBTZxusYAMQLfgYH+jn/6R+LWbz/7Z2nbiUalUhrJinNJlJWxrKaatpyIQbbaboVH2rWolntwVQ1hqm9VOkJenMecDSe6YtwyKxfFjuGIGxxRFESBOF7NffHv+HE7YZRoSYhLaPaDnXhJD+asJiPE+UkzCAhLYPXyZEe8KOYJn5XjrTlot1Txu7P/4pYKlrsGCVhyY03oi/WsOM6/nUOlU4On+rQ4fGj56GiKkVLrhrDcFhu1OGTcjT5BrBtGUkGWephP3FHnCB8LaIoCYLwvbts/EkcNXQ6ntocptdhQ6qMWT3b49ElyrxpAlKWgGJheUyqXBn8uRwBLYdHM9mzeh03f/xT1vTNKnaMkvDe7TfSJJWRlwxSKS+OJOMPZqjwJegzyik4Mk2eXirzSV6Oj2d9uhJZMZAkkCQVlyfJjk+IM0uC8FWJoiQIwmZx1oQfcsfoU6iQktR4E9R44lTISSr0FO68QjzrosETZW2ymqjtY6TeR3sqTEDN056v4NwPnuaZ5f8odoyS8MS5l3FO/Y+wPA62RyKV8dEhhylX+/HqOVJxN26vwXAlQqLgQ5YcQMZGIi6FkVWJ3Z4V81YJwlchipIgCJvNHkNH8eAuV2DFVMxON9neAImon5gqU++LsTo2CL1gMLV2OW2FclLrQ6xMV5MydDJ46Ej9iYeX/bPYMUrCcYfvw2uH/wZtRQY546AZkOv1Mtm3lmzAhYYJyHQbfsyEGxybStIAqBok836OfEVMHyAI/40oSoIgbFZDa2p45bBbUPQsOZdMxnFh5lzYeQvJNNm/eRm7hCLctXofDhi0lOWJGob4+nEc6LTD/G31G9zy4Y3FjlESgkEvb15yC1Iyi1dPY5fbdMdDVEpxupLlrEzXoCDhBCR8WpYVRi26mQUbXC4LE5WDXzmR9vbWYkcRhJIlipIgCJudqqq88uO7mVC5lv0aFrNH/VImVEf43finqHOluHTpYeQ+9NFV48E0dSYE2tFlCxOZXaoiPLU0wYmzxe3uALpbZ/45d5KOeii0q6yO1dIdD5L3Szg5DVPXUKU8tUYUR1YZ5+/BcsA2JfryATJSkFOW/Y43Vs0pdhRBKEliwslvQUw4KQjf3g63/wb3sBw+tUAs7yXf7mWSux1jZIFlsXp2q15FnxGkxwhwTPlS1qXDvNk6hu2b1jF/fTNLfnpDsSOUjF3vuBRrhIQky0jY2DYE5CzlZoJ2vQpPPE3B5yOTU0kPeGio68fQZapcKfpzOqfW7cfJ448odgxB+N6JCScFQdhiLL74epBkHBlGlHVTOSLKR7VhlkQb2KtmOaoi0W/6cRyZVEFjXncTAAHZoIDGwc//rMgJSse8i25BW5RGipkEB3K48gWysouIqxp/ZxLD7cEoSOhYeMIFdqpsQcXAciRkNJ7qfo4TZl1U7BiCUFJEURIEoejmHnozuqrj1zOMDHZyWMNHnDD0PT5MNbEsVUfWUvlp5fvkHJW+tB8jpmMD/mCB9alaDpl9RrEjlIy5V/+B8uVBsossvG9lqVnXh5q3SHsD5HIqMhCNB/BIWVbGaqiRU0iWjWw5KJLCSkNjz+cvLHYMQSgZoigJglASZv7gVtoi9azPVfNmbBSzBsZiOQoBqcAJZR+yLlPB8+tH4fWZaF6DAduLbSoYGY0hvijTXv55sSOUjJeu/w1Hjtib3uEhNgTrScbdmKqM1QuxlIeyUJxdBm0gmvfRWfDjKAq2AjaQz0nU6VF2ek5MHyAIIIqSIAgl5KWjbyfTUUF1Is3Odif7quupkRJ8lKxm5rphZGUPRquP4XWddJkh4jHPJ/8XMxVSjoeLXzmcWCxW7Bgl4eKzj+b+8SfhWzqA6tg4eQmtwmRHz2qafAkWdzTidqVxywWisSCmZNFvBXEchbztxs64mfyvc4sdQxCKThQlQRBKyts/vZo611T+tXYs/2yZwBvrRvBOZCSKoiFH3AwZFiGjK+TzGpIEbr+BphoossNaqZID3v4dXXHxyBOAXfcayytXzsC9Ko2nK4cradGWriJRUEDOI9syGfyoqQJu2WGQ1oskS8iOjeoC2+VhykvnFDuGIBSVKEqCIJSc2w78Cf/vwKOoIosvo6DHZMqULBO3W0U2IDFge2ndUImUlfBrKQZsP4atYNoqliwzbc4tvNqyuNgxSoLX7+X1a27HMi3ksIPkUVDdFt6gRCYeQIlYqLUm+bwLHA2P1yBpupFMwFExrCC7vCjOLAnbLlGUBEEoSbs3juO3u52KU5slPCaKXWmxQS6no7OS1pZK1Dz4B6UZ4+4jmvViI5O2VQB0FX750eNc8sZVRU5RGlRVZe6ld1OImShvOxRe9pJbpUFFGk9jgWxeY3ggwvJEHbIp0eDup5D65OvBKTi4NZj87FlFTiEIxSGKkiAIJWvv0SN5aKezaFtZQcuqGtrXVJHvc6GpFqGGGDu42om5XfTZPkJShmOqP0SWwQEyCTevDxQ45/UfFztGyXjvZ38kVS/hDMtBrY03BxVmAiUnsTg6HLfLxGVnWGrUI3kckCwUySGkFPBICjs+fVmxIwjCZieKkiAIJW3CkCZWnHUF9d4+hlV1MnZIKzuFNzCubAN9Lg8d2QCmrZLIKSxva8C2QFLAsSVsR+PjbC23LTi02DFKxsLLbyeOn4zmoY8wK+0GDJ+Ox0njs7Kkcypml44alChXY6DKZC0VExcOcNDLJxU7giBsVqIoCYJQ8mRZ5s2Tbifm1uhVPbS5/KzOD6LbCOGRHJy8wVH+ZbynNKE4DiAhe00cxyE5EGJV2sNPZ59X7BglY9HPZ8DrJp4NWWqkODVWFDnhkDQ95FMu9LANtkFPphxZtknZbhzLQVIluvO1HPrCycWOIAibjShKgiBsMeYdfDtar0M2oZFNyKh2nh/6lzA8leOf2R1RLAkTiWS7l4AvD/InT2gKe3LsEFrKiXNOKXKC0rHwttswTJ3euWE2dFWT/f/t3XeYFeX9///ntNPLlrMVlq4goqIYBU2iWBADlphoNGokQSMxaEwwRWOCibGCmsR8Ipr4wZhPMR9jsFNUNDYUQYj0vuyyvZ5+zrT794df9xcEVFQ4B7gf1zXX5c7cc9/z2rmW83bOzD22DxEX+CoUFL+Jaal4FCjT47iuQtCXBVfgoGEbPk56Us6zJB0aZKEkSdIB5dUr7sNRNDSPjpX183+9x7MhEkV1BbYmyCUN1BIb4YKhO+glORxbIxzIsaGnhi88/dNCRygaS394F9G4wPJbhPtnCNTkyNsOYj34LJWwr5seEUJzFHRHQKuCprpoqktO9TB+kZzkUzr4yUJJkqQDzoqL7kTLhrF0gXAVVF3BFCo928K4ukI0ksfOq+R2BAl5cjQmI6C6ZON+hmidXPnPi7Ftu9AxisILv7+Lge95yTXrWFmDgNcmckQOyJEkAjYoOYsdmTL0/gLdgqzQAYUS1eHiFy8tdARJ2qdkoSRJ0gHp7UtuZJi3BsdRyZs6qCrlQ5P4dIGZU7HbDQJ1CY4J7yDiy2DkFBRVUOrLsCo1gHNfuo5UqrfQMYrCc3feyogdNYgGDZHSSaVDKF6VYIeLmnZIuwH0DoGVhupQOyoqKKApgq5MGSc/d4MsPKWD1j4rlOrr65k6dSqDBw/G7/czdOhQZs6ciWmaO7VraGjgnHPOIRgMEovFuO6663Zp8++6u7u59tprGT58OIFAgAEDBnDdddcRj8d3afvcc89x4okn4vf7icViXHDBBTttVxRll2XOnDmfzy9AkqR97u8Tr6POCSMyAsUVuA64CbDbfPgHZjihrJ41nZUcVdrMk6tPIFCeoSsbxnJ0zqhax7XLv099+/ZCxygKf/nFj7ncezzJFpXMJo1Mo58O1Usq68ObsHGj4AWSpo8KJYWdd8ER5IUXx4JzX76SRKK10DEk6XOn76uO169fj+u6PPjggwwbNozVq1dz1VVXkU6nmT17NgCO4zBp0iQqKip4/fXX6erq4oorrkAIwf3337/bfpubm2lubmb27NmMHDmS7du3M23aNJqbm/n73//e1+6JJ57gqquu4vbbb+e0005DCMGqVat26W/u3LlMnDix7+doNPo5/yYkSdqXnv7az/jFor+xXl1IRvGih6HCkyCX0VjdXsVZlWvJ9gZZ292fgbUNvNM4iIqKOKVGhnWZfkx9dzZXDziFi0Z+vdBRCu77V1/E+C1j+c6f/gAlQA5MAQQVgr4cAdVBNQRrOmME/NCd8+Az81heLym1lHNfvI0/jJjKqJGjCxtEkj5HihBC7K/BZs2axQMPPMDWrVsBmD9/PpMnT6axsZHa2loAHnvsMaZMmUJ7ezuRSOQT9fv4449z2WWXkU6n0XUd27YZNGgQv/rVr5g6deoe91MUhXnz5nH++ed/qjyJRIJoNEo8Hv/ExypJ0r7RnUwy/bnvYwd1wp48/bw9HFbRyesbRrK4/kgqR7ZzmNHCqztGUlPVzXfq3uSP27+MmVfwu4KzKwS/+vJdhY5RFFavr+eq5b+n1Gfi81h05AMEIg4+J8P2zjJUVzCkNkG34+PwSAsrmwbgKXOoEb3U6R2c4LuIi8Z+q9AxJGmP9ubze7/eoxSPxykrK+v7ecmSJYwaNaqvSAI466yzyOfzLF++fK/6jUQi6Pr7F8jeffddmpqaUFWVY489lpqaGs4++2zWrFmzy77Tp08nFovxhS98gTlz5uC67h7HyefzJBKJnRZJkopDWTjMn8+dw+ZEP15bdwz/u/w0bn3h67ydGUT1qGaGGy280jiK0pIUY0oaWNo5CI33Z/G2FMGb6STXv3JToWMUhVEjBvHw0dfT2Bpg4/YKEt0h2naEacyWYKgKQ2sSxFMado+HDfEaPCWAULBcnVfTR/C7rhX88s3fFDqGJH0u9luhtGXLFu6//36mTfv/3xfU2tpKVVXVTu1KS0vxeDy0tn6y77q7urq49dZbufrqq/vWfXDF6pZbbuHmm2/m2WefpbS0lFNOOYXu7v//reK33norjz/+OC+++CIXX3wxM2bM4Pbbb9/jWHfccQfRaLRvqaur+0THKEnS/hEIBFh2ya/wVPdyzDEb+MLRazmiooHG5koWN46irCRJeTDOF0s38c/2wykz0ghXx3E1woZNs9PC1+fL98MBjDxqAPPP+wkl3Xn6V/UyoKaXAUaWoJqjJ+kjlw1SXdVONu7BySpUuHEU1cZ1NYJemzXJdZz1nHzliXTg2+tC6ZZbbtntTdD/vixbtmynfZqbm5k4cSIXXnghV1555U7bFEXZZQwhxG7Xf1gikWDSpEmMHDmSmTNn9q3/4KrQz3/+c772ta8xZswY5s6di6IoPP74433tbr75ZsaNG8fo0aOZMWMGv/71r5k1a9Yex7vxxhuJx+N9S2Nj48ceoyRJ+5eqqqy++Hbirs57PQN4L1FHaUmKqopOTqzcwnf6L2H2mgkE/XmGenYQ8efQ/Q4C6O4opS3Xy6TnZxQ6RlHo3z/Ggh/9iu4NPjqbInSkQ9gpP2XeHtywTUN7JZ4SgWLbJFQvbQ3lePQcQlFoytdS7mlg3HM/KnQMSfpM9rpQmj59OuvWrfvIZdSoUX3tm5ubGT9+POPGjeOhhx7aqa/q6updrhz19PRgWdYuV5o+LJlMMnHiREKhEPPmzcMwjL5tNTU1AIwcObJvndfrZciQITQ0NOyxz7Fjx5JIJGhra9vtdq/XSyQS2WmRJKk4vTDhAQwtz6R+7/HtwW9wcb936U4H+eWq83E8KkdHtrO44wgGaR0oeYXmnlIcR+ew0k66XI1xz15f6AhFIRQK8MI1M1HzNrYlsEsd6luqUXQNjwJu0qEqHMfrOFgonFe+BtW1EULFMgJAni88JgtP6cC114VSLBZjxIgRH7n4fD4AmpqaOPXUUznuuOOYO3cuqrrzcOPGjWP16tW0tLT0rVu0aBFer5cxY8bs8RgSiQQTJkzA4/Hw9NNP9433gTFjxuD1etmwYUPfOsuyqK+vZ+DAgXvsd8WKFfh8PkpKSvbmVyJJUpF69/y7eL2rlr81H89/N5/ANivGsNJW+hlNvN0+iOHhTjZYVZTk85SFM5SUJ0g5fpy0Tj4X5LwX9/wwyKEkFArxytV3oDWbGO+5+NIOSrdLqacXQoKs5aF3bQSlxmFxx+Ek8mF8VhpHqMSzJRBSGffsNYWOIUmfyj67R6m5uZlTTz2Vuro6Zs+eTUdHB62trTtdQZowYQIjR47k8ssvZ8WKFbz00kvccMMNXHXVVX1Xa5qamhgxYgRLly4F3r+SNGHCBNLpNA8//DCJRKKvX8dxAIhEIkybNo2ZM2eyaNEiNmzYwPe+9z0ALrzwQgCeeeYZ/vSnP7F69Wq2bNnCn//8Z37+85/z3e9+F6/Xu69+LZIk7WdvnvMfJHt07LxCOuuhMVlKtx2jRk/RYJVitCr04AErj+axWd9diaJCwJOj3S3he2/KaQMAdF3n9R/fi9OiYvUDNeTQLfyI1QY9K8M4I2yGmx24BtguDK3upFzrwXEVsDRU08vx8+SVJenAs88KpUWLFrF582YWL15M//79qamp6Vs+oGkazz33HD6fj5NPPpmLLrqI888/v2+eJXj/StCGDRvIZDIALF++nLfffptVq1YxbNiwnfr993uGZs2axcUXX8zll1/OF77wBbZv387ixYspLS0FwDAM/vjHPzJu3DiOPvpofve73/HrX/+ae+65Z1/9SiRJKpD3vnknakLgxcZnOORcD13xMBVmDjMEA8s6URWDcieJK1QIOliuAUJjTaaGC1/5DqaZK3SMglNVlTf/NAttjYtfySH8CuXH9vLlMZvRejWa9FLiyRDeriyW6mVFcjDhYAZscDSDcDjPmH/cUOgYkrRX9us8SgcbOY+SJB1Yxv7nTyEisC0dXXeJhXpoqY9RWZeg2tPN0q7BGHGN6KAkbd1RSsvTeBWTE8q2saU7xgPH3UplrPbjBzoEHD/7pxjl4I2Y5PMaeDQsHXytaWpHpfBaOdamBzHI00KjU4lqKnhCFrmkjkfL8fo5u59UWJL2h6KdR0mSJKmQ3vrOXQRFBaW+JJFgGlfVGDaohaxweLNzKGpcwxiQQ0m6+AJ5FEVgo2O7Gnndy8/X/ojm3vZCxygKy264C2+0B+3VHIE1FmVbu6iLdlB9ZB47I1ifHYSu5GnOVGLlVYyMCwhUQ8HvtRn3xI8+ct46SSoW8orSZyCvKEnSgelXi+fx2Nbl4NNQNBcjK/AYArXcIZDO0WKWURJLEzMSqIrLyHALG7L9yJgqOUvhB8NGccGwaR8/0CFg9H/9GCOro5QBFhARpNIq0UAKHB1b0VCTCqLEJahnyWSCGME8juXDcWyeH3cjsVis0DGkQ4y8oiRJkvQRZp72Vf76lW8TsLKURTJEq9KEfGmScQ/tdgmR8gyq4pBxDAaFutmRK+P9ix8K1d4cD2xYx2+WyifiAFZeNguxQ6B1W4SDccpzcUrUHE5TAFPRUOIKhiPQdUEmFcSxFTzYoIKr63xn2Y/5y5tPFzqGJO2RLJQkSTokHV87lOfO+Ql5BTLCRzLoI1SaJ1KWIajn8Cgmg/0dGNiklQCJXj8CgRAqnU2l9NLFrW9OKnSMorDsV3eit0Tobg/TSpSMZuD4XdQOFcN2sCsEes5CDYDQBEbOAkAV4FoB/tD7Ouc995MCp5Ck3ZOFkiRJh6zqWIx3vnIPJXovJWaamB3HwERRBCMjbYR0k825KhQcaoNdBDSL+nQJjq3ybnwAq9NVnP3clR8/0CHgtV/+kiPNSjyBPJohoBS0Wge9zkbJuFiGFzutomPjOF4wLYQCrqIiXIXtGTht4dUfP5Ak7WeyUJIk6ZD34sQH8EdMaksSDA+3MSrUQlc+SL1VhaYI3LhLuxLhSyXb8HtzaAIcVJKqh7FlO7j4pSsKHaEo/Nf3ZnDqe0NRtoPRqEODRi7hwczqWCkNxbGJmSmStg+R01EEiNT7+yoCUnk/Zy2UhadUXGShJEmSBDxz2oOsaaymMV3G9lw5GddHd3sAkRYkPT7GRuv53x2jMTM+Bg5vpczIknK9+HVBPOfn2jfOK3SEonDXT6ZzU9Vk3NY0eUPHzHjQFEFYxIklcnQQRcPCRkF1HcLRJJouUATYqpe8E+aYv8u5lqTiIQslSZKk/2fJJfdiWoJ41kPa1NFCNn6/yQmR7cxvPhIPgvT2CGnVw+SK9zBQyDsKCSXExkx/rnvtgkJHKAoXfO3LPPndmXgSJkYHiLSHtBWiJxyEHFjCB34IxR02mZUoCjiuioJCP38vR0RbGPcP+TJdqTjIQkmSJOnfLP7KH7E6YyTTXlJ5L5u6K3izdwhuUidbH6Hf0a2U6SneS9XyFd8m0pYXcAloJs2inK/98zvYtl3oGAVX26+M1753G07IRksI1C4D1wQqVFTVJdpj0+VV0E2FfF4B1UV1Ien46FXDWF6Dcc/JuZakwpOFkiRJ0oe8cdkvGFsTwEiquK0h7LYA/Wp7CBwWp9bbyxGhZtbG+5P1KGy0Kqhxe8i6PlRVYNoaJy36Gc2tzYWOUXAej4d3vnMHca+FX7GJujb+LQKfk6MrqmEIAxEAp10hZJgEvBna7Qiuq+IKUFXBuQunkculCh1FOoTJQkmSJGk37h/7K46qrGPs6DWcfuR7nFK2ga9XvcumdDnvdg7ki6Ft7MgF2ZErJxxxyLoKSdsPlkbe8nDBG3dT3/xeoWMUnKqqrJs+i14g2auRVxVyjg+PB0wVrCaFUHkWU/FRTQKrGwZ6uwHwCUG7FeXWlRcxf+VzBc0hHbrkzNyfgZyZW5IOfjP/+b/8q+c1wppFRMsTCyZJAS1WhC12NaXJNMEykzGxepZ0D8MRCg3xUvpHe4nndH55+GTOHnZGoWMUhaNu+TF4dHShYVfaBMM2GVPDH1CoNLpp95RSZsTZ0R7CX6qhOzYCFU2xUA2TozWVP5z+h0LHkA4Ce/P5LQulz0AWSpJ0aHhx3Wpu2vBXVL+LArhCxW/n8adtQpUmKiaurnGUt5W1VjUbumqoDfcS0rL4khmOrTyZ678wvdAxisIX7voxupvFjXnRfSbCUNB1yPn8lKopgp4cWzMxNBcM1cV1waM5lPuThJQUrW4ZL535H4WOIR3g5CtMJEmSPkdnHDGK179yK4adY5Daw4hAG+X+LL0RgwGhDoShESXH4tbDsfJgeGwylo6iQJso5Y3kcn74z4cKHaMovPPTWdQNH4qa0MmbQczeAAYKAW+CLBrbMjF8OvgcG0Nz0G1QFQddCJpEJUcYTUycL+dakvYfWShJkiR9Ah6Ph5fPuo+8AuguFcEEVaE0a5L9Gaz1sKmrkn5lXWxKVAMu3YkA3Xk/NjotVhlN2SV8ZcGNhY5RFP7vgh9yfHAAGa8gqxm09YTozUTJCD8eF7S0jTBVcnmNunAPXyzfQpsIAQrr7P7YOhwz78eFjiEdImShJEmS9Anpus4/zvgzLb1B3t5SR0NzhGTKy1anjGgkzXuddfh8DhEtx9HlDcQtH18Ib0YAO5Ix2pNw9qJrCx2jKNw/7fs8Omoq3mQeI+SgmS563EHkXTBVTA/UBHtpbIsQDORRhE5AySJQMPFhKCpjn5xR6BjSIUAWSpIkSXtp0VceQC91sDxeei0/G7qqac6V4fdZhLQc6R6DVqeUfE5lectwQnoOFCBj0Gt6mPLiZYWOUBSOH304T19wA1q7g1AdLJ8ADbIJGOhJ0Nkc5rQR61i4+UgGaS3U6r0coTaiALoPXK/OsX+XL9OV9i1ZKEmSJH0K73zlHvz5LGFfhpg/ia445OIGtVo3wVKL7myAUyIbaQ94GB5sZ3C4DRQwMdjqxDjuSfk1HED/QZUs+8EsKpelMZa5qNttAimbcrWX049ex6vbh1MSyNChhHGFznuZfvgUCwBFASME33jp27iunORT2jdkoSRJkvQpLb34XlLdGlnLwKfZhMM5NmRraO3x8YXAVv7ZdiQ1wSRvbxnKdiuG8LqoKph4CHlznDnvukJHKBoL7piDepiKGvYiSrysyQ/gn60j8QWz2B6FYd4efHYaWw0QUfNYJghAx6XTjHD289NZ/N7rhY4hHYRkoSRJkvQZrL78bpwUmE0GA+1eBphxtHiApdkhDKzpwIx7qYu0kWvz4/Pl0P7fhCwRLUu36mf4X2YWNkARefPb96Cneykb3EZptJfKQA/Doz1kHQ9O0mKFeRgRLUEi70NYIMT7UzWoqoNlGfy+9c9cuPCnhY4hHWRkoSRJkvQZLf3GbFwRpEsLoMcsjhm5jUFGLxu21eC1cmzvqcUJqJiaSpmRwoNNlxtEoKAqgnELf0wi0V3oGEXh1R/Oofu9croW+8m8oLF8VQUp08d72YFEtAQ+4dKeimLoLpoDLiqmo4Gi0UEFrU6GcQt+WOgY0kFEFkqSJEmfg7e+M5N+7mg2bq5h1Yb+1HdWEI7kaeuOYakqvmgW3VXpFgEurV6GLTwIBXx+h0zSx4Vv/4RN7csLHaMovPGj2VTGBpAd5ScaVahxElSHe+h1S9jeE8PjCIRHhYxLLg098QhZS0egYGt+TNPgtIXfKXQM6SAhZ+b+DOTM3JIkfdgf33uWhza+hmoZqJqLN2SSR8djWwivQrmaRkOwwy7FK0xSqSCupdK/uoOYSHBZ3UVMHH5OoWMUhT888yyPrHgVt5+Bojt4Mi7OYAUcUJMCM6ji1dIcEegl7WjscGK4qHgxwXYY5G3mkdOfKHQMqQjJmbklSZIK5JqjJ/Pb46dglOTwBfNoiouh2bhejWMD9XiFTZNdip2GIZ5uUi1BNMNFUQRrOwbynzue4I9Lf1foGEVh+jmTeeq7P0FL2BiaQEQU1E6BoijkvCpekUE1PaxurWH78ipqRDu4YAoVr25jGDqnzZ9W6BjSAU4WSpIkSZ+zUwcdwYNHTifjKBwVauZLkc1UkGRp4jC2O+VYWZWaQIp1vdUIoaEGLYRQsByVL8a2MS+5ka88J29KBuhXHeOfV91K3nJx4ypuWkPJ5bASGv0CGXJpA79joo5w6TDLIe/gCB0FwcZsJVWBHGe/KL+Gkz49WShJkiTtA6MHDOKVCb/hjeZBLGo7ksZcGWZWRXUEg7UuOs0gXY0lBEozeHWLgJvFq9mAgqoqlKltjH9KvkgXIBDy8Palt6E0OOT9Chk7iNcRZJPg3aBihQzKjF5MxeDwcCtWRiWZ9mPgUO3J0JEtY8KL38a25VxL0t6ThZIkSdI+EvH5ePfC20nsCKBnBEFhk0sbrGkaSOe2CgKlJv7KDBEtSw8Rasu7eLNnIAKFsDdH3AowfqEsluD9d+29fefd+N/IEe00CWQcerUSao5oQWRVuqxShgZaWWf2Q1FcXJ+HE0Jb6DADKI6KBw+nPfcDttVvLHQU6QAjCyVJkqR9SFVVtk7/OWrEpjcRIh8P4A1ZRId1Eq5JUGYkMVSHrpYIk0rX0mVFMV0dC4Wwz8bEy7nPf7fQMYrGWw/eS8oPdonAyag0+ioIR1IE1RQb87VYHSqejEAAbWaETjuA40KJmkMNGvxwy538c+3bhY4hHUBkoSRJkrQfLJ10N+FYL3WDW6it7aDClyKmJkhaPnbsqODUqvUsTB5GmTeBgiDqNxFCAUehXyjB+IVyFu8PrPj2LOxmBdNWcQ2VLitMd0sExczjyTmIcpUxwU1YeFCETSDo0GGGcVHpNKPc1fxnvrHgtkLHkA4QslCSJEnaT5aedw++eJqe1gjtTeV0dZURc9JMOfwNNurlKLi0WaX0p5dtHZV0pQIIoNEqI9kT5vxF1xQ6QtFY9pO76OcBT7PAs0ng1wSKz4On0mJEoIHOfJSk66WzM4qh5IibXlQcXEcjollszsQZP1/+PqWPJwslSZKk/ejZr/8n0WiGkooEStSiSw/zYnI4Ht2mS5RTRS8VgSRdhg9NtdANQVjPgqOQQeeKZy4hl0sVOkZReOaiOxmr16KNjFM5qItqo4tSf5atZgVZRaO5qwwj7FJimwyKduJXTDSPiaKAbgqSdogv/v1HhY4hFTlZKEmSJO1nL55zH0pzGWE1j8ewSas+sFX83RmiqsXbnQNoT4SJBjIAnOLfgmspKJpCJhrgmAf/wObWJQVOURzu/c4PmOn5Fs2vR+nsCtMdD2K2emhJlWD4BNUiQZfipSVfQk9TkIH+OK35KKoNugEVZb2c8cxVhY4hFTFZKEmSJBXAP6+6mWBqCNkGH8EuF7vTT5ww/+qtpSMVpTrcAz4Dy1J4pnckqscBW6A4CnlN56bVf+Yfq+cVOkZROPOMk3jh+ltxNyhUepMMrOih0sxgOyqu10FRNJQuFc0n6Ir7CGg5TAxQoNsN05ku5dsLv1boGFKRkoWSJElSgcz72g+5Ydw5NFsG9XaUhO3Fo2Qo86ewDQ/5vMJpwc20tldQWRMn6snjAKiwdWsdTzT/g4dW/7XQMYpCJBJg8Q2307Y1TNuOEtL5AD6/RUbxklvrwUIlXJIlZ/hI2l60qMCyQAEUR2WbW8dlL15W6BhSEZKFkiRJUgFdOOIknjv7Ziqj3UTLMgi/F1eDk30bGKjHWdhyBN5wHtPS6e4JoVouAG5WZ0LpZp5veokLFt5R4BTFwefz8cb192L7TMx2hfxmH2a7hwHHdRMJpchZHjyqSWZ9CCsFugoxtRfF1gh78ximYOyT1xc6hlRkZKEkSZJUYLVlJbw48T6yLQHScQ+WqfNC42g2bq0jWp4h4DcJOoJgOIW3+/1/ttWAja4IKv05vOp6xi/8SYFTFI/XL70fpd3GE3Sw/R7a20vRhYKV0uj6VwlulYIScRA5ELaOrSikXYOaUBLFAyc8/UNc1y10DKlI7LNCqb6+nqlTpzJ48GD8fj9Dhw5l5syZmKa5U7uGhgbOOeccgsEgsViM6667bpc2/667u5trr72W4cOHEwgEGDBgANdddx3xeLyvzSuvvIKiKLtd3nnnnU89tiRJ0r6i6zrLvvUrwiJHLJyjojpB+ZBuStUcIuEB1aJfNsnrPSPQE+Drn+KVxuEgFHKun56M4NwX5MSUH3jjrvvoBTKvK+Tf0NmxLUJO9yIG2KgRC3oUhkd3UJ8ux1+aJ5Pz0ZKNoGqA6mHsUz+TnwcSsA8LpfXr1+O6Lg8++CBr1qzhvvvuY86cOdx00019bRzHYdKkSaTTaV5//XUee+wxnnjiCWbMmLHHfpubm2lubmb27NmsWrWKRx55hAULFjB16tS+NieddBItLS07LVdeeSWDBg3i+OOP/9RjS5Ik7UuqqvLqN+6jd4sXs8dAS6ukbZ2AP056R4Dnm45DMSEayvC12Lus8VSQc0BxBR5DoYswpy+SxdIH/vXtWRi1LvaJLvpQ0H02wtXxahZH1tSzNtUfO6FTo8apSiZZs20grqsiUHB0lTNenMGGza8XOoZUYIoQQuyvwWbNmsUDDzzA1q1bAZg/fz6TJ0+msbGR2tpaAB577DGmTJlCe3s7kUjkE/X7+OOPc9lll5FOp9F1fZftlmXRv39/pk+fzi9+8YvPbexEIkE0GiUej3/iY5UkSfokjvzt7aRVD2i8f8cxoPdCNJrhmCM2km4Pka8WNLTEOKX/Ol6LD8Prdemnd1LtdvH7058p5OEXlVNv+TW9gxNUlOXI2wYpy8Dp1lGCgkElHbRZ5YwObMVSPWwTpSStELYLF9Su4L2eSr4WPo1vjP12oWNIn6O9+fzer/coxeNxysrK+n5esmQJo0aN6itUAM466yzy+TzLly/fq34jkchuiySAp59+ms7OTqZMmfKZxs7n8yQSiZ0WSZKkfWHN9TcxpGQ71d44ZU6WCm+SAcc2cu2452huipGsUtHMPJphsSw+hFzu/X//dA1ezx7JZQvlE1wfeOWWX3LcpmEkNxlYQsXncxhU3Y6vJE9HvJyRaj2rNw9jPeX0dvpQdQcAn2bTkKnhhfTT/HjxHwucQiqU/VYobdmyhfvvv59p06b1rWttbaWqqmqndqWlpXg8HlpbWz9Rv11dXdx6661cffXVe2zz8MMPc9ZZZ1FXV/eZxr7jjjuIRqN9y7/3J0mS9Hlb/K378YRS2GGbeM5DW1MZf+kYS7BfGjfnsq2jP8fFGjAVhVDQBgQCgaZCxJfn5PnXFjpC0fjP30zjsv7jES9oBJaq2CuCDO7oIJ8x2NFagzsshb8TiOhg2QhHoTlXAq6CpnrpsBZz1aK7Ch1DKoC9LpRuueWWPd4o/cGybNmynfZpbm5m4sSJXHjhhVx55ZU7bVMUZZcxhBC7Xf9hiUSCSZMmMXLkSGbOnLnbNjt27GDhwoU73cP0ace+8cYbicfjfUtjY+PHHqMkSdJn8erF9xEwwBfM4SkxiSeCbNpSRTofYlS/Bt5NDCCd0XDz77dP2gEAMlkvHlfnuHnyabgPTL/oXB74/vdIDhCkj3XprAlhDEiRLFdw1gbpDgfQFYdszkAX8GZ3HbgCxVVZZ9ax1m1m8qKfFzqGtJ/tdaE0ffp01q1b95HLqFGj+to3Nzczfvx4xo0bx0MPPbRTX9XV1btcvenp6cGyrF2u9nxYMplk4sSJhEIh5s2bh2EYu203d+5cysvLOffccz/z2F6vl0gkstMiSZK0r7116a8o8+k4QhD15whUmSSFh7Wpakxbxa+5GEGXEjVNVElh2mD4BAHDol8gzldflq/o+MCxowbzzDk3kcr56bVLcBwfOY8XjnTRUjb5lIKuqHyxagNZy0tFtIdV2UpwVVwMmhM2Jz0nH/o5lOx1oRSLxRgxYsRHLj6fD4CmpiZOPfVUjjvuOObOnYuq7jzcuHHjWL16NS0tLX3rFi1ahNfrZcyYMXs8hkQiwYQJE/B4PDz99NN9432YEIK5c+fyrW99a5dC6tOOLUmSVAivXDyT0ysHEk8auKqKz2ujmuD323jCLkGy2JbO5nw1Y0rqqfLHSea9CEVjR28ZF780hfbuTYWOURQqa8p4ZfItWE1gN6iITpVMq4rlM9BVjRMrtvBK82F404LRkVbGe1dyTKABAEWDXB7OfvFbBU4h7S/77Km35uZmTjnlFAYMGMCjjz6Kpml926qrq4H3H9EfPXo0VVVVzJo1i+7ubqZMmcL555/P/fffD7xfbJ1++uk8+uijnHDCCSSTSc4880wymQzz5s0jGAz29VtRUbHTOC+99BJnnHEGa9eu5Ygjjtjp+D7J2B9HPvUmSdL+9peVL/JfHf8gw/tfsXkwiWoZclkfcc1PNqdzmNLJIE+CV0V/qrUUjb2VfGnIWv5Zfzj/9cVvMKpmdGFDFAnXdfnCr29kwKgeqsIJ2tUIzR0hUrqXQNZh3Ih63tlcBz4Hj3DJYeAoOj6PRV4o6MLkzfM+2eeFVFyK4qm3RYsWsXnzZhYvXkz//v2pqanpWz6gaRrPPfccPp+Pk08+mYsuuojzzz+f2bNn97WxLIsNGzaQybz/Fu3ly5fz9ttvs2rVKoYNG7ZTvx++Z+jhhx/mpJNO2qVI+qRjS5IkFZsrRp/BzwdfTS6rEHEyBBSTNrOUDkII12aQ1cuokh28l69G0RS2tVUidBtVgOaFRzb9gv9Z/5dCxygKqqqy/Ja7SDV6+Ncb/WlZE4UOjSPKmzl12GbeXlNHXaiD/sF2Mq4ff6mFo4ErFAwPDA518+Wnry90DGkf26/zKB1s5BUlSZIKZXtbB1e+fAvVoTQ+Jc/meDWDa9soTbmsMavo9hqUGjk6siGCXosvxTaxqPlIytUMaUXj5BK46+R7Cx2jaBz5q58SSStQpiKCNqfUrefZ7FEcVbKVrc0D0Dw2tl8BVSfbBZF+NsOCbWzOVOJx07wyaU6hI0h7oSiuKEmSJEn7zsCqCp45/x7W9FazrbkOI6Oxo62GxeYAugMGUT1PWzyKm/ZQ6kkTNwMoGggUQp4sjU4PX3n++kLHKBprZt6F0w6eWJraqh5WqdUE4w7b6vujYUIYHFXD68/hq3YxTYFXsVB10DA4+h83FDqCtI/IQkmSJOkA5fP5WPbN22nTVdI1gnRYocyXI9/kozMXAkujuqKbUaU72NjUDzOrks/oWGg05MsoD3Rx95vjCx2jaCx95E46dnjp3hQiuTxM0Mpj9LPJ+b3kHR2vbhLfYOD1OXgDgvp0KQAZ10dZMM8X5/+gwAmkfUEWSpIkSQcwVVVZ9e070YRNqjNIV2cpwqPh1W36VXdxTHkDW3bU0OP1oFiC0waswVV1FEVhWKCHhV2j+PorUwodo2isveVukk0K+UqDVK2ffN6PF5eoaZNdrxMa7JKPQ6mVIm6HEQ7omkvAcLCTOic9Lif5PNjIQkmSJOkg8Ork3xEyMhw7dCvjhm1gXGwr1XqcN9YeyRYRI53UiWDSkCghnTFQFUHG8dDhBPhK+TpueW1ioSMUjeV/vBdfm4W+IoW2NI7TbpJTVIKHuZgmVPrStFlhNE8ezRKUiySmq+IaCmpI54IXLsM0zULHkD4nslCSJEk6SLxxySze3dyftxuH8ErjcJZ31RH3GIiUSkzNcWxdPZupRhEap0fWsSpViaEqBFSbFzIjOf35a8jkUoWOURRe/fU9hI+IoB2jow8yUIMuYW+Ww0IdNJphDI+NauukXY3OljDdcR+aLdB0wZHBOGcs+DGJlHwf6MFAFkqSJEkHkX9dcQceUyWctwj2CqrcJGPrNuBX86zM1ZFJ+fAFTGq8SRJWkBI3R06oOOj4LTjlxV+zpP6ZQscoCosu/Q3GIh1HM7HQSDgBtrllREMuqtDImSoVPVn8dVlsFLQmBcvUMIRLXbCdSa/dyLx33yh0DOkzkoWSJEnSQWbpZb9hzIDBmBGXXFTj3fhgurUQlq0Tjaa5uuYNHmsbTTIZ5JtVy4m7fkCg5DWyCT83r32J3753e6FjFIVXHr2HAf9djrEii74pj3ebS75bxRA24XUudplLR3cQryJQjnQxsyq9jhdVg7DH5p7Gx/jlyw8UOob0GchCSZIk6SB035eu4culRzPM28bQSAcn1m7huzWvUafHeXDHiXR1ljKQbjKGxtu9wzg6uJ0OJ4htaXTFg7R0LuWGN+Uj7wB/f+yXjKM/7kZwd/jwbnXRkja5AS5tiRCaIfBscVEsgWIpvJ0dQNLy4bo6Zk+AF3JrmbJQvh/uQCULJUmSpIPUPaddxpTaG1nV0J/l7UOYs3U8/2oaSDLr4zhPA6cNXkeP6mdrtoLD9V76VXShaSAUGFW+g21mN5MX/LzQMYrC7F/+lJ+dcTF2Q4rsSJXeYBDb0IisSOPtcNFGCHI5jbHRegYFeklkIngUCwcFVB8r0iqnz7+60DGkT0EWSpIkSQexU0eM5J+Tb2CIp4XjjUYmVq7hwspVDB64g9VWDc93HM15sZX8fc0X2BSPESpLo+kCn2KhqwLN086Ep+8udIyiMPnrJ/O/t/8Cp14Q6bIocS3UcV5yJRpmt8FxWjMbjTKSWYW066HD8uLNvb+vFxga7GLs/GsKmkHae7JQkiRJOsiVlJTwyBkPsdkIstgZxlPJo3muawzdeR9nB9fy1PLjCdQmyCcCOK5AU8DM+3DQiBlpepwOjn7s5kLHKAqDB9Xw7nV3k9YsvG0uNakUI+xulEqTzhI/HmHR1RGjPJgE10dwQAbbAoRCt1uKT1UY+5y8snQgkYWSJEnSIcDj8bDgrAfJdQObvfi3KGxd15+3knUkS6CptZJoVRI7azC8son/qx9DZz5IwvFTEsyj+hTOfH56oWMUBVVVeftb/0FX2kdblZeuKg1dcehqCdPaWkG4IkmP8GNv8ZBK+AgbGVxLIISgVDEp1QVXLbio0DGkT0gWSpIkSYeQlZfcRbbcoqPETy6ks727mmDQIVSawkwZVESSnKZthoDLoEAPLWYppqOjexw6chEmLbwa13ULHaMovPXzWWSbfGSEF7/qoJfbeKqyxNNh7DUB1BITKyTobfWjRVyG+dpJOwam6qNZlPDNBZcUOoL0CchCSZIk6RDzr4vvYIDoJejJouNgJj0YrsJXBr/HmfoGHt0xloTHQ5UeZ2Coi0TCB4Dt6PTXk0x5/XJMM1fgFMVh6ZWzSC3307Gkiq63K7FWRFAdF73UwikFmgWKruBaKhtTZWRUDxoO5f4UDblqTnn+qkJHkD6GLJQkSZIOQc9feh8n15QTTpoc7bRQl06y8L2jeM0dhLc8z0nhLSxNDCFl+7AtDQTohotQIW5FuOaNqTT3ri10jKKw4qa70bcmMY6K447IQ8BFC9ooTSCCCnpY5cTyraQdL3bSwHUFWctLZTiNcIKc8tx3Cx1B+giyUJIkSTpE/f7UHzF+xDFkax20gVlGjmjmiEgrjqOyLDOYcl+G7TtiaCUOZtZA01w8rkBRBFrAZMqS37G1c12hYxSFd/4yG3WrhdUryPR4yGsaan8Fr+pwRKSB1Yn+pJUAeCGRCbC9u4LuXIASXxbVCDD6yRvp7u4udAxpNxQhhCj0QRyoEokE0WiUeDxOJBIp9OFIkiR9Kv/zzjvM6fgfKkIZVMVBKBrbO0rIJz2opQ6aCpm4QchvE3SyqCGXIeE2vKaLbbicEpvON0ecUugYReGEX/wAbYxGwJ/HRSFvGYiUQCnRcDsNjFiOoJKjPJNhTa4fnpBFNJinK+3HzercPvJcvjJqbKFjHPT25vNbFkqfgSyUJEk6WLQnEpz65GyULKAJ9JiD4QHb1MgmdYIRk9G+rTSqldioHB2ux80YmAGdlnyEEfpR3H3y9wsdoyic8KsZqAngWCAPpD1ERsZJpIP4vRnSbWGGVjQhVJWt2RjRiE1vzovpGHjcHOdVH87NY+UUAvvS3nx+y6/eJEmSJCojEd69+JcoERvba5BP+kh0+lA1h2DQZJRvOytTA8ERDA2002SVk3Z1HKFhuRovNG1n2us/KXSMorB05j1UOqW4reC2a7iKRSpnoKl50vUhRpQ1sSVbRUIJUurN0JPwkrcVEFARSPNi77tMWjit0DGk/0cWSpIkSRIAPo/O6ktuJ+KkGBjqZHBpO8O1FkJJi+2ikrJghhJ/Fs0wyab8rLeqCeo5BBrlJSabkym+/c9vFzpGUXj6tzcz5bBTUestSptNKt/N0T8TJ+vXaBQRKkJJshkQXoMBvnbUrIYLKIpCNl9Cj+3h+Md/XOgYErJQkiRJkj7knSl3o/hNhKYSV4MQs1E1Qb9QnHJ/L5t7+1Mq4qAKGtJRDNVGUSAtAiSFwo1Lzi10hKJwzXnn8OiNN9A2wEdulJdcIEhlZZKe3ij5rI4e0Wjv9lGfi6FGQI9Dr+UFRcHFYHC0nTHzflToGIc8WShJkiRJu1gwcQ5uh0bUF2dAaQfDQ010WiF2tNVQlkuywaziuNJmqkU3OUujvTOEArTkSmnNB/nZkvMKHaEoHD6oH89+5QZaTR9tip+M8FDRP0VSCZDNOICLyBk4loIacDHzflTVRAjIqV40r8HJC35Y6BiHNFkoSZIkSbv14hX30Z0KsHVzFdu21pDq8tLu+ujy+jm+phE7JWhSq/F7HFSPCzlQFWjPlrI1W8b0F75a6AhFof/ASlZefDeZ1wzMrT56twQxcxqp1hIUrwc3oOJ2Q0DPoCkOEU+WXEZHFaAKcByNE5+4odAxDlmyUJIkSZL2aOHkB/FEBJHaJENr2zisrI1qI82GrjKa1BgOCtsaytF9DsfVNjA42I6hOgwI9jCyOsFxT8kP+A+8e9tvsJOQr1BxfRpOpYLbqqAnBZFQhnzegyIchKZSVxbHp7w/+7mmqDiGyui//5RMJlHgFIceWShJkiRJH+mV8+9ha0sNTbkSeuwQcdWP5nv/5uP6bTH0kI0na7M2UQtCJehN0Wv50VVBtZLh0pe+WegIRUHXdf514234lpn4NuUJtmfxGTYaAss10HQXTzBNW1uIhPBSn6kEDUDgCIjkTM579cfM3zq/0FEOKbJQkiRJkj7W8m/ehtJTzfbt5WzZXE3T9jKausoIVmYpszNEy/IMDzezpr2K4eEOViYGoCCICot1yYH88M2vYppmoWMUhaW/mYVdouDzgM9wiYTThKJxvGGXZHeUaIVJmUihuDp2DkxHoKsKui7oypXy+7XPMvWlnxU6xiFDFkqSJEnSJ7Lga7/g3BEDqalpZ1h5O0eWNNE/GCcZ8jAo0MGbzcM4vKIFFI2wJ0tjNkiTGUHVBMdEm/niMzfRnGoodIyisPzKWeS2O1g+iKfCmMkoKC5lpSlCuRTNiQpcXWBYeUK+HIoCSkLHdWF4sAVX284ZT8mpGPYHWShJkiRJn9gdY6fyo8Muok0JktG8OI5CLmNQHy/nmIp6jgy28XTLMZxbsZ6hWgcJw4twFVTFJVpicsH8P/Dilr8VOkZReOuXv8N9WUGrtzB3qCQ3+0mkw3SnyxBegdaTxTZ0kmkfdhbiHg1NAUtoJIjg+EKct+DSQsc46MlCSZIkSdor5xz+Jf77xB/hWhZHR3bwjUHvMrZ8K43ZCp5pG83Xa9+jJe/j8XUn4DFsHFtBRSAANQh/aX6OOSv/XOgYReGt/7ibL/c7ErUpjhIRiKyLks6i2Q6EDVQNXEUj1G3hRBUiniyG7WILFY8GnXYt5yy8qtAxDmqyUJIkSZL22rDKWu458jZ68gFazSjtTgmTqjcwuXodmsixbuMgmkMhXKAmkqDNiiBcQIPt+QqS1mPcuETeZwNw95Qr+N5J55NXHEKVeXwDFFwdsqaOk9UJtlikAwYiBbpi8VpiCGVaCgBNgYg3zWkvfA/XdQuc5OAkCyVJkiTpUxlWW83sMY/y0trhdG8oYcuGKhavGMH/bjuRlmgQVXMQluCSfm+zpGMYZsaDMMFFxdZ0VnamOG3+DwodoyhcccFZvPjln5F+2Eem3o/SoxPZYaG9p5Eu9eBaCtWROAPdLjwBhfach5RtABA1TGzVx1VLLqa3t7PASQ4+slCSJEmSPjWfz8fa7/yaTYEwS/01JKsVFA/kMgpRLcf3D3uN5fGBdOIjmTfIbfOh4OKg0pwtpcKT5IpFFxc6RlGo6h9j6WN3YfWauFsEKcWDWWUTCubxRfNUWCn+lRvEYcE22pIRaoxOXBcyjgfbVMlnPVz6zgyeXvpMoaMcVGShJEmSJH1m73x9FjE1wcTKNVxQ+y7TjniNL1Vu4vHG4/lXupbelij+gIN/WJY6bzdHB1pBKBwZbWWbU8tf3zq10BGKxrs/vhcOt4jmBUP0JEaTSi4fYGuwiuGxNtZ0VuINKmRTfixTkDR1VB3yGFh6hP/q/V8umX99oWMcNGShJEmSJH0uFk76I0+/N5pFHUfwRNux/LPrcOKJAD0dAXzRPG7KQPXAAH8Xb/cOgrxC3tXRDZcne4Zz0nz5AtgPvHPpvWSzGdr6GfiHpKkq78Q2BTu6onh9FhW5FD1OhCFGF2EP6KqDV7ExVId6q5ZtiuC8BV8vdIyDgiyUJEmSpM/Ne1Nvo8QJkuoMkU37sRwDrdNA9Qg8sTxfjq7nS8EG/tEwgi8NWcsr7YdjuypJ4eEobxsznpMf7h9461f3I94tIb1cYHbplOZSlOpp1IxBixklZqfwBzOsa6rAEDa6IkibBgJwhZ8Oq5YLF8rf52e1zwql+vp6pk6dyuDBg/H7/QwdOpSZM2fuMjNrQ0MD55xzDsFgkFgsxnXXXfeRs7d2d3dz7bXXMnz4cAKBAAMGDOC6664jHo/3tXnllVdQFGW3yzvvvNPXbnfb58yZ8/n/MiRJkg4hT026jZryHAPKOimrSlA9qocxJds5LlTPUb4Ofrb2bDxZg7El9aQTXnKmQcbyMsCb4I3EEMY+9SO6U62FjlEU3rjlV5wZO4VsW5BOK8aOeAVGysWnZqgo72FNa3+C5SZ6wsIICBTTRtgqKNDPmyHkgbHPXF3oGAe0fVYorV+/Htd1efDBB1mzZg333Xcfc+bM4aabbupr4zgOkyZNIp1O8/rrr/PYY4/xxBNPMGPGjD3229zcTHNzM7Nnz2bVqlU88sgjLFiwgKlTp/a1Oemkk2hpadlpufLKKxk0aBDHH3/8Tv3NnTt3p3ZXXHHF5//LkCRJOsQ8PeFeaqyx2DmFYwIt+BAs7RjMrWvOwJdV+cUXnuSeDWcSi6U5vmQrIwJdLI/XYPhdjo60cOYTv2XRtr8UOkZRuOnKb/Lgmd9H78rhKTexqiGX9bPOriEcNjGSDhWVGbZ1lxLSMhwbbAABWWFweDBOnSfDxS9cWOgYByxFCCH212CzZs3igQceYOvWrQDMnz+fyZMn09jYSG1tLQCPPfYYU6ZMob29nUgk8on6ffzxx7nssstIp9Pour7Ldsuy6N+/P9OnT+cXv/hF33pFUZg3bx7nn3/+p8qTSCSIRqPE4/FPfKySJEmHkt+/9yyvt/ydbCZE2J9lQu1qXosfzls7BlNdliBj6US1DLMH/5Ortk8i324wrmYbL2w5gm8c9wbHl5zNeYfJKQQAensznPOXG1ErdPCCkbaJVGaIlmRpaC/FpydpzldSFsySy6vkMbig8l80WVHWpqvo6g3x3jfuKnSMorA3n9/79R6leDxOWVlZ389Llixh1KhRfUUSwFlnnUU+n2f58uV71W8kEtltkQTw9NNP09nZyZQpU3bZNn36dGKxGF/4wheYM2fOR07Ylc/nSSQSOy2SJEnSnl139GTOr5pKuxpgfbya+9dNYEuiklBJFhyHEj3NmeFGHt4+CgWHfLePBjcMhsv6XB2/37SFP733WKFjFIWSkgD/vPY+nH+BEXfRDUFnKsy2+hikbZpzlQwNdJB0gkwu34xHgdfjA9HJk3YCDC7rZvQTPy10jAPOfiuUtmzZwv3338+0adP61rW2tlJVVbVTu9LSUjweD62tn+z76a6uLm699VauvnrP38E+/PDDnHXWWdTV1e20/tZbb+Xxxx/nxRdf5OKLL2bGjBncfvvte+znjjvuIBqN9i0f7k+SJEna1TdHf4k5R12DN59jSNkOBnpbiIoMVsrP1LL1NKcCLGEgZDQuG/EWWdOP3WtguhodZogV8Xlc8tK0jx/oEKCqKq/fdQ8JodEj/KRcnYzuZYA/iREQNDhVTPL/iye6RjDIaKFEM1nWNQxVAdVQERp8d778Gm5v7HWhdMstt+zxRukPlmXLlu20T3NzMxMnTuTCCy/kyiuv3Gmboii7jCGE2O36D0skEkyaNImRI0cyc+bM3bbZsWMHCxcu3Okepg/cfPPNjBs3jtGjRzNjxgx+/etfM2vWrD2Od+ONNxKPx/uWxsbGjz1GSZIkCY4dMoh/XnwXmxtqqEwpnKk3McTTwZ0tJ7BEGYCaFYS7XF5LD6bN8hOOmJTqKYSA40u3kezRmLjwu4WOUTSWTp1NJuugWy74YI1Sy2GZNmrVOM8kjyCoZWlwoqi4OB6oUTvRhYOqwrL8MH771pcLHeGAsdeF0vTp01m3bt1HLqNGjepr39zczPjx4xk3bhwPPfTQTn1VV1fvcuWop6cHy7J2udL0YclkkokTJxIKhZg3bx6GYey23dy5cykvL+fcc8/92Gxjx44lkUjQ1ta22+1er5dIJLLTIkmSJH0yHo/OO1f8moX1g5mXP4xt3hL0nKBjbTmj7TaUcJ4WK0R6hx+/1+LU6EZcoYGqsGFHf3zAdW+fV+gYRWPV1Nm4roWSAUVxqVeraE4HGBeqJ69oVGsp1vZWY+U0+vt7aYyH3n8xsaqQVEOMeeInhY5wQNjrQikWizFixIiPXHw+HwBNTU2ceuqpHHfcccydOxdV3Xm4cePGsXr1alpaWvrWLVq0CK/Xy5gxY/Z4DIlEggkTJuDxeHj66af7xvswIQRz587lW9/61h4LqX+3YsUKfD4fJSUln+A3IUmSJO0tXdd57/rf0NtpkNsaQOvVqarpZpVWQZMeoqctQEnA4vAhjbwWP5z+gR7ebB+CcFVKFJMd2Uq++eIlhY5RNJZd/jtEFyhpm5A/RXWol4ZUCXVqD/WZKjRV4bBAO1usWizVi2IruDb4dZsjy9v58rPfx7btQscoavvsHqXm5mZOPfVU6urqmD17Nh0dHbS2tu50BWnChAmMHDmSyy+/nBUrVvDSSy9xww03cNVVV/VdrWlqamLEiBEsXboUeP9K0oQJE0in0zz88MMkEom+fh3H2ekYFi9ezLZt23b7tdszzzzDn/70J1avXs2WLVv485//zM9//nO++93v4vV699WvRZIkSQLWfvt20BxakyGaO0po2lqF2umjJprnuCO20N/by5utQzg22shmqxJVEziOiomB32tx0nM/LHSEorH0e3fRT6+kOR6hPVdCCyU05GpQDcHwUBO9WoSm9gBOFhRdoGKTsQyieg7b8HHey9/Btvc8f+Ghbp9ND/DII4/w7W9/e7fb/n3IhoYGrrnmGhYvXozf7+eb3/wms2fP7itW6uvrGTx4MC+//DKnnnoqr7zyCuPHj99tv9u2bWPQoEF9P3/zm99k+/btvPHGG7u0XbBgATfeeCObN2/GdV2GDBnClVdeyfe///09Pj33YXJ6AEmSpM/m5CdmcFRtE7rqEtGyxIwUT7cdTWcqwrjIJrrcMPXdFZSG0+TRKAtmGeRrY11rLVbAYfEZ96Oqn+zf7IPdD/7yZ94Jr0J3QVXBDQn8lk17KoLiKuADVEHpO1DzxSa61Qi9+HCzgqpgJ/cf/hMGDBj1seMcDPbm83u/zqN0sJGFkiRJ0md31TN3sibfSVb3oikOg7ROTqzZxAvtR5Iyw3Q2lnDKiDWsNyuoCfYSUdOsbakj6/VyZGA7vz/xd5RFYoWOURT+5/kXuHvDi6jVoAgQrorrBcXjoroKaofL5KNWU+km+EviJHTdIZ8ThH0uuYzDzMMu4ayRJxU6xj5XtPMoSZIkSdKH/emcn3F65It4bBtdF7QZJTzb8QW2rh9AV2uEL49cyzq7gpCRx2fYbM1V4AgFRQXT6+Oe1VNY27690DGKwje/ciZ3HX4RIgeYCoorUDUBeRXv23D24evQbZcX4iNwu0E1BbqpoihQHUwzt+n3fG2+nGvp38lCSZIkSSq4Wyecz9eqxhFOmYSTFhEry9ijNlBX0s16qwI/Dn6RISwyjAh1cHh16/uv6XA8LO4Zzoz37uLZTS8XOkZROGvSGP6j/6VEGrMMWJJn8MsZvuzfgvewND7L5N3eOppFGVo5aKpNVaiHvNAxFJc0pWxLKZyw4JpCxygaslCSJEmSisJPvnQ+tx53NXFD0G0F2NpbTt4PUSNLQE1TFc6wKVvB0u2D2ZSrxrIEftXCdnUGRBPcvHohf/jXfxc6RlE46cyj+dvVM2mt1Mh7crS/50fzwTO9x9DUVYpQQE+6xDM6EY9JSE3Tmg1jCx1Ng3w2wgnPfK/QMYqCLJQkSZKkojH2sBH840u3EAj3cFS/Jo6paqTK00tK8dBr+ujuLKE0lsY0PVSFkwTVNB49j664uDkv/9e2lLtWPvTxAx0CKivLeO7aX9J6RISN/aroJogSdvBUuHhyFmlcSvQsW/MVlCgZsqqXhOkBQNPBZ3g468kphQ1RBGShJEmSJBWVqrIyFp7+EMu31LG2tR8t8Rhd7aVk0j70UpuuTBSPsAh7bBqTZZxevpW46QOhoGoqT9ev55p//rbQMYpCWSzCq9/8DfoGG5F3yXZoZFLgz+c4rKQb0/DTX2+lsSfKKE8rx4R2wP975ekQXycpX4hznr+isCEKTBZKkiRJUtFRVZVll91Nr+WhxY6ihhUarAqScS8Rb4rKcBLdzJMQQUxFoTUTRvXYKECsJElDbgPnLLij0DGKQiDg441b7ybkTxLuyhLoMMlE/MRVHyEtRWNPBYqusyFVxYpMf8y4jgvkXQ0HH0IYnLXwqkLHKBhZKEmSJElF692v34XPTNMv1E1NOM7hlZ1UGz109PhoMCs4vWIjO6xysr0eVJ+Nig1CwdQN0qlOxj//o0JHKAq6rvPPb/wHGa+PrOmDrRptLQE67Qj9Q3GEDT5PHrvXwFuSR7dgS6oGTRH0JksZGE5zwvwfFDpGQchCSZIkSSpqb114H6pjkUl5aO4ppSMf5os1DZxYsY1tVoy2eJi08OHVLFB02s0ICuAPWCQsnROenFHoCEVBVVWWfW8WTlCgCZMAEOrMY6s6eZ9BvDMEQN7Q8HnToCo4wsSDTdAwAS/jFv6IrVtXFzTH/iYLJUmSJKnoPXXmn+lNeYlGUkSCDqtytaxL1LB+SxXtyQhGKEvQY6K5FnaXj7DIgIBc3ovrepi8cNdXWR2q3r16Ft0Jg3y9h1RviG3bK7CbvdgIzCD4sMk5Adw0jKCV2opuLFcDRWGw3sEFK+fy8Ft/LXSM/UYWSpIkSdIBYeU378AyQ2xpKaWlvYz2nhB6zCFakiHiyWO5KknXh6I5bF3Tj0RLEIEg4DfJaSF+9trZuK5b6BhFYdXNs3GCDnaJwIkICJp4oi4xoxtHNRCdCnoozvLeoWxLlZJI6yhCoBuCYEDwn91LOW/+jYWOsV/IQkmSJEk6YLx89p0Mi4QojSWJVWSJ+vOgCjzCxrS8mM0BKkMJyg+Pk/B5CEcsTFcn5+iU+/J858WLME35AliAFT+chb48i7fFxRMWoKok68tQFZNwZTu5ZJi6aC/HhFtos6PkTEibBmiQzftpNU3G/t/1hY6xz8lCSZIkSTqg/OPsn3OyPYb49iCJ9gCZjgBtW6rxYhHxpUmYQeKbIphegd8wyWe96KoAoXBYRYIb3rmYHZ3vFTpGUVj2+98xadBY8qsg1tBLlb8Hs1fDbqgk4rOoVdL0OAZddpiAz6XZiYGtoqoQ9Fq4YY3j//azQsfYp2ShJEmSJB1wbjvrMi4/4lSMbgfaNJSEgtntx++zSTWGSFZDJJxHFS6O61JmpFEUgV+32NxbzfmL/ov/W3NvoWMUhZlfvYAnLr6afNRLyggRM0z61XRTVRKnWfWzyeoHQlCjdgGQSygIC/KOhnB09HCOY/9+8N4wrwghRKEP4kC1N28fliRJkj5/mzubOXfhHLSsAaqLE3ZQcCiJmvjI09ldiieSpUTJcLjeTmlpilfqj8CjCU7tt5ag8TVmHHvozhH071zX5dinf4amaygCFM3FtgRej0ut3k2bKEcRLvlOFU/ExVK09yf51CGbVDEUk+UX3lPoGJ/I3nx+yytKkiRJ0gFrWKyWv5/yXbyRNJUDuulX3kt1NEEu66GjoxRPJEeNnuCYwA7yjoe1Xf2ojMbRdZcyPUWH+SRnvzCz0DGKgqqqvHHGLRi2RYWvhxpPF/19cVSh0OqWo7gubhs4msKY0HZUW0FxHAB0v0D3qXxl/pTChtgHZKEkSZIkHdBG9u/Pgok3kUqptHWF6UyG0AyL/jVdlIgsg/ROUmkf/Svb8QibkaUttCaiOEJFcTV6slm+9oJ8ASxAKBRgybl30/F/QToyZfSIEMIGcwdYa1WyhsbIymbeTA7BMPJoAQdVsRAChKrSaVYx5smfFDrG50oWSpIkSdIBLxaJ8MbkWUSTaSr0FGEnR53VQamTorWnhMrqXrZ3VtKVC9NuhrHiBgNC3QhAywsarRB3LTmz0DGKgqqqLP/TPSirHdIbPVjNBq6m4hueY7C/k/WpWnxqBjOrI3oM4kkPdlIBBYQOhlAY//w1hY7xuZGFkiRJknRQ0HWd177zW9JJg2MqG6mKJehX1UO3z88724fQmC5nQEUny7YfTvmgLt5KDMVWVWxUVA3eSg1m1CM3FTpG0Vhy0z0ovRZqiY2nQpB3/LRmSnCT4GR8GC4QtvGrCkIF1XRRFFAEOI6HUxYcHPd+yUJJkiRJOqgsuexe3tnej5c3H8lbG4fjFQ6H1XTQL9bNO/WHoakmPxiymLU9FZSSwrUMADpEhOPqGpn83HcKnKB4rPjlbHJxBbXTQm+3ICTwhW1coWF5BGbWSz4NPr/AQkXLAxb0ZkLkRZgTnruu0BE+M1koSZIkSQed1y76AwoO8VyYhp4qXlx9NO+sOozSkm6uP/oFHt76JerCCdZlavHE8vD/Juwe7Olm28ZBfHnBdDKZVGFDFIlVV99FfrOXLtdLb5OfeI+HvKpiOgb5hIq/RGBkbNQEHFuyFfygqzbC9iDwccGiywsd4TOR0wN8BnJ6AEmSpOL2lfnfp9ybZlR5E1lHZ1VXHR7NIuTNogqXd+sPx6jM42YUygMpKtUEb64aSeXwFnpTIZ497TIGxo4sdIyicOLkH5K/yI/jaKCDJ2yhOaB12dgKBEvzOArkjABHl25nTbI/tq2j6xZO2uHtr92LqhbH9Rk5PYAkSZIkAc+f/R+kk0expKM/61PVlPhSVHp6WdXcnxXbD8eoyuM6oPgEPx2ygJXZfih5hbBhEgpbTF9xH2/umF/oGEXh7Wfvo98/wf9mAv/2LKLZRmy3McMaVRW9OLaLpQfIZHQ2JirwaSaK+v6rUUrCWU545mcH5Lv2ZKEkSZIkHdT+cd4MhorT2dZTyaqmwbzddThqiYIay+OaCsKFUUYzr7UOx3E1PAGL9mwEVXfpdUMsbruPmW/dXOgYReG5h2/n7MEj0TZnqQyl6dcvgb87QdemGHlvkGTO4MjKJnI5H6pto+oWCi6KpjMi0sxZi66ku7u70DH2ivzq7TOQX71JkiQdOFY2bGXq63NQNfX9ywSagzckODu4Gi8Of+06AXNrkMMOb6BX8WAqXjTFZmCgl1q9k7A9iplfuqPQMYrCTX+4m/mpDjQ/iLBCLuiln9aBGTRIJfx4DAcTHW/AQmQFHr/JIF8PfivPBreGXw2ezJcOn1iw49+bz29ZKH0GslCSJEk6sGzasYMpb93L1EFvETHybIhX8nTPUWQUDbshhM/IEoilqIjlqO8uIxpIEfPlaDODGHmHE8s6ufOk/yl0jKLwPw/P5/dtz8EQA1QFN6MTrMmQafPhhDS0QB6RMRha0sLqjgHUhTup1tO0KFHaMiGO9hg8cvZtBTl2WSjtJ7JQkiRJOvD09qYY98BvUfo5qLqL0+1BSeqU1HWgBCxKwjl6RJiu1gjHD9pGVM/yXrqWkYFWDMvG78kx+6SnCx2jKKz611a+PX82IuJHLRc4qhedPJ4QmCmNiJbEChhk27yIUoNjfVvZrpTTa4cYF9zAW+nhvHX23fv9uOXN3JIkSZK0ByUlIdbdeDOBSIoQCfpVteAb1oEbVYiVm/SIMJ1NQSqremjIRjk22kCIDDmhE/baRDIOX3lhaqFjFIWjjhnCgm/9Bm27jpr1olug5XXcZp1+3h7MgIeOpgi1Vb24imCtVYquvv9+uNWJgZTo3Zz81PWFDfExZKEkSZIkHZKWnT+LhOMnEQzgCStgqGzrKKOrOUJVbS9+1WJUuJWFXUdyXvVqtvVWoCB4r20QqB5+svS8QkcoCrHaMp7+/gx6MwK9LIcSs1D75diUqiK13s/Q2g4aE5UM03eg6x7y7vsTfNqWTsqN4Po0TnzsxwVOsWeyUJIkSZIOWWsvv51KLUNYyxDUMtSW9jKy3w5cVWVUpAUbhVROw1Z1bAuaU0HcvEpYz7My3o9fvD2p0BGKQvWAStZNu538mwJf3CLq5ChTU2g1Cs2ZcgaEm2hXS9CwyJpeTEuhItQLgONqaAHBuHnFWSzJQkmSJEk6pD171h/QXT8jQq0cHWniuPIGTindzLLEQLpzPr7RfwX/u+l4jihvI+4Nc1h5O512mLTw0533ccfKMw/I+YE+b6qq8s4t99KRN8j0+Il68lSoCTzeJO12GQgHNIO8peFTBVV6N341DYAWcMCrcOI/flTgFLuShZIkSZJ0yJt/1mxWbjwCFUHK8WGogivrXqPEl2fOmvHEAr10p/20N5RR1q8L29UAgaFCtx3ki0/+kEwmUegYBaeqKv+67B5SukHKr5MLqoR9Ln6fQyoXojfhQ/NCjejhtZYRZC0vmgoCwFXQdJVJL36LrfXvFTpKH/nU22cgn3qTJEk6uNzxyjye3L6EvGugaC7RsgRHRbvYkCohl45yWngD640oqBplniTJvBfDA1FPhu6snxlDbuDo/scWOkZR+MK9N+BUqGhBcPPg+gU+R6VO72KzVU55NE5PZwRvzMJs0dHKFFTdZUSwgY2JKi6NncT3TrxknxybfOpNkiRJkj6FG0/9Kr8edzGVgSxVtWlCAZU1Pf0xN0f5UtlGNnlDdLshtueilARMTihpptobx69ZOHmNvzb+ksXrFhc6RlF450ezceMOFTtyDMymOCrXgdAt1ndVUxbpobs9glEGblZDjygohkAVoCgaMV+WZfknOX3BdYWOIQslSZIkSfp3Zx1+HPee8gMyrkuZ2svA0laqj+rgFWcYKTdI0vFwWvlG2nr9NJoRxkQbSLkB0pafhlyMP3c+yoOr/l7oGEVh5fR76EjqNPXq7Mh40dJ5dK9NvCGKr1IgkjZ2iwLrBJoK1g4F09ZQFIURoU7Sls4Xn7uioBlkoSRJkiRJHzKqeiBPnPAbWvMBNqditObCuK6N7aqMr9xMWybMkSVddJg+6nMx3u2qoV+kB0uoNCRLeWTTG9z85qOFjlEU3vn5vYS6Ksg7Xijz4C/P4/FbCNfBbdExNuqox4PbBrmoxna7FNcVuKhEPXkMzc8lCy8s2PHLQkmSJEmSdqOipIRFZz1I1I4zKNjFkaE2SslimC5hn82/EhWcUrGNHbko2c4gjXYpOgLH1TDTIZakl/Efy39f6BhF4aXbfsEl0dNw/xHA2ubHyXtRnwxAJSgTLdihkEvBiNJWNNuliwiKLXBRMFyDXreE0164uiDHvs8Kpfr6eqZOncrgwYPx+/0MHTqUmTNnYprmTu0aGho455xzCAaDxGIxrrvuul3a/Lvu7m6uvfZahg8fTiAQYMCAAVx33XXE4/Gd2m3cuJHzzjuPWCxGJBLh5JNP5uWXX/5MY0uSJEmHnmfPmUtIy5CwfCRUL51OkBNLtzAi2snKZH+W7BjGUVUN+FSbL1VuxfC4CAExkePBTU08vVm+SBdg+kXn85cZ30NrsdGCLpyRx+gBe5tK0lYZMrSDhGLgUW3cHoXXU0PJWAaKCwk7zDC9i2vfuGW/H/c+K5TWr1+P67o8+OCDrFmzhvvuu485c+Zw00039bVxHIdJkyaRTqd5/fXXeeyxx3jiiSeYMWPGHvttbm6mubmZ2bNns2rVKh555BEWLFjA1Kk7Tyc/adIkbNtm8eLFLF++nNGjRzN58mRaW1s/9diSJEnSoekPJ/2DzduqKPOm0TwuL3aP5NmWUby6ZiSHh9poV0Ok8jr/6qmjfzCOkxWggEDn8U2baE2tLXSEonD48P48d93NCG8WQ8vg75+lakg30cFZ2nIlOKZGwgzzlf6r6Er5EYpBGg2EQFc0NmXb9vucVft1eoBZs2bxwAMPsHXrVgDmz5/P5MmTaWxspLa2FoDHHnuMKVOm0N7e/okfuX/88ce57LLLSKfT6LpOZ2cnFRUVvPrqq3zpS18CIJlMEolEePHFFzn99NM/l7Hl9ACSJEmHljMXfR/dBhyFWChFmxOm1JvFNAVHRDt5tXMYdf4OGtNVhHxZmtrDfLlqO1+uTvONI54q9OEXlXEzrycQctBDDlaZRjZooPYqnFa3jhfTI1EsgeIRxLQErqkQ8Vu0igjTBx/HV4dO+UxjF+30APF4nLKysr6flyxZwqhRo/oKFYCzzjqLfD7P8uXL96rfSCSCrusAlJeXc8QRR/Doo4+STqexbZsHH3yQqqoqxowZ86nHzufzJBKJnRZJkiTp0PHChP8gm9eoivZiqgrDAm2MiW4nmwvxevcQhoVaWLtmEJG0SdwKoigamuLSm5OfFx+25Fe/JWP7Cek2R+idHOG0QYXC69uHImzA1lFyNp0iTD7npcSXRlVc1sX379W5/VYobdmyhfvvv59p06b1rWttbaWqqmqndqWlpXg8nr6vyD5OV1cXt956K1df/f/f5KUoCi+88AIrVqwgHA7j8/m47777WLBgASUlJZ967DvuuINoNNq31NXVfaJjlCRJkg4er3z196xeX42t6GzOVPJqz+HUlPZg5l1Wrh5COJojWwq5nIpwYX1PDR7FKfRhF6UlN95NY08J71j9+Jdbi+NA3vDjFQ66kkYzFCqzCfqFulkXr8KvWpT7yz6+48/RXhdKt9xyC4qifOSybNmynfZpbm5m4sSJXHjhhVx55ZU7bVMUZZcxhBC7Xf9hiUSCSZMmMXLkSGbOnLnT/tdccw2VlZW89tprLF26lPPOO4/JkyfT0tLyqce+8cYbicfjfUtjY+PHHqMkSZJ08Fn23dl099bS0xRhx9oYq7fXomW99IulUCpskjk/TlbjmJJm2u0gJV75oNCeLP3J3ajLNcJroHS7SdhNIew8luIjnEwT1TPohiCPhy47yNcGf3e/Hp++tztMnz6diy+++CPbDBo0qO+/m5ubGT9+POPGjeOhhx7aqV11dTVvv/32Tut6enqwLGuXqz0flkwmmThxIqFQiHnz5mEYRt+2xYsX8+yzz9LT09P33eMf//hHXnjhBf7yl7/ws5/97FON7fV68Xq9H3lckiRJ0qHh5XN/xeXP/Yn1Ygu68f6j7B2Ol3SPgY6gzhtnY281kwauxR+6rNCHW9TemnUXv/rb//LSqnewEhHw2gyqa6bLDtLr+unIlOLz24zw5oj59u8Vpb0ulGKxGLFY7BO1bWpqYvz48YwZM4a5c+eiqjtfwBo3bhy33XYbLS0t1NTUALBo0SK8Xm/fvUS7k0gkOOuss/B6vTz99NP4fL6dtmcyGYBdxlNVte9u+U87tiRJkiR94K+TrmLhpjXc9PZfMTUPCoKIsBhU3s6q1jq+OGgrI0qyTOh/TaEPtejN/MYlfGfCBL7x5K3g87JdVKOEHTwhgerCECPNb0+es9+Pa5899dbc3Mwpp5zCgAEDePTRR9E0rW9bdXU18P4j+qNHj6aqqopZs2bR3d3NlClTOP/887n//vuB94ut008/nUcffZQTTjiBZDLJmWeeSSaTYd68eQSDwb5+Kyoq0DSNzs5ORowYwSmnnMIvf/lL/H4/f/rTn/jd737HO++8wzHHHPOJxv448qk3SZIkCSBj5pjxyk/YFH//240BZV2MK92GL3wclwydha7u9XWJQ9rDa5/n780LAUGVZvO9kdM4seroz63/vfr8FvvI3LlzBbDb5d9t375dTJo0Sfj9flFWViamT58ucrlc3/Zt27YJQLz88stCCCFefvnlPfa7bdu2vv3eeecdMWHCBFFWVibC4bAYO3aseP755/dq7I8Tj8cFIOLx+N7/giRJkqSDjuVYYl3verExvkFYjlXow5H2YG8+v/frPEoHG3lFSZIkSZIOPEU7j5IkSZIkSdKBRBZKkiRJkiRJeyALJUmSJEmSpD2QhZIkSZIkSdIeyEJJkiRJkiRpD2ShJEmSJEmStAeyUJIkSZIkSdoDWShJkiRJkiTtgSyUJEmSJEmS9kC+fOYz+GBS80QiUeAjkSRJkiTpk/rgc/uTvJxEFkqfQTKZBKCurq7ARyJJkiRJ0t5KJpNEo9GPbCPf9fYZuK5Lc3Mz4XAYRVEKfTi7lUgkqKuro7GxUb6ProDkeSg8eQ4KT56D4iDPw/tXkpLJJLW1tajqR9+FJK8ofQaqqtK/f/9CH8YnEolEDtk/iGIiz0PhyXNQePIcFIdD/Tx83JWkD8ibuSVJkiRJkvZAFkqSJEmSJEl7IAulg5zX62XmzJl4vd5CH8ohTZ6HwpPnoPDkOSgO8jzsHXkztyRJkiRJ0h7IK0qSJEmSJEl7IAslSZIkSZKkPZCFkiRJkiRJ0h7IQkmSJEmSJGkPZKF0gOnp6eHyyy8nGo0SjUa5/PLL6e3t/ch9hBDccsst1NbW4vf7OfXUU1mzZs1ObfL5PNdeey2xWIxgMMi5557Ljh07dunrueee48QTT8Tv9xOLxbjgggs+z3gHhEKeg0GDBqEoyk7Lz372s8874gGh0H8LH7QdPXo0iqKwcuXKzynZgaOQ5+Dcc89lwIAB+Hw+ampquPzyy2lubv68Ixa9Qp2D+vp6pk6dyuDBg/H7/QwdOpSZM2dimua+iFlYQjqgTJw4UYwaNUq8+eab4s033xSjRo0SkydP/sh97rzzThEOh8UTTzwhVq1aJb7xjW+ImpoakUgk+tpMmzZN9OvXT7zwwgvi3XffFePHjxfHHHOMsG27r83f//53UVpaKh544AGxYcMGsX79evH444/vs6zFqpDnYODAgeLXv/61aGlp6VuSyeQ+y1rMCnkePnDdddeJs88+WwBixYoVn3fEolfIc3DvvfeKJUuWiPr6evHGG2+IcePGiXHjxu2zrMWqUOdg/vz5YsqUKWLhwoViy5Yt4qmnnhKVlZVixowZ+zRvIchC6QCydu1aAYi33nqrb92SJUsEINavX7/bfVzXFdXV1eLOO+/sW5fL5UQ0GhVz5swRQgjR29srDMMQjz32WF+bpqYmoaqqWLBggRBCCMuyRL9+/cSf//znfRHtgFHIcyDE+4XSfffd9zmnOvAU+jwIIcTzzz8vRowYIdasWXNIFkrFcA7+3VNPPSUURRGmaX7WaAeMYjsHd999txg8ePBnjVV05FdvB5AlS5YQjUY58cQT+9aNHTuWaDTKm2++udt9tm3bRmtrKxMmTOhb5/V6OeWUU/r2Wb58OZZl7dSmtraWUaNG9bV59913aWpqQlVVjj32WGpqajj77LN3uVx7sCvkOfjAXXfdRXl5OaNHj+a22247OC91f4xCn4e2tjauuuoq/vrXvxIIBD7veAeEQp+Df9fd3c1///d/c9JJJ2EYxucR74BQTOcAIB6PU1ZW9lljFR1ZKB1AWltbqays3GV9ZWUlra2te9wHoKqqaqf1VVVVfdtaW1vxeDyUlpbusc3WrVsBuOWWW7j55pt59tlnKS0t5ZRTTqG7u/uzBTuAFPIcAPzgBz/gscce4+WXX2b69On89re/5ZprrvlMmQ5EhTwPQgimTJnCtGnTOP744z9zlgNVof8WAH76058SDAYpLy+noaGBp5566lPnORAVwzn4wJYtW7j//vuZNm3aXucodrJQKgK33HLLLjfofnhZtmwZAIqi7LK/EGK36//dh7d/kn3+vY3rugD8/Oc/52tf+xpjxoxh7ty5KIrC448//omzFqsD4RwA/PCHP+SUU07h6KOP5sorr2TOnDk8/PDDdHV1fdKoRe1AOA/3338/iUSCG2+8cW+iHTAOhHPwgR//+MesWLGCRYsWoWka3/rWtxAHwcsmDqRzANDc3MzEiRO58MILufLKKz8u3gFHL/QBSDB9+nQuvvjij2wzaNAg3nvvPdra2nbZ1tHRscv/HXyguroaeP//EGpqavrWt7e39+1TXV2NaZr09PTs9H8Q7e3tnHTSSQB9+44cObJvu9frZciQITQ0NHySmEXtQDgHuzN27FgANm/eTHl5+Uce/4HgQDgPixcv5q233trlPVnHH388l156KX/5y18+QdLidSCcgw/EYjFisRiHH344RxxxBHV1dbz11luMGzfuk4UtUgfSOWhubmb8+PGMGzeOhx566JMFPNDs97uipE/tgxv33n777b51b7311ie6ce+uu+7qW5fP53d7497f/va3vjbNzc073bgXj8eF1+vd6WZu0zRFZWWlePDBBz/XnMWskOdgd5555hkBiO3bt3/WaAeUQp6H7du3i1WrVvUtCxcuFID4+9//LhobG/dF3KJUbH8LDQ0NAhAvv/zyZ0x24Cj0OdixY4c47LDDxMUXX7zbp0IPFrJQOsBMnDhRHH300WLJkiViyZIl4qijjtrlUdDhw4eLf/zjH30/33nnnSIajYp//OMfYtWqVeKSSy7Z7aOg/fv3Fy+++KJ49913xWmnnbbL47g/+MEPRL9+/cTChQvF+vXrxdSpU0VlZaXo7u7e98GLSKHOwZtvvinuvfdesWLFCrF161bxt7/9TdTW1opzzz13/wQvMoX8W/h327ZtOySfehOicOfg7bffFvfff79YsWKFqK+vF4sXLxZf/OIXxdChQ0Uul9s/4YtEoc5BU1OTGDZsmDjttNPEjh07dpqy5GAjC6UDTFdXl7j00ktFOBwW4XBYXHrppaKnp2enNoCYO3du38+u64qZM2eK6upq4fV6xZe//GWxatWqnfbJZrNi+vTpoqysTPj9fjF58mTR0NCwUxvTNMWMGTNEZWWlCIfD4owzzhCrV6/eV1GLVqHOwfLly8WJJ54ootGo8Pl8Yvjw4WLmzJkinU7vy7hFq5B/C//uUC6UCnUO3nvvPTF+/HhRVlYmvF6vGDRokJg2bZrYsWPHvoxblAp1DubOnSuA3S4HG0WIg+DON0mSJEmSpH1APvUmSZIkSZK0B7JQkiRJkiRJ2gNZKEmSJEmSJO2BLJQkSZIkSZL2QBZKkiRJkiRJeyALJUmSJEmSpD2QhZIkSZIkSdIeyEJJkiRJkqRd3HbbbZx00kkEAgFKSko+0T5tbW1MmTKF2tpaAoEAEydOZNOmTTu1eeihhzj11FOJRCIoikJvb+9O2+vr65k6dSqDBw/G7/czdOhQZs6ciWmae3X8r776Kueccw61tbUoisKTTz65V/t/QBZKkiRJkiTtwjRNLrzwQr73ve99ovZCCM4//3y2bt3KU089xYoVKxg4cCBnnHEG6XS6r10mk2HixIncdNNNu+1n/fr1uK7Lgw8+yJo1a7jvvvuYM2fOHtvvSTqd5phjjuEPf/jDXu33YXJmbkmSJEmS9uiRRx7h+uuv3+XKz4dt3LiR4cOHs3r1ao488kgAHMehsrKSu+66iyuvvHKn9q+88grjx4+np6fnY69YzZo1iwceeICtW7f2rVu7di033HADr776KsFgkAkTJnDfffcRi8V22V9RFObNm8f555//iTL/O3lFSZIkSZKkzyyfzwPg8/n61mmahsfj4fXXX/9MfcfjccrKyvp+bmlp4ZRTTmH06NEsW7aMBQsW0NbWxkUXXfSZxtkdWShJkiRJkvSZjRgxgoEDB3LjjTfS09ODaZrceeedtLa20tLS8qn73bJlC/fffz/Tpk3rW/fAAw9w3HHHcfvttzNixAiOPfZY/vM//5OXX36ZjRs3fh5x+shCSZIkSZIOEbfccguKonzksmzZsk/Vt2EYPPHEE2zcuJGysjICgQCvvPIKZ599Npqmfao+m5ubmThxIhdeeOFOX90tX76cl19+mVAo1LeMGDECeL+w+jzpn2tvkiRJkiQVrenTp3PxxRd/ZJtBgwZ96v7HjBnDypUricfjmKZJRUUFJ554Iscff/xe99Xc3Mz48eMZN24cDz300E7bXNflnHPO4a677tplv5qamk99/LsjCyVJkiRJOkTEYrHd3uz8eYtGowBs2rSJZcuWceutt+7V/k1NTYwfP54xY8Ywd+5cVHXnL8COO+44nnjiCQYNGoSu79tSRn71JkmSJEnSLhoaGli5ciUNDQ04jsPKlStZuXIlqVSqr82IESOYN29e38+PP/44r7zySt8UAWeeeSbnn38+EyZM6GvT2trKypUr2bx5MwCrVq1i5cqVdHd3A+9fSTr11FOpq6tj9uzZdHR00NraSmtra18f3//+9+nu7uaSSy5h6dKlbN26lUWLFvGd73wHx3EASKVSfccMsG3btr48e0VIkiRJkiR9yBVXXCGAXZaXX365rw0g5s6d2/fz7373O9G/f39hGIYYMGCAuPnmm0U+n9+p35kzZ+623w/6mTt37m63f7hk2bhxo/jqV78qSkpKhN/vFyNGjBDXX3+9cF1XCCHEyy+/vNs+rrjiir36Pch5lCRJkiRJkvZAfvUmSZIkSZK0B7JQkiRJkiRJ2gNZKEmSJEmSJO2BLJQkSZIkSZL2QBZKkiRJkiRJeyALJUmSJEmSpD2QhZIkSZIkSdIeyEJJkiRJkiRpD2ShJEmSJEmStAeyUJIkSZIkSdoDWShJkiRJkiTtgSyUJEmSJEmS9uD/A5LfkbvF6uEvAAAAAElFTkSuQmCC", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# #confirm that above is doing what I expect...\n", - "\n", - "# fig = plt.figure()\n", - "# plt.scatter(along_dist_km,height)\n", - "\n", - "# fig = plt.figure()\n", - "# plt.scatter(longitude,latitude,c=height)\n", - "\n", - "# fig = plt.figure()\n", - "# gdf.plot(column='height',aspect=1/10)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb b/icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb deleted file mode 100644 index 7052b6f..0000000 --- a/icesat2_kdph-main/04_plot_kd2kd_comparison.ipynb +++ /dev/null @@ -1,216 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "c43f4063-0bb8-471c-bb5c-6cf373e8cc0f", - "metadata": {}, - "source": [ - "plot kd from argo, ws profiles, and ooi array" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "7403ceef-8892-466a-86d8-01f06f288770", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet geopy" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a13b3781-26c0-43db-bed8-6b65ded2dbc9", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "from datetime import datetime, timedelta, timezone\n", - "import matplotlib.pyplot as plt\n", - "from scipy import stats\n", - "import glob\n", - "from geopy.distance import geodesic" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "8645932d-8500-48d1-972e-075a718aa2bc", - "metadata": {}, - "outputs": [], - "source": [ - "def matchkdvals(file_name,ground):\n", - " is2 = pd.read_csv(file_name)# load data\n", - " t = datetime.strptime(file_name[8:22],'%Y%m%d%H%M%S')# strip time from file name\n", - " t = t.replace(tzinfo=timezone.utc)\n", - " tdiff = abs(t - ground['time']) # calculate difference between file time and each argo entry\n", - " # find all entries in argo where tdiff<6h\n", - " ground_sub = ground[tdiff<(timedelta(hours=12))]\n", - " rows = ground_sub.index.values\n", - " \n", - " # find all entries in argo where distance is < 10km\n", - " for jj in rows:\n", - " ground_coords = (ground_sub.loc[jj,'lat'],ground_sub.loc[jj,'lon']) #lat,lon tuple\n", - " dist = np.ones(len(is2))*np.nan\n", - " for kk in range(len(is2)):\n", - " is2_coords = (is2.loc[kk,'latitude'],is2.loc[kk,'longitude'])\n", - " try:\n", - " dist[kk] = geodesic(ground_coords, is2_coords).km\n", - " except:\n", - " continue\n", - " idx = np.argmin(dist)\n", - " if np.min(dist)<10:\n", - " ground.loc[jj,'icesat2_kd'] = is2.loc[idx,'kd']\n", - " ground.loc[jj,'dist_offset'] = np.min(dist)\n", - " ground.loc[jj,'time_offset'] = tdiff[jj]\n", - " \n", - " return ground\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "9503d5d0-1a51-40aa-bc21-696b38fa46ae", - "metadata": {}, - "outputs": [], - "source": [ - "pname = 'results/'\n", - "\n", - "# load argo data:\n", - "argo = pd.read_csv('data/Dataset_Kd_Paper_2018.csv')\n", - "argo[\"time\"] = pd.to_datetime(argo[\"dt_float\"]-719529,unit='d',utc=True).round('s')\n", - "argo = argo.rename(columns={\"lat_float\": \"lat\", \"lon_float\": \"lon\"})\n", - "# argo['dt_float'] = pd.to_datetime(argo[\"dt_float\"],format='ISO8601').round('s')\n", - "argo['icesat2_kd'] = np.nan\n", - "argo['dist_offset'] = np.nan\n", - "argo['time_offset'] = timedelta(hours=0)\n", - "fnames = glob.glob(pname+'*Further.csv')\n", - "for file in fnames:\n", - " # print(file)\n", - " argo = matchkdvals(file,argo)\n", - "\n", - "# load ooi data:\n", - "ooi = pd.read_csv(pname+'ooi_kdcalculations10m.csv',index_col=0)\n", - "ooi['time'] = pd.to_datetime(ooi[\"time\"],format='ISO8601').round('s')\n", - "ooi['icesat2_kd'] = np.nan\n", - "ooi['dist_offset'] = np.nan\n", - "ooi['time_offset'] = timedelta(hours=0)\n", - "fnames = glob.glob(pname+'*Further.csv')\n", - "for file in fnames:\n", - " ooi = matchkdvals(file,ooi)\n", - "\n", - "# load ws data:\n", - "ws = pd.read_csv(pname+'ws_kdcalculations10m.csv',index_col=0)\n", - "ws['time'] = pd.to_datetime(ws[\"time\"],format='ISO8601').round('s')\n", - "ws['icesat2_kd'] = np.nan\n", - "ws['dist_offset'] = np.nan\n", - "ws['time_offset'] = timedelta(hours=0)\n", - "fnames = glob.glob(pname+'*Further.csv')\n", - "for file in fnames:\n", - " ws = matchkdvals(file,ws)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "2b3924e3-0ea6-4699-88b5-1a3eea9376bd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhAAAAGiCAYAAAC26v9qAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6L0lEQVR4nO3dfXxU5Z3///eZSTITbma4T0BCCJYCAUVIgAREtJUgCqv99bvEaqO2WGXLKpH9bitSV6RbU/rbWooFLK2VZfsjphYpdIuV2K2Agq7EBFtvUdFESIQgZBKU3Myc3x+BkSEJ5GTmZIbh9ezjetS55jrXXOc4D+eTz3Wd6ximaZoCAACwwBHtAQAAgAsPAQQAALCMAAIAAFhGAAEAACwjgAAAAJYRQAAAAMsIIAAAgGUEEAAAwDICCAAAYBkBBAAAsIwAAgCAOLJz507NnTtXQ4YMkWEY+sMf/hDyvmmaWrZsmYYMGaLk5GRdffXVeuONNyx/DgEEAABx5MSJExo/frx+8YtftPv+T37yEz366KP6xS9+oVdffVWpqamaOXOm6uvrLX2OwcO0AACIT4ZhaPPmzbrpppsktWYfhgwZosLCQn3/+9+XJDU2NiolJUUrVqzQ3Xff3em+E+wYcDQEAgEdOnRIvXv3lmEY0R4OACCGmaap+vp6DRkyRA6HPcn4kydPqqmpKSJ9mabZ5rfN5XLJ5XJZ6ufAgQOqqalRXl5eSD8zZszQ7t27L84A4tChQ0pLS4v2MAAAF5CqqioNHTo04v2ePHlSGem9VHPYH5H+evXqpYaGhpC6hx56SMuWLbPUT01NjSQpJSUlpD4lJUUfffSRpb7iJoDo3bu3pNYvg8fjifJoAACxzOfzKS0tLfjbEWlNTU2qOezXgbJ0eXqHl+Hw1QeUkfVRm983q9mHM52dzWgvw3E+cRNAnD5xj8dDAAEA6BS7p7w9vR1hBxDBviLw+5aamiqpNRMxePDgYP3hw4fbZCXOh7swAACwid8MRKRESkZGhlJTU1VaWhqsa2pq0o4dOzR16lRLfcVNBgIAgFgTkKmAwrvZ0erxDQ0Neu+994KvDxw4oIqKCvXr10/Dhg1TYWGhHnnkEY0cOVIjR47UI488oh49euiWW26x9DkEEAAA2CSggMLNH1jtYe/evbrmmmuCrxcvXixJuv3227V+/Xp973vf0+eff67vfve7OnbsmKZMmaLt27dbXg8SN/tA+Hw+eb1e1dXVsQYCAHBOdv9mnO7/0DtDI7KIcsioj2Pu940MBAAANvGbpvxh/p0e7vF2IYAAAMAm0VgD0V24CwMAAFhGBgIAAJsEZMofpxkIAoiLjGkGZBgkngCgO8TzFAYBxEWgJXBClXVP6GD9U2oOHFWio6+G9M5XuvdOJTjs2cYVABDfCCDiXEvghF6r+aYamt6WTt1L3Bw4po/q1qn2s78oa3AxQQQA2CSe78Iglx3nPvZtCAkevhDQieb39VHdr6MxLAC4KAQiVGIRAUScO1j/O3X89QvoUP3T3TkcAECcYAojzjX5D5/z/ebAURZWAoBN/BG4CyPc4+1CABHnXAmpOtnycYfvJzkHEjwAgE38ZmsJt49YxC9HnLuk982SOnrevePU+wAAO7AGAhesob0L5HFdobZBhEO9kzKV5vlWFEYFALjQMYUR55wOtyakrNfH9b/VofqndLLlE7mcAzWkd77SPAVyOnpEe4gAELcCMuTvMAvc+T5iEQHERcDpcCvde6fSvXdGeygAcFEJmK0l3D5iEVMYAADAsi4FEGvWrFFGRobcbreysrK0a9euDts+88wzmjlzpgYOHCiPx6Pc3Fw999xzIW3Wr18vwzDalJMnT3ZleAAAxAT/qSmMcEssshxAlJSUqLCwUEuXLlV5ebmmT5+u2bNnq7Kyst32O3fu1MyZM7Vt2zaVlZXpmmuu0dy5c1VeXh7SzuPxqLq6OqS43e6unRUAADEgngMIy2sgHn30Uc2fP1933tk6n75y5Uo999xzWrt2rYqKitq0X7lyZcjrRx55RFu2bNEf//hHTZgwIVhvGIZSU1OtDgcAAESBpQxEU1OTysrKlJeXF1Kfl5en3bt3d6qPQCCg+vp69evXL6S+oaFB6enpGjp0qObMmdMmQ3G2xsZG+Xy+kAIAQCwJmEZESiyyFEDU1tbK7/crJSUlpD4lJUU1NTWd6uOnP/2pTpw4oXnz5gXrRo8erfXr12vr1q0qLi6W2+3WtGnTtH///g77KSoqktfrDZa0tDQrpwIAgO3ieQqjS4soDSP0ZEzTbFPXnuLiYi1btkwlJSUaNGhQsD4nJ0ff/OY3NX78eE2fPl2/+93v9OUvf1mPPfZYh30tWbJEdXV1wVJVVdWVUwEAAF1gaQ3EgAED5HQ622QbDh8+3CYrcbaSkhLNnz9fTz/9tK699tpztnU4HJo0adI5MxAul0sul6vzgwcAoJv55ZA/zB0T/BEaS6RZOqukpCRlZWWptLQ0pL60tFRTp07t8Lji4mLdcccd2rhxo2644Ybzfo5pmqqoqNDgwYOtDA8AgJhiRmD9gxmjayAs34WxePFiFRQUKDs7W7m5uVq3bp0qKyu1YMECSa1TCwcPHtSGDRsktQYPt912m37+858rJycnmL1ITk6W1+uVJD388MPKycnRyJEj5fP5tGrVKlVUVGj16tWROk8AALpdJNYwxOoaCMsBRH5+vo4eParly5erurpa48aN07Zt25Seni5Jqq6uDtkT4pe//KVaWlq0cOFCLVy4MFh/++23a/369ZKk48eP66677lJNTY28Xq8mTJignTt3avLkyWGeHgAAsINhmmaM7rJtjc/nk9frVV1dnTweT7SHAwCIYXb/Zpzu/9nXM9Szd3hrIE7UBzT78gMx9/vGw7QAALBJQIYCYS6iDCg2/87nYVoAAMAyMhAAANiERZQAAMAyv+mQ3wxzH4gYXarIFAYAALCMDAQAADZpXUQZ3hREuMfbhQACAACbBCKwlTV3YQAAgLhBBgIAAJvE8yJKAggAAGwSkCNuN5IigAAAwCZ+05A/zKdphnu8XVgDAQAALCMDAQCATfwRuAvDzxQGAAAXl4DpUCDMRZSBGF1EyRQGAACwjAwEAAA2YQoDAABYFlD4d1EEIjOUiGMKAwAAWEYGAgAAm0RmI6nY/FufAAIAAJtEZivr2AwgYnNUAAAgppGBAADAJgEZCijcRZSxuZU1AQQAADaJ5ykMAggAAGwSmX0gYjOAiM1RAQCAmEYGAgAAmwRMQ4FwN5KK0cd5E0AAAGCTQASmMGJ1H4jYHBUAAIhpZCAAALBJZB7nHZt/6xNAAABgE78M+cPcxyHc4+0Sm2ENAACIaWQgAACwCVMYAADAMr/Cn4LwR2YoERebYQ0AAIhpZCAAALAJUxgAAMCyeH6YVmyOCgCAOGCeepx3OMW0uIaipaVFP/jBD5SRkaHk5GSNGDFCy5cvVyAQiOi5kYEAACCOrFixQo8//rj+8z//U2PHjtXevXv1rW99S16vV4sWLYrY5xBAAABgk2hMYezZs0c33nijbrjhBknS8OHDVVxcrL1794Y1jrMxhQEAgE1OP40z3CJJPp8vpDQ2Nrb7mVdeeaX+8pe/6N1335Uk7du3Ty+++KKuv/76iJ4bGQgAAC4AaWlpIa8feughLVu2rE2773//+6qrq9Po0aPldDrl9/v1ox/9SN/4xjciOh4CCAAAbOKPwOO8Tx9fVVUlj8cTrHe5XO22Lykp0W9/+1tt3LhRY8eOVUVFhQoLCzVkyBDdfvvtYY3lTAQQAADY5MwpiHD6kCSPxxMSQHTkX//1X3X//ffr5ptvliRddtll+uijj1RUVBTRAII1EAAAxJHPPvtMDkfoz7vT6eQ2TgAALhQBORQI8291q8fPnTtXP/rRjzRs2DCNHTtW5eXlevTRR/Xtb387rHGcjQACAACb+E1D/jCnMKwe/9hjj+nBBx/Ud7/7XR0+fFhDhgzR3XffrX/7t38LaxxnI4AAACCO9O7dWytXrtTKlStt/RwCCAAAbBLJRZSxhgACAACbmBF4GqcZow/TIoAAAMAmfhnyW3wYVnt9xKLYDGsAAEBMIwMBAIBNAmb4axgCZoQGE2EEEAAA2CQQgTUQ4R5vl9gcFQAAiGlkIAAAsElAhgJhLoIM93i7EEAAAGCTaOxE2V26NIWxZs0aZWRkyO12KysrS7t27eqw7TPPPKOZM2dq4MCB8ng8ys3N1XPPPdem3aZNm5SZmSmXy6XMzExt3ry5K0MDAADdwHIAUVJSosLCQi1dulTl5eWaPn26Zs+ercrKynbb79y5UzNnztS2bdtUVlama665RnPnzlV5eXmwzZ49e5Sfn6+CggLt27dPBQUFmjdvnl555ZWunxkAAFF2ehFluCUWGaZpWrpBZMqUKZo4caLWrl0brBszZoxuuukmFRUVdaqPsWPHKj8/P/hgj/z8fPl8Pj377LPBNtddd5369u2r4uLidvtobGxUY2Nj8LXP51NaWprq6uo69bx0AMDFy+fzyev12vabcbr/eX8pUFLPpLD6ajrRpN999b9i7vfNUljT1NSksrIy5eXlhdTn5eVp9+7dneojEAiovr5e/fr1C9bt2bOnTZ+zZs06Z59FRUXyer3BkpaWZuFMAABAOCwFELW1tfL7/UpJSQmpT0lJUU1NTaf6+OlPf6oTJ05o3rx5wbqamhrLfS5ZskR1dXXBUlVVZeFMAACwn3nqLoxwihlPd2EYRujJmKbZpq49xcXFWrZsmbZs2aJBgwaF1afL5ZLL5bIwagAAuhdP4zxlwIABcjqdbTIDhw8fbpNBOFtJSYnmz5+vp59+Wtdee23Ie6mpqV3qEwCAWMZOlKckJSUpKytLpaWlIfWlpaWaOnVqh8cVFxfrjjvu0MaNG3XDDTe0eT83N7dNn9u3bz9nnwAAIHosT2EsXrxYBQUFys7OVm5urtatW6fKykotWLBAUuvahIMHD2rDhg2SWoOH2267TT//+c+Vk5MTzDQkJyfL6/VKkhYtWqSrrrpKK1as0I033qgtW7bo+eef14svvhip8wQAoNvF8xSG5bxIfn6+Vq5cqeXLl+uKK67Qzp07tW3bNqWnp0uSqqurQ/aE+OUvf6mWlhYtXLhQgwcPDpZFixYF20ydOlVPPfWUnnzySV1++eVav369SkpKNGXKlAicIgAA0RHuAspIbIVtF8v7QMQqu+/pBQDEj+7aB2Lu9vlKDHMfiOYTTfpj3hMx9/vGszAAALBJPE9hEEAAAGCTeA4gYvPeEAAAENPIQAAAYJN4zkAQQAAAYJN4DiCYwgAAAJaRgQAAwCamFPY+DrG61wIBBAAANonnKQwCCAAAbBLPAQRrIAAAgGVkIAAAsEk8ZyAIIAAAsEk8BxBMYQAAAMvIQAAAYBPTNGSGmUEI93i7EEAAAGCTgIyw94EI93i7MIUBAAAsIwMBAIBN4nkRJQEEAAA2iec1EExhAAAAy8hAAABgE6YwAACAZfE8hUEAAQCATcwIZCBiNYBgDQQAALCMDAQAADYxJZlm+H3EIgIIAABsEpAhg50oAQAAWpGBAADAJtyFAQAALAuYhow43QeCKQwAAGAZGQgAAGximhG4CyNGb8MggAAAwCbxvAaCKQwAAGAZGQgAAGwSzxkIAggAAGwSz3dhEEAAAGCTeF5EyRoIAABgGRkIAABs0pqBCHcNRIQGE2EEEAAA2CSeF1EyhQEAACwjAwEAgE3MUyXcPmIRAQQAADZhCgMAAOAMZCAAALBLHM9hkIEAAMAup6YwwinqwhTGwYMH9c1vflP9+/dXjx49dMUVV6isrCyip0YGAgAAm0RjJ8pjx45p2rRpuuaaa/Tss89q0KBBev/999WnT5/wBnIWAggAAOLIihUrlJaWpieffDJYN3z48Ih/DlMYAADYJNzpizPv4vD5fCGlsbGx3c/cunWrsrOz9Y//+I8aNGiQJkyYoF/96lcRPzcCCAAA7HJ6DUO4RVJaWpq8Xm+wFBUVtfuRH3zwgdauXauRI0fqueee04IFC3Tvvfdqw4YNET01pjAAALgAVFVVyePxBF+7XK522wUCAWVnZ+uRRx6RJE2YMEFvvPGG1q5dq9tuuy1i4yEDAQCATU4vogy3SJLH4wkpHQUQgwcPVmZmZkjdmDFjVFlZGdFzIwMBAIBdorAPxLRp0/TOO++E1L377rtKT08PcyChyEAAABBH7rvvPr388st65JFH9N5772njxo1at26dFi5cGNHPIYAAAMAmkbwLo7MmTZqkzZs3q7i4WOPGjdMPf/hDrVy5UrfeemtEz40pDAAA7BSFrajnzJmjOXPm2PoZZCAAAIBlZCAAALAJj/M+y5o1a5SRkSG3262srCzt2rWrw7bV1dW65ZZbNGrUKDkcDhUWFrZps379ehmG0aacPHmyK8MDACA2mBEqMchyAFFSUqLCwkItXbpU5eXlmj59umbPnt3h/aWNjY0aOHCgli5dqvHjx3fYr8fjUXV1dUhxu91WhwcAQAwxIlRij+UA4tFHH9X8+fN15513asyYMVq5cqXS0tK0du3adtsPHz5cP//5z3XbbbfJ6/V22K9hGEpNTQ0p59LY2NhmX3AAANA9LAUQTU1NKisrU15eXkh9Xl6edu/eHdZAGhoalJ6erqFDh2rOnDkqLy8/Z/uioqKQPcHT0tLC+nwAACKOKYxWtbW18vv9SklJCalPSUlRTU1NlwcxevRorV+/Xlu3blVxcbHcbremTZum/fv3d3jMkiVLVFdXFyxVVVVd/nwAAGwRxwFEl+7CMIzQ+RjTNNvUWZGTk6OcnJzg62nTpmnixIl67LHHtGrVqnaPcblcHe4DDgAA7GUpgBgwYICcTmebbMPhw4fbZCXC4XA4NGnSpHNmIAAAiHlnPI47rD5ikKUpjKSkJGVlZam0tDSkvrS0VFOnTo3YoEzTVEVFhQYPHhyxPgEA6G6RfBpnrLE8hbF48WIVFBQoOztbubm5WrdunSorK7VgwQJJrWsTDh48qA0bNgSPqaiokNS6UPLIkSOqqKhQUlJS8HGjDz/8sHJycjRy5Ej5fD6tWrVKFRUVWr16dQROEQAARJrlACI/P19Hjx7V8uXLVV1drXHjxmnbtm3Bx4RWV1e32RNiwoQJwX8uKyvTxo0blZ6erg8//FCSdPz4cd11112qqamR1+vVhAkTtHPnTk2ePDmMUwMAIMqi8Djv7mKYZqwmR6zx+Xzyer2qq6uTx+OJ9nAAADHM7t+M0/0PXbVcjuTwNkUMfH5SH9/7bzH3+8bDtAAAgGU8TAsAAJsYZmsJt49YRAABAIBd4ngNBAEEAAB2YR8IAACAL5CBAADALkxhAAAAy+I4gGAKAwAAWEYGAgAAu8RxBoIAAgAAu3AXBgAAwBfIQAAAYBN2ogQAANbF8RoIpjAAAIBlBBAAAMAypjAAALCJoQisgYjISCKPAAIAALtwGycAAMAXyEAAAGCXOL4LgwACAAC7xHEAwRQGAACwjAwEAAA2YSdKAABgHVMYAAAAXyADAQCAXeI4A0EAAQCATeJ5DQRTGAAAwDIyEAAA2CWOt7ImgAAAwC6sgQAAAFaxBgIAAOAMZCAAALALUxgAAMCyCExhxGoAwRQGAACwjAwEAAB2YQoDAABYFscBBFMYAADAMjIQAADYhH0gAAAAzkAAAQAALGMKAwAAu8TxIkoCCAAAbBLPayAIIAAAsFOMBgDhYg0EAACwjAwEAAB2YQ0EAACwKp7XQDCFAQAALCMDAQCAXZjCAAAAVjGFAQAAcAYCCAAA7GJGqHRRUVGRDMNQYWFh1zvpAFMYAADYJYprIF599VWtW7dOl19+eZgDaB8ZCAAALgA+ny+kNDY2dti2oaFBt956q371q1+pb9++toyHAAIAAJucXkQZbpGktLQ0eb3eYCkqKurwcxcuXKgbbrhB1157rW3nxhQGAAB2ieAURlVVlTweT7Da5XK12/ypp57Sa6+9pldffTXMDz43AggAAOwSwQDC4/GEBBDtqaqq0qJFi7R9+3a53e4wP/jcujSFsWbNGmVkZMjtdisrK0u7du3qsG11dbVuueUWjRo1Sg6Ho8OVoJs2bVJmZqZcLpcyMzO1efPmrgwNAICLVllZmQ4fPqysrCwlJCQoISFBO3bs0KpVq5SQkCC/3x+xz7IcQJSUlKiwsFBLly5VeXm5pk+frtmzZ6uysrLd9o2NjRo4cKCWLl2q8ePHt9tmz549ys/PV0FBgfbt26eCggLNmzdPr7zyitXhAQAQMyK5BqIzvvrVr+pvf/ubKioqgiU7O1u33nqrKioq5HQ6I3hupmkpuTJlyhRNnDhRa9euDdaNGTNGN9100zkXdEjS1VdfrSuuuEIrV64Mqc/Pz5fP59Ozzz4brLvuuuvUt29fFRcXt9tXY2NjyApUn8+ntLQ01dXVnTfFAwC4uPl8Pnm9Xtt+M073P/qeR+R0hTeV4G88qbcfe6DLY+3otzdcljIQTU1NKisrU15eXkh9Xl6edu/e3eVB7Nmzp02fs2bNOmefRUVFIatR09LSuvz5AADAGkuLKGtra+X3+5WSkhJSn5KSopqami4PoqamxnKfS5Ys0eLFi4OvT2cgAACIFbHwLIwXXnghvA460KW7MAzDCHltmmabOrv7dLlcHd7CAgBATIjjp3FamsIYMGCAnE5nm8zA4cOH22QQrEhNTY14nwAAwD6WAoikpCRlZWWptLQ0pL60tFRTp07t8iByc3Pb9Ll9+/aw+gQAIOqi/DAtO1mewli8eLEKCgqUnZ2t3NxcrVu3TpWVlVqwYIGk1rUJBw8e1IYNG4LHVFRUSGrdm/vIkSOqqKhQUlKSMjMzJUmLFi3SVVddpRUrVujGG2/Uli1b9Pzzz+vFF1+MwCkCABAdxqkSbh+xyHIAkZ+fr6NHj2r58uWqrq7WuHHjtG3bNqWnp0tq3Tjq7D0hJkyYEPznsrIybdy4Uenp6frwww8lSVOnTtVTTz2lH/zgB3rwwQd16aWXqqSkRFOmTAnj1AAAgF0s7wMRq+y+pxcAED+6ax+IzH+KzD4Qb67t+j4QduFZGAAA2CQWbuO0CwEEAAB24TZOAACAL5CBAADATjGaQQgXAQQAADaJ5zUQTGEAAADLyEAAAGCXOF5ESQABAIBNmMIAAAA4AxkIAADswhQGAACwiikMAACAM5CBAADALkxhAAAAywggAACAVayBAAAAOAMZCAAA7MIUBuLd8aYG/fHQS9p1ZJ8a/c26rM8I3XTJdH2p99AOj3n9+PvacnCX9td/rF4JyfrKoInq7/Kq9JNXVfXZYfVP8mrW4Mm6NiVbLQG//lzzirYefFG1jXUyJQ10eTV3yDRdN3iKeiS4u+9kAaCbGKYpwwwvAgj3eLsQQEAff3ZE95Wvkq/5hAKnQt1PPvlU22te1fdG36JrU7PbHPPUR8/riQN/klMO+RWQJO1v+FiS5JChgEx9cvKY3vAd0LPVL6uh+XNVfX449HM/P6K17/9B/129Wz+74h55k3rZfKYAgEhhDQS04q3fytf8WTB4kCS/GZApU//xTrFqG+tC2r/jq9QTB/7U2u5U8HCm0/2Yp/7/Ld9HbYKHMx387IjWvveHcE8DAGKPGaESgwggLnIfNBzS2/WVCrQTCEiSaZp6rvqVkLo/HdotZwS/OgGZeuFIuXzNJyLWJwDEgtN3YYRbYhEBxEWu6rOOMwOtjDbZg48++6TdzEM4/GZAn5z8NKJ9AgDswxqIi5w3sec53zcMyZMQ2qZPYq/gOodI8pxnLABwwYnjuzDIQFzkLvOOUL8kT4fv+81Am0WU16ZmRzR4MCRleoYrxd0vYn0CQCxgCgNxy+lw6p6RX5dx6n9nuy51sr7cOy2kbmr/cZrQZ2S77c/mkEM9nC4lyNlhmwQjQf/0pZssjx0AED0EENCVAy/XI5ffFRIo9E3qre+MmKv7RuW3ae90OPXvl31H+cO+qp7OL/ZvuMwzQlcOuFxJjtaZMYcMTR0wTmuy/kWPZRVqYp+Rbfq6os9IrZx4r0Z70m04MwCIsji+C4M1EJAkZfcbrex+o3WsqV5NgWYNSPLK6eg4a5DkTNT8ETfotuGzdLTRpx4JruAahpP+Jh1rqpcnsYd6JiQHj1lxxXflaz6huqYTktG6/oJ1DwDiWTw/C4MAAiH6JvW21D7RkaDU5NC1C25nkgYn92+3vYegAcDFhEWUAAAAXyADAQCAjWJ1CiJcBBAAANjFNFtLuH3EIKYwAACAZWQgAACwCXdhAAAA67gLAwAA4AtkIAAAsIkRaC3h9hGLCCAAALALUxgAAABfIAMBAIBNuAsDAABYF8cbSRFAAABgk3jOQLAGAgAAWEYGAgAAu8TxXRgEEAAA2IQpDAAAgDOQgQAAwC7chQEAAKxiCgMAAOAMZCAAALALd2EAAACrmMIAAAA4AxkIAADsEjBbS7h9xCACCAAA7MIaiIvDoc9r9ZbvIyUaTo3pPVxvN1SqKdCsL/W6RMebGnS48ZgGuvro8j6XymE45Gs+ofJj++U3/cr0ZCg1uV+0TwEAEEMMRWANRERGEnkEEJJ8zSf0/75drJePvtGp9gNdfTTWM1wv1v5NLaY/WD994Hj9y6ib1TPBbddQAQCICRd9AOE3A3rg9XXaX/9xp4850nhcLxypaFP/0pHXW4OR8d+VYcRqzAgA6DZxvBNll+7CWLNmjTIyMuR2u5WVlaVdu3ads/2OHTuUlZUlt9utESNG6PHHHw95f/369TIMo005efJkV4Znyd5P39Y79ZUKKBB2XwGZ2nf8Pf297oMIjAwAcKE7fRtnuCUWWQ4gSkpKVFhYqKVLl6q8vFzTp0/X7NmzVVlZ2W77AwcO6Prrr9f06dNVXl6uBx54QPfee682bdoU0s7j8ai6ujqkuN32TwW8fPQNOY3I3c3qNBzaXfv3iPUHAIAVRUVFmjRpknr37q1Bgwbppptu0jvvvBPxz7H8y/noo49q/vz5uvPOOzVmzBitXLlSaWlpWrt2bbvtH3/8cQ0bNkwrV67UmDFjdOedd+rb3/62/uM//iOknWEYSk1NDSnn0tjYKJ/PF1K6oiXgP38jq32ake8TAHABMiNULNixY4cWLlyol19+WaWlpWppaVFeXp5OnDgRkVM6zVIA0dTUpLKyMuXl5YXU5+Xlaffu3e0es2fPnjbtZ82apb1796q5uTlY19DQoPT0dA0dOlRz5sxReXn5OcdSVFQkr9cbLGlpaVZOJSjTO1x+M/zpi9P8ZkCZnuER6w8AcOEyTDMiRVKbP5obGxvb/cw///nPuuOOOzR27FiNHz9eTz75pCorK1VWVhbRc7MUQNTW1srv9yslJSWkPiUlRTU1Ne0eU1NT0277lpYW1dbWSpJGjx6t9evXa+vWrSouLpbb7da0adO0f//+DseyZMkS1dXVBUtVVZWVUwm6etAEeRN7yRGBTTkdcmiAq4+uHHh52H0BAHCmtLS0kD+ci4qKOnVcXV2dJKlfv8huNdCluzDOvsPANM1z3nXQXvsz63NycpSTkxN8f9q0aZo4caIee+wxrVq1qt0+XS6XXC5XV4YfItnp0o8vX6Alrz+u480NcshQ4Ix8kSFD5qnXjtY7ehVQQAOS+qi26Xhw/YTfDKhvUi/9+PIFSnRc9De3AAAkKXCqhNuHpKqqKnk8nmB1Z34DTdPU4sWLdeWVV2rcuHFhDiSUpV+6AQMGyOl0tsk2HD58uE2W4bTU1NR22yckJKh///7tHuNwODRp0qRzZiAi6Uu9L9Fvcx7UC4cr9JbvQyUYTg1JHqCak0fVGGjW4OQB+qzlpI43N2igy6uZKZM1yN1HZcfe1cu1b8hv+jXOO0JXDbpCSQQPAIBTzpyCCKcPqfVmgzMDiM7453/+Z73++ut68cUXwxpDeyz92iUlJSkrK0ulpaX62te+FqwvLS3VjTfe2O4xubm5+uMf/xhSt337dmVnZysxMbHdY0zTVEVFhS677DIrwwuLy5mkWYMna9bgyZ0+ZlK/0ZrUb7SNowIAoGvuuecebd26VTt37tTQoUMj3r/lP5cXL16sgoICZWdnKzc3V+vWrVNlZaUWLFggqXVtwsGDB7VhwwZJ0oIFC/SLX/xCixcv1ne+8x3t2bNHTzzxhIqLi4N9Pvzww8rJydHIkSPl8/m0atUqVVRUaPXq1RE6zfhU39io373+N+34+weqqa2Xy5mgHq5ENZxsUg9Xoq4d+yXNm3y5+vZMjvZQAeDiFIVnYZimqXvuuUebN2/WCy+8oIyMjDAH0D7LAUR+fr6OHj2q5cuXq7q6WuPGjdO2bduUnp4uSaqurg7ZEyIjI0Pbtm3Tfffdp9WrV2vIkCFatWqVvv71rwfbHD9+XHfddZdqamrk9Xo1YcIE7dy5U5Mndz4bcLHZsK9cP35+h1TbOjlmtLNb+tuHjui3L5Xrv+7O1/CBfbt7iACAKOxEuXDhQm3cuFFbtmxR7969g8sIvF6vkpMj9welYZoxukemRT6fT16vV3V1dZbniC40f3j7LS3+8za5DxuS2X7wcJrTYejLqQP1+3tu7cYRAkBss/s343T/M6Y+qIQwn4/U0nJSO3b/sNNj7eimhieffFJ33HFHWGM5Eyv+LjCmaWrlKy/J+bnOGzxIkj9g6q1Dh/XGwU809pL2F7oCAOJHd+UFIreHM7pFla9OlXV1crRYe1jXB4c/tWlEAIAOnZ7CCLfEIDIQFxj/qS+S6TBl5Snx3mQeMQ4A3c0ItJZw+4hFZCAuMGkerwb26Cl/8vmnL07zJruV86WubfUNAEB7yEBEkWma+t8jlSqr/VgJDoemp4zQRw3HtN93RH2SkjU7bbQGuHuFHJPgcGhB9mT9cOdf1dLTVMKJ1p0yzxVMLJl7tZIS+FcNAN0uCndhdBd+VaKk+jOf7tr1O715/BM5DUOmKa3Q/0iSnDIUkPTD8u26d+xVWpg5LWRV7R3jJ6imoV6/LtsrOSVng9HuVqkBd0Atqc3604m/66stl6pHQlI3nR0AQFJU9oHoLgQQUdASCOj2Fzbqw4bWhY3+s6JL/6lvi9+Ufvb3Herv7qFvXDox+L5hGFpy5Qzdetl4/fHdd3T888/VLylZm6vL9WHjpwo0SaYhKdGUDOkvh/br/v/9k1ZN/ZoAAIgE1kBEwf8c2q/364+2CRw6subNlxRop+0wbx8tnDRFS6+6WmPTB+j9pqPyG6ZMlyklmcE1lgHT1LaqN1XZcCySpwEAOI9IPs471hBARMHuTw4owej8pT/0mU9VJ46fs81Ln3x4zj5NSXs++bDTnwkAiIA4vo2TAAIAAFhGABEF01Iz1GJ2/sbeS3p4ldazzznbXHmePg1JU1PseaAKAKADploXuYdTYjMBQQARDV8ZPFJf8gyQs4P9ys+2MHOaHOdpOy0lQ2P7pLTbp0OG5gwbq7RefboyXABAF7EGAhHldDj0nzO+odF9Wp9N4TRCd3FwnNrVIcFw6F8uu1rzRlxx3j4dhqHfzLhZl/UdHHztONXrzEu+rKJJN0T4LAAA52UqAmsgon0S7eM2zihJ7eHRlpnf1t7aKpXVfqxEh1NXpmbow/pP9b7vqLxJbs0aOloD3D073ecAdy/9/to7VH70oF49Uimn4dCMwZdqpHegjWcCALgYEUBEkWEYmjRwmCYNHBasG+UdFHafEwcM1cQBQ8MdHgAgXOxECQAALAvIynMPO+4jBrEGAgAAWEYGAgAAm0TiLopYvQuDAAIAALvE8RoIpjAAAIBlZCAA4ALUHGhSbeNBOY1EDXANkcPC83UuVL7mT1XffEzexP7qldgn2sPpnDjOQBBAAMAFxG/69ddPfqfdtX9SY+AzSVLfpBTNTLlF4/tOj/Lo7FHbeEj/ffAJ7W8olyQZMvTl3lmac8l89UtKifLoziOOA4j4D1kBII78vmqV/nr498HgQZKONX2i31X9THs/fT6KI7PHsabDevy9+/Vew75gnSlT++tf0+P771dd89Eoju7iRgABABeIjz/br9eP71JHexs/W/2fag40de+gbLbz8GY1+j+TedZmCAEF9Lm/Xi8e2RKlkXVSuA/SOl1iEAEEAFwgXj/+ohxydvj+Sf8Jvd/wejeOyH4Vx3co0MEvaEABVRzb0c0jsiaeH6bFGohuYLa8L/Pz/5bMOhkJX5LccyXzpHRyq0z/QRmOQVLyTTKcqdEeKoAYdtL/WSfanOiGkXQP0zTVFDh5zjaNgc+7aTRdFMdrIAggbGSaAZm+f5c+/60kpyRDpvyS70eS/KdaOVpTcw0rpd7/KqPn/KiNF0BsS3EP6/Cv8TPbxAvDMDTAdYlqGw+2/74MDXTx3J9oYQrDTp89eSp4kFoDhha1zl0264uJrZbgP5v1K2SeLI3KUAHEvgl9r1aikaj2Hq7gkENpPb6swckZ3T4uO00dMKfD90yZmnaO92NCwIxMiUEEEDYxzRaZJ35t8SiHzBO/smU8AC58PRJ66xvp/yqn4ZQR8p9vQ70S+yp/2OKojc0uk/rN1BV9ZkhS8Jwdp/4/q+9XNaHvNVEbW6ecnsIIt8QgpjDO8L/vV+nH//2C3vvkqExJQ/p6dO/Mqcr98jG9f/xRNbZUK9HZR2meb2lwr5tkGB0vZpL/Yylg9faigNRcIdP0n7tvABetUZ4sFY56TP979DkdaHhDCY5EjfXmaGLfa+R29oz28CLOYTj0f9Lu1eV9pqvs0+d1vPmI+iYNUna/mfpSr/EyjHAfdYmuIoA4peSVfVr+h/8Jqfv40zp9r+RZXTXub/rHaa0rm5sCR/T20Qf03qcrNGnIJiUnpnXQY1cDgNa1EgDQkX5JKbpu8G3RHka3MQxDozwTNcozMdpD6YJIZBBiMwPBFIakhpON+vctf+3w/Z1/v0yHjvYNqWsx67S3Ol8Bs7n9g5xDJedwWQsGnJJrhoyLYEtaALgoxPEUBr9Ukv7rpXIFzvMv6E97J7Wpaw4cVe1n7QcehmHI6FWozkeOrYGG0XNBJ9sDABA9BBCS3qk5cp4Wpo7Uedt95/jJ/+3wKCP5ehmeH0rGWfOSjkskR/+z6vrJ6LNGRtIV5x8wAODCEMd3YbAGQlKqt/d5Whjqldz+Zibnm24weuRLyf8gNe6UAnVSwqVS4kRJAalpj+Q/KDlTpKRpMozErp0AACA2mYHWEm4fMYgAQtLtV07Uf71Ufs42M694rd36/skzztu/YSRL7lln1Tol15WdHSIAADGFKQxJg/t49P9kj2vnnda0UcagGo0e2nYntOSEEerrzrV5dACAC1YcL6IkA3HKD78+U6mennpyV5k+b26RJCU4nLpyzHF9beoWnX2rcY+ES5U1+P/jjgkAQMcCpsK+DZM1ELFv4cyp+u61uTp0vF4tfr/S+vWRw2HoZMvd+uDYz3Wi6V25ElKV7l0gr/uyaA8XABDreJjWxcMwDF3S1xNS505IVebAoiiNCACA2EMAAQCAXUxFIAMRkZFEHAEEAAB2YQoDZ2tqbNbe5yp0rOa4Bo9I0fhrxsrhcOiNl97WR29+rF59e2ny9ROU3NOt/a99oP1lH8jdy63Jsyeortanv+18Sw6nQxOvvUwDLul//g8EACCGEEB0wa5NL+tnd/9S9Z82BOv6De6jRFeiPvnwi10tXT1c6jvIo5oz6gwjNJg0HIau+/ZXdM8v5isxiY2kACCuBAKSwtwIKsBGUnFh3wtv6IfzHpV51qTUp9XH27Rt/KwxJHiQ2maizICpP//mfyTT1OJf/VOkhwsAiKY4nsJgE4OzBAKmzDP+ZQUCZkjdfy1/WobDaH1Ca4Q+szWI+KsOV9VGqEcAAOxFBkKSaZrauvPvKt7+mj44eFRJiU4N7u/Rodo6Nbe0po6cTofyJn1Zr732vlpGpahxdKrMXm6pqUVJ7x+R628H5TjZwaO9OzmGvX+u0PXfuTZSpwUAiLY4zkBc9AGEaZpaseEveuavrwd3m2xq9uujmmMh7fz+gJ59+W3pH8YrZFvKpAQ1jUpV87B+6rXt73J83tSlcRiG1NLs7+ppAABiURzvRHnRT2GUv3tQz/z1dUmdDPIcjtZf+zODCIchMzlRJyemdXkcpilddtWYLh8PAEB3uugDiP/e9YacDuP8Dc/H4VDz8AEyE6xfUofToYkzL1fGuGHhjwMAEDNMMxCREosu+imMTz71yR+p9JDTIdOVoETD37r40h9QkjtRTSeb5Ux0ygwEFPC3fpYz0SlJ8jf7NSr7Ui0tLozMGAAAscM0w5+CYA1EbBo8wCun4+OIBBGJCQ7984rbdOidg+rdt5euvnmaUtIHaOfTL2v/ax/I3dOlaTdN1tHqY3r9hTfkcDo0+fqJGn/1WBlnP+4TAHDhMyOwBoIAIjb9w1XjtHXn38Pux+kwNDs3U1+bn9fmvZm3zdDM22aE1E39h0lhfyYAANFy0a+BuPxLQ3TLrCxJkqMTWYAEZ2ubM1s6HIZS+vfWP/2faXYMEQBwoQoEIlNi0EWfgZCkRTdfpbEjUlW8/TW9W3lY7qQEDRnoVWX1MX3e2CxTUrIrUXOvGqdbZ03U7tc/1NN/qVDVJ8fl6enW3Oljdct1WerTKznapwIAiCVMYcQ3wzA0c8oozZwyqlPtv/6V8fr6V8bbPCoAAGJXl6Yw1qxZo4yMDLndbmVlZWnXrl3nbL9jxw5lZWXJ7XZrxIgRevzxx9u02bRpkzIzM+VyuZSZmanNmzd3ZWgAAMQMMxCISIlFlgOIkpISFRYWaunSpSovL9f06dM1e/ZsVVZWttv+wIEDuv766zV9+nSVl5frgQce0L333qtNmzYF2+zZs0f5+fkqKCjQvn37VFBQoHnz5umVV17p+pkBABBtp7eyDrfEIMM0rY1sypQpmjhxotauXRusGzNmjG666SYVFRW1af/9739fW7du1VtvvRWsW7Bggfbt26c9e/ZIkvLz8+Xz+fTss88G21x33XXq27eviouL2x1HY2OjGhsbg699Pp/S0tJUV1cnj8dj5ZQAABcZn88nr9dr22/G6f6/kpyvBCMprL5azCb9z+clMff7ZikD0dTUpLKyMuXlhd6qmJeXp927d7d7zJ49e9q0nzVrlvbu3avm5uZztumoT0kqKiqS1+sNlrS0rm8jDQCALQJmZEoMshRA1NbWyu/3KyUlJaQ+JSVFNTU17R5TU1PTbvuWlhbV1taes01HfUrSkiVLVFdXFyxVVVVWTgUAAPuZpmQGwiyxGUB06S6Ms3dNNE3znDspttf+7HqrfbpcLrlcrk6PGQAARI6lAGLAgAFyOp1tMgOHDx9uk0E4LTU1td32CQkJ6t+//znbdNQnAAAXAjNgyjTCyyBYXKrYbSxNYSQlJSkrK0ulpaUh9aWlpZo6dWq7x+Tm5rZpv337dmVnZysxMfGcbTrqEwCAC0LY0xenSgyyfBvn4sWL9etf/1q/+c1v9NZbb+m+++5TZWWlFixYIKl1bcJtt90WbL9gwQJ99NFHWrx4sd566y395je/0RNPPKH/+3//b7DNokWLtH37dq1YsUJvv/22VqxYoeeff16FhYXhnyEAAFFiBsyIFKus7tfUFZbXQOTn5+vo0aNavny5qqurNW7cOG3btk3p6emSpOrq6pA9ITIyMrRt2zbdd999Wr16tYYMGaJVq1bp61//erDN1KlT9dRTT+kHP/iBHnzwQV166aUqKSnRlClTInCKAABcPE7v17RmzRpNmzZNv/zlLzV79my9+eabGjZsWMQ+x/I+ELGqrq5Offr0UVVVVUzdJwsAiD2n9w46fvy4vF6vLf17vV5dqeuVoMSw+mpRs17Utja/bx3dTGB1v6auiptnYdTX10sS+0EAADqtvr7elgAiKSlJqamperFmW0T669WrV5vft4ceekjLli0LqTu9X9P9998fUn+u/Zq6Km4CiCFDhqiqqkq9e/c+5+2fF6rT0TIZFmu4bl3DdesarlvXROO6maap+vp6DRkyxJb+3W63Dhw4oKampoj0197WBu1lH7qyX1NXxU0A4XA4NHTo0GgPw3Yej4f/MHUB161ruG5dw3Xrmu6+bnZkHs7kdrvldrtt/YyOWN1bqSu69DROAAAQe7qyX1NXEUAAABAnurJfU1fFzRRGvHO5XHrooYfYvtsirlvXcN26huvWNVy3yFq8eLEKCgqUnZ2t3NxcrVu3LmS/pkiJm9s4AQBAqzVr1ugnP/lJcL+mn/3sZ7rqqqsi+hkEEAAAwDLWQAAAAMsIIAAAgGUEEAAAwDICCAAAYBkBRJRYfdTqjh07lJWVJbfbrREjRujxxx8PeX/9+vUyDKNNOXnypJ2n0e2sXLfq6mrdcsstGjVqlBwOR4ePh9+0aZMyMzPlcrmUmZmpzZs32zT66In0deP71tYzzzyjmTNnauDAgfJ4PMrNzdVzzz3Xph3ft1CduW4Xy/ftQkMAEQWnH7W6dOlSlZeXa/r06Zo9e3bIY9DPdODAAV1//fWaPn26ysvL9cADD+jee+/Vpk2bQtp5PB5VV1eHlGhto2oHq9etsbFRAwcO1NKlSzV+/Ph22+zZs0f5+fkqKCjQvn37VFBQoHnz5umVV16x81S6lR3XTeL7dradO3dq5syZ2rZtm8rKynTNNddo7ty5Ki8vD7bh+9ZWZ66bFP/ftwuSiW43efJkc8GCBSF1o0ePNu+///5223/ve98zR48eHVJ39913mzk5OcHXTz75pOn1eiM+1lhi9bqdacaMGeaiRYva1M+bN8+87rrrQupmzZpl3nzzzWGNNZbYcd34vnVOZmam+fDDDwdf833rnLOv28XwfbsQkYHoZqcftZqXlxdSf65Hre7Zs6dN+1mzZmnv3r1qbm4O1jU0NCg9PV1Dhw7VnDlz2kTwF7KuXLfO6OjaRvqxt9Fi13WT+L6dTyAQUH19vfr16xes4/t2fu1dNym+v28XKgKIbtaVR63W1NS0276lpUW1tbWSpNGjR2v9+vXaunWriouL5Xa7NW3aNO3fv9+eE+lmdj2itqNrG+nH3kaLXdeN79v5/fSnP9WJEyc0b968YB3ft/Nr77rF+/ftQsWzMKLE6qNW22t/Zn1OTo5ycnKC70+bNk0TJ07UY489plWrVkVq2FFnxyNqu+Oxt9EW6XPk+3ZuxcXFWrZsmbZs2aJBgwZFpM8LSaSv28XyfbvQEEB0s648ajU1NbXd9gkJCerfv3+7xzgcDk2aNCluInS7HlHb0bWN9GNvo6W7Hu3L9+0LJSUlmj9/vp5++mlde+21Ie/xfevYua7b2eLt+3ahYgqjm3XlUau5ublt2m/fvl3Z2dlKTExs9xjTNFVRUaHBgwdHZuBRZtcjaju6tpF+7G20dNejffm+tSouLtYdd9yhjRs36oYbbmjzPt+39p3vup0t3r5vF6woLd68qD311FNmYmKi+cQTT5hvvvmmWVhYaPbs2dP88MMPTdM0zfvvv98sKCgItv/ggw/MHj16mPfdd5/55ptvmk888YSZmJho/v73vw+2WbZsmfnnP//ZfP/9983y8nLzW9/6lpmQkGC+8sor3X5+drF63UzTNMvLy83y8nIzKyvLvOWWW8zy8nLzjTfeCL7/0ksvmU6n0/zxj39svvXWW+aPf/xjMyEhwXz55Ze79dzsZMd14/vW9rpt3LjRTEhIMFevXm1WV1cHy/Hjx4Nt+L517bpdDN+3CxEBRJSsXr3aTE9PN5OSksyJEyeaO3bsCL53++23mzNmzAhp/8ILL5gTJkwwk5KSzOHDh5tr164Neb+wsNAcNmyYmZSUZA4cONDMy8szd+/e3R2n0q2sXjdJbUp6enpIm6efftocNWqUmZiYaI4ePdrctGlTN5xJ94r0deP71va6zZgxo93rdvvtt4f0yffN+nW7WL5vFxoe5w0AACxjDQQAALCMAAIAAFhGAAEAACwjgAAAAJYRQAAAAMsIIAAAgGUEEAAAwDICCAAAYBkBBAAAsIwAAgAAWEYAAQAALPv/AUzKkfx/z3SSAAAAAElFTkSuQmCC", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure()\n", - "plt.scatter(argo['kd_490_f'],argo['icesat2_kd'], label = 'Argo Floats, kd_490')\n", - "plt.scatter(ooi['kd'],ooi['icesat2_kd'], label = 'OR Endurance Array')\n", - "plt.scatter(ws['kd'],ws['icesat2_kd'], label = 'GoM CTD casts, ')\n", - "# plt.xlim([-0.01,0.25])\n", - "# plt.ylim([-0.01,0.25])\n", - "plt.axline((0, 0), slope=1,c='k')\n", - "plt.legend()\n", - "plt.xlabel('kd from ground-truth')\n", - "plt.ylabel('kd_photon from icesat-2')\n", - "\n", - "plt.figure()\n", - "p = plt.scatter(argo['kd_490_f'],argo['icesat2_kd'],s = 30, c= argo['time_offset']/3.6e9)\n", - "plt.colorbar(p) # color by hour of time offset between ground truth and icesat2\n", - "\n", - "plt.figure()\n", - "p = plt.scatter(argo['kd_490_f'],argo['icesat2_kd'],s = 30, c= argo['dist_offset'])\n", - "plt.colorbar(p) # color by distance offset (km) between ground truth and icesat2" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb b/icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb deleted file mode 100644 index aa08525..0000000 --- a/icesat2_kdph-main/04_plot_kd2turb_comparison.ipynb +++ /dev/null @@ -1,242 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "c43f4063-0bb8-471c-bb5c-6cf373e8cc0f", - "metadata": {}, - "source": [ - "plot kd from argo, ws profiles, and ooi array" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "7403ceef-8892-466a-86d8-01f06f288770", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet geopy" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a13b3781-26c0-43db-bed8-6b65ded2dbc9", - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "from datetime import datetime, timedelta, timezone\n", - "import matplotlib.pyplot as plt\n", - "from scipy import stats\n", - "import glob\n", - "from geopy.distance import geodesic" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "9bcf0649-2ad9-471c-84d7-6c68dd897073", - "metadata": {}, - "outputs": [], - "source": [ - "def matchkd_turb(file_name):\n", - " is2 = pd.read_csv(file_name)# load data\n", - " t = datetime.strptime(file_name[8:22],'%Y%m%d%H%M%S')# strip time from file name\n", - " t = t.replace(tzinfo=timezone.utc)\n", - " tdiff = abs(t - turb['time']) # calculate difference between file time and each argo entry\n", - " \n", - " # find all entries in argo where tdiff<6h\n", - " turb_sub = turb[tdiff<(timedelta(hours=14))]\n", - " rows = turb_sub.index.values\n", - "\n", - " # find all possible matched entries where distance is < 10km\n", - " for jj in rows:\n", - " dist = np.ones(len(is2))*np.nan\n", - " turb_coords = (turb_sub.loc[jj,'lat'],turb_sub.loc[jj,'lon']) #lat,lon tuple\n", - " for kk in range(len(is2)):\n", - " is2_coords = (is2.loc[kk,'latitude'],is2.loc[kk,'longitude'])\n", - " try:\n", - " dist[kk] = geodesic(turb_coords, is2_coords).km\n", - " except:\n", - " continue\n", - " idx = np.argmin(dist)\n", - " if np.min(dist)<10:\n", - " turb.loc[jj,'icesat2_kd'] = is2.loc[idx,'kd']\n", - " turb.loc[jj,'dist_offset'] = np.min(dist)\n", - " turb.loc[jj,'time_offset'] = tdiff[jj]\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "9503d5d0-1a51-40aa-bc21-696b38fa46ae", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "pname = 'results/'\n", - "# load turbidity data:\n", - "turb = pd.read_csv(pname+'all_turbidity_compile.csv',index_col=0)\n", - "turb['time'] = pd.to_datetime(turb[\"time\"],format='ISO8601').round('s')\n", - "turb['icesat2_kd'] = np.nan\n", - "turb['dist_offset'] = np.nan\n", - "turb['time_offset'] = timedelta(hours=0)\n", - "fnames = glob.glob(pname+'*Further.csv')\n", - "for file in fnames:\n", - " matchkd_turb(file)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "2b3924e3-0ea6-4699-88b5-1a3eea9376bd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(0.01, 0.45)" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# color by latitude\n", - "plt.figure()\n", - "p = plt.scatter(turb['turb'],turb['icesat2_kd'],s=20,c=turb['lat'],vmin=20,vmax=70)\n", - "# plt.axline((0, 0), slope=1,c='k')\n", - "plt.colorbar(p)\n", - "plt.xlabel('turbidity (NTUs)')\n", - "plt.ylabel('kd from icesat-2')\n", - "# plt.yscale('log')\n", - "# plt.xscale('log')\n", - "plt.xlim([-2,200])\n", - "plt.ylim([0.01,0.45])" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "52e105f6-61fc-4f7e-902c-8dfe84367371", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(0.01, 0.45)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# color by distance offset (km) between buoy and icesat-2\n", - "plt.figure()\n", - "p = plt.scatter(turb['turb'],turb['icesat2_kd'],s=20,c=turb['dist_offset'],vmin=0,vmax=5)\n", - "plt.colorbar(p)\n", - "plt.xlabel('turbidity (NTUs)')\n", - "plt.ylabel('kd from icesat-2')\n", - "plt.xlim([-2,200])\n", - "plt.ylim([0.01,0.45])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "e6c45b6c-6e8a-4a87-8bff-8b899ae3fd54", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(0.01, 0.45)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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3yy3rqlTp5KVleXckpKSqn0dQgghRF3TlOdbfat2ojF69Giee+45iouLgZJEITExkSeffJIbb7yxyvWEhoZiNBrLtF6kpaVVOh/H4sWLue+++/jkk0+4/PLLK9zXYDDQt2/fCls0LBYLAQEBLpsQQgjR6FwI82i89tprnDp1ivDwcPLz8xk2bBjt2rXD39+fF198scr1mM1mEhISWLZsmUv5smXLKpyPY+HChdx99918/PHHzsnCKqKUYtu2bbRs2bLKsQkhhBCidlT7qZOAgADWrFnDzz//zJYtW9B1nd69e1fasuDOlClTGD9+PH369GHgwIHMmzePxMREJk6cCJR0aSQnJzufZFm4cCF33nkns2bNYsCAAc7WEG9vbwIDAwGYPn06AwYMoH379thsNmbPns22bdt4++23qx2fEEII0ah4Os6iAcZoVDvRKDV8+HCGDx/u0cnHjRtHRkYGzz33HCkpKXTr1o2lS5cSGxsLQEpKisucGu+88w52u52HH36Yhx9+2Fl+1113MX/+fKBkjo8HHniA1NRUAgMD6dWrF6tWraJfv34exSqEEEI0uCb4eKumVPWm73jsscdo164djz32mEv5W2+9xcGDB8vMddEU2Ww2AgMDycrKkvEaQgghKlQfnxml54h+/XkM3jWfgFLPLyBpyjP1+vlW7TEan332GYMHDy5TPmjQID799NNaCUoIIYQQbjTBwaDV7jrJyMhwjoc4V0BAQLNcJv4fu67AbCi5M0rB6g3RLLnngwaOSgghxAWpCXadVLtFo127dnz//fdlyr/77jvatm1bK0E1FnP2XYfF+Mdd0TQYOiCJiT/f3IBRCSGEEE1HtVs0pkyZwiOPPMKpU6ecg0F/+ukn/vnPfzaL8RnnKp037Nz5w5SCTi3PNExAQgghLmwXwlMn9957L4WFhbz44os8//zzALRp04a5c+dy55131nqADcndMFlNa5jV74QQQghPZ/dsEjODAvzf//0fx48f5+TJk9hsNg4fPtzskozKzPr3yw0dghBCCNHo1XgeDaBGa5s0Je6WXCltzVhBEj888BAJI/zxi1IYDdEU2jtg1K10CQ0nPsSbInsi6WcU8UFdsAaexKGKifTuhJfB26O4zuTksy8pjQAfK51jwqu0NowQQohmoJ4Hg86dO5e5c+dy9OhRALp27crf//53Ro4cWeU6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rSQkJLB69eqGDsmtGTNm0LdvX/z9/QkPD2fMmDHs27fPZZ+7774bTdNctgEDBjRQxO5NmzatTIyRkZHO15VSTJs2jVatWuHt7c0ll1zCrl27GjDistq0aVPmGjRN4+GHHwYa531YtWoV1157La1atULTNL744guX16vyvhcWFvLoo48SGhqKr68v1113HcePH28U11BcXMxf//pXunfvjq+vL61ateLOO+/kxIkTLnVccsklZe7NLbfc0iiuAar2s9OY7wPg9ndD0zReffVV5z4NfR+q8ve0KfxONAaSaFSidHncp556iq1btzJkyBBGjhxJYmJiQ4dWxsqVK3n44YdZv349y5Ytw263M2LECHJzc132u+qqq0hJSXFuS5cubaCIy9e1a1eXGHfs2OF87R//+Aevv/46b731Fhs3biQyMpIrrriC7OzsBozY1caNG13iL53s5uabb3bu09juQ25uLj169OCtt95y+3pV3vfJkyfz+eefs2jRItasWUNOTg6jRo3C4XA0+DXk5eWxZcsWnnnmGbZs2cKSJUvYv38/1113XZl9J0yY4HJv3nnnnfoIH6j8PkDlPzuN+T4ALrGnpKTw/vvvo2kaN954o8t+DXkfqvL3tCn8TjQKNV7h5QLRr18/NXHiRJeyTp06qSeffLKBIqq6tLQ0BaiVK1c6y+666y41evTohguqCp599lnVo0cPt6/puq4iIyPVyy+/7CwrKChQgYGB6l//+lc9RVh9kyZNUvHx8UrXdaVU478PgPr888+d31flfc/MzFReXl5q0aJFzn2Sk5OVwWBQ33//fb3FXur8a3Dnt99+U4A6duyYs2zYsGFq0qRJdRtcFbm7hsp+dprifRg9erQaPny4S1ljug9Klf172hR/JxqKtGhUoHR53BEjRriUV2t53AaUlZUFUGahn19++YXw8HA6dOjAhAkTSEtLa4jwKnTgwAFatWpFXFwct9xyC4cPHwbgyJEjpKamutwTi8XCsGHDGu09KSoq4qOPPuLee+91WYSoKdyHUlV53zdv3kxxcbHLPq1ataJbt26N9t5kZWWhaRotWrRwKf/vf/9LaGgoXbt25c9//nOjai2Din92mtp9OHnyJN9++y333Xdfmdca0304/+9pc/2dqAsyM2gF0tPTcTgcZRaOiYiIKLPATGOjlGLKlClcfPHFdOvWzVk+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76dbt24899xzQElrQ1UdPHiQTz75hM8++8zlQ/XDDz/kvvvuY8OGDWzatIkHHniA2NhYJkyYUKYOXde54YYbCA0NZf369dhstgq7cqKjo/nss8+48cYb2bdvHwEBAXh7e2M2m3nsscf46quvuPnmmwFIT0/nm2++4fvvvy+3vtWrV3P77be7fe3ll1+mb9++bNy4kb59+1bxXamZhx9+mKKiIlatWoWvry+7d+/Gz8/P+brZbKZHjx6sXr2a4cOH12ksQlyoJNEQopYFBgZiNpvx8fEhMjKy2scXFRXxn//8p0xyEh0dzRtvvIGmaXTs2JEdO3bwxhtvuE00li9fzp49ezh69ChRUVEAvPTSS4wcOdLtOY1GI8HBwQCEh4e7tLzcdtttfPDBB85E47///S9RUVFccsklbuvKzMwkMzOTVq1auX29d+/ejB07lieffJKffvqpwvfCU4mJidx44410794dgLZt25bZp3Xr1lUa0yGEqBnpOhGikYmNjXXbAjJgwACXbpaBAwdy4MABt+ML9uzZQ0xMjDPJKN2/JiZMmMCPP/5IcnIyAB988AF33323Syznys/PB0rGY5TnhRdeYPXq1fz44481iqmqHnvsMV544QUGDx7Ms88+y++//15mH29vb/Ly8uo0DiEuZJJoCFFPDAaDy5gKcD/Y09fX1+NznX8eoNzEoDK9evWiR48eLFiwgC1btrBjxw7uvvvucvcPCQlB0zTOnDlT7j7x8fFMmDCBJ5980m2slQkICCArK6tMeekTM4GBgQDcf//9HD58mPHjx7Njxw769OnDm2++6XLM6dOnq9W1JYSoHkk0hKgDZrO5TEtDWFgY2dnZLvM2VGcOi/Xr15f5vn379m4HR3bp0oXExEROnDjhLFu3bl2lMQNuW0juv/9+PvjgA95//30uv/zyCp/8MJvNdOnShd27d1d4vr///e/s37+fRYsWVbifO506dWLnzp0UFBS4lG/cuJGwsDCCgoKcZdHR0UycOJElS5bwpz/9iXfffdflmJ07d9KrV69qxyCEqBpJNISoA23atGHDhg0cPXqU9PR0dF2nf//++Pj48Le//Y2DBw/y8ccfM3/+/CrXmZSUxJQpU9i3bx8LFy7kzTffZNKkSW73vfzyy+nYsSN33nkn27dvZ/Xq1Tz11FMV1h8bG4umaXzzzTecOnWKnJwc52u33347ycnJvPvuu9x7772VxnrllVeyZs2aCveJiIhgypQpzJ49u9L6znf77bdjMpkYP348mzZt4tChQ3z00UfMmDGDv/zlL879Jk+ezA8//MCRI0fYsmULP//8M507d/7/du7Y9bQ4jOP457KKUjIYWCRKslisyKiU0cR0mFAkRbKw+wvUsdnOaPGPoKyMOoPcTffefld+6nt/3Xvfr/U532/P+Ol5Ot9Hfb/f63Q6qVAofLoHAK8haAAGdLtdeb1epVIphUIhHY9HBYNBrVYrOY6jdDot27Y1Ho9fvrNer+t6vSqXy8myLLXb7d8+0OXxeLTZbOS6rnK5nBqNhmaz2dP7I5GIJpOJ+v2+wuGwWq3Wo+b3+1WtVuXz+T58KOtXzWZTjuN8uN74Ua/X++kvkFcFAgHtdjvd73dVKhVlMhnN53NNp1N1Op3Hd7fbTZZlKZlMqlwuK5FIaLlcPuq2batUKikajX66BwCv+XZ/Z0EK4L9TLBaVTCZfnkDUajVls1kNBgPDnb3HdV3F43HZtq18Pv/V7QD/LCYaAJ46n89ar9fabreyLOvlc4vF4q1pxZ9yOBw0HA4JGYBhTDQAPBWLxXS5XDQajdTtdr+6HQB/GYIGAAAwhtUJAAAwhqABAACMIWgAAABjCBoAAMAYggYAADCGoAEAAIwhaAAAAGMIGgAAwBiCBgAAMOY7jfZr9xNPljYAAAAASUVORK5CYII=", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# color by time offset (hours) between buoy and icesat-2\n", - "plt.figure()\n", - "p = plt.scatter(turb['turb'],turb['icesat2_kd'],s=20,c=turb['time_offset']/3.6e9,vmin=0,vmax=6)\n", - "plt.colorbar(p)\n", - "plt.xlabel('turbidity (NTUs)')\n", - "plt.ylabel('kd from icesat-2')\n", - "plt.xlim([-2,200])\n", - "plt.ylim([0.01,0.45])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/LICENSE b/icesat2_kdph-main/LICENSE deleted file mode 100644 index 7e90438..0000000 --- a/icesat2_kdph-main/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 gloverha - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/icesat2_kdph-main/Main.ipynb b/icesat2_kdph-main/Main.ipynb deleted file mode 100644 index bfce771..0000000 --- a/icesat2_kdph-main/Main.ipynb +++ /dev/null @@ -1,363 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "5e0f151d-ae57-4612-bd22-fe99186f0c91", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet rtree" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "7335b77d-91bf-44ee-b871-93798bfb993d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Note: you may need to restart the kernel to use updated packages.\n" - ] - } - ], - "source": [ - "%pip install --quiet hdbscan" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "51198b80-27e1-4229-92f1-4db7ba4611fd", - "metadata": {}, - "outputs": [], - "source": [ - "# main.py\n", - "import os\n", - "import re\n", - "import glob\n", - "import pandas as pd\n", - "import numpy as np\n", - "import logging\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from config import workspace_path, atl03_path, atl03_file,\\\n", - " other_data_path ,shoreline_data ,gebco_path ,\\\n", - " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", - " ignore_subsurface_height_thres ,output_path \n", - "\n", - "\n", - " \n", - "from kd_utils.data_processing import load_data, \\\n", - " extract_file_params, \\\n", - " Extract_sea_photons, \\\n", - " filter_photon_dataset_by_hull_area, \\\n", - " plot_convex_hulls\n", - " \n", - "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", - " get_sea_surface_height\n", - " \n", - " \n", - "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", - "\n", - "from kd_utils.visualization import plot_photon_height, \\\n", - " plot_kd_photons, \\\n", - " plot_filtered_seafloor_photons\n", - " \n", - "from kd_utils.Kd_analysis import process_kd_calculation\n", - "\n", - "from kd_utils.interpolation import geoid_correction, \\\n", - " refraction_correction, \\\n", - " interpolate_labels, \\\n", - " apply_interpolation\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "c92c03d7-10ea-4401-8c87-315935464cc6", - "metadata": {}, - "outputs": [], - "source": [ - "def main():\n", - " try:\n", - " \n", - " # Load IS2 and extract sea photons\n", - " IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path) \n", - " \n", - " # Extract sea photon by applying the land mask\n", - " sea_photon_dataset = Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path)\n", - " \n", - " \n", - " # Main processing function to apply binning beam-by-beam \n", - " # to bin the photons data by vertical_res 25 cm and horizontal resolution 500m\n", - " binned_dataset_sea_surface = process_sea_photon_binning(sea_photon_dataset, horizontal_res=horizontal_res, vertical_res=vertical_res)\n", - " \n", - " \n", - " # filter to get subsurface photons\n", - " sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \\\n", - " process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_file_path_lists)\n", - " \n", - " \n", - " # Visualization of the filtered seafloor photons\n", - " # Uncomment the following lines to visualize if needed\n", - " # output_path = OutputPath+'/IS2_subsurface_RM_Seafloor.jpg'\n", - " # plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset=filtered_seafloor_subsurface_photon_dataset, \n", - " # sea_photon_dataset=sea_photon_dataset, \n", - " # sea_surface_height=sea_surface_height, \n", - " # output_path=output_path)\n", - " \n", - " ########################\n", - " # Todo: move the filter to the begining\n", - " # Filter shallow photons that may have noises from wave, afterpulse, or others\n", - " # by setting Ignore_Subsurface_Height_Thres (i.e., -6)\n", - " # Masked out the deep water photons by applying (filtered_seafloor_subsurface_photon_dataset < Ignore_Subsurface_Height_Thres)\n", - " # Filter out points below the seafloor\n", - " Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset[\n", - " filtered_seafloor_subsurface_photon_dataset['photon_height'] < Ignore_Subsurface_Height_Thres\n", - " ]\n", - " # Final_filtered_subsurface_photon_dataset = filtered_seafloor_subsurface_photon_dataset\n", - " \n", - " \n", - " ###################################\n", - " ### Todo: move the filter to the begining\n", - " # Steps to standardize KD calculation by filtering out \n", - " # segments lacking sufficient subsurface photons.\n", - " # Approach: Use the ConvexHull of photons within \n", - " # each rectanglar area formed by each horizontal bin (here, it is lat_bins) and \n", - " # based on dataframe Final_filtered_subsurface_photon_dataset along the distance of the track\n", - " \n", - " # Apply filtering based on hull area if desired\n", - " Final_filtered_subsurface_photon_dataset, convex_hull_areas, convex_hulls = filter_photon_dataset_by_hull_area(\n", - " Final_filtered_subsurface_photon_dataset, hull_area_threshold=5000\n", - " )\n", - " \n", - " # Visualization\n", - " # Uncomment the following line to visualize if needed\n", - " # plot_convex_hulls(Final_filtered_subsurface_photon_dataset, convex_hulls, convex_hull_areas)\n", - " \n", - " ########################################### \n", - " # calculate kd and save it to table\n", - " SubsurfacePhotonDFAddedKd = process_kd_calculation(Final_filtered_subsurface_photon_dataset)\n", - " \n", - " \n", - " ## Todo move this part into a function so that it will not looks too busy here\n", - " # Extract the timestamp using regex and use it to set the output file name\n", - " match = re.search(r\"_(\\d{14})_\", ATL03_h5_file_path)\n", - " timestamp = match.group(1) if match else \"unknown\"\n", - " \n", - " output_file_path = os.path.join(OutputPath, f\"{timestamp}_AddedKdDataset_strongBeams_Further.csv\")\n", - " SubsurfacePhotonDFAddedKd.to_csv(output_file_path, index=False)\n", - " \n", - " if 'relative_AT_dist' in filtered_seafloor_subsurface_photon_dataset.columns:\n", - " unique_photon_dataset = filtered_seafloor_subsurface_photon_dataset[['relative_AT_dist', 'lat_bins', 'photon_height']].drop_duplicates()\n", - " unique_photon_dataset['relative_AT_dist_center'] = unique_photon_dataset\\\n", - " .groupby('lat_bins', observed=False)['relative_AT_dist'].transform('mean')\n", - " def find_closest(group):\n", - " if not group.empty:\n", - " center = group['relative_AT_dist_center'].iloc[0]\n", - " group['dist_to_center'] = abs(group['relative_AT_dist'] - center)\n", - " closest_index = group['dist_to_center'].idxmin()\n", - " return group.loc[[closest_index]]\n", - " else:\n", - " return pd.DataFrame(columns=group.columns)\n", - " \n", - " # Filter out empty or all-NA entries\n", - " unique_photon_dataset_filtered = unique_photon_dataset.dropna(how='all', axis=1)\n", - " \n", - " # Group by 'lat_bins' and apply the find_closest function\n", - " closest_to_center = unique_photon_dataset_filtered\\\n", - " .groupby('lat_bins', observed=False)\\\n", - " .apply(find_closest, include_groups=True)\n", - " # .reset_index()\n", - " \n", - " # Remove the index without resetting it if 'lat_bins' already exists\n", - " closest_to_center.index = closest_to_center.index.droplevel(0)\n", - " \n", - " # Ensure relevant entries are excluded before concatenation\n", - " closest_to_center = closest_to_center.dropna(axis=1, how='all')\n", - " \n", - " Kd_DF_MergedDistance = closest_to_center.merge(SubsurfacePhotonDFAddedKd, on='lat_bins', how='left')\n", - " Kd_DF_MergedDistance = Kd_DF_MergedDistance.drop(columns=['relative_AT_dist_center', 'dist_to_center'])\n", - " #plot_kd_photons(filtered_seafloor_subsurface_photon_dataset, Kd_DF_MergedDistance)\n", - " \n", - " logging.info(\"SUCCESS!\")\n", - " \n", - " except Exception as e:\n", - " logging.error(f\"An error occurred: {e}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "17fe40b6-ad4b-4410-bd3e-d8677012c7cc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "./data/processed_ATL03_20230825074121_10102002_006_02.h5\n", - "./data/ne_10m_land.shp\n", - "./data/gebco_2024_geotiff/\n", - "./results/\n", - "['./data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w-90.0_e0.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif', './data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w90.0_e180.0.tif', './data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w-180.0_e-90.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w90.0_e180.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w-90.0_e0.0.tif', './data/gebco_2024_geotiff/gebco_2024_n90.0_s0.0_w0.0_e90.0.tif', './data/gebco_2024_geotiff/gebco_2024_n0.0_s-90.0_w-180.0_e-90.0.tif']\n" - ] - } - ], - "source": [ - "# Prepare the paths and parameters\n", - "ATL03_h5_file_path = os.path.join(workspace_path, atl03_path, atl03_file)\n", - "print(ATL03_h5_file_path)\n", - "\n", - "shoreline_data_path = os.path.join(workspace_path, other_data_path, shoreline_data)\n", - "print(shoreline_data_path)\n", - "\n", - "GEBCO_full_path = os.path.join(workspace_path, other_data_path, gebco_path)\n", - "print(GEBCO_full_path)\n", - "\n", - "OutputPath = os.path.join(workspace_path, output_path)\n", - "print(OutputPath)\n", - "\n", - "\n", - "#Get the gebco list\n", - "#gebco_2024_n0.0_s-90.0_w0.0_e90.0.tif\n", - "GEBCO_file_pattern = os.path.join(GEBCO_full_path, \"gebco_*.tif\")\n", - "\n", - "#Initialize with an empty list\n", - "GEBCO_file_path_lists = []\n", - "for GEBCO_file_path_name in glob.glob(GEBCO_file_pattern):\n", - " #put the find one into the list\n", - " GEBCO_file_path_lists.append(GEBCO_file_path_name)\n", - "\n", - "print(GEBCO_file_path_lists)\n", - "\n", - "# Get all other necessary parameters\n", - "horizontal_res = horizontal_res\n", - "\n", - "vertical_res = vertical_res\n", - "\n", - "subsurface_thresh = subsurface_thresh\n", - "\n", - "Ignore_Subsurface_Height_Thres = ignore_subsurface_height_thres\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "b8a2dde6-c1d5-408d-becc-07eeb0086c4e", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-11-27 16:39:09,557 - INFO - ./data/processed_ATL03_20230825074121_10102002_006_02.h5\n", - "2024-11-27 16:39:09,563 - INFO - ['METADATA', 'ancillary_data', 'atlas_impulse_response', 'ds_surf_type', 'ds_xyz', 'gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r', 'orbit_info', 'quality_assessment']\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Processing strong beam: gt1l\n", - "Processing strong beam: gt2l\n", - "Processing strong beam: gt3l\n", - "Processing binning for beam: gt1l\n", - "Processing binning for beam: gt2l\n", - "Processing binning for beam: gt3l\n", - "Processing subsurface filtering for beam: gt1l\n", - "Processing subsurface filtering for beam: gt2l\n", - "Processing subsurface filtering for beam: gt3l\n" - ] - }, - { - "data": { - "image/png": "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zuWXX84rX/lKYHzB9Nd//df4vs8v/uIvkiQJAK997Ws5dOgQH//4x09p5pZlGWmanvKjlLr3O/R+cPnll/Pyl7+c888/n0984hP8yZ/8Cddeey2XXHIJBw4cAMbNzv6//+//A8b76corrzxtML07Bw8eBNgMAye84hWvwLIsPvrRj/Kud72Lr371q5sh7oR7ch68973v5bGPfSwzMzNceeWVmz8wvoB/0pOexEc+8hF+67d+i89//vO88IUv5F3vehfPe97zTinr5z//ef7P//k//P7v/z7/+I//uBk2b7vtts15XvSiF/GpT32KN7/5zfzzP/8zH/jAB3jKU55Cs9m8031w/vnnMzs7uyV4ffnLX8bzPG644YbNMJmmKV/72td4ylOectr1zM7ObtbovvzlL9/c1jsel5//+Z/nnHPO4R//8R/53d/9XT760Y/ym7/5m3davpP93u/9HkeOHOEDH/gA73//+zlw4ADPfvazybLsLpe74YYb+Jmf+Rmuu+46/vf//t987nOf45nPfCa/8Ru/sdlcESCKIlqtFv/9v/93PvWpT/F3f/d3PO5xj+N5z3seH/nIR7as8yUveQn/7b/9N37mZ36Gj33sY/z93/89z3nOc04JKj/4wQ/47d/+bX7zN3+TT3/601x44YW8/OUv5+tf//o92ua7c+DAAS677DL+8i//ki996Uu8/vWv5+Mf/zjPfvazN+d505vexC/8wi8AbDkPZ2dn73b9Jz4PwjDkuuuu43d+53eo1Wo885nPvNtlkyThOc95Dpdeeimf/vSnednLXsYf//Ef8853vvO+b7AQ4r5TQgjxI7KysqIA9V//63+9R/PfeOONClCvfe1rt0z/9re/rQD1e7/3e5vTnvCEJyhAffvb394y73nnnaee/vSnb/7+mc98RgHqn//5nzenpWmq5ubm1M///M9vTnvVq16lisWiOnLkyJb1/a//9b8UoK6//vrNad/4xjeUaZrq9a9/vfrgBz+oAPWBD3xgy3If+tCHFHCXP7t3796c/9ChQwpQH/rQh07ZL4B6y1vecsq6Dx06tDntxS9+8Zb1nU673Vae56nLLrtsy/SjR48qx3HU85///FNe4+qrr77LdZ4871VXXaWSJFH9fl997nOfU5OTk6pUKqmVlZUt893x+L7rXe9SgFpeXlZK3bvz4JnPfOZpt/vP//zPFaA+/vGPb5n+zne+85TzAVDT09Oq1+ttTltZWVG6rqvLL798c1qxWFSvf/3r73Z/3NELX/hCdcYZZ2z+/pSnPEW98pWvVLVaTf3VX/2VUkqpb37zm6eU6wlPeIJ6whOesPn7+vr6KefCCW95y1sUoN71rndtmf7a175Wua6r8jzfnLZ792714he/ePP3f/3Xf1XAKefFxz/+cQWoK6+88i637+lPf7qan59X3W53y/Rf+7VfU67rqlarddrl0jRVSZKol7/85eriiy/enP71r39dAeqNb3zjXb7u7t27leu6W96zo9FI1et19apXveoul1VqfNxf97rX3e18J+R5rpIkUV/72tcUoH7wgx9s/u11r3udujeXVC9+8YtP+5kwOzurvvGNb2yZ98Tx+dd//ddTlr/j+X3ZZZepffv23eNyCCHuP1JTJYT4ifGv//qvAKc0aXrkIx/J/v37+Zd/+Zct02dmZk553ufCCy/c0tzsGc94BjMzM3zoQx/anPZP//RPLC0t8bKXvWxz2uc+9zme9KQnMTc3t6VG6RnPeAYAX/va1zbnfexjH8sf/MEf8O53v5vXvOY1vPCFL+TlL3/5abfpIx/5CFdfffUpP4973OPuxZ65f1x55ZWMRqNT9u/OnTt58pOffMr+vbce/ehHY1kWpVKJZz3rWczMzPDFL36R6enpLfOd3NwTxscMbm8meG/Pg9P5yle+QqFQ2KxBOOHEOu+4jic96UlbOuKYnp5mampqy7n0yEc+kg9/+MO84x3v4Kqrrtqsqbw7l156KbfddhuHDh0iDEO+8Y1v8J//83/mSU96EldccQUwrr1yHGfb58Xp9m0Yhqytrd2nZeHU5psnC8OQf/mXf+G5z30uvu9vee9cdtllhGHIVVddtTn/P/zDP/DYxz6WYrGIaZpYlsVf/uVfbml++sUvfhGA173udXdb5oc+9KHs2rVr83fXdTnnnHPussz3xm233cbzn/98ZmZmMAwDy7J4whOeALClzPeF53mbnwff/va3+cQnPsE555zDZZddtlnjelc0TdtSYwanfv4JIX58pKMKIcSPzMTEBL7vc+jQoXs0/4lmVKdrNjM3N3fKxUKj0ThlPsdxGI1Gm7+bpsmLXvQi3vOe99DpdKhWq3z4wx9mdnaWpz/96Zvzra6u8tnPfnbLswwnu2PTwxe84AW86U1vIooifud3fudOt2n//v2bnTecrFKpsLCwcKfL/Sjc3f49cYF/X33kIx9h//79mKbJ9PT0nTZ/uuNxO/Gs3Ynjdm/Pg9NpNpvMzMxsecYKYGpqCtM0T2myd0/OpY997GO84x3v4AMf+ABvetObKBaLPPe5z+Vd73oXMzMzd1qWE036vvzlL7N3716SJOHJT34yq6urvP3tb9/822Mf+1g8z7vbbbsrd7dv7+9lm80maZrynve8h/e85z2nnefEe+cTn/gEv/iLv8h/+S//hd/5nd9hZmYG0zR53/vet+U5qPX1dQzDuMt9emdlPlHue7K9d2cwGPD4xz8e13V5xzvewTnnnIPv+ywsLPC85z1v26+h6/opnw1Pf/rT2blzJ7/1W791t8HK931c190yzXEcwjDcVrmEEPeNhCohxI+MYRhceumlfPGLX+TYsWPMz8/f5fwnLpCWl5dPmXdpaYmJiYn7VI6XvvSl/M//+T/5+7//e37pl36Jz3zmM7z+9a/HMIzNeSYmJrjwwgv5gz/4g9OuY25ubvP/WZbxghe8gFqthuM4vPzlL+eb3/wmtm3fp/IBmxdHd3zI/K6e17m3Tt6/d7Sd/XvCnQXIe+v+OA8ajQbf/va3UUptCVZra2ukaXqftnViYoJ3v/vdvPvd7+bo0aN85jOf4Xd/93dZW1u7yx4s5+fnOeecc/jyl7/Mnj17eMQjHkG1WuXSSy/lta99Ld/+9re56qqrtjx/9NOiVqthGAYvetGL7rRmae/evQD8zd/8DXv37uVjH/vYlmNyx3N+cnKSLMtYWVm5R88l/ah85StfYWlpia9+9aubtVPAnY7Xdn/wfZ8zzzyTH/zgBz+y1xBC/GhI8z8hxI/UG97wBpRSvPKVrySO41P+niQJn/3sZwF48pOfDLDZ0cQJV199NTfeeCOXXnrpfSrD/v37edSjHsWHPvQhPvrRjxJFES996Uu3zPOsZz2L6667jjPPPJNHPOIRp/ycHKre8pa38G//9m/87d/+LR/72Mf4wQ9+cJe1VffE9PQ0ruty7bXXbpl+up7R7qtLLrkEz/NO2b/Hjh3jK1/5yn3ev/e3e3Me3FmtxKWXXspgMOBTn/rUluknOkTY7rbu2rWLX/u1X+OpT30q3/ve9+52/qc85Sl85Stf4YorruCpT30qAOeccw67du3izW9+M0mS3GknFSfcm1qnHxff93nSk57ENddcw4UXXnja986JkKxp2uZA0iesrKycco6faHL7vve978e3Iadxopx37LX0//7f/3vKvPfXsRkMBhw8eJCpqaltrUcI8eMnNVVCiB+pSy65hPe973289rWv5eEPfzivec1rOP/880mShGuuuYb3v//9XHDBBTz72c9m3759/Oqv/irvec970HWdZzzjGRw+fJg3velN7Ny58x73YnY6L3vZy3jVq17F0tISj3nMY9i3b9+Wv//+7/8+V1xxBY95zGP4jd/4Dfbt20cYhhw+fJgvfOEL/Pmf/znz8/NcccUVXH755bzpTW/avDC//PLL+e///b/zxCc+kec+97n3qXyapvHCF76QD37wg5x55plcdNFF/Pu//zsf/ehH7/M231G1WuVNb3oTv/d7v8ev/Mqv8Mu//Ms0m03e9ra34boub3nLW+6319qOe3MePOQhD+ETn/gE73vf+3j4wx++2aTqV37lV/izP/szXvziF3P48GEe8pCH8I1vfIM//MM/5LLLLrvbAHNH3W6XJz3pSTz/+c/n3HPPpVQqcfXVV/OlL33ptL0J3tGll17Ke9/7XjY2Nnj3u9+9ZfqHPvQharXalu7UT6dUKrF7924+/elPc+mll1Kv15mYmGDPnj33alvub3/yJ3/C4x73OB7/+Mfzmte8hj179tDv9zl48CCf/exnNwe4fdaznsUnPvEJXvva1/ILv/ALLCws8Pa3v53Z2dnNnicBHv/4x/OiF72Id7zjHayurvKsZz0Lx3G45ppr8H2fX//1X7/fyn7rrbfy//7f/ztl+nnnncdjHvMYarUar371q3nLW96CZVn87d/+7WlrkR7ykIcA8M53vpNnPOMZGIbBhRdeeJe113mebz5vluc5i4uL/Omf/intdvt+HUJBCPFj8kD3lCGE+I/h+9//vnrxi1+sdu3apWzbVoVCQV188cXqzW9+s1pbW9ucL8sy9c53vlOdc845yrIsNTExoV74wheqhYWFLet7whOeoM4///xTXufOesHrdrvK8zwFqL/4i784bRnX19fVb/zGb6i9e/cqy7JUvV5XD3/4w9Ub3/hGNRgM1NLSkpqamlJPfvKTVZZlm8vlea6e/exnq2q1utkj3931nne6Xuu63a56xSteoaanp1WhUFDPfvaz1eHDh++33v9O+MAH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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2024-11-27 16:40:26,073 - INFO - Calculating Kd for beam: gt1l\n", - "2024-11-27 16:40:26,074 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-11-27 16:40:26,598 - INFO - Calculating Kd for beam: gt2l\n", - "2024-11-27 16:40:26,599 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "2024-11-27 16:40:27,159 - INFO - Calculating Kd for beam: gt3l\n", - "2024-11-27 16:40:27,160 - INFO - Calculating Kd from filtered subsurface photon dataset\n", - "/tmp/ipykernel_144/4080034087.py:90: DeprecationWarning: DataFrameGroupBy.apply operated on the grouping columns. This behavior is deprecated, and in a future version of pandas the grouping columns will be excluded from the operation. Either pass `include_groups=False` to exclude the groupings or explicitly select the grouping columns after groupby to silence this warning.\n", - " .apply(find_closest, include_groups=True)\n", - "2024-11-27 16:40:27,942 - INFO - SUCCESS!\n" - ] - } - ], - "source": [ - "\n", - "\n", - "# Configure logging\n", - "logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')\n", - "\n", - "\n", - "# When all paramters ready, call the main function\n", - "main()\n", - " \n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ac012527-5bad-47f3-8258-b4bcaae7997c", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a0bb0280-5189-4684-917c-a12a5396442e", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/__pycache__/config.cpython-311.pyc b/icesat2_kdph-main/__pycache__/config.cpython-311.pyc deleted file mode 100644 index b276004fc6588d2f693c90f486ed261526c99644..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 495 zcmYjOF;C+#6n0u#LTFQH-r2__bJAw7v_+5X=5p5JHtJ#@Pc0`vY}hrf0Zda9iNX05@C2jCxK2qR`; z3uc2gaFaFh2HU_b*1~Pp#+z&t+swvWZ0k2Vb@GPi=PgDJ_48iL$=PU5A{sMKizM%d zd=e-!9*uvHkSimnQ(wM`{*dco8762kso~<4XIFaO2!pF6-M$+*XM2RgFzH+dWnN-m6zNRrP)ERVA~t z4T9&Nzkk&I$21}TvdUK<56aI_bcTwPm~hHjMq}!}EN1TO#h&~6vG2Y?9N_C^VP1=C zc^HS3@Od8a@M9X+d5zaUCh-)%%o}_fmIj~Uv#?C_IerP>8P0Y{b78dJcp~{Q6Orsj z-C@x&sVsEVl`1lQ5j}nSINC@|@<=6ndqS-=wjMr;mVeS(!*6wMwb?ksjLCMBRZ}L- z1s9n~sya`Mub<2>Kv~+9!gi&JHiC2cb6l|4n53BG;-A07xNwP1ZB;u(O9V69Ily;-kL|h6T71BiFFx6(o zxqhfc)X79r+iz;yc`zcW~*n=;hw=fl@Tm4=pUkTOvMY^XF zb<}#0$symtDw3XP-Is^&ptQDpxG*5d~ccM{V|rPS?Q@|D3+ zRnM^>ZTziepPoZSf;yd}GmP1qDr@RcYd?Q1JT(+cNc{yWPX9s-IRQMU^d%cp>rVX z?FpQ3e4oR%it;DYrH;mR+xM7`F^iKrpTg*kMZ%}~%pchz83#Qw4oiyBe>$#}L0LQZ znO(HrbMU?d@A-*0X7yPao=lZBe)*as*}-R~QHB^jEJGI%?`@t(fh9!`ypNJBi$Lil z>MEH>dLTM!Hx)d3w)Mfojg6fM_yM`myM1E@`cA7Q2cqD~U`2MoFS%!%69AbCy&_ew zW%^2Ru3KDk{a|zzTKC@WufKom#rw;J9`qotlOZM!2YcQe^ZGQAGr!tG1i zI{PmsdUge_+h>qo$6kAFRav5)U9$aWztc^#EKhZwm`=YrUDcI17z%B4_gQRJydqD;^_`%pUGZZ%@+8@xLY5(wrK7xG5FzF*Xg_<6sCLM`kY!zgIn-2G8L@^9|0=IR|Rd&KTUqi;8&$8P8y2L;ZcXnUC3 zbi6zn_TI>A-iaKCM#0V9ch~Y}SOo)>7NCGiik_&vOca%;jj94S&B{X~(sN)^lZk4| z61HupiZf7jlVN7suac}{X&O)EN9|5urX4YX-Dc(q?9;YGdysbag<6AEFQ6jcJdph+ zyW+49=@L`#!TQ!|XXDIAaq#{f0^kC`J$e&cjpT`>3U~n5DIGJku&X%Bu8^^X*vdX+ zq|^V)K^ZtXfIT!G`g(vi{DguSR&zi@^PLu;tqu*8FwFQi!ND>GOIV^O$YTiR2o7pPm7@uPSm0!5tFda\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      rgttrackregionsegment_idbackground_ratepaircyclesc_orientsolar_elevationsegment_dist...atl08_classlandcoveryapc_scoresnowcoverquality_phx_atcatl03_cnfheightgeometryspot
      time
      2023-01-21 06:16:40.471485952484167954107303.5564540181-68.1931921.593187e+07...425502550-23.8953674-39.041676POINT (-76.07301 37.20210)6
      2023-01-21 06:16:40.471586048484167954107303.5564540181-68.1931921.593187e+07...425502550-23.1815624-38.770771POINT (-76.07301 37.20209)6
      2023-01-21 06:16:40.471985920484167954107303.5564540181-68.1931921.593187e+07...425502550-20.3133741-45.427681POINT (-76.07301 37.20206)6
      2023-01-21 06:16:40.472285952484167954107303.5564540181-68.1931921.593187e+07...425502550-18.1817894-38.845711POINT (-76.07301 37.20205)6
      2023-01-21 06:16:40.472885760484167954107303.5564540181-68.1931921.593187e+07...425502550-13.8953594-39.379562POINT (-76.07302 37.20201)6
      ..................................................................
      2023-01-21 06:16:43.3035860484841679629335931.8533921181-68.3153691.594956e+07...4255025503.7621410-14.573852POINT (-76.09313 37.04324)5
      2023-01-21 06:16:43.3035860484841679629335931.8533921181-68.3153691.594956e+07...4255025503.6626291-41.881130POINT (-76.09313 37.04324)5
      2023-01-21 06:16:43.3037859844841679629335931.8533921181-68.3153691.594956e+07...4255025505.0527051-47.709576POINT (-76.09313 37.04323)5
      2023-01-21 06:16:43.3037859844841679629335931.8533921181-68.3153691.594956e+07...4255025505.0643911-44.528160POINT (-76.09313 37.04323)5
      2023-01-21 06:16:43.3037859844841679629335931.8533921181-68.3153691.594956e+07...4255025505.0749811-41.621281POINT (-76.09313 37.04323)5
      \n", - "

      51593 rows × 22 columns

      \n", - "" - ], - "text/plain": [ - " rgt track region segment_id \\\n", - "time \n", - "2023-01-21 06:16:40.471485952 484 1 6 795410 \n", - "2023-01-21 06:16:40.471586048 484 1 6 795410 \n", - "2023-01-21 06:16:40.471985920 484 1 6 795410 \n", - "2023-01-21 06:16:40.472285952 484 1 6 795410 \n", - "2023-01-21 06:16:40.472885760 484 1 6 795410 \n", - "... ... ... ... ... \n", - "2023-01-21 06:16:43.303586048 484 1 6 796293 \n", - "2023-01-21 06:16:43.303586048 484 1 6 796293 \n", - "2023-01-21 06:16:43.303785984 484 1 6 796293 \n", - "2023-01-21 06:16:43.303785984 484 1 6 796293 \n", - "2023-01-21 06:16:43.303785984 484 1 6 796293 \n", - "\n", - " background_rate pair cycle sc_orient \\\n", - "time \n", - "2023-01-21 06:16:40.471485952 7303.556454 0 18 1 \n", - "2023-01-21 06:16:40.471586048 7303.556454 0 18 1 \n", - "2023-01-21 06:16:40.471985920 7303.556454 0 18 1 \n", - "2023-01-21 06:16:40.472285952 7303.556454 0 18 1 \n", - "2023-01-21 06:16:40.472885760 7303.556454 0 18 1 \n", - "... ... ... ... ... \n", - "2023-01-21 06:16:43.303586048 35931.853392 1 18 1 \n", - "2023-01-21 06:16:43.303586048 35931.853392 1 18 1 \n", - "2023-01-21 06:16:43.303785984 35931.853392 1 18 1 \n", - "2023-01-21 06:16:43.303785984 35931.853392 1 18 1 \n", - "2023-01-21 06:16:43.303785984 35931.853392 1 18 1 \n", - "\n", - " solar_elevation segment_dist ... \\\n", - "time ... \n", - "2023-01-21 06:16:40.471485952 -68.193192 1.593187e+07 ... \n", - "2023-01-21 06:16:40.471586048 -68.193192 1.593187e+07 ... \n", - "2023-01-21 06:16:40.471985920 -68.193192 1.593187e+07 ... \n", - "2023-01-21 06:16:40.472285952 -68.193192 1.593187e+07 ... \n", - "2023-01-21 06:16:40.472885760 -68.193192 1.593187e+07 ... \n", - "... ... ... ... \n", - "2023-01-21 06:16:43.303586048 -68.315369 1.594956e+07 ... \n", - "2023-01-21 06:16:43.303586048 -68.315369 1.594956e+07 ... \n", - "2023-01-21 06:16:43.303785984 -68.315369 1.594956e+07 ... \n", - "2023-01-21 06:16:43.303785984 -68.315369 1.594956e+07 ... \n", - "2023-01-21 06:16:43.303785984 -68.315369 1.594956e+07 ... \n", - "\n", - " atl08_class landcover yapc_score snowcover \\\n", - "time \n", - "2023-01-21 06:16:40.471485952 4 255 0 255 \n", - "2023-01-21 06:16:40.471586048 4 255 0 255 \n", - "2023-01-21 06:16:40.471985920 4 255 0 255 \n", - "2023-01-21 06:16:40.472285952 4 255 0 255 \n", - "2023-01-21 06:16:40.472885760 4 255 0 255 \n", - "... ... ... ... ... \n", - "2023-01-21 06:16:43.303586048 4 255 0 255 \n", - "2023-01-21 06:16:43.303586048 4 255 0 255 \n", - "2023-01-21 06:16:43.303785984 4 255 0 255 \n", - "2023-01-21 06:16:43.303785984 4 255 0 255 \n", - "2023-01-21 06:16:43.303785984 4 255 0 255 \n", - "\n", - " quality_ph x_atc atl03_cnf height \\\n", - "time \n", - "2023-01-21 06:16:40.471485952 0 -23.895367 4 -39.041676 \n", - "2023-01-21 06:16:40.471586048 0 -23.181562 4 -38.770771 \n", - "2023-01-21 06:16:40.471985920 0 -20.313374 1 -45.427681 \n", - "2023-01-21 06:16:40.472285952 0 -18.181789 4 -38.845711 \n", - "2023-01-21 06:16:40.472885760 0 -13.895359 4 -39.379562 \n", - "... ... ... ... ... \n", - "2023-01-21 06:16:43.303586048 0 3.762141 0 -14.573852 \n", - "2023-01-21 06:16:43.303586048 0 3.662629 1 -41.881130 \n", - "2023-01-21 06:16:43.303785984 0 5.052705 1 -47.709576 \n", - "2023-01-21 06:16:43.303785984 0 5.064391 1 -44.528160 \n", - "2023-01-21 06:16:43.303785984 0 5.074981 1 -41.621281 \n", - "\n", - " geometry spot \n", - "time \n", - "2023-01-21 06:16:40.471485952 POINT (-76.07301 37.20210) 6 \n", - "2023-01-21 06:16:40.471586048 POINT (-76.07301 37.20209) 6 \n", - "2023-01-21 06:16:40.471985920 POINT (-76.07301 37.20206) 6 \n", - "2023-01-21 06:16:40.472285952 POINT (-76.07301 37.20205) 6 \n", - "2023-01-21 06:16:40.472885760 POINT (-76.07302 37.20201) 6 \n", - "... ... ... \n", - "2023-01-21 06:16:43.303586048 POINT (-76.09313 37.04324) 5 \n", - "2023-01-21 06:16:43.303586048 POINT (-76.09313 37.04324) 5 \n", - "2023-01-21 06:16:43.303785984 POINT (-76.09313 37.04323) 5 \n", - "2023-01-21 06:16:43.303785984 POINT (-76.09313 37.04323) 5 \n", - "2023-01-21 06:16:43.303785984 POINT (-76.09313 37.04323) 5 \n", - "\n", - "[51593 rows x 22 columns]" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ATL03_gdf" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "490eeac4", - "metadata": {}, - "outputs": [], - "source": [ - " \n", - "# Extract latitude and longitude from the geometry\n", - "ATL03_gdf['latitude'] = ATL03_gdf.geometry.y\n", - "ATL03_gdf['longitude'] = ATL03_gdf.geometry.x\n", - "\n", - "\n", - "# Create a scatter plot of height vs. latitude\n", - "plt.figure(figsize=(10, 6))\n", - "plt.scatter(ATL03_gdf['latitude'], ATL03_gdf['height'], s=1, c='blue', alpha=0.5)\n", - "plt.title(\"Height vs. Latitude for ATL03 Points\")\n", - "plt.xlabel(\"Latitude\")\n", - "plt.ylabel(\"Height (meters)\")\n", - "plt.ylim(-60, -16) # Set y-axis limits\n", - "plt.grid(True)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "a40bbf6d", - "metadata": {}, - "source": [ - "# Need to fix the loop below: below is the old code that we used icepyx to do the same thing" - ] - }, - { - "cell_type": "code", - "execution_count": 191, - "id": "b4616a9b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[-34.32363789 -16.57428851 -33.94800545 -16.21392815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-35.38298801 -17.27116185 -35.00597865 -16.91080149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-36.43158698 -17.88191518 -36.05331636 -17.52155482]\n", - "[-114.19533771 13.23280149 -113.82487229 13.59316185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-114.69261406 13.52929815 -114.32168594 13.88965851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-115.54558663 12.94487482 -115.17555997 13.30523518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-115.65389395 13.24736815 -115.28340605 13.60772851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.26434335 10.56915982 -109.89754665 10.92952018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-21.57397311 -24.95193018 -21.17709355 -24.59156982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.19465189 -24.86336018 -19.79805477 -24.50299982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.89886861 -23.98789351 -20.50499139 -23.62753315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.70809594 -24.94431685 -20.31124072 -24.58395649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.60872371 -23.73342351 -20.21561295 -23.37306315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.63942331 -23.67175018 -20.24649669 -23.31138982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.96223812 -23.40802351 -20.57009188 -23.04766315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.98995983 -23.34894518 -20.59798683 -22.98858482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-21.04274314 -23.31246018 -20.65087686 -22.95209982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-21.07873736 -23.25249851 -20.68704598 -22.89213815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-21.40781579 -23.31541185 -21.01594087 -22.95505149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-21.5250624 -23.28912018 -21.13326426 -22.92875982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-23.02633303 -23.79305185 -22.63304363 -23.43269149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-25.07907249 -23.73483518 -24.68595751 -23.37447482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-25.93920155 -23.80872351 -25.54586511 -23.44836315]\n", - "[-27.6627603 -23.29224851 -27.27095304 -22.93188815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-27.54140392 -23.58809518 -27.14872608 -23.22773482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-30.48417714 -21.50298018 -30.0973362 -21.14261982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-30.01905081 -20.71236351 -29.63424585 -20.35200315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-29.36274435 -21.42860685 -28.97609899 -21.06824649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-24.92224441 11.47888482 -24.55429225 11.83924518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-26.87506206 10.53955649 -26.50830128 10.89991685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-22.1797048 7.42249649 -21.81614854 7.78285685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-22.64814683 7.36805315 -22.28463651 7.72841351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.09816132 6.99666149 -19.73495534 7.35702185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-24.41271633 -19.57892185 -24.03066701 -19.21856149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-26.08383141 -20.18647518 -25.70032859 -19.82611482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-28.29307016 -19.58644185 -27.91100318 -19.22608149]\n", - "[-28.37084968 -19.34874351 -27.98933698 -18.98838315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-27.68897618 -19.92849685 -27.30609716 -19.56813649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-27.12297861 -20.57487685 -26.73851805 -20.21451649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-26.39420247 -20.90341685 -26.00891419 -20.54305649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.83953848 -20.53731851 -20.45517152 -20.17695815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.82410814 -20.53302351 -20.43975186 -20.17266315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.84743355 -20.61219018 -20.46287979 -20.25182982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-20.29515448 -21.54139685 -19.90821218 -21.18103649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-34.35583418 -20.15315518 -33.97241248 -19.79279482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-35.46879501 -19.21454351 -35.08759165 -18.85418315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-35.00043871 -20.14865351 -34.61702795 -19.78829315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-33.8530959 -23.20335351 -33.46154744 -22.84299315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-33.8592207 -23.57130685 -33.46659264 -23.21094649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-32.6124761 -24.45926351 -32.21715056 -24.09890315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-30.76880238 -22.02758018 -30.38055762 -21.66721982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-31.32239644 -22.71029185 -30.93226022 -22.34993149]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-33.41706583 -19.86555185 -33.03433751 -19.50519149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-27.5033222 50.45737149 -26.93513114 50.81773185]\n", - "[-66.69777986 20.62596149 -66.31228014 20.98632185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-66.69244901 20.96861649 -66.30606433 21.32897685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-67.70175517 20.24780149 -67.31721149 20.60816185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-62.50366084 18.68849649 -62.12283582 19.04885685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-63.66260148 19.25839315 -63.28045852 19.61875351]\n", - "[-67.73548218 19.28163649 -67.35328448 19.64199685]\n", - "[-67.44935367 19.52986982 -67.06656633 19.89023018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-67.78037026 19.80190482 -67.3969264 20.16226518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-69.02951761 20.35608149 -68.64470239 20.71644185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-68.49718841 21.23188982 -68.11011159 21.59225018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-66.67923174 21.56583982 -66.2912616 21.92620018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-68.51631212 21.31126649 -68.12902454 21.67162685]\n", - "[-63.30107273 25.53776315 -62.90109061 25.89812351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-61.62326284 26.51352982 -61.21991382 26.87389018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-63.76912536 28.42908982 -63.35864798 28.78945018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-64.670015 26.83504482 -64.26551834 27.19540518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-64.67773262 26.19050815 -64.27551738 26.55086851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-64.1498771 26.04792649 -63.74815624 26.40828685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-63.68331863 26.25706315 -63.28087137 26.61742351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-63.13303805 26.59727815 -62.72939195 26.95763851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-63.02199885 26.59397315 -62.61836449 26.95433351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-63.1484575 27.26227315 -62.74240584 27.62263351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[140.80524383 -46.86097185 141.33050277 -46.50061149]\n", - "[138.90401813 -47.18942351 139.43249847 -46.82906315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[139.96554226 -47.06114851 140.49275774 -46.70078815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[149.3598773 -55.45493518 149.9924861 -55.09457482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[149.15479859 -56.76368685 149.80914141 -56.40332649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 77.3837957 -41.59450518 77.86431096 -41.23414482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.25119373 39.63932982 7.72037293 39.99969018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.11314645 39.60677149 7.58210355 39.96713185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.92880591 39.54129482 7.39731743 39.90165518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.80362626 39.69904149 7.27321374 40.05940185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.49473742 40.78154649 7.97194258 41.14190685]\n", - "[ 7.44034702 40.81206149 7.91777298 41.17242185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-151.5926118 -19.99836518 -151.2095648 -19.63800482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-151.76050191 -19.56098518 -151.37849469 -19.20062482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-151.33901071 -19.96970518 -150.95603269 -19.60934482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-149.53832785 -22.07204018 -149.14996215 -21.71167982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-148.66110148 -21.85549185 -148.27332192 -21.49513149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-163.26823193 -20.79916351 -162.88320807 -20.43880315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-163.98444869 -19.47983685 -163.60263131 -19.11947649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-166.24381474 -19.53916351 -165.86185866 -19.17880315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-167.80297135 -19.74138685 -167.42053865 -19.38102649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 97.07930385 -49.76615851 97.63515281 -49.40579815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[114.22321422 -50.43140685 114.78678578 -50.07104649]\n", - "[128.87144199 -55.08991018 129.49830141 -54.72954982]\n", - "[27.99625049 33.82943815 28.43097285 34.18979851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.19534218 33.88014649 28.63032448 34.24050685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.22288222 33.88272982 28.65787778 34.24309018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[20.8005222 36.10910649 21.2475978 36.46946685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[20.63996319 36.19757649 21.08754681 36.55793685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[20.78038713 36.02050815 21.22695621 36.38086851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[20.9785613 35.52033149 21.42231204 35.88069185]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[20.22702768 34.93281982 20.66755566 35.29318018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.57305767 34.95685649 20.01371567 35.31721685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.20660499 34.79213315 19.64637501 35.15249351]\n", - "[18.47864274 34.93649815 18.9191906 35.29685851]\n", - "[33.65418058 32.67454649 34.08315608 33.03490685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[33.89337959 33.03299482 34.32410375 33.39335518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[33.97507069 33.08328149 34.40604265 33.44364185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[33.89857088 33.52885815 34.33176578 33.88921851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[33.7465564 33.48432982 34.17952694 33.84469018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[33.94059563 33.40300815 34.37315771 33.76336851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[34.87068867 33.89644982 35.30575467 34.25681018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.54296763 39.16587649 6.00895237 39.52623685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.2882345 39.05150815 6.75345884 39.41186851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.29792024 39.35368315 6.7651631 39.71404351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.28211002 38.52719482 7.74390331 38.88755518]\n", - "[ 2.22352708 36.69176149 2.67398958 37.05212185]\n", - "[23.0900973 34.47842482 23.52819604 34.83878518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[23.07236321 34.47807982 23.51046013 34.83844018]\n", - "[23.22262132 34.46365815 23.66064202 34.82401851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[20.86156803 37.11709982 21.31456531 37.47746018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[15.61589738 36.58283649 16.06571928 36.94319685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[16.16316615 37.52427649 16.61864051 37.88463685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[16.01855199 37.53756149 16.47410801 37.89792185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[15.22482962 37.25887149 15.67868372 37.61923185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[16.8512591 36.57315649 17.30102424 36.93351685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.47467684 42.00055482 4.96097316 42.36091518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.316618 42.00328649 4.80293533 42.36364685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.30598493 41.89850149 4.79149841 42.25886185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.44106674 41.87273982 4.92638326 42.23310018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.74085197 41.31923315 5.22199803 41.67959351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.05577544 41.08495482 5.53519123 41.44531518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.19797252 41.08257149 5.67737081 41.44293185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.87453211 40.81525649 5.35198122 41.17561685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.49013163 40.73329815 5.96698837 41.09365851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.91351312 41.18882815 5.39369354 41.54918851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.35788843 40.99403649 5.83663823 41.35439685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.75041773 41.17944815 6.23052894 41.53980851]\n", - "[ 5.99576659 41.51532315 6.47837674 41.87568351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.32823792 41.96687315 6.81427542 42.32723351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.32325623 42.53555982 7.81372377 42.89592018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.22625087 42.61351982 7.71733579 42.97388018]\n", - "[ 7.06280089 42.67977482 7.55441245 43.04013518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.05015423 42.75832149 7.54239244 43.11868185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.92971293 44.32336149 31.43498041 44.68372185]\n", - "[-147.17286536 -20.75570351 -146.78795124 -20.39534315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-147.35336363 -21.21589518 -146.96727297 -20.85553482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-148.55828862 -20.92398351 -148.17294798 -20.56362315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-150.86105144 -19.12845018 -150.48004516 -18.76808982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-150.60956527 -19.39380185 -150.22794813 -19.03344149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-151.02929577 -20.75071185 -150.64439423 -20.39035149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-153.89246143 -21.54789685 -153.50550197 -21.18753649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 0.53051746 37.05964315 0.98316921 37.42000351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.20822208 39.26627482 5.67487792 39.62663518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.0468152 39.14409649 6.5126548 39.50445685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.75210598 40.07380982 7.22428402 40.43417018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[100.35171986 -46.35230351 100.87210014 -45.99194315]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 95.93490541 -56.98413351 96.59309125 -56.62377315]\n", - "[104.00343876 -49.80096185 104.55968464 -49.44060149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 98.37317127 -55.08828518 99.00000539 -54.72792482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 97.96609923 -55.12575185 98.59351743 -54.76539149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-31.52810769 -20.40761851 -31.14406231 -20.04725815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-24.87792188 -18.93194518 -24.49736146 -18.57158482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[15.28938862 36.18294149 15.73688804 36.54330185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[15.2591805 35.95552982 15.7053795 36.31589018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[15.26245742 35.79240649 15.70773258 36.15276685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-85.05722157 -10.47484851 -84.69096509 -10.11448815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-86.01975199 -11.57067018 -85.65215135 -11.21030982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-86.81949347 -12.09885018 -86.45119319 -11.73848982]\n", - "[-85.89582489 -13.29845018 -85.52580845 -12.93808982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-86.44569478 -13.58935685 -86.07523522 -13.22899649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-88.817213 -14.88081018 -88.444657 -14.52044982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 70.58770271 -52.83553018 71.18176063 -52.47516982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-62.88577287 69.13376049 -61.86563647 69.49412085]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-63.21824224 68.00365782 -62.24856642 68.36401818]\n", - "[25.72207514 34.30955149 26.15928486 34.66991185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.74119823 34.34966149 26.17861843 34.71002185]\n", - "[25.65511238 34.04372149 26.09093762 34.40408185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.76689717 34.17224149 26.20338949 34.53260185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[26.52490579 33.73861315 26.95916421 34.09897351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.97409313 33.40865982 26.40668353 33.76902018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.69155037 33.16094982 26.12290629 33.52131018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.73587484 33.14837482 26.1671685 33.50873518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.25507973 33.27729982 25.68701361 33.63766018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.21786043 33.12927149 25.64905957 33.48963185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.3218908 33.10281649 25.7529592 33.46317685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.87704151 33.46705482 26.30992515 33.82741518]\n", - "[25.81356319 33.91998315 26.24875015 34.28034351]\n", - "[25.92604504 34.00206315 26.36165496 34.36242351]\n", - "[26.75361593 33.15668482 27.18495073 33.51704518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[26.40417699 32.94242149 26.83445635 33.30278185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.50807075 32.43312982 25.93588591 32.79349018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.57946644 34.05954149 28.01537356 34.41990185]\n", - "[27.85095071 34.09905315 28.28706263 34.45941351]\n", - "[27.88778492 34.10578149 28.32393174 34.46614185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.08886551 34.20166482 28.52551115 34.56202518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.03759985 34.41177149 29.47534681 34.77213185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.9357356 34.53321982 29.3741244 34.89358018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.93270428 34.54754982 29.37116906 34.90791018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.58505281 34.48642649 29.02319385 34.84678685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.56314232 34.43865482 29.00103102 34.79901518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.24959653 34.18720649 28.68616681 34.54756685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.34895832 34.17116149 28.78544502 34.53152185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.45677942 34.06289649 28.89270392 34.42325685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.93163275 34.19952982 29.36826725 34.55989018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.95773406 34.20605649 29.3944026 34.56641685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.41983959 33.92073649 29.85503041 34.28109685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.5542939 33.87038482 29.9892261 34.23074518]\n", - "[ 7.57665158 43.20580149 8.07250842 43.56616185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.18092371 42.97902482 7.67493629 43.33938518]\n", - "[ 6.33502798 42.66039982 6.82648535 43.02076018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.39530028 42.53242649 6.88574305 42.89278685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.41299021 42.50838649 6.90324313 42.86874685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.41579102 42.53350482 6.90624231 42.89386518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.53707604 42.59119982 7.02798396 42.95156018]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.14081813 42.64988315 6.63219187 43.01024351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.62268714 42.48338649 6.11274286 42.84374685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.58915141 42.47934149 6.07917526 42.83970185]\n", - "[ 5.64777141 42.55827649 6.13841859 42.91863685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.32867724 42.29170649 5.81722942 42.65206685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.45187539 42.36208815 5.94097794 42.72244851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.70367819 42.36732982 6.19282181 42.72769018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.76376206 42.23401815 6.25186461 42.59437851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.40227708 42.29729982 5.89087292 42.65766018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.79754154 42.37327982 6.28673179 42.73364018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.19816062 42.11366815 6.68532938 42.47402851]\n", - "[ 6.24455898 42.01343149 6.73095436 42.37379185]\n", - "[ 6.20942736 41.88260982 6.69481931 42.24297018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.91416527 41.87748815 6.39951807 42.23784851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.81471494 41.90720982 6.30029506 42.26757018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.81633936 42.06091815 6.30310064 42.42127851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.84305286 42.18234815 6.3307538 42.54270851]\n", - "[ 5.98627918 42.15063649 6.47373416 42.51099685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.0841045 42.16474149 6.57166883 42.52510185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.3640806 42.09987815 6.85114273 42.46023851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.2420992 42.19144982 6.7298708 42.55181018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.17981452 42.22610315 6.66785548 42.58646351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.20464373 42.23058982 6.6927196 42.59095018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.24454489 42.21572149 6.73250511 42.57608185]\n", - "[ 6.26922438 42.18668149 6.75695896 42.54704185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.20116255 42.24373982 6.68934078 42.60410018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.14173157 42.32686482 6.63055843 42.68722518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.23468083 41.96784982 6.72072583 42.32821018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.2443752 41.72118482 6.72853814 42.08154518]\n", - "[ 6.33429686 41.65292649 6.81794314 42.01328685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.29589859 41.71589315 6.78002141 42.07625351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.04115069 41.71885649 6.52529597 42.07921685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.56112047 41.51562149 6.04373286 41.87598185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.52914758 41.54125149 6.01195242 41.90161185]\n", - "[ 5.58335643 41.53357149 6.06610357 41.89393185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.56574928 41.51282982 6.04834072 41.87319018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.42497381 41.48049482 5.90732286 41.84085518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.52938206 41.14752149 6.00925794 41.50788185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.43763553 41.35413815 5.91904114 41.71449851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.10063569 41.28949482 6.58156098 41.64985518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.03498751 41.30786815 6.51604916 41.66822851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.98387071 41.30700482 6.46492595 41.66736518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.85632186 41.28558315 6.33721814 41.64594351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.92407958 35.24051815 28.36628376 35.60087851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.6022101 43.22327149 8.0982099 43.58363185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.20932442 43.04470315 7.70386891 43.40506351]\n", - "[ 7.13462307 42.92675482 7.6282136 43.28711518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.05312737 42.81748982 7.5458393 43.17785018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.99818334 42.79894649 7.49074666 43.15930685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.91491419 42.74039315 7.40700914 43.10075351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.96641001 42.64605649 7.45775333 43.00641685]\n", - "[ 7.90663748 42.15537482 8.39412919 42.51573518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.90851254 42.23132482 8.39659413 42.59168518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.85115387 42.25196149 8.33939613 42.61232185]\n", - "[ 7.90612896 42.31345982 8.39485104 42.67382018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.80868677 42.72805649 8.30068323 43.08841685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.77094956 42.82359315 8.26371044 43.18395351]\n", - "[ 7.73727852 42.85706982 8.23030815 43.21743018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.73734975 42.85219982 8.23034025 43.21256018]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.75400389 42.80172315 8.24658945 43.16208351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.36041134 34.94933649 28.80102866 35.30969685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.85047199 35.13918649 29.29212135 35.49954685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.8812543 35.10718815 29.32272904 35.46754851]\n", - "[28.29709637 35.22953482 28.73924029 35.58989518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.24108275 35.09735982 28.68250391 35.45772018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.17000111 35.02873815 28.61104889 35.38909851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.12343049 35.00317815 28.56433951 35.36353851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.06642594 34.96180149 28.50711072 35.32216185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.79234983 34.73934815 29.23183683 35.09970851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.29644261 35.16213649 29.73821739 35.52249685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.28488237 35.21823315 29.72696429 35.57859351]\n", - "[27.8877903 34.94910649 28.32840636 35.30946685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.87028494 34.81200649 28.31016172 35.17236685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.26564964 34.58069149 27.70429036 34.94105185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.23259554 34.53072649 27.67097112 34.89108685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.29094588 34.48526315 27.72908078 34.84562351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.54634207 34.36976482 27.98386793 34.73012518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.54768857 34.27896982 27.98473809 34.63933018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.97818944 34.30409482 29.41537056 34.66445518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.03560008 34.44076315 29.47349992 34.80112351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.16389564 34.48409649 29.60202436 34.84445685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[29.87364305 34.41372315 30.31140029 34.77408351]\n", - "[30.19728691 34.21263149 30.63398975 34.57299185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.33533741 34.31821982 30.77259259 34.67858018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.78814013 34.51578149 31.22643653 34.87614185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[31.1165671 34.26870482 31.5535629 34.62906518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.56861747 34.10351315 31.00475253 34.46387351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.56700341 34.11535315 31.00319993 34.47571351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.74034376 34.15946649 31.17676958 34.51982685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[31.38545519 34.23691649 31.82228481 34.59727685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.5693361 34.69774815 31.00860056 35.05810851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.54552286 34.79602982 30.9853138 35.15639018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.59233227 35.24682315 31.03457107 35.60718351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[30.74959859 35.02660149 31.19063475 35.38696185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[12.402451 39.26510482 12.869099 39.62546518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[12.11575121 39.15880315 12.58168879 39.51916351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[11.64538373 39.14303815 12.11121627 39.50339851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[11.45102391 39.19047315 11.91717275 39.55083351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.70893148 35.33373649 29.15164852 35.69409685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.899221 35.42076649 29.342419 35.78112685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.870195 35.44999982 29.313555 35.81036018]\n", - "[28.50900173 35.79205649 28.95427493 36.15241685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.31949899 35.72910649 28.76441767 36.08946685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.53630236 35.64652815 28.98075764 36.00688851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.31109255 35.81834149 28.75651411 36.17870185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.32728038 35.64902149 28.77174962 36.00938185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.46838993 35.62417149 28.91272007 35.98453185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.62543512 35.65268649 29.06992488 36.01304685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.3731284 35.67351982 28.81773494 36.03388018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.45065194 35.76063982 28.89574806 36.12100018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.39884031 35.71440482 28.84367635 36.07476518]\n", - "[28.49113249 35.77227815 28.93629417 36.13263851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.43650022 35.76953482 28.88164644 36.12989518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.4170385 35.72869315 28.86195484 36.08905351]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.42521209 35.72504149 28.87010791 36.08540185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.47571417 35.72667649 28.92061917 36.08703685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.50428805 35.72529649 28.94918529 36.08565685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[28.36290643 35.74068649 28.80789023 36.10104685]\n", - "[27.81677796 35.49935815 28.26041204 35.85971851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.68890211 35.30991815 28.13148789 35.67027851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.13859565 34.61916982 27.57744101 34.97953018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[26.23755424 34.43855649 26.67544242 34.79891685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[26.28967323 34.50265149 26.72790011 34.86301185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[26.09065324 34.32616649 26.5279501 34.68652685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[27.08870948 34.21547815 27.52542718 34.57583851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 64.87048338 -49.64559018 65.42496328 -49.28522982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 65.32464565 -47.27362685 65.85396101 -46.91326649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[134.41550709 -46.97720018 134.94189951 -46.61683982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.62730827 -9.44793018 -139.26218173 -9.08756982]\n", - "[-139.63903698 -9.46141351 -139.27389642 -9.10105315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.66370002 -9.47376685 -139.29854658 -9.11340649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.6863778 -9.47910518 -139.3212188 -9.11874482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.70613854 -9.47399851 -139.34098486 -9.11363815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.72257113 -9.47589518 -139.35741547 -9.11553482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.77035844 -9.52162518 -139.40515496 -9.16126482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.79849362 -9.56326018 -139.43324638 -9.20289982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.94053153 -9.59399018 -139.57525187 -9.23362982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.90947038 -9.86217351 -139.54390302 -9.50181315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.88274147 -9.94956851 -139.51707853 -9.58920815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.75425804 -10.00684185 -139.38853196 -9.64648149]\n", - "[-139.55644691 -9.84972185 -139.19089309 -9.48936149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.15946055 -9.50655518 -138.79427285 -9.14619482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-138.58704559 -9.52572685 -138.22183781 -9.16536649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-137.29944664 -9.65716018 -136.93409996 -9.29679982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-137.04592089 -9.63374851 -136.68059911 -9.27338815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-135.37641339 -9.15821851 -135.01158321 -8.79785815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-135.29924131 -9.09080185 -134.93447869 -8.73044149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-135.6337429 -8.60961518 -135.2694471 -8.24925482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-133.85380381 -8.55128518 -133.48956279 -8.19092482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-132.53850579 -8.60514518 -132.17421421 -8.24478482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-130.72437726 -8.84533851 -130.35985614 -8.48497815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-130.45618479 -8.65595185 -130.09184521 -8.29559149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-128.75783043 -8.97464851 -128.39318297 -8.61428815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-127.74005844 -8.91963518 -127.37546496 -8.55927482]\n", - "[-124.54846022 -8.37055018 -124.18438638 -8.01018982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.60753491 -8.35147351 -140.24347849 -7.99111315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.62692743 -8.35698851 -140.26286597 -7.99662815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.29859805 -8.47791351 -139.93442535 -8.11755315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.45709766 -8.54155185 -141.09286574 -8.18119149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.7519301 -8.79266351 -141.3874599 -8.43230315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.35668446 -9.02332185 -140.99198894 -8.66296149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.33690204 -8.15645351 -140.97302136 -7.79609315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.98743322 -7.56328185 -140.62406018 -7.20292149]\n", - "[-141.47175521 -8.24175685 -141.10779819 -7.88139649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.23313816 -8.61377685 -141.86883844 -8.25341649]\n", - "[-142.58432772 -8.10928351 -142.22048888 -7.74892315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.56475762 -8.07869851 -142.20094578 -7.71833815]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.98040831 -7.64432851 -141.61696829 -7.28396815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.13220856 -7.34590518 -141.76901144 -6.98554482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.77092803 -7.54672518 -141.40756857 -7.18636482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.30300928 -7.26368185 -140.93987732 -6.90332149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.1217542 -7.43058185 -140.7584892 -7.07022149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.05801047 -8.37460018 -139.69393293 -8.01423982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-138.38623727 -8.83855018 -138.02172273 -8.47818982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.77407882 -9.43937685 -140.40896118 -9.07901649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.73494647 -9.46042851 -140.36980693 -9.10006815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.75312282 -9.47914351 -140.38796378 -9.11878315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.73384593 -9.48509518 -140.36868067 -9.12473482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.8132906 -9.50359185 -140.448106 -9.14323149]\n", - "[-140.86207456 -9.49510351 -140.49689884 -9.13474315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.86741089 -9.53905018 -140.50218911 -9.17868982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.83403117 -9.56184351 -140.46878543 -9.20148315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.63386232 -9.48450851 -140.26869768 -9.12414815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.61791566 -9.73633685 -140.25248434 -9.37597649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.74101636 -9.69713351 -140.37562704 -9.33677315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-140.81319931 -9.54879185 -140.44796729 -9.18843149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.05561208 -9.44237851 -140.69049132 -9.08201815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.11607963 -9.36030851 -140.75104377 -8.99994815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.13766415 -9.39814351 -140.77258925 -9.03778315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.36519534 -9.35856685 -141.00016126 -8.99820649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.9112925 -9.61170185 -139.5459941 -9.25134149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.64906283 -9.92160518 -139.28343057 -9.56124482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-139.73840583 -9.92416018 -139.37277077 -9.56379982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.29516469 -9.07412185 -140.93041871 -8.71376149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.44830915 -9.19602685 -141.08344085 -8.83566649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.55680475 -9.28915351 -141.19184185 -8.92879315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.7363852 -9.42912685 -141.3712782 -9.06876649]\n", - "[-141.87268224 -9.50348185 -141.50749776 -9.14312149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.90818349 -9.51542351 -141.54298651 -9.15506315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-143.73173525 -9.33895518 -143.36672135 -8.97859482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-143.63120544 -9.51284018 -143.26601116 -9.15247982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.51318682 -9.67307851 -142.14782318 -9.31271815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.66024277 -9.73710351 -142.29481063 -9.37674315]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-143.01683106 -9.53614018 -142.65161234 -9.17577982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-143.35323511 -9.76321851 -142.98777489 -9.40285815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-143.25822208 -9.84690185 -142.89267132 -9.48654149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.88873798 -9.75312685 -142.52328862 -9.39276649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.69760061 -9.82577018 -141.33207279 -9.46540982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.89427458 -9.80854685 -141.52876542 -9.44818649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.4892935 -9.71684185 -142.1238831 -9.35648149]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-143.90027387 -8.91029018 -143.53568953 -8.54992982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-143.73421827 -9.33510018 -143.36920833 -8.97473982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.73985537 -9.88673685 -142.37426123 -9.52637649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.27552608 -10.16476851 -141.90962392 -9.80440815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-141.9933759 -10.08710851 -141.6275607 -9.72674815]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-142.38101349 -10.12449018 -142.01515651 -9.76412982]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.38297769 42.70442649 7.87478565 43.06478685]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.10356342 42.58639315 7.59443324 42.94675351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.01824898 42.53908315 7.50874436 42.89944351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.83186448 42.40949482 7.32133885 42.76985518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.79971354 42.35021815 7.28872313 42.71057851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.78956578 42.57443815 7.28034089 42.93479851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.02258975 42.56248815 7.51327025 42.92284851]\n", - "[ 7.37650036 42.45251982 7.86631297 42.81288018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.53203689 42.37829482 8.02126645 42.73865518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 8.06903681 42.40508149 8.55847653 42.76544185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 8.3779476 42.67683149 8.86953573 43.03719185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-62.70701615 61.94018449 -61.93638251 62.30054485]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.56951197 43.23034482 8.06556969 43.59070518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.5059631 43.24223365 8.00211823 43.60259401]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.25629743 43.27974065 7.75276024 43.64010101]\n", - "[ 7.09747972 43.24293632 7.59364061 43.60329668]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.05087825 43.23943132 7.54701041 43.59979168]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.99400442 43.13562615 7.48928825 43.49598651]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.85515317 42.99214065 7.34927183 43.35250101]\n", - "[ 6.50281233 42.84126199 6.995715 43.20162235]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.37982708 42.78019532 6.87224025 43.14055568]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.26748735 42.73567849 6.75954465 43.09603885]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.51039771 42.70370999 6.00219996 43.06407035]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 5.03890469 42.58207732 5.52974031 42.94243768]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.92284966 42.54675082 5.41340567 42.90711118]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.93684343 42.41977615 5.42639857 42.78013651]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.94725135 42.51582582 5.43756299 42.87618618]\n", - "[ 4.68224915 42.47221515 5.17221685 42.83257551]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.5336337 42.41512565 5.0231523 42.77548601]\n", - "[ 4.45390963 42.35453799 4.94295304 42.71489835]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 3.57715955 41.93046549 4.06291779 42.29082585]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 3.4062797 41.67056232 3.8900593 42.03092268]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 3.00127135 41.09900315 3.48079032 41.45936351]\n", - "[ 2.95467992 41.06206465 3.43392775 41.42242501]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.94144606 41.05393499 3.42063428 41.41429535]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.32169876 40.83936349 2.79932257 41.19972385]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.24048002 40.80911432 2.71788465 41.16947468]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.0702289 40.66948532 2.5466261 41.02984568]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.21564222 40.55557182 2.69122278 40.91593218]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.25200791 40.51159299 2.72727442 40.87195335]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.26653486 40.47446482 2.7415368 40.83482518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.16500912 40.48183599 2.64006355 40.84219635]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.17713509 40.47234132 2.65212191 40.83270168]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.11208417 40.43932532 2.58683616 40.79968568]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.11974757 40.42682799 2.59441077 40.78718835]\n", - "[ 2.06305265 40.42713232 2.53771801 40.78749268]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.05049742 40.40216899 2.52498558 40.76252935]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.05521718 40.45652949 2.53009149 40.81688985]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 2.0385323 40.42263082 2.5131657 40.78299118]\n", - "[ 1.92847018 40.39339799 2.40289615 40.75375835]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.66291322 40.17638015 2.13580878 40.53674051]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.63598751 40.16117632 2.10877649 40.52153668]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.59764122 39.90284699 2.06863145 40.26320735]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.69019173 39.93721699 2.16141994 40.29757735]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.60352039 39.87502449 2.07431828 40.23538485]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.61497916 39.91427982 2.08604851 40.27464018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.63389531 39.88676849 2.10477435 40.24712885]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.73197769 39.94771199 2.20327864 40.30807235]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.72491284 39.92996765 2.19609082 40.29032801]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.69646264 39.91558699 2.16754103 40.27594735]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.65575406 39.91286282 2.1268136 40.27322318]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 1.59111643 39.88210315 2.06196323 40.24246351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 64.38141176 -48.93148685 64.92796824 -48.57112649]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.34303347 43.36871482 7.84022853 43.72907518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.22145792 43.32787099 7.71831642 43.68823135]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 71.63865427 -51.48405518 72.21505573 -51.12369482]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.7663813 19.18474115 -108.3844113 19.54510151]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.96967848 19.92501182 -108.58593392 20.28537218]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.91016691 20.22263865 -108.52568609 20.58299901]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.57599003 20.18318315 -108.19160757 20.54354351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.29835689 20.28755765 -107.91371371 20.64791801]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.15657575 20.45075915 -107.77152165 20.81111951]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.25595565 20.43897382 -107.87093135 20.79933418]\n", - "[-108.21563247 20.91096382 -107.82939793 21.27132418]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-107.83936361 21.54719649 -107.45144379 21.90755685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-106.5240903 20.79095315 -106.1381667 21.15131351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-107.14497996 21.07471132 -106.75831764 21.43507168]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.9798385 21.45786149 -108.5921591 21.81822185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.01207647 20.30875899 -109.62738013 20.66911935]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-109.88342203 20.49352432 -109.49825957 20.85388468]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.11116051 20.32162415 -109.72643189 20.68198451]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.32262972 20.31063282 -109.93792868 20.67099318]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.38150496 20.26964432 -109.99690664 20.63000468]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.65696639 20.27885449 -110.27234501 20.63921485]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-111.53747884 19.69215365 -111.15430116 20.05251401]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-107.9048448 17.58576315 -107.5264386 17.94612351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.61578362 19.21358899 -108.23374598 19.57394935]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-108.80529517 19.71615365 -108.42205943 20.07651401]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-109.08804115 19.62052165 -108.70503625 19.98088201]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-109.25483508 19.60316682 -108.87187192 19.96352718]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-109.74780483 19.48524249 -109.36512417 19.84560285]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-112.00028496 20.29447849 -111.61562444 20.65483885]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.57615029 22.38273732 -110.18592131 22.74309768]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-109.98108858 22.50134632 -109.59052282 22.86170668]\n", - "[-110.50310724 22.84044682 -110.11156616 23.20080718]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.47285455 22.97953065 -110.08090805 23.33989101]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-110.48983757 22.97209432 -110.09791283 23.33245468]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.49586384 43.21258315 7.99177616 43.57294351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.45794661 43.21231315 7.95385672 43.57267351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.43927191 43.23300649 7.93535143 43.59336685]\n", - "[ 7.40689408 43.23735815 7.90300925 43.59771851]\n", - "[ 7.38577573 43.22474649 7.88178761 43.58510685]\n", - "[ 7.38790468 43.21074982 7.88380199 43.57111018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.38245402 43.19746149 7.87824265 43.55782185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.34948058 43.14073815 7.84480608 43.50109851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 7.11641425 43.13370315 7.61168241 43.49406351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.92374132 43.13319482 7.41900534 43.49355518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 6.88563293 43.12666482 7.38084374 43.48702518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[36.99240512 42.20022315 37.48024488 42.56058351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[37.02990178 42.04559482 37.51654488 42.40595518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[38.22320374 41.38549482 38.70484292 41.74585518]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[39.53889307 41.38791315 40.02055027 41.74827351]\n", - "[40.60881871 42.12234815 41.09605463 42.48270851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[40.30364411 42.71911815 40.79556923 43.07947851]\n", - "[38.87983365 43.46878982 39.37785635 43.82915018]\n", - "[38.60951242 43.55572482 39.10825758 43.91608518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.94353546 34.51125315 26.38180788 34.87161351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[26.36179809 34.74373315 26.80130857 35.10409351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.10289451 34.44477149 25.54081549 34.80513185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[24.15006914 34.33471482 24.58741086 34.69507518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[24.54946423 34.04880482 24.98531577 34.40916518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[24.59043485 33.86871315 25.02535849 34.22907351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[24.84761783 33.62105315 25.28127883 33.98141351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.00149939 33.63556482 25.43523395 33.99592518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.08359117 33.85909815 25.51846549 34.21945851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.10450948 33.95186649 25.53986052 34.31222685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.14788401 34.02440315 25.58360933 34.38476351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[25.05263046 34.22787649 25.48941288 34.58823685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[24.6257858 34.58966315 25.0644742 34.95002351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[24.19546878 34.79258315 24.63524122 35.15294351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[24.0337387 34.73292482 24.4731913 35.09328518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[23.34578178 34.92883649 23.78628822 35.28919685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[22.73685015 35.58830982 23.18097985 35.94867018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[22.81585201 35.50029815 23.25949133 35.86065851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[22.75706744 35.64292982 23.20150256 36.00329018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[22.51315583 35.98470149 22.95952083 36.34506185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.22351277 39.09321482 18.68901389 39.45357518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[16.39794704 38.01272815 16.85645962 38.37308851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[15.60985094 36.39835482 16.05859572 36.75871518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[15.38766233 35.96719315 15.83392767 36.32755351]\n", - "[16.52024826 35.26405815 16.96258174 35.62441851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.70918735 35.12867482 18.15077931 35.48903518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.85522214 35.14157149 18.29688452 35.50193185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.01928584 35.06623649 18.4605375 35.42659685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.10357018 34.99468815 18.54443316 35.35504851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.68839993 35.84522482 19.13397341 36.20558518]\n", - "[18.62981293 36.07041482 19.07666707 36.43077518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.7320472 36.19270649 19.1796028 36.55306685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.77965285 36.17045315 19.22708049 36.53081351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.70488612 36.47956982 19.15410388 36.83993018]\n", - "[18.61311714 36.56529482 19.0628362 36.92565518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.81096699 36.75725649 19.26181635 37.11761685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.84888979 36.75236649 19.29971021 37.11272685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.81738007 36.46049815 19.26648659 36.82085851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.82165084 36.50478482 19.27101582 36.86514518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.78054458 36.43034315 19.22947542 36.79070351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.40389141 36.41710982 18.85274525 36.77747018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.47858769 36.51042815 18.92798565 36.87078851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.30942082 36.46595982 18.75855918 36.82632018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.2055417 36.55861815 18.65522164 36.91897851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.24687676 36.56371982 18.69658658 36.92408018]\n", - "[18.17959331 36.48910149 18.62886669 36.84946185]\n", - "[18.02900121 36.22026315 18.47671545 36.58062351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.8318056 35.73861149 18.27677774 36.09897185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.62631193 35.57214649 18.07035141 35.93250685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.36710118 35.76623649 18.81222882 36.12659685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.14118497 41.06055149 18.62042169 41.42091185]\n", - "[17.99100082 41.75001482 18.47538252 42.11037518]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.30372761 41.85680149 17.78892239 42.21716185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.62272148 41.74018149 18.10702852 42.10054185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.47942205 41.53917482 17.96221129 41.89953518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.78975458 41.46158815 18.27196208 41.82194851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.99599774 41.62753315 18.47945226 41.98789351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.82041371 41.65596649 18.30408295 42.01632685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.65243037 41.53696149 18.13520297 41.89732185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.63204536 41.38685149 18.11369464 41.74721185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.04564338 41.50506982 18.52817662 41.86543018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.90772732 41.80091482 18.39249602 42.16127518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.6062828 42.02023315 18.09273054 42.38059351]\n", - "[17.26157979 41.85011815 17.74672355 42.21047851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.49810048 41.78124649 17.98271952 42.14160685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.87433282 41.44824649 18.35644052 41.80860685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.4148477 41.48168149 17.89720564 41.84204185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.34261658 41.44010815 17.82466342 41.80046851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.32945955 41.27901315 17.81030711 41.63937351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.8293727 41.69809149 18.31336064 42.05845185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.82876474 41.75863815 18.31321192 42.11899851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.22555384 42.02991815 17.71207616 42.39027851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.31152393 41.97094982 17.79759273 42.33131018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.32640439 41.88513149 17.81181561 42.24549185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.66106313 41.52779315 18.14376687 41.88815351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.79223802 41.74592315 18.27658864 42.10628351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.80022267 41.89081149 18.28567733 42.25117185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.74645027 41.80582815 18.23125639 42.16618851]\n", - "[17.63481897 41.98482649 18.12099437 42.34518685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.46155677 41.96239482 17.94755989 42.32275518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.52418733 41.81272982 18.00904601 42.17309018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.52416714 41.75449649 18.00858286 42.11485685]\n", - "[17.63625837 41.82863982 18.12123829 42.18900018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.82717993 41.95027649 18.31309007 42.31063685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.73950037 41.93494815 18.22529297 42.29530851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.27218357 41.86004315 17.75740309 42.22040351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.32974061 41.57989149 17.81283605 41.94025185]\n", - "[17.94048047 41.47649149 18.42279953 41.83685185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 3.34667166 69.22503815 4.37113167 69.58539851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[12.74214331 69.24826982 13.76771003 69.60863018]\n", - "[13.47375272 69.32085815 14.50279394 69.68121851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-0.58520366 63.86065982 0.23804366 64.22102018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-3.88572618 66.41275815 -2.97861382 66.77311851]\n", - "[-4.14198774 66.23908482 -3.24117893 66.59944518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-4.45767008 66.24994482 -3.55646992 66.61030518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-9.56538522 74.13376315 -8.23252478 74.49412351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-9.5752301 74.12941315 -8.2427299 74.48977351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-10.25466949 74.05898315 -8.92797385 74.41934351]\n", - "[-9.51456109 73.51931649 -8.23065558 73.87967685]\n", - "[-9.23173849 73.47453649 -7.95125485 73.83489685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-0.54519388 64.41841315 0.29489055 64.77877351]\n", - "[-0.16427637 64.20238815 0.66919637 64.56274851]\n", - "[-0.64608557 64.16602315 0.18628557 64.52638351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[ 4.62429951 71.35450982 5.76205049 71.71487018]\n", - "[ 1.93164613 70.10467315 2.99987387 70.46503351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-0.10764527 69.68404315 0.93916527 70.04440351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-10.64563346 74.49673982 -9.28198321 74.85710018]\n", - "[-15.72555382 72.90975815 -14.48664952 73.27011851]\n", - "[-15.80378643 72.53606982 -14.59087691 72.89643018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.90212319 57.12311849 20.56922015 57.48347885]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.74528201 57.15322782 20.41292565 57.51358818]\n", - "[17.7606458 41.35048149 18.2420242 41.71084185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.61400682 41.23113815 18.09449984 41.59149851]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.60306692 41.20224815 18.08334642 41.56260851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[18.09518734 41.55816815 18.57811932 41.91852851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.86211759 41.80434482 18.34691241 42.16470518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.38872929 41.89431149 17.87421071 42.25467185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[17.35723727 40.96011649 17.83573939 41.32047685]\n", - "[-10.45509636 -6.25603018 -10.0927003 -5.89566982]\n", - "[-14.33939943 -7.60268185 -13.97599391 -7.24232149]\n", - "[-23.15637519 -0.16469185 -22.79601481 0.19566851]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-23.03158359 -0.23431851 -22.67122307 0.12604185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[-18.37238788 0.58396649 -18.01199546 0.94432685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.75042158 57.12476482 20.41754842 57.48512518]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.72795497 57.11440999 20.39489403 57.47477035]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.74523038 57.17345982 20.41324196 57.53382018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.50312766 57.32916449 20.17398734 57.68952485]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.56903042 57.31551432 20.23963924 57.67587468]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.2352683 57.04145715 19.90088804 57.40181751]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.23365384 57.05554282 19.89952782 57.41590318]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.32754473 57.09088199 19.99405761 57.45124235]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.23170277 57.05632599 19.89759089 57.41668635]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.52135063 56.99549399 20.18614237 57.35585435]\n", - "[19.61869189 56.97185532 20.28305877 57.33221568]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.93160368 57.48771165 20.60539366 57.84807201]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[19.80919973 57.64782232 20.48598027 58.00818268]\n", - "[32.66485451 43.70512649 33.16484883 44.06548685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[32.60907058 43.70923982 33.10909942 44.06960018]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[31.80195773 43.56325315 32.30076561 43.92361351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[31.6333931 43.61909315 32.1326669 43.97945351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[31.6253417 43.82061815 32.1263083 44.18097851]\n", - "[31.40769827 43.90336649 31.90936507 44.26372685]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[31.49653061 43.88826315 31.99806939 44.24862351]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n", - "[31.02959145 43.76731149 31.53010855 44.12767185]\n", - "An error occurred: Your search returned no results; try different search parameters. Continuing with next item.\n" - ] - } - ], - "source": [ - "import csv\n", - "import numpy as np\n", - "import icepyx as ipx # Make sure you have installed and are importing icepyx\n", - "from datetime import datetime, timedelta\n", - "\n", - "# Set ATL parameters\n", - "short_name = 'ATL03'\n", - "\n", - "num_eff=0\n", - "\n", - "time_dif=1 #days\n", - "\n", - "# Open the CSV file for writing\n", - "output_csv_path = path+'granule_data_24hs_20km.csv'\n", - "with open(output_csv_path, 'w', newline='') as csvfile:\n", - " # Define the CSV column names\n", - " fieldnames = ['latitude', 'longitude', 'date', 'kd_par', 'granule_id']\n", - " # Create a CSV writer object\n", - " writer = csv.DictWriter(csvfile, fieldnames=fieldnames)\n", - " # Write the header to the CSV file\n", - " writer.writeheader()\n", - " \n", - " # Loop through the BGC_ArgoDateInfo array\n", - " # Each element is a tuple in the form (latitude, longitude, kd_par, collected_date)\n", - " for lat, lon, kd_par, formatted_date in unique_BGC_ArgoDateInfoArr:\n", - " \n", - " # Convert latitude and longitude to float if they are not already\n", - " lat = float(lat)\n", - " lon = float(lon)\n", - "\n", - " # Calculate 20 km in degrees for latitude and longitude\n", - " # A degree of latitude is approximately 111 kilometers (km) and longitude varies based on latitude\n", - " # but for simplicity we'll use an average for 20 km which will slightly overestimate the extent\n", - " km_in_deg_lat = 20 / 111\n", - " km_in_deg_lon = 20 / (111 * np.cos(np.radians(lat))) # Adjust for the longitude\n", - "\n", - " minx = lon - km_in_deg_lon\n", - " miny = lat - km_in_deg_lat\n", - " maxx = lon + km_in_deg_lon\n", - " maxy = lat + km_in_deg_lat\n", - "\n", - " # Set spatial extent\n", - " spatial_extent = np.array([minx, miny, maxx, maxy])\n", - " print(spatial_extent)\n", - "\n", - " # Calculate the date range, 24 hours on either side of the specified date\n", - " central_date = datetime.strptime(formatted_date, '%Y-%m-%d')\n", - " start_date = (central_date - timedelta(days=time_dif)).strftime('%Y-%m-%d')\n", - " end_date = (central_date + timedelta(days=time_dif)).strftime('%Y-%m-%d')\n", - " date_range = [start_date, end_date]\n", - " \n", - "# print(short_name,date_range) \n", - "\n", - " # Create a query instance for the ATL03 dataset\n", - " reg = ipx.Query(short_name, spatial_extent, date_range,version='006')\n", - " \n", - " # Get granule IDs\n", - " try:\n", - " \n", - " #get granules IDS\n", - " gran_ids = reg.avail_granules(ids=True, cloud=False)\n", - " \n", - " if gran_ids: \n", - " num_eff+=1\n", - "# print(num_eff)\n", - " \n", - " # Write each granule ID to the CSV file along with the latitude, longitude, and date\n", - " for gran_id in gran_ids:\n", - " writer.writerow({\n", - " 'latitude': lat,\n", - " 'longitude': lon,\n", - " 'date': formatted_date, \n", - " 'kd_par':kd_par,\n", - " 'granule_id': gran_id\n", - " })\n", - " \n", - " \n", - " except AssertionError as e:\n", - " # Handle the assertion error or pass\n", - " print(f\"An error occurred: {e}. Continuing with next item.\")\n", - " # Optionally, pass if you want to do nothing and just continue\n", - " # pass\n", - "\n", - " except AttributeError as e:\n", - " # Handle the attribute error or pass\n", - " print(f\"An error occurred: {e}. Continuing with next item.\")\n", - " # Optionally, pass if you want to do nothing and just continue\n", - " # pass\n", - "\n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 192, - "id": "b03dc6ce", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "96" - ] - }, - "execution_count": 192, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "num_eff" - ] - }, - { - "cell_type": "code", - "execution_count": 181, - "id": "e82cd2de", - "metadata": {}, - "outputs": [], - "source": [ - "reg = ipx.Query(short_name, spatial_extent, date_range,version='006')" - ] - }, - { - "cell_type": "code", - "execution_count": 180, - "id": "f39c4afe", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['2020-10-14', '2020-10-18']" - ] - }, - "execution_count": 180, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "date_range" - ] - }, - { - "cell_type": "code", - "execution_count": 182, - "id": "686d8e9e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 182, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "reg" - ] - }, - { - "cell_type": "code", - "execution_count": 164, - "id": "14e49b8d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['2019-09-11', '2019-09-15']" - ] - }, - "execution_count": 164, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "array([-90.0905, 29.136 , -90.0865, 29.14 ])" - ] - }, - { - "cell_type": "code", - "execution_count": 183, - "id": "5be97375", - "metadata": {}, - "outputs": [], - "source": [ - "gran_ids = reg.avail_granules(ids=True, cloud=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 184, - "id": "ce7497e2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[['ATL03_20201016102936_03400902_006_01.h5']]" - ] - }, - "execution_count": 184, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gran_ids" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "id": "5209e40c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.046954055988112704" - ] - }, - "execution_count": 109, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "km_in_deg_lon" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6cc44e4d", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb b/icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb deleted file mode 100644 index f2344aa..0000000 --- a/icesat2_kdph-main/examples_from_others/atl06_ancillary.ipynb +++ /dev/null @@ -1,369 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "3d6b3418-01b5-4546-ba53-175e3ad50d55", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Imports\n", - "import matplotlib.pyplot as plt\n", - "from sliderule import sliderule, icesat2" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "2e7c4e03-2993-4ff3-9beb-0a815328ae02", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Configure ICESat-2 API\n", - "icesat2.init(\"slideruleearth.io\", verbose=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "23d6327c-1b96-4a80-8843-adc760fba0e0", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Area of Interest\n", - "region = sliderule.toregion('grandmesa.geojson')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c7dc7f2e-c8a3-4745-a8f5-7d28af1e0449", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Build ATL06 Request\n", - "parms = {\n", - " \"poly\": region[\"poly\"],\n", - " \"srt\": icesat2.SRT_LAND,\n", - " \"cnf\": icesat2.CNF_SURFACE_HIGH,\n", - " \"ats\": 10.0,\n", - " \"cnt\": 10,\n", - " \"len\": 40.0,\n", - " \"res\": 20.0,\n", - " \"atl03_geo_fields\": [\"dem_h\"]\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "fcf33b7a-026e-425e-8e6c-9887b9896138", - "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", - "
      h_meangtregionpflagscycledh_fit_dxy_atcx_atch_sigmarms_misfitw_surface_window_finalrgtspotn_fit_photonssegment_idgeometrydem_h
      time
      2018-10-16 10:49:21.1770042881932.724302106010.03366744675.37890615708287.00.1117450.6042523.642701272631784256POINT (-108.05598 39.17009)1934.513398
      2018-10-16 10:49:21.1800204801934.069145106010.08785444674.81640615708307.00.0953910.6629354.146861272652784257POINT (-108.05601 39.16991)1936.373667
      2018-10-16 10:49:21.1834009601935.859843106010.08111044674.15625015708327.00.0859680.5899854.299329272649784258POINT (-108.05605 39.16971)1938.076879
      2018-10-16 10:49:21.1863943681937.363736106010.08548944673.57812515708347.00.1035110.5528294.377315272629784259POINT (-108.05608 39.16953)1940.455453
      2018-10-16 10:49:21.1893836801939.724812106010.15673144672.92187515708367.00.2288361.1055995.491649272624784260POINT (-108.05611 39.16935)1942.912454
      \n", - "
      " - ], - "text/plain": [ - " h_mean gt region pflags cycle \\\n", - "time \n", - "2018-10-16 10:49:21.177004288 1932.724302 10 6 0 1 \n", - "2018-10-16 10:49:21.180020480 1934.069145 10 6 0 1 \n", - "2018-10-16 10:49:21.183400960 1935.859843 10 6 0 1 \n", - "2018-10-16 10:49:21.186394368 1937.363736 10 6 0 1 \n", - "2018-10-16 10:49:21.189383680 1939.724812 10 6 0 1 \n", - "\n", - " dh_fit_dx y_atc x_atc h_sigma \\\n", - "time \n", - "2018-10-16 10:49:21.177004288 0.033667 44675.378906 15708287.0 0.111745 \n", - "2018-10-16 10:49:21.180020480 0.087854 44674.816406 15708307.0 0.095391 \n", - "2018-10-16 10:49:21.183400960 0.081110 44674.156250 15708327.0 0.085968 \n", - "2018-10-16 10:49:21.186394368 0.085489 44673.578125 15708347.0 0.103511 \n", - "2018-10-16 10:49:21.189383680 0.156731 44672.921875 15708367.0 0.228836 \n", - "\n", - " rms_misfit w_surface_window_final rgt spot \\\n", - "time \n", - "2018-10-16 10:49:21.177004288 0.604252 3.642701 272 6 \n", - "2018-10-16 10:49:21.180020480 0.662935 4.146861 272 6 \n", - "2018-10-16 10:49:21.183400960 0.589985 4.299329 272 6 \n", - "2018-10-16 10:49:21.186394368 0.552829 4.377315 272 6 \n", - "2018-10-16 10:49:21.189383680 1.105599 5.491649 272 6 \n", - "\n", - " n_fit_photons segment_id \\\n", - "time \n", - "2018-10-16 10:49:21.177004288 31 784256 \n", - "2018-10-16 10:49:21.180020480 52 784257 \n", - "2018-10-16 10:49:21.183400960 49 784258 \n", - "2018-10-16 10:49:21.186394368 29 784259 \n", - "2018-10-16 10:49:21.189383680 24 784260 \n", - "\n", - " geometry dem_h \n", - "time \n", - "2018-10-16 10:49:21.177004288 POINT (-108.05598 39.17009) 1934.513398 \n", - "2018-10-16 10:49:21.180020480 POINT (-108.05601 39.16991) 1936.373667 \n", - "2018-10-16 10:49:21.183400960 POINT (-108.05605 39.16971) 1938.076879 \n", - "2018-10-16 10:49:21.186394368 POINT (-108.05608 39.16953) 1940.455453 \n", - "2018-10-16 10:49:21.189383680 POINT (-108.05611 39.16935) 1942.912454 " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Request ATL06 Data\n", - "atl06 = icesat2.atl06p(parms)\n", - "atl06.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6af9de57-1bc5-4163-abe0-f5bddd2207e2", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Display Statistics\n", - "print(\"Reference Ground Tracks: {}\".format(atl06[\"rgt\"].unique()))\n", - "print(\"Cycles: {}\".format(atl06[\"cycle\"].unique()))\n", - "print(\"Received {} elevations\".format(atl06.shape[0]))\n", - "print(\"Timing Profiles\")\n", - "for key in icesat2.profiles:\n", - " print(\"{:20} {:.6f} secs\".format(key + \":\", icesat2.profiles[key]))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "47b48f46-8c12-4796-bd0f-8f26b6d5fbe3", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Build Delta Column\n", - "atl06[\"h_delta\"] = atl06[\"h_mean\"] - atl06[\"dem_h\"]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "96aacc09-79a4-48bb-8287-8703f217aae6", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Plot Heights\n", - "f, ax = plt.subplots(1, 2)\n", - "ax[0].set_title(\"h_mean\")\n", - "atl06.plot(ax=ax[0], column='h_mean', cmap='inferno', s=0.1)\n", - "ax[1].set_title(\"h_delta\")\n", - "atl06.plot(ax=ax[1], column='h_delta', cmap='inferno', s=0.1)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1d0ecee5-9d52-4370-a258-411fbb0b7626", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb b/icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb deleted file mode 100644 index c38421a..0000000 --- a/icesat2_kdph-main/examples_from_others/atl06_subsetting.ipynb +++ /dev/null @@ -1,289 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "e243172d-a731-4f1a-ae97-7c7a1fd63757", - "metadata": { - "tags": [], - "user_expressions": [] - }, - "source": [ - "# ATL06 Subsetting and On-Demand Product Generation" - ] - }, - { - "cell_type": "markdown", - "id": "a824b4cc-e7a1-4d4e-be55-13f3a6c8e96e", - "metadata": { - "user_expressions": [] - }, - "source": [ - "### Purpose\n", - "Subset ATL06 granule and compare against on-demand generated ATL06 elevations using SlideRule" - ] - }, - { - "cell_type": "markdown", - "id": "e5e2efc2-078a-4e37-8083-75994ebf62e8", - "metadata": { - "tags": [], - "user_expressions": [] - }, - "source": [ - "#### Import Packages" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "338d80d9-e8f7-40ec-a294-683562437f69", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from sliderule import sliderule, icesat2, earthdata" - ] - }, - { - "cell_type": "markdown", - "id": "7dc950a2-4b0c-4c8f-b7cc-ea6092f8c96e", - "metadata": { - "tags": [], - "user_expressions": [] - }, - "source": [ - "#### Configure Logging" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "73e23172-83d2-4bd7-a2e9-84b9ac296037", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import logging\n", - "loglevel = logging.CRITICAL\n", - "logging.basicConfig(level=loglevel)" - ] - }, - { - "cell_type": "markdown", - "id": "613b066a-fbda-4583-a29c-dbe35c182252", - "metadata": { - "tags": [], - "user_expressions": [] - }, - "source": [ - "#### Initialize SlideRule Python Client" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0ca128df-4ff0-4b95-ae40-d0a040c9a9db", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "domain = \"slideruleearth.io\"\n", - "sliderule.init(domain, verbose=True, loglevel=loglevel)" - ] - }, - { - "cell_type": "markdown", - "id": "95e29e39-bef3-4312-8498-f037267da964", - "metadata": { - "tags": [], - "user_expressions": [] - }, - "source": [ - "#### Build Request Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3f58197d-5265-4c83-bc62-6049ace71538", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "granule = '_20181016104402_02720106_006_02.h5'" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "07da0425-2ebf-41aa-b84d-8f27a508cdbe", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "region = sliderule.toregion(\"../data/grandmesa.geojson\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3f01b208-4665-47c0-90e3-95834cc61338", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "parms = {\n", - " \"poly\": region[\"poly\"],\n", - " \"srt\": icesat2.SRT_LAND,\n", - " \"cnf\": icesat2.CNF_SURFACE_HIGH,\n", - " \"ats\": 10.0,\n", - " \"cnt\": 10,\n", - " \"len\": 40.0,\n", - " \"res\": 20.0\n", - "}" - ] - }, - { - "cell_type": "markdown", - "id": "90bb8070-d857-424a-a100-d1ea32631e82", - "metadata": { - "tags": [], - "user_expressions": [] - }, - "source": [ - "#### Make ATL06 Subsetting Request" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ecc3f250-0785-4630-a261-13d12ab59819", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "sdp = icesat2.atl06sp(parms, resources=['ATL06'+granule])\n", - "sdp" - ] - }, - { - "cell_type": "markdown", - "id": "a0f5c12e-c439-4549-ae7d-61af9954787b", - "metadata": { - "user_expressions": [] - }, - "source": [ - "#### Make ATL06 On-Demand Request" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d5128cac-5df0-4102-91e5-bb65cce7e0f2", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "sr = icesat2.atl06p(parms, resources=['ATL03_20181016104402_02720106_006_02.h5'])\n", - "sr" - ] - }, - { - "cell_type": "markdown", - "id": "0b5a2b18-f3fb-48bc-90d2-53350638d1dc", - "metadata": { - "tags": [], - "user_expressions": [] - }, - "source": [ - "#### Plot Results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "61c365cf-6bab-408c-8b2f-49a3d896692b", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Import Plotting Library\n", - "import matplotlib.pyplot as plt\n", - "import matplotlib" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "64bc423d-2348-4217-804f-63119ff71d16", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "# Setup Plot\n", - "fig,ax = plt.subplots(num=None, figsize=(10, 8))\n", - "fig.set_facecolor('white')\n", - "fig.canvas.header_visible = False\n", - "ax.set_title(\"SlideRule vs. Standard Data Product Elevations\")\n", - "ax.set_xlabel('UTC')\n", - "ax.set_ylabel('height (m)')\n", - "legend_elements = []\n", - "\n", - "# Plot SlideRule ATL06 Elevations\n", - "sc1 = ax.scatter(sr.index.values, sr[\"h_mean\"].values, c='red', s=2.5)\n", - "legend_elements.append(matplotlib.lines.Line2D([0], [0], color='red', lw=6, label='SR'))\n", - "\n", - "# Plot SDP ATL06 Elevations\n", - "sc2 = ax.scatter(sdp.index.values, sdp[\"h_li\"].values, c='blue', s=2.5)\n", - "legend_elements.append(matplotlib.lines.Line2D([0], [0], color='blue', lw=6, label='SDP'))\n", - "\n", - "# Display Legend\n", - "lgd = ax.legend(handles=legend_elements, loc=3, frameon=True)\n", - "lgd.get_frame().set_alpha(1.0)\n", - "lgd.get_frame().set_edgecolor('white')\n", - "\n", - "# Show Plot\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "04137254-5356-4f1d-9438-2126063f2258", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.12.0" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb b/icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb deleted file mode 100644 index faf5751..0000000 --- a/icesat2_kdph-main/examples_from_others/experiment_with_erddap.ipynb +++ /dev/null @@ -1,798 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 12, - "id": "141611e8", - "metadata": {}, - "outputs": [], - "source": [ - "from erddapy import ERDDAP\n", - "import pandas as pd\n", - "# Import the urllib library\n", - "import urllib.request\n", - "\n", - "\n", - "# dir(ep.multiple_server_search)\n", - "# help(erddapy)\n", - "# ep.servers" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "66e680b6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('/Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data/bcodmo_dataset_815732.csv',\n", - " )" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# EXAMPLE: if you want to download the data to your computer\n", - "\n", - "#define the url you want to download\n", - "download_url = \"https://erddap.bco-dmo.org/erddap/tabledap/bcodmo_dataset_783911.csv?Station,time,Temperature,latitude,longitude&Temperature%3E=0&Temperature%3C=2\"\n", - "# Define where you want to save the file on your computer\n", - "save_path = '/Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data/'\n", - "name_to_save = \"bcodmo_dataset_815732.csv\"\n", - "\n", - "# download the dataset \n", - "urllib.request.urlretrieve(download_url, save_path+name_to_save)\n", - "\n", - "# Import the downloaded .csv data into jupyter notebooks with the package Pandas\n", - "dataframe = pd.read_csv(save_path+name_to_save, dtype='unicode')\n", - "print (dataframe)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bfaa6aae", - "metadata": {}, - "outputs": [], - "source": [ - "# EXAMPLE: if you want to read the data directly into python \n", - "\n", - "e.dataset_id = \"bcodmo_dataset_817952\"\n", - "e.variables = [\n", - " \"longitude\",\n", - " \"latitude\",\n", - " \"time\",\n", - " \"Temperature\"\n", - "]\n", - "e.constraints = {\n", - " \"time>=\": \"2017-01-13T00:00:00Z\",\n", - " \"time<=\": \"2017-01-16T23:59:59Z\",}\n", - "\n", - "url = e.get_download_url()\n", - "df_bcodmo = e.to_pandas( \n", - " parse_dates=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "082b15f9", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Row Type Variable Name Attribute Name \\\n", - "0 attribute NC_GLOBAL access_formats \n", - "1 attribute NC_GLOBAL acquisition_description \n", - "2 attribute NC_GLOBAL awards_0_award_nid \n", - "3 attribute NC_GLOBAL awards_0_award_number \n", - "4 attribute NC_GLOBAL awards_0_data_url \n", - "5 attribute NC_GLOBAL awards_0_funder_name \n", - "6 attribute NC_GLOBAL awards_0_funding_acronym \n", - "7 attribute NC_GLOBAL awards_0_funding_source_nid \n", - "8 attribute NC_GLOBAL awards_0_program_manager \n", - "9 attribute NC_GLOBAL awards_0_program_manager_nid \n", - "10 attribute NC_GLOBAL cdm_data_type \n", - "11 attribute NC_GLOBAL comment \n", - "12 attribute NC_GLOBAL Conventions \n", - "13 attribute NC_GLOBAL creator_email \n", - "14 attribute NC_GLOBAL creator_name \n", - "15 attribute NC_GLOBAL creator_type \n", - "16 attribute NC_GLOBAL creator_url \n", - "17 attribute NC_GLOBAL data_source \n", - "18 attribute NC_GLOBAL date_created \n", - "19 attribute NC_GLOBAL date_modified \n", - "20 attribute NC_GLOBAL defaultDataQuery \n", - "21 attribute NC_GLOBAL doi \n", - "22 attribute NC_GLOBAL Easternmost_Easting \n", - "23 attribute NC_GLOBAL geospatial_lat_max \n", - "24 attribute NC_GLOBAL geospatial_lat_min \n", - "25 attribute NC_GLOBAL geospatial_lat_units \n", - "26 attribute NC_GLOBAL geospatial_lon_max \n", - "27 attribute NC_GLOBAL geospatial_lon_min \n", - "28 attribute NC_GLOBAL geospatial_lon_units \n", - "29 attribute NC_GLOBAL geospatial_vertical_max \n", - "30 attribute NC_GLOBAL geospatial_vertical_min \n", - "31 attribute NC_GLOBAL geospatial_vertical_positive \n", - "32 attribute NC_GLOBAL geospatial_vertical_units \n", - "33 attribute NC_GLOBAL infoUrl \n", - "34 attribute NC_GLOBAL institution \n", - "35 attribute NC_GLOBAL instruments_0_acronym \n", - "36 attribute NC_GLOBAL instruments_0_dataset_instrument_description \n", - "37 attribute NC_GLOBAL instruments_0_dataset_instrument_nid \n", - "38 attribute NC_GLOBAL instruments_0_description \n", - "39 attribute NC_GLOBAL instruments_0_instrument_external_identifier \n", - "40 attribute NC_GLOBAL instruments_0_instrument_name \n", - "41 attribute NC_GLOBAL instruments_0_instrument_nid \n", - "42 attribute NC_GLOBAL instruments_0_supplied_name \n", - "43 attribute NC_GLOBAL keywords \n", - "44 attribute NC_GLOBAL keywords_vocabulary \n", - "45 attribute NC_GLOBAL license \n", - "46 attribute NC_GLOBAL metadata_source \n", - "47 attribute NC_GLOBAL Northernmost_Northing \n", - "48 attribute NC_GLOBAL param_mapping \n", - "49 attribute NC_GLOBAL parameter_source \n", - "50 attribute NC_GLOBAL people_0_affiliation \n", - "51 attribute NC_GLOBAL people_0_affiliation_acronym \n", - "52 attribute NC_GLOBAL people_0_person_name \n", - "53 attribute NC_GLOBAL people_0_person_nid \n", - "54 attribute NC_GLOBAL people_0_role \n", - "55 attribute NC_GLOBAL people_0_role_type \n", - "56 attribute NC_GLOBAL people_1_affiliation \n", - "57 attribute NC_GLOBAL people_1_affiliation_acronym \n", - "58 attribute NC_GLOBAL people_1_person_name \n", - "59 attribute NC_GLOBAL people_1_person_nid \n", - "60 attribute NC_GLOBAL people_1_role \n", - "61 attribute NC_GLOBAL people_1_role_type \n", - "62 attribute NC_GLOBAL people_2_affiliation \n", - "63 attribute NC_GLOBAL people_2_affiliation_acronym \n", - "64 attribute NC_GLOBAL people_2_person_name \n", - "65 attribute NC_GLOBAL people_2_person_nid \n", - "66 attribute NC_GLOBAL people_2_role \n", - "67 attribute NC_GLOBAL people_2_role_type \n", - "68 attribute NC_GLOBAL project \n", - "69 attribute NC_GLOBAL projects_0_acronym \n", - "70 attribute NC_GLOBAL projects_0_description \n", - "71 attribute NC_GLOBAL projects_0_end_date \n", - "72 attribute NC_GLOBAL projects_0_geolocation \n", - "73 attribute NC_GLOBAL projects_0_name \n", - "74 attribute NC_GLOBAL projects_0_project_nid \n", - "75 attribute NC_GLOBAL projects_0_project_website \n", - "76 attribute NC_GLOBAL projects_0_start_date \n", - "77 attribute NC_GLOBAL publisher_name \n", - "78 attribute NC_GLOBAL publisher_type \n", - "79 attribute NC_GLOBAL sourceUrl \n", - "80 attribute NC_GLOBAL Southernmost_Northing \n", - "81 attribute NC_GLOBAL standard_name_vocabulary \n", - "82 attribute NC_GLOBAL subsetVariables \n", - "83 attribute NC_GLOBAL summary \n", - "84 attribute NC_GLOBAL time_coverage_end \n", - "85 attribute NC_GLOBAL time_coverage_start \n", - "86 attribute NC_GLOBAL title \n", - "87 attribute NC_GLOBAL version \n", - "88 attribute NC_GLOBAL Westernmost_Easting \n", - "89 attribute NC_GLOBAL xml_source \n", - "90 variable file_name NaN \n", - "91 attribute file_name bcodmo_name \n", - "92 attribute file_name description \n", - "93 attribute file_name long_name \n", - "94 attribute file_name units \n", - "95 variable latitude NaN \n", - "96 attribute latitude _CoordinateAxisType \n", - "97 attribute latitude _FillValue \n", - "98 attribute latitude actual_range \n", - "99 attribute latitude axis \n", - "100 attribute latitude bcodmo_name \n", - "101 attribute latitude colorBarMaximum \n", - "102 attribute latitude colorBarMinimum \n", - "103 attribute latitude description \n", - "104 attribute latitude ioos_category \n", - "105 attribute latitude long_name \n", - "106 attribute latitude nerc_identifier \n", - "107 attribute latitude standard_name \n", - "108 attribute latitude units \n", - "109 variable longitude NaN \n", - "110 attribute longitude _CoordinateAxisType \n", - "111 attribute longitude _FillValue \n", - "112 attribute longitude actual_range \n", - "113 attribute longitude axis \n", - "114 attribute longitude bcodmo_name \n", - "115 attribute longitude colorBarMaximum \n", - "116 attribute longitude colorBarMinimum \n", - "117 attribute longitude description \n", - "118 attribute longitude ioos_category \n", - "119 attribute longitude long_name \n", - "120 attribute longitude nerc_identifier \n", - "121 attribute longitude standard_name \n", - "122 attribute longitude units \n", - "123 variable time NaN \n", - "124 attribute time _CoordinateAxisType \n", - "125 attribute time actual_range \n", - "126 attribute time axis \n", - "127 attribute time bcodmo_name \n", - "128 attribute time description \n", - "129 attribute time ioos_category \n", - "130 attribute time long_name \n", - "131 attribute time nerc_identifier \n", - "132 attribute time source_name \n", - "133 attribute time standard_name \n", - "134 attribute time time_origin \n", - "135 attribute time time_precision \n", - "136 attribute time units \n", - "137 variable prDM NaN \n", - "138 attribute prDM _FillValue \n", - "139 attribute prDM actual_range \n", - "140 attribute prDM bcodmo_name \n", - "141 attribute prDM description \n", - "142 attribute prDM long_name \n", - "143 attribute prDM nerc_identifier \n", - "144 attribute prDM units \n", - "145 variable t090C NaN \n", - "146 attribute t090C _FillValue \n", - "147 attribute t090C actual_range \n", - "148 attribute t090C bcodmo_name \n", - "149 attribute t090C description \n", - "150 attribute t090C long_name \n", - "151 attribute t090C nerc_identifier \n", - "152 attribute t090C units \n", - "153 variable t190C NaN \n", - "154 attribute t190C _FillValue \n", - "155 attribute t190C actual_range \n", - "156 attribute t190C bcodmo_name \n", - "157 attribute t190C description \n", - "158 attribute t190C long_name \n", - "159 attribute t190C nerc_identifier \n", - "160 attribute t190C units \n", - "161 variable c0S_m NaN \n", - "162 attribute c0S_m _FillValue \n", - "163 attribute c0S_m actual_range \n", - "164 attribute c0S_m bcodmo_name \n", - "165 attribute c0S_m description \n", - "166 attribute c0S_m long_name \n", - "167 attribute c0S_m nerc_identifier \n", - "168 attribute c0S_m units \n", - "169 variable c1S_m NaN \n", - "170 attribute c1S_m _FillValue \n", - "171 attribute c1S_m actual_range \n", - "172 attribute c1S_m bcodmo_name \n", - "173 attribute c1S_m description \n", - "174 attribute c1S_m long_name \n", - "175 attribute c1S_m nerc_identifier \n", - "176 attribute c1S_m units \n", - "177 variable sbeox0V NaN \n", - "178 attribute sbeox0V _FillValue \n", - "179 attribute sbeox0V actual_range \n", - "180 attribute sbeox0V bcodmo_name \n", - "181 attribute sbeox0V description \n", - "182 attribute sbeox0V long_name \n", - "183 attribute sbeox0V units \n", - "184 variable flECO_AFL NaN \n", - "185 attribute flECO_AFL _FillValue \n", - "186 attribute flECO_AFL actual_range \n", - "187 attribute flECO_AFL bcodmo_name \n", - "188 attribute flECO_AFL description \n", - "189 attribute flECO_AFL long_name \n", - "190 attribute flECO_AFL nerc_identifier \n", - "191 attribute flECO_AFL units \n", - "192 variable turbWETntu0 NaN \n", - "193 attribute turbWETntu0 _FillValue \n", - "194 attribute turbWETntu0 actual_range \n", - "195 attribute turbWETntu0 bcodmo_name \n", - "196 attribute turbWETntu0 description \n", - "197 attribute turbWETntu0 long_name \n", - "198 attribute turbWETntu0 units \n", - "199 variable sal00_D NaN \n", - "200 attribute sal00_D _FillValue \n", - "201 attribute sal00_D actual_range \n", - "202 attribute sal00_D bcodmo_name \n", - "203 attribute sal00_D description \n", - "204 attribute sal00_D long_name \n", - "205 attribute sal00_D nerc_identifier \n", - "206 attribute sal00_D units \n", - "207 variable spar NaN \n", - "208 attribute spar _FillValue \n", - "209 attribute spar actual_range \n", - "210 attribute spar bcodmo_name \n", - "211 attribute spar description \n", - "212 attribute spar long_name \n", - "213 attribute spar units \n", - "214 variable par NaN \n", - "215 attribute par _FillValue \n", - "216 attribute par actual_range \n", - "217 attribute par bcodmo_name \n", - "218 attribute par colorBarMaximum \n", - "219 attribute par colorBarMinimum \n", - "220 attribute par description \n", - "221 attribute par long_name \n", - "222 attribute par units \n", - "223 variable cpar NaN \n", - "224 attribute cpar _FillValue \n", - "225 attribute cpar actual_range \n", - "226 attribute cpar bcodmo_name \n", - "227 attribute cpar description \n", - "228 attribute cpar long_name \n", - "229 attribute cpar units \n", - "230 variable depth NaN \n", - "231 attribute depth _CoordinateAxisType \n", - "232 attribute depth _CoordinateZisPositive \n", - "233 attribute depth _FillValue \n", - "234 attribute depth actual_range \n", - "235 attribute depth axis \n", - "236 attribute depth bcodmo_name \n", - "237 attribute depth description \n", - "238 attribute depth ioos_category \n", - "239 attribute depth long_name \n", - "240 attribute depth nerc_identifier \n", - "241 attribute depth positive \n", - "242 attribute depth standard_name \n", - "243 attribute depth units \n", - "244 variable sal00 NaN \n", - "245 attribute sal00 _FillValue \n", - "246 attribute sal00 actual_range \n", - "247 attribute sal00 bcodmo_name \n", - "248 attribute sal00 description \n", - "249 attribute sal00 long_name \n", - "250 attribute sal00 nerc_identifier \n", - "251 attribute sal00 units \n", - "252 variable sal11 NaN \n", - "253 attribute sal11 _FillValue \n", - "254 attribute sal11 actual_range \n", - "255 attribute sal11 bcodmo_name \n", - "256 attribute sal11 description \n", - "257 attribute sal11 long_name \n", - "258 attribute sal11 nerc_identifier \n", - "259 attribute sal11 units \n", - "260 variable sbeox0ML_L NaN \n", - "261 attribute sbeox0ML_L _FillValue \n", - "262 attribute sbeox0ML_L actual_range \n", - "263 attribute sbeox0ML_L bcodmo_name \n", - "264 attribute sbeox0ML_L description \n", - "265 attribute sbeox0ML_L long_name \n", - "266 attribute sbeox0ML_L units \n", - "267 variable svCM NaN \n", - "268 attribute svCM _FillValue \n", - "269 attribute svCM actual_range \n", - "270 attribute svCM bcodmo_name \n", - "271 attribute svCM description \n", - "272 attribute svCM long_name \n", - "273 attribute svCM units \n", - "274 variable sigma_e00 NaN \n", - "275 attribute sigma_e00 _FillValue \n", - "276 attribute sigma_e00 actual_range \n", - "277 attribute sigma_e00 bcodmo_name \n", - "278 attribute sigma_e00 description \n", - "279 attribute sigma_e00 long_name \n", - "280 attribute sigma_e00 nerc_identifier \n", - "281 attribute sigma_e00 units \n", - "282 variable sigma_e11 NaN \n", - "283 attribute sigma_e11 _FillValue \n", - "284 attribute sigma_e11 actual_range \n", - "285 attribute sigma_e11 bcodmo_name \n", - "286 attribute sigma_e11 description \n", - "287 attribute sigma_e11 long_name \n", - "288 attribute sigma_e11 nerc_identifier \n", - "289 attribute sigma_e11 units \n", - "290 variable flag NaN \n", - "291 attribute flag _FillValue \n", - "292 attribute flag actual_range \n", - "293 attribute flag bcodmo_name \n", - "294 attribute flag colorBarMaximum \n", - "295 attribute flag colorBarMinimum \n", - "296 attribute flag description \n", - "297 attribute flag long_name \n", - "298 attribute flag units \n", - "\n", - " Data Type Value \n", - "0 String .htmlTable,.csv,.json,.mat,.nc,.tsv,.esriCsv,.... \n", - "1 String Standard CTD cast. \n", - "2 String 748850 \n", - "3 String OCE-1657803 \n", - "4 String https://www.nsf.gov/awardsearch/showAward?AWD_... \n", - "5 String NSF Division of Ocean Sciences \n", - "6 String NSF OCE \n", - "7 String 355 \n", - "8 String David L. Garrison \n", - "9 String 50534 \n", - "10 String Other \n", - "11 String CTD casts from the first cruise of SPIROPA pro... \n", - "12 String COARDS, CF-1.6, ACDD-1.3 \n", - "13 String info@bco-dmo.org \n", - "14 String BCO-DMO \n", - "15 String institution \n", - "16 String https://www.bco-dmo.org/ \n", - "17 String extract_data_as_tsv version 2.3 19 Dec 2019 \n", - "18 String 2020-03-27T19:41:31Z \n", - "19 String 2020-04-08T15:03:33Z \n", - "20 String &time<now \n", - "21 String 10.26008/1912/bco-dmo.807119.1 \n", - "22 double -70.814 \n", - "23 double 40.2705 \n", - "24 double 39.6215 \n", - "25 String degrees_north \n", - "26 double -70.814 \n", - "27 double -70.82983 \n", - "28 String degrees_east \n", - "29 double 305.414 \n", - "30 double 1.985 \n", - "31 String down \n", - "32 String m \n", - "33 String https://www.bco-dmo.org/dataset/807119 \n", - "34 String BCO-DMO \n", - "35 String CTD SBE 9 \n", - "36 String Sea-Bird SBE 9 \n", - "37 String 807126 \n", - "38 String The Sea-Bird SBE 9 is a type of CTD instrument... \n", - "39 String https://vocab.nerc.ac.uk/collection/L05/curren... \n", - "40 String CTD Sea-Bird 9 \n", - "41 String 488 \n", - "42 String Sea-Bird SBE 9 \n", - "43 String active, afl, available, bco, bco-dmo, biologic... \n", - "44 String GCMD Science Keywords \n", - "45 String https://www.bco-dmo.org/dataset/807119/license \n", - "46 String https://www.bco-dmo.org/api/dataset/807119 \n", - "47 double 40.2705 \n", - "48 String {'807119': {'lat': 'flag - latitude', 'lon': '... \n", - "49 String https://www.bco-dmo.org/mapserver/dataset/8071... \n", - "50 String Woods Hole Oceanographic Institution \n", - "51 String WHOI \n", - "52 String Dennis J. McGillicuddy \n", - "53 String 50429 \n", - "54 String Principal Investigator \n", - "55 String originator \n", - "56 String Woods Hole Oceanographic Institution \n", - "57 String WHOI \n", - "58 String Weifeng Gordon Zhang \n", - "59 String 748839 \n", - "60 String Co-Principal Investigator \n", - "61 String originator \n", - "62 String Woods Hole Oceanographic Institution \n", - "63 String WHOI BCO-DMO \n", - "64 String Mathew Biddle \n", - "65 String 708682 \n", - "66 String BCO-DMO Data Manager \n", - "67 String related \n", - "68 String SPIROPA \n", - "69 String SPIROPA \n", - "70 String NSF award abstract:\\nThe continental shelf bre... \n", - "71 String 2020-09 \n", - "72 String Shelf break south of New England, OOI Pioneer ... \n", - "73 String Collaborative Research: Shelfbreak Frontal Dy... \n", - "74 String 748894 \n", - "75 String http://science.whoi.edu/users/olga/SPIROPA/SPI... \n", - "76 String 2017-10 \n", - "77 String Biological and Chemical Oceanographic Data Man... \n", - "78 String institution \n", - "79 String (local files) \n", - "80 double 39.6215 \n", - "81 String CF Standard Name Table v55 \n", - "82 String flag \n", - "83 String CTD casts from the first cruise of SPIROPA pro... \n", - "84 String 2018-04-27T10:27:54Z \n", - "85 String 2018-04-27T00:19:24Z \n", - "86 String CTD casts from the first cruise of SPIROPA pro... \n", - "87 String 1 \n", - "88 double -70.82983 \n", - "89 String osprey2erddap.update_xml() v1.3 \n", - "90 String NaN \n", - "91 String flag \n", - "92 String name of the originators file \n", - "93 String File Name \n", - "94 String unitless \n", - "95 double NaN \n", - "96 String Lat \n", - "97 double NaN \n", - "98 double 39.6215, 40.2705 \n", - "99 String Y \n", - "100 String latitude \n", - "101 double 90.0 \n", - "102 double -90.0 \n", - "103 String latitude with positive values indicating North \n", - "104 String Location \n", - "105 String Latitude \n", - "106 String https://vocab.nerc.ac.uk/collection/P09/curren... \n", - "107 String latitude \n", - "108 String degrees_north \n", - "109 double NaN \n", - "110 String Lon \n", - "111 double NaN \n", - "112 double -70.82983, -70.814 \n", - "113 String X \n", - "114 String longitude \n", - "115 double 180.0 \n", - "116 double -180.0 \n", - "117 String longitude with negative values indicating West \n", - "118 String Location \n", - "119 String Longitude \n", - "120 String https://vocab.nerc.ac.uk/collection/P09/curren... \n", - "121 String longitude \n", - "122 String degrees_east \n", - "123 double NaN \n", - "124 String Time \n", - "125 double 1.524788364E9, 1.524824874E9 \n", - "126 String T \n", - "127 String ISO_DateTime_UTC \n", - "128 String Date and time in UTC following ISO8601 format \n", - "129 String Time \n", - "130 String ISO Date Time UTC \n", - "131 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "132 String ISO_DateTime_UTC \n", - "133 String time \n", - "134 String 01-JAN-1970 00:00:00 \n", - "135 String 1970-01-01T00:00:00Z \n", - "136 String seconds since 1970-01-01T00:00:00Z \n", - "137 float NaN \n", - "138 float NaN \n", - "139 float 2.0, 308.0 \n", - "140 String pressure \n", - "141 String Pressure \n", - "142 String PR DM \n", - "143 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "144 String decibar (db) \n", - "145 float NaN \n", - "146 float NaN \n", - "147 float 0.0697, 17.5374 \n", - "148 String temperature \n", - "149 String Temperature ITS-90 \n", - "150 String T090 C \n", - "151 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "152 String degrees Celsius (C) \n", - "153 float NaN \n", - "154 float NaN \n", - "155 float 0.0689, 17.5396 \n", - "156 String temperature \n", - "157 String Temperature 2 ITS-90 \n", - "158 String T190 C \n", - "159 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "160 String degrees Celsius (C) \n", - "161 float NaN \n", - "162 float NaN \n", - "163 float 3.360826, 4.666987 \n", - "164 String conductivity \n", - "165 String Conductivity \n", - "166 String C0 S M \n", - "167 String https://vocab.nerc.ac.uk/collection/P02/curren... \n", - "168 String Siemens per meter (S/m) \n", - "169 float NaN \n", - "170 float NaN \n", - "171 float 3.36096, 4.666813 \n", - "172 String conductivity \n", - "173 String Conductivity 2 \n", - "174 String C1 S M \n", - "175 String https://vocab.nerc.ac.uk/collection/P02/curren... \n", - "176 String Siemens per meter (S/m) \n", - "177 float NaN \n", - "178 float NaN \n", - "179 float 9.0E-28, 2.8368 \n", - "180 String O2_v \n", - "181 String Oxygen raw SBE 43 \n", - "182 String Sbeox0 V \n", - "183 String volts (V) \n", - "184 float NaN \n", - "185 float NaN \n", - "186 float -0.3564, 2.4199 \n", - "187 String chl_a_fluor \n", - "188 String Fluorescence WET Labs ECO-AFL/FL \n", - "189 String Fl ECO AFL \n", - "190 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "191 String milligrams per meter cubed (mg/m3) \n", - "192 float NaN \n", - "193 float NaN \n", - "194 float 9.0E-28, 0.9062 \n", - "195 String turbidity \n", - "196 String Turbidity WET Labs ECO \n", - "197 String Turb WETntu0 \n", - "198 String NTU \n", - "199 float NaN \n", - "200 float NaN \n", - "201 float 33.2242, 36.1086 \n", - "202 String sal \n", - "203 String Practical salinity from the very first data co... \n", - "204 String Sal00 D \n", - "205 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "206 String unitless \n", - "207 float NaN \n", - "208 float NaN \n", - "209 float 0.72592, 108.9 \n", - "210 String SPAR \n", - "211 String SPAR Biospherical/Licor \n", - "212 String Spar \n", - "213 String unknown \n", - "214 float NaN \n", - "215 float NaN \n", - "216 float -0.00391, 21.931 \n", - "217 String PAR \n", - "218 double 70.0 \n", - "219 double 0.0 \n", - "220 String PAR/Irradiance Biospherical/Licor \n", - "221 String Downwelling Photosynthetic Photon Radiance In ... \n", - "222 String unknown \n", - "223 float NaN \n", - "224 float NaN \n", - "225 float -0.01038, 67696.0 \n", - "226 String unknown \n", - "227 String CPAR/Corrected Irradiance \n", - "228 String Cpar \n", - "229 String percent (%) \n", - "230 double NaN \n", - "231 String Height \n", - "232 String down \n", - "233 double NaN \n", - "234 double 1.985, 305.414 \n", - "235 String Z \n", - "236 String depth \n", - "237 String Depth in salt water at specified latitudes \n", - "238 String Location \n", - "239 String Dep SM \n", - "240 String https://vocab.nerc.ac.uk/collection/P09/curren... \n", - "241 String down \n", - "242 String depth \n", - "243 String m \n", - "244 float NaN \n", - "245 float NaN \n", - "246 float 33.2235, 36.1092 \n", - "247 String sal \n", - "248 String Final practical salinity 1 \n", - "249 String Sal00 \n", - "250 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "251 String unitless \n", - "252 float NaN \n", - "253 float NaN \n", - "254 float 33.2236, 36.1056 \n", - "255 String sal \n", - "256 String Final practical salinity 2 \n", - "257 String Sal11 \n", - "258 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "259 String unitless \n", - "260 float NaN \n", - "261 float NaN \n", - "262 float 9.0E-28, 6.8735 \n", - "263 String dissolved Oxygen \n", - "264 String Oxygen SBE 43 \n", - "265 String Sbeox0 ML L \n", - "266 String milliliters per liter (ml/l) \n", - "267 float NaN \n", - "268 float NaN \n", - "269 float 1476.57, 1516.13 \n", - "270 String sound_vel \n", - "271 String Sound Velocity Chen-Millero \n", - "272 String SV CM \n", - "273 String meter per second (m/s) \n", - "274 float NaN \n", - "275 float NaN \n", - "276 float 25.8951, 27.1635 \n", - "277 String sigma_0 \n", - "278 String Density sigma-theta \n", - "279 String Sigma E00 \n", - "280 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "281 String kilogram per meter cubed (kg/m3) \n", - "282 float NaN \n", - "283 float NaN \n", - "284 float 25.8951, 27.164 \n", - "285 String sigma_0 \n", - "286 String Density 2 sigma-theta \n", - "287 String Sigma E11 \n", - "288 String https://vocab.nerc.ac.uk/collection/P01/curren... \n", - "289 String kilogram per meter cubed (kg/m3) \n", - "290 float NaN \n", - "291 float NaN \n", - "292 float 0.0, 0.0 \n", - "293 String flag \n", - "294 double 150.0 \n", - "295 double 0.0 \n", - "296 String flag \n", - "297 String Flag \n", - "298 String unitless \n", - "['NC_GLOBAL' 'file_name' 'latitude' 'longitude' 'time' 'prDM' 't090C'\n", - " 't190C' 'c0S_m' 'c1S_m' 'sbeox0V' 'flECO_AFL' 'turbWETntu0' 'sal00_D'\n", - " 'spar' 'par' 'cpar' 'depth' 'sal00' 'sal11' 'sbeox0ML_L' 'svCM'\n", - " 'sigma_e00' 'sigma_e11' 'flag']\n" - ] - } - ], - "source": [ - "# EXAMPLE: if you want to just see all the variables for a site \n", - "e = ERDDAP(\n", - " server=\"https://erddap.bco-dmo.org/erddap\", \n", - " protocol=\"tabledap\", \n", - " response=\"csv\")\n", - "\n", - "info_url = e.get_info_url(dataset_id=\"bcodmo_dataset_807119\") \n", - "pd.read_csv(info_url)\n", - "\n", - "pd.set_option('display.max_rows', None) #make sure that jupyter notebook shows all rows \n", - "dataframe = pd.read_csv(info_url)\n", - "print(dataframe)\n", - "# get the unique variable names with pandas\n", - "print(dataframe[\"Variable Name\"].unique()) " - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f03444c6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "['bcodmo_dataset_4046' 'bcodmo_dataset_781633' 'bcodmo_dataset_778065' ...\n", - " 'bcodmo_dataset_728084' 'bcodmo_dataset_503145' 'bcodmo_dataset_812233']\n" - ] - } - ], - "source": [ - "url = e.get_search_url(search_for=\"PAR \", response=\"csv\")\n", - "\n", - "df = pd.read_csv(url)[\"Dataset ID\"].unique()\n", - "print(df)\n", - "# pd.read_csv(url)[\"Dataset ID\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "e7397c3b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://erddap.bco-dmo.org/erddap/tabledap/bcodmo_dataset_817952.csv?longitude,latitude,time,POC&time>=1484265600.0&time<=1484611199.0\n" - ] - } - ], - "source": [ - "e = ERDDAP( \n", - "server= \"https://erddap.bco-dmo.org/erddap/\", \n", - "protocol=\"tabledap\", \n", - "response=\"csv\", )\n", - "\n", - "e.dataset_id = \"bcodmo_dataset_817952\" \n", - "e.variables = [ \n", - "\"longitude\", \n", - "\"latitude\", \n", - "\"time\", \n", - "\"POC\" ] \n", - "e.constraints = { \n", - "\"time>=\": \"2017-01-13T00:00:00Z\", \n", - "\"time<=\": \"2017-01-16T23:59:59Z\",}\n", - "\n", - "#Print the URL - check \n", - "url = e.get_download_url() \n", - "print(url)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py b/icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py deleted file mode 100644 index 5473212..0000000 --- a/icesat2_kdph-main/kd_utils/Kd_analysis - Copy.py +++ /dev/null @@ -1,47 +0,0 @@ -# utils/Kd_analysis.py - -import numpy as np -import pandas as pd -from scipy.optimize import curve_fit - -def log_model(z, kd, e0): - return np.log(e0) - kd * z - -def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): - if df.empty or 'lat_bins' not in df.columns: - return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan]}) - lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan - photon_height_min = df['photon_height'].min() - photon_height_max = df['photon_height'].max() - if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: - return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) - height_bins_range = abs(photon_height_max - photon_height_min) - if height_bins_range == 0: - return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) - height_bins_number = round(height_bins_range / vertical_res) - if height_bins_number < 5: - return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) - bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) - counts, _ = np.histogram(df['photon_height'], bins=bin_edges) - bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 - hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) - # x value for model - hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] - # y value for model - hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) - - hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan - - # Skip the regression if there are fewer than 5 datapoints - if hist_df['log_photon_counts'].notna().sum() > 3: - try: - popt, _ = curve_fit(log_model, hist_df['zdepth'].dropna(), hist_df['log_photon_counts'].dropna(), p0=[1, np.exp(1)]) - kd, e0 = popt - if kd < 0: - kd = np.nan - except Exception as e: - print(f"Error in curve fitting: {e}") - kd, e0 = np.nan, np.nan - else: - kd, e0 = np.nan, np.nan - return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [kd], 'e0': [e0]}) diff --git a/icesat2_kdph-main/kd_utils/Kd_analysis.py b/icesat2_kdph-main/kd_utils/Kd_analysis.py deleted file mode 100644 index acf65bb..0000000 --- a/icesat2_kdph-main/kd_utils/Kd_analysis.py +++ /dev/null @@ -1,98 +0,0 @@ -import numpy as np -import pandas as pd -import logging -# from scipy.optimize import curve_fit -from sklearn.linear_model import LinearRegression - - -# another solution is to calculate kd without hist -def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): - # Early exit if DataFrame is empty or missing required column - if df.empty or 'lat_bins' not in df.columns: - return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) - - # Retrieve latitude and longitude - lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan - latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan - longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan - - # Use value_counts to get photon counts in each height bin - height_counts = df['height_bins'].value_counts().sort_index() - bin_centers = height_counts.index.astype(float) - - # Create a DataFrame for the height bins and counts - hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': height_counts.values}) - - # Reverse zdepth for model alignment - hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] - - # Log-transform photon counts, replacing zeros with NaN for regression - hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) - hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan - - # Filter for rows without NaNs for regression - valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) - - # Perform regression if there are sufficient valid data points - if valid_data['log_photon_counts'].notna().sum() > 3: - zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) - log_counts_valid = valid_data['log_photon_counts'].values - - # Perform linear regression - model = LinearRegression() - model.fit(zdepth_valid, log_counts_valid) - - # Calculate kd and e0 - kd = -model.coef_[0] - e0 = np.exp(model.intercept_) - - # Set kd to NaN if negative - if kd < 0: - kd = np.nan - else: - kd, e0 = np.nan, np.nan - - return pd.DataFrame({ - 'lat_bins': [lat_bin_value], - 'kd': [kd], - 'e0': [e0], - 'latitude': [latitude], - 'longitude': [longitude] - }) - - -# Original kd calculation function remains unchanged -def calculate_kd(filtered_seafloor_subsurface_photon_dataset): - logging.info("Calculating Kd from filtered subsurface photon dataset") - SubsurfacePhotonDFAddedKd = filtered_seafloor_subsurface_photon_dataset\ - .groupby('lat_bins', observed=False)\ - .apply(CalculateKdFromFilteredSubsurfacePhoton, include_groups=True) - - - # Remove the index without resetting it if 'lat_bins' already exists - SubsurfacePhotonDFAddedKd = SubsurfacePhotonDFAddedKd.droplevel(0) - return SubsurfacePhotonDFAddedKd - - -# Updated function to apply kd calculation beam-by-beam -def process_kd_calculation(Final_filtered_subsurface_photon_dataset): - # Initialize list to store results for each beam - kd_beam_datasets = [] - - # Group by 'beam_id' to process each beam independently - for beam_id, beam_data in Final_filtered_subsurface_photon_dataset.groupby('beam_id'): - logging.info(f"Calculating Kd for beam: {beam_id}") - - # Apply the calculate_kd function to the current beam's dataset - SubsurfacePhotonDFAddedKd = calculate_kd(beam_data) - - # Add a column to track the beam_id in the results - SubsurfacePhotonDFAddedKd['beam_id'] = beam_id - - # Append the result to the list - kd_beam_datasets.append(SubsurfacePhotonDFAddedKd) - - # Combine results from all beams into a single DataFrame - combined_kd_dataset = pd.concat(kd_beam_datasets, ignore_index=True) - - return combined_kd_dataset \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py b/icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py deleted file mode 100644 index 8146855..0000000 --- a/icesat2_kdph-main/kd_utils/Kd_analysis_premeeting18Nov.py +++ /dev/null @@ -1,264 +0,0 @@ -# utils/Kd_analysis.py -# updated to perform a linear fit in log-space, just like MATLAB's polyfitn(zdepth, y, 1) for a first-order polynomial. - -import numpy as np -import pandas as pd -import logging -# from scipy.optimize import curve_fit -from sklearn.linear_model import LinearRegression - -# def log_model(z, kd, e0): -# return np.log(e0) - kd * z - -## This is wrong because the input is already a bined data, -## it is not necessary to do a histogram again -# def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): -# if df.empty or 'lat_bins' not in df.columns: -# return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) - -# # Get the latitude bin value -# lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan -# latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan -# longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan - -# # Calculate photon height range -# photon_height_min = df['photon_height'].min() -# photon_height_max = df['photon_height'].max() - -# # Check for sufficient data range -# if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: -# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) - -# height_bins_range = abs(photon_height_max - photon_height_min) -# height_bins_number = round(height_bins_range / vertical_res) - -# # Ensure there are enough bins -# if height_bins_number < 5: -# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) - -# # Create histogram of photon heights -# bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) -# counts, _ = np.histogram(df['photon_height'], bins=bin_edges) -# bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 - -# # Store histogram data -# hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) - -# # x value for model -# # Reverse zdepth to align with the MATLAB approach -# hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] - -# # Log-transform photon counts, replacing zeros with NaN -# # y value for model -# hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) -# hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan - -# # Filter out rows with NaNs in either column for regression -# valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) - -# # Check for enough valid data points -# # Skip the regression if there are fewer than 5 datapoints -# if valid_data['log_photon_counts'].notna().sum() > 3: -# # Drop NaNs for regression -# zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) -# log_counts_valid = valid_data['log_photon_counts'].values - -# # Perform linear regression -# model = LinearRegression() -# model.fit(zdepth_valid, log_counts_valid) - -# # Extract kd as the negative of the slope and e0 from the intercept -# kd = -model.coef_[0] - -# print('zdepth_valid:',zdepth_valid) -# print('photon_counts:',hist_df['photon_counts']) -# print('kd:',kd) - -# e0 = np.exp(model.intercept_) - -# # Set kd to NaN if negative -# if kd < 0: -# kd = np.nan -# else: -# kd, e0 = np.nan, np.nan - -# return pd.DataFrame({ -# 'lat_bins': [lat_bin_value], -# 'kd': [kd], -# 'e0': [e0], -# 'latitude': [latitude], -# 'longitude': [longitude] -# }) - - -# # one solution is to adjust the vertical_res to 0.25 -# def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.25): -# if df.empty or 'lat_bins' not in df.columns: -# return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) - -# # Get the latitude bin value -# lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan -# latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan -# longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan - -# # Calculate photon height range -# photon_height_min = df['photon_height'].min() -# photon_height_max = df['photon_height'].max() - -# # Check for sufficient data range -# if np.isnan(photon_height_min) or np.isnan(photon_height_max) or photon_height_min == photon_height_max: -# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) - -# height_bins_range = abs(photon_height_max - photon_height_min) -# height_bins_number = round(height_bins_range / vertical_res) - -# # Ensure there are enough bins -# if height_bins_number < 5: -# return pd.DataFrame({'lat_bins': [lat_bin_value], 'kd': [np.nan], 'e0': [np.nan]}) - -# # Create histogram of photon heights -# bin_edges = np.linspace(photon_height_min, photon_height_max, num=height_bins_number) -# counts, _ = np.histogram(df['photon_height'], bins=bin_edges) -# bin_centers = (bin_edges[:-1] + bin_edges[1:]) / 2 - -# # Store histogram data -# hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': counts}) - -# # x value for model -# # Reverse zdepth to align with the MATLAB approach -# hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] - -# # Log-transform photon counts, replacing zeros with NaN -# # y value for model -# hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) -# hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan - -# # Filter out rows with NaNs in either column for regression -# valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) - -# # Check for enough valid data points -# # Skip the regression if there are fewer than 5 datapoints -# if valid_data['log_photon_counts'].notna().sum() > 3: -# # Drop NaNs for regression -# zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) -# log_counts_valid = valid_data['log_photon_counts'].values - -# # Perform linear regression -# model = LinearRegression() -# model.fit(zdepth_valid, log_counts_valid) - -# # Extract kd as the negative of the slope and e0 from the intercept -# kd = -model.coef_[0] - -# print('zdepth_valid:',zdepth_valid) -# print('photon_counts:',hist_df['photon_counts']) -# print('kd:',kd) - -# e0 = np.exp(model.intercept_) - -# # Set kd to NaN if negative -# if kd < 0: -# kd = np.nan -# else: -# kd, e0 = np.nan, np.nan - -# return pd.DataFrame({ -# 'lat_bins': [lat_bin_value], -# 'kd': [kd], -# 'e0': [e0], -# 'latitude': [latitude], -# 'longitude': [longitude] -# }) - - -# another solution is to calculate kd without hist -def CalculateKdFromFilteredSubsurfacePhoton(df, vertical_res=0.8): - # Early exit if DataFrame is empty or missing required column - if df.empty or 'lat_bins' not in df.columns: - return pd.DataFrame({'lat_bins': [np.nan], 'kd': [np.nan], 'e0': [np.nan], 'latitude': [np.nan], 'longitude': [np.nan]}) - - # Retrieve latitude and longitude - lat_bin_value = df['lat_bins'].iloc[0] if not df['lat_bins'].empty else np.nan - latitude = df['latitude'].mean() if 'latitude' in df.columns else df['lat'].mean() if 'lat' in df.columns else np.nan - longitude = df['longitude'].mean() if 'longitude' in df.columns else df['lon'].mean() if 'lon' in df.columns else np.nan - - # Use value_counts to get photon counts in each height bin - height_counts = df['height_bins'].value_counts().sort_index() - bin_centers = height_counts.index.astype(float) - - # Create a DataFrame for the height bins and counts - hist_df = pd.DataFrame({'zdepth': bin_centers, 'photon_counts': height_counts.values}) - - # Reverse zdepth for model alignment - hist_df['zdepth'] = hist_df['zdepth'].max() - hist_df['zdepth'] - - # Log-transform photon counts, replacing zeros with NaN for regression - hist_df['log_photon_counts'] = np.log(hist_df['photon_counts'].replace(0, np.nan)) - hist_df.loc[np.isinf(hist_df['log_photon_counts']), 'log_photon_counts'] = np.nan - - # Filter for rows without NaNs for regression - valid_data = hist_df.dropna(subset=['zdepth', 'log_photon_counts']) - - # Perform regression if there are sufficient valid data points - if valid_data['log_photon_counts'].notna().sum() > 3: - zdepth_valid = valid_data['zdepth'].values.reshape(-1, 1) - log_counts_valid = valid_data['log_photon_counts'].values - - # Perform linear regression - model = LinearRegression() - model.fit(zdepth_valid, log_counts_valid) - - # Calculate kd and e0 - kd = -model.coef_[0] - e0 = np.exp(model.intercept_) - - # Set kd to NaN if negative - if kd < 0: - kd = np.nan - else: - kd, e0 = np.nan, np.nan - - return pd.DataFrame({ - 'lat_bins': [lat_bin_value], - 'kd': [kd], - 'e0': [e0], - 'latitude': [latitude], - 'longitude': [longitude] - }) - - -# Original kd calculation function remains unchanged -def calculate_kd(filtered_seafloor_subsurface_photon_dataset): - logging.info("Calculating Kd from filtered subsurface photon dataset") - SubsurfacePhotonDFAddedKd = filtered_seafloor_subsurface_photon_dataset\ - .groupby('lat_bins', observed=False)\ - .apply(CalculateKdFromFilteredSubsurfacePhoton, include_groups=True) - - - # Remove the index without resetting it if 'lat_bins' already exists - SubsurfacePhotonDFAddedKd = SubsurfacePhotonDFAddedKd.droplevel(0) - return SubsurfacePhotonDFAddedKd - - -# Updated function to apply kd calculation beam-by-beam -def process_kd_calculation(Final_filtered_subsurface_photon_dataset): - # Initialize list to store results for each beam - kd_beam_datasets = [] - - # Group by 'beam_id' to process each beam independently - for beam_id, beam_data in Final_filtered_subsurface_photon_dataset.groupby('beam_id'): - logging.info(f"Calculating Kd for beam: {beam_id}") - - # Apply the calculate_kd function to the current beam's dataset - SubsurfacePhotonDFAddedKd = calculate_kd(beam_data) - - # Add a column to track the beam_id in the results - SubsurfacePhotonDFAddedKd['beam_id'] = beam_id - - # Append the result to the list - kd_beam_datasets.append(SubsurfacePhotonDFAddedKd) - - # Combine results from all beams into a single DataFrame - combined_kd_dataset = pd.concat(kd_beam_datasets, ignore_index=True) - - return combined_kd_dataset \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py b/icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py deleted file mode 100644 index 46f6a58..0000000 --- a/icesat2_kdph-main/kd_utils/SeafloorFilterByGEBCO_Module.py +++ /dev/null @@ -1,108 +0,0 @@ -import rasterio -import numpy as np -import pandas as pd -from rtree import index -from shapely.geometry import box, Point - -# 1. Function to create an R-tree spatial index for raster bounds -def create_spatial_index(gebco_paths): - """ - Create an R-tree spatial index for raster bounds to quickly find relevant rasters. - - Parameters: - gebco_paths (list): List of paths to GEBCO raster files. - - Returns: - raster_data_dict (dict): Dictionary containing loaded rasters and their respective data. - spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. - """ - idx = index.Index() - raster_data_dict = {} - for i, path in enumerate(gebco_paths): - with rasterio.Env(GTIFF_SRS_SOURCE='EPSG'): - gebco_raster = rasterio.open(path) - raster_data = gebco_raster.read(1) - raster_data_dict[path] = (gebco_raster, raster_data) - bounds = gebco_raster.bounds - idx.insert(i, (bounds.left, bounds.bottom, bounds.right, bounds.top), obj=path) - return raster_data_dict, idx - -# 2. Function to determine which rasters are needed for a given set of coordinates using spatial index in a batch manner -def get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index): - """ - Determine which raster datasets are relevant for the given coordinates using spatial index. - This function uses a more efficient approach by performing a bounding box query for batches of points. - - Parameters: - lons (numpy.ndarray): Array of longitudes. - lats (numpy.ndarray): Array of latitudes. - raster_data_dict (dict): Dictionary containing raster datasets and their data. - spatial_index (rtree.index.Index): R-tree spatial index for raster bounds. - - Returns: - relevant_rasters (list): List of relevant raster datasets and their respective data. - """ - # Create a bounding box that covers all points - min_lon, max_lon = lons.min(), lons.max() - min_lat, max_lat = lats.min(), lats.max() - bounding_box = box(min_lon, min_lat, max_lon, max_lat) - - # Get all rasters that intersect with the bounding box - matches = list(spatial_index.intersection((bounding_box.bounds), objects=True)) - relevant_paths = {match.object for match in matches} - relevant_rasters = [(raster_data_dict[path][0], raster_data_dict[path][1]) for path in relevant_paths] - return relevant_rasters - -# 3. Function to get seafloor elevation from the relevant rasters in a vectorized manner -def get_seafloor_elevation(lons, lats, relevant_rasters): - """ - Get seafloor elevations for a batch of points based on longitude and latitude from relevant rasters. - - Parameters: - lons (numpy.ndarray): Array of longitudes. - lats (numpy.ndarray): Array of latitudes. - relevant_rasters (list): List of relevant raster datasets and their respective data. - - Returns: - seafloor_elevations (numpy.ndarray): Array of seafloor elevations. - """ - points = np.vstack((lons, lats)).T - seafloor_elevations = np.full(len(lons), np.nan) - - for gebco_raster, raster_data in relevant_rasters: - # Use rasterio.sample to get values for multiple points in a batch - values = list(gebco_raster.sample(points)) - for idx, value in enumerate(values): - if np.isnan(seafloor_elevations[idx]) and value is not None: - seafloor_elevations[idx] = value[0] - - return seafloor_elevations - -# 4. The main process function that ties everything together -def process_seafloor_data(gebco_paths, sea_photon_dataset): - """ - Main function to process the seafloor data. - - Parameters: - gebco_paths (list): List of paths to GEBCO raster files. - sea_photon_dataset (pandas.DataFrame): Dataset containing longitude, latitude, and photon height. - - Returns: - filtered_sea_photon_dataset (pandas.DataFrame): Filtered dataset containing points above the seafloor. - """ - # Create spatial index and load GEBCO Raster Data - raster_data_dict, spatial_index = create_spatial_index(gebco_paths) - - # Get the relevant rasters using spatial index - lons = sea_photon_dataset['longitude'].values - lats = sea_photon_dataset['latitude'].values - relevant_rasters = get_relevant_rasters_using_index(lons, lats, raster_data_dict, spatial_index) - - # Get seafloor elevation for all points - sea_photon_dataset['seafloor_elevation'] = get_seafloor_elevation(lons, lats, relevant_rasters) - - # Filter out points below the seafloor - filtered_sea_photon_dataset = sea_photon_dataset[sea_photon_dataset['photon_height'] > sea_photon_dataset['seafloor_elevation']] - # filtered_sea_photon_dataset.drop(columns=['seafloor_elevation'], inplace=True) - - return filtered_sea_photon_dataset \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/__init__.py b/icesat2_kdph-main/kd_utils/__init__.py deleted file mode 100644 index 0c3915c..0000000 --- a/icesat2_kdph-main/kd_utils/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -# utils/__init__.py - -from .data_processing import load_data, extract_file_params, Extract_sea_photons, create_photon_dataframe -from .visualization import plot_photon_height, plot_kd_photons -from .Kd_analysis import CalculateKdFromFilteredSubsurfacePhoton -from .interpolation import interpolate_labels, apply_interpolation, geoid_correction, refraction_correction -from .bathy_processing import * -from .sea_photons_analysis import * \ No newline at end of file diff --git a/icesat2_kdph-main/kd_utils/__pycache__/Kd_analysis.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/Kd_analysis.cpython-311.pyc deleted file mode 100644 index e38c95451af5038452490da6bb7c52fb580ac0b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4693 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 Qz3BGSy*t#yg{jv6046{nXaE2J diff --git a/icesat2_kdph-main/kd_utils/__pycache__/__init__.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 2ba5ecee2b95143a2a9a919eb5763e8953a7a415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 792 zcmah`%We}f6t(kClW9WBYsZ2G3X4W!OI0Bux~YVa%E}wd89Ny__IPA_D#CYEfNTT=2e$BVl z=zZ*Mt1)~#=V;RX2@24p75d6BPC4@|9EuO#veeVLRDu@FGVQ|Qn>*48MvKgNle_RJ zwSsx5spGnP4%K4P2nU5Sev` zo!kqf_}jFwCKb-fd|{ig6WfZ=j?e)J$)$89Q}QE=BW*V(dNDCL#3if*79-5yOdqs8>XT&`F?m7tUP7j(&sYzpfv zy;N>WVGYt#dQ_}#d&k=FQi&7$7~10#yUzgEO^oq%2jL4`A^C4xqm$}ywnne2U0b7N U^*>vqC)LK*=xMcU_92M-1ucgFF#rGn diff --git a/icesat2_kdph-main/kd_utils/__pycache__/bathy_processing.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/bathy_processing.cpython-311.pyc deleted file mode 100644 index 11c0e30dde7347c154c301123d4816a1bc41821c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7444 zcmcgxU2NOd6~2@xiL#{Fsbf1<9EXWpC#q{XaU3Ue(kyNKv*xd{x_yEvtJOi|u z4+3rBn}BZTsVNi-eT4_U5TmU2IYCV*0+&$oa*9g|iFqMCH?P7MUs~ja#hAzP&Pt1x z@1m3z)g)D(Fn$E#_QL(>=kWGAQmei#xaFI`a0_nxDo|-u@Tfkgj*y0K0`D!Ce-yp( zn=2reg111cfePOO?UZ@ywx_nu5k#RHUblaZuH`KFG~c@4>8bk3d+Rv;noskmJeo(N zPXMFlTX1Jn2x!zgQ{CDrYhEp|faO9iD3h(n6)1=7x1=0)$|+i-Z__tHj<>KZ$%Qu( z|J?*R+;UU|)+mO0&>^JIZ+jNKucNmq3cU_*DYW_#%#uoZU}OE|6PC@@i&@O#u%p3mM@WC#q#O zB~H2}Gj1xK z5vqHg6x6&dR&{C5FTryvm*CS$l|6td^g9ZVv?Ox!5}TAnl}n3hagNPM952AU$*L4s zInSz~&ah5F$qCTnn!w_|?1kVtmqn7WMRGvKa*C5m{3W9OBR^1hc9#}Cc5!L~Y^P;n z`la#l#MIi-wKlEx)}>mOm{jf~;C}Mo6jnt*S~{%O_*2wY;j7i!oNHYA-BrnqRb9>P2Z$ zX^Y0&VufvHo52cIG0IQDEETNiSXTJ@Zg^l`$_fJu(zPW{97rbxg;NI;SNYuhz*Rnx zSJN3~U>15^O5|h-zACUU@!XQNBT2L|Q6q4fg|4xMD7!&C%jny76lz)Rd#``BfBAH= zqf@7MY_@jYxNNk>%+^>5`F&R?o4yxVp;m@ABWl_b&ZyMvq?9FU_o+F~XP4@MS%GxfH65XOH?d z8T*^6c~sA-vHbY)r=@*X%zZju_CS6p7 z&luMT9#4Waf8n_f*t!m{8n0SR1}?0e4OcB!!B?OG^%}VFi&{?L`XT)V3jP{DKx-Ir z12WOH~f{XaXJJjH29j*s?@4H9~j@He((6r)7Q9S)Fqct^r z3uz(1Rv(vyjtSn4V(iPNMS*>LKAoI*01bnSBB%g8vQU9fjI@A5>>S{a2zVvQd|Cu+ zSJ*r@4+n&7T(*H^dOoeNsk}%~4%mQ~W3v+UDx^~BWLf}J=5k< z0UrShTm-)jh%Nv~;wgYxCg-6e49D1)S0nFMc%G3&0CIq)+)`ZRIa%hG0C``)PuvH5 zo=dBF-a&8-4;c>D{yj~=|J1dpLYp6g@HRUEaa+zV#Q#rmo$Ps|cPjhGggvW9uUF?l zx0?2ro@p8!MF1QHxGbe6;=)_|f@S4B@c1rx0)&{9vbmG*9L8awGhb&x38J62bBv$JNJ%cEoQ%7T zhM^B73S=4SZO822dVWp#FymGq!BaRV9~Mcvc2%86F5GxS3dM#tlVvN z6nA+9$YWT0$3pox^_t!p+j!dS9JoW7orC(&=)Gxk=*;~?=FoY4=LMHhjzPts~3l zzV)N#*0tv!w)Q`0?cdPMffw&j>#hAp>!jH_X>6M^w@pEZL?Q14KogC&V`kg2jd91Y>vyVlDrV09!{!CP}K za(h?ZQ$phzNOc;+v*OumPXpkMJ#bb^lCzQzd}*Z8Nb{|`XO+rZ7^m)xQ#*pw_~EAF_A z*8kx&^Z)UFb*9#EZgOm~F~D#g->OZ%)tz{mz#~!rDHhPWrLuUISWBZ`FeQ?FU8SPmgH==!Jw6BCbL1+f#y)!GP z*V;Clx34bhJNq_Hn>!C0&4!*#D1CL8S+?YY( zJv!ZOqm+v;uo4%gEU46?lt$IsA+caj!K*={sbYzhYz?3aq?)$;;;W0+eUNkT)KAeXWeeN#Ff|NsO2IojA05Hnst> z+^hsS5`0*3glJE|3cBIG#W>Too^qHfHfBZ26Dg+=X>!JwCt%M>JV0y^G8DLJo#5o1 zm!yYyXNADz}OC5;Z=?BJmd zgd_*YseAnWQGIgO7)Y7}Nu6%jJNgXzIq0qDh<;?^ezSSxr~2h=2_cC(?fC|wE7Yjx zUkDA4;!4k$N2mATq4(=_Z(}HeO@f3Xc=mNh4gpAQaBu~Uayi5FNBEdhKTC=E?9wCfy*Y+{5#KHbW@LPWuGCZ zjo}jKMMyRTm`7NA(hjHRM98ez$6Pp-1?FTapPOB>d^zA&iDFoO$hHU~Z+UW%iG`GN zl2c=0c?yIhPh;{b5E8!B{U1fCwF9Etiq-CFFqw1NycGEj+)L1XCu3WeU&CYuf9Zr1 zD_A5Lq}$$UYM;^S1EC%l1S_^$HYQgZavHi`fm_)GvW&irc0r_5?1U3hdvP~J98pl| zJwJNbed|2lN{U`5*jPN-#d=4AZW!I2qAg&2^J!JMhV8CpS7|gKA4C~Brk%>NJ_C8?t>iZ5G z%#g_p>C8}(>3+yO^MH9q?|sE!CQW8iCqKa7y*-}=^=D7rS9NyUV5d!XTBmn^8S2(q zIESCtL+5q+JTb-CQ#H?E^^{kWdKv&OUN+c0jV@9c3CeVfN~ z;H~!O&gG8hswCK!IqSGB>CYR_gLIAGKIa&B%;k^g(|E1FV9q)2Oy(&ZFQl-F#*65? zc)XatOU6s!t@D@6m5!Irm5rCt{CfY9xufGpsXxo_nkyeKr+$OKVy<$$68uIs+h28q zVT)Pwo2v0@Hpg4T=6Y+Uw5;V#?f5a)`X)18%i6$ovw7gwv378evkq|U*%Gz@N;R-f z2sN^W;5M;E;5M_W>x{efQ|#1BZk1?YJt1$%H|KS$#oX&5&phkl*z1!Xzn2ruW4`$@ z&yo~^yxDz$`PaNl!;5}DnJ;;(X>Int|*S&u4WGKKvg!YOj zGy`va|M}~Ey_Y_PF=Qa9svDeCCkGZ^S@1K#@AEhFaF9coE%}6*kSyoDwEqL}eV7h$ z1tElyeD0-)h6w|?D046%%M%&*P(Rr~YlGHI+n8MURQ8am)?K0Tu+EwdnE+42$m!>c9WpGH-mohd*U&`1NeJNuPp|5+^6eT@p z8?BVOvLmLj2{Fy!7tTiNU9;_@AQ_E4XAPq%`jz@3Q^P@e4I95Q{-w{tUkN=^YqDKs zYh(LbCZpeP+%g#~i5`BhEmJ^$j+V(r^&7WL2J4@oWeVue(K6Y*`^GJk!TKj?nF9J@ zEnC;DUBESnrSlHwisTDx*z8RH=WONoQ*-XHHA4wB{W$p~zuiU@NRx4`CKuz*C=i02)>P!lolj(u|vC7u7Ihpk5q_*iV zr8XI^a@c9gJJ5HB z2V-Gfk>|{n)nUo_pRaGB_W4xrD)v6cPC`z7_j z9!z@n)k8Vgm%|MkpRdJts%U$y5nI@HaP~dBj!e&ntvEJo)nOI)pK)G3y9}M9-;lPR z4PAzj#Er_nM$gVYcfY-u>bEa%vkWWRPhUeash~BbWJWoyE2v3clguymMdjM9b=BGe z{QjJk){eZ0ozAkn^vt3@)<)-`F5(D7x=#i3Fi!@}LB~)^(H)YaQO3zi+B5#=q|E=2 znu&+bDg{;<*kM^cX`c7Tz$2a`|5siml+y5X)R5wOlxChMzqIH0>T^a(GtX6%tPfK( z^VdKxSun4wKwI)vcRJY$s+Ay`KyPAC@ih5cxeEvFgBJLReo6x>vOLe9fpRC?1Kz+6=?aE88iQ3%fsW0!0ID-rD3GiWA=32T8#k_v zod4F1f$Jw-cLM=`y^Hluc^3U4*PzEAl=2`94$!7})Vrp+z~X`nlzXn%Je<#S*Y9b8PUWi}g*0(pXA8kpd}|&E&@#4lg0A z8xhSEx$E`JK@q<%n5pD7kKe~;dY@)-z3vOm_~!TbjHu!!(;7J#X9N6j+&_N-oOhXN z(AwRpiKyiKIi!K42Uu{S2gTp9|7 zJY0x|jhHaGJn8p}+31Dp0Kuex0d&u=izXVs5PaS1ofT<*iiDJh^G;){vM>)f9TF|c zew@Gvtk9N<$kds|fj-+4^ok}aPO9E41(FD)LJ|r&$+RRA$#N1J$(%_|0chVGWXxWe^tMbuYN&_N!VOi7;0v{69fuN{G{sg_cv;d4{F$kvsS^mKEG*GOlr2}q2mNgH&Pt+o9 zirQK4a!}NJ78anhMZ-n!@&LyLI8o;ddFO(njxr1}s~?CX=naXwA>>-3Zqg4!4Af#s zu}U#J!vaP9?CTzG8o**@BmH7dhMNGx5-pja1YQpI4ew_f|B^AAUatQwM4v&U$3XP(;f9~8w-#IFlBH?g^+`l$XBjQUaQ z!>*l@hV7DujTxb&iMVoY$5=)tcTMeaEpr z_3rE+&HiBS!JJ^LBDN|)TTQgpytaBz&*VE-#u5dEE0@9VELypopu8m3`QuYRJoVn` zho^yS2$l=Pa$%1#>T0PI)$Hl@#@d8AZ@q2pVl0Q4YvN&IZs*PIsW>AsSHydWxtTXN z?-`h!(j9ZfHbk`v=3~TsjHll(ex1cw3-=h6(Ux%%W^1&6PXlpZeDTGenXw+-W7>6B zRG(2ds@W|&8qHas6b!|Q+B)&P2k5@iC6<;PLEjuM$ z+a+B>NjE8hQktBLD#`sp*1BfBFVWSVDtn7qn>ICqwLMXL{E_kJmVadtYP(4-R%OFN z=n9Ui_2JmfMBjz=%ke(qsNE!=YP;l= zP;#1-0Q#Do%M^#psw57lPN#6VL#zNzu%0*s2P~wrT~6aLbSZ^H8F6%NX^5j|>qWsa z$U6oR2gshr;oGF7bEl+dyQD`bIYUa$AP!e34p&k*^qfiI@G`NsZ(bLy-G|_Sg;cgH zX&iWWb1~Yjp(jsMK#gB#PPHlBz-IrkwNGS>UF~^kgq|v6)zr3tPK*Yu9c|8&Lmf ziZdjtj=ewfCzpSES*Yp&n#aP33%V%~X9rUtCW*Cm^MqjS;jKMi>{*#(?v*h@2Rx~z)(`o%B8(*#(HFrG3bz>(FM-f)WLTSlBS_28qzfSQ#TVBR`|*tdVsG8CpV+pa5bP(39r&F=ca65^T5`~KWgIWn4jnNd%QLhk8*@#y z+jAz}7%wbDK=kJBLk0n1t8%WT+i>A(x((IDid1h!s<#gD)*)<&t@XPjEB#SN!qU9Q zS1qwt$AMgdmkZXW zLzv1i_OER?%~Z|}0aNKG4(tU7j2Uv+VZm{lcbtA|hraq*`}-#adn2(o0%_Z>suD*l ze!Tp{<@err_y#m7|0;k(_dQKa6)R7iJ{z-aXh|U~o20OHvyBvXZK;I9lh9Wm8UMoa z3yaX)OPYHDg(578u25PZ8;;*hj9iIb-smT#NUNotn?X`~YO9x&p4nOwN{9K05zM90;q{w|+9u$v!-Bb*H>0?!GrcwX zz0vPpdh^oCrCoDTtZAc(H=X3QCxfWY{+oi@euw&(j_m$&-7j4#a7B$D_ga3~rl+ll zAS3GAQ77>EN8l(ekq*}tpoP(W$jhqlgWRsv6R?{50FTvTx-uoAmfIkO)yh;>J4L;VEH*0{s|kayiZ#eXZsYwX+^?~&z`P4uN7X+5`RRJl8=#8E zb=MmVxfVlnF7HBcx?wWFdOyXseu^#s6!oke+8BwdW)5+`)PS~1 z)Pjy);BZ%1J~q^!mu57YXj zh&HT^%PA`b6Ld>q21ZqdF9Cr)p;5t+2QQ4F`Py9 zm%2;8H4a?4K6J7jhfeago#^Pg0oHd$kNLZqUIA~)~%FhJn7NTEu&$esCyBIR@B|XR}c;T zkOq>EL<$7~E`+Kv&`M5HY0IeC+d*SaJ^NDna7j6{J$`*|lgNcG%j)lgh2}x5pwyw3pllXvcw|%#|Fdj4Vcx6Q>_;Z$ z+>dCU*|xN;=slb?^x4-Mt-@+FZ5;|^r(w;Ha`x4vgZ@g}SH^QwFy-&CE|X(lU3yjz zCnS1YBUn74(_0vNE~mZDfGy^c3>2`%90E>Oo{2eVzbQ{;bCoqg|H)|}eeMm||IQvU zF_Y?BV8R{A`gRtqjr9GxDrFPuwp^mi8s%z(5?jmi1tkr|H7!3Yt(?a3%oS zW5`X9g;HxUrZlt!U0^-!N>=Wg@_VM;d7>V4udpJD22d;`H(VA~@Ldws^Pmd#&4)VM z#q9fDE&wR|W&t_Slv2K}nO=Z}mMRpHrEpPbhNuVi<)Rl}i{H-3fzz$56ZtI=_~fH~tc-?k3fzw!S48`iP;A zH}w6kbXX#aOCJ{gtm6HKO%rMEC(VOG#Sp0&5{iaN(Qq^uR18K(x(Z*S#J$lgfWCF{ zGtfzP{t84>*utSBbPn2X81544uT#$s0OlaD~Na+A?D1vxr@dIDn#5bINQpguv6AG@8f@@I|h`f%Y z#9p;ycW>L>SniZy?;-Y{r~#6W)k4`=tzf83NZu1Mw_vE+wYYeL>x)lJ4%F9z-YeyN zV#tYlRt;;0r~$lu?x{l1zC@8cHlR(T#G7V`~!K9MTfIym_5_353)C3$@y++TBL=y%* z_kDAVAgWt|7eVxE-ih8D6D*v`AfKBI_!sBka7jx=Zz^z!YGfvO5HpBp*KV7rhjLi6 z9x%nXAyo_a=P+QR4!9K@5Nc;2jr&uKDNvw@Y{JVew6J1c&^JBr@q>srKLwfb$XwJd z!Rg^7_X{kSiy-h=&j;sxaE2Jf$SkZKB}h17nx`HE%?23&AaI9d2cUce3^9lcMv9lD z-;$i^oCF>TJVjPw3fsv24U~BWc?xcZfT!r0g5p>?ejeP6Eyl0n=i!o&e{AIv%t>2i zymO=c{qBva&8v@m(xg}!frN?^Tl&ZPC)y`Iq5MTs{-U5gLPgLSNCW;-ns5{+@=Fqy z0{j*oOBA>gMNJ8(J5f}ga8@Kr>-U`IWBNS?okGTXPrb*;+#+-Ftokzs-Ct3c*B0y* zGv*__woH=n(&P!PNKdLYV6N}t%@0lL_6NN6@PnHX5d-{;@XLmu34Uhy<-ji&eqa$7 zvBFIeTUZ75Iodm>NM1NE4xkS{a03QD-yk>Uy#{wMxc?=eZY)^ED5nO< zjf~t%SBfms}u!<=DNz)TLyA;UXTunz;7b=H118P}#pME?E&0w1O$ zBF=sAWY&yd3tr(qcruHzuLZAYA3STOx4ssgcWJkVOO{cKGmrG`@VV!KC+y^Lu4Tt z%=@sro77CIkwdPX0~jv0B$JcwY)es38L2@&lu1#Bo>AslD7|+CK`6Z&4i|=b|6GkuvXrvd6!qZ1L|XTmL0xOMXY$hER#Dugbzl!pFn);f8Q&xFTE^ zJ_@5=^Qim-808Ps)EQ|E!-uWNbPj8rrLsaM2J+-Vo=P0Kugj0^fgK>YdO0r`H>E^CkS!03 z1>NHoR*dp3hr1c>FVXocbp8!Ge*q4FSBSH2bt6?Th&i-+z{!K6J(#f}HW-|Qt$UD) z$TXwx?_m(Qb%ckC2av}#poOKocTl~i>ye?7!2;!M?%$&G@6h@8=%5VE{TVo77Iq_8 z?V&Ei3`l|=Lh3t^=Ci5QSrGLX+`qsQuVM*ZaK^I$##)mBu=CP^8hF~vy^9IC3!puK zeLGbWFD;AaA#WhPIiQY1cqY@=pQsI%{#3&w9m{Jj=fOaMT55%?1;Msc9xs za3-K2+zhp3XemuCqHdXPypWJYBS4b~MAZ0LFo}cNByGuT>0KjcK}zO+f+Y&Br$$HW zK?ASsaAhZ-PEw|LxNBOsf{?}q^e+h3|{!W~>Q#HV*|&*_mi zc=mxMIGvabQLT}*%L{V<0N}zP;s^gbNW&{k!e(E&kSH$Y;rP~B1Sda`LT1?t%IS4I=mk#b6<&@L`fSj=nlVWWtaa-j7=gR~KquH!T6g4u;B_Ycp! zeI`~Vn2r+D(a)G6m9ZnVw0{_vP z_#8RXzImG*IUl{S9$dZr)ZvU}$J-uS1V=5HB}E4kj*{32aiEEvqn$WTt`0=|6UQ1i zBIMZVt$A{6jK6YKIChoC6Jo(!m8d$tF-EFR@~6PuYLqvZ#-Q@@M19-l7^y$c_gyFT zH+VQmhFEu^!oATzDo*g-Bc$R&^im8CmX9WiT=6ne)U;_PMW>_Cf93H8Qryh943XmD zCpP?$;)^@QSGJ3<2*uY(@wMp1=gZ_g5{rPn-Nrqzkdy4#h_h$M*}LuR6`XJ`-WMHC z0op7h#b+O@@I#8v?-UPh7Y_-=Bcyl)DuWKWL>$LAhVa;$TIYe;)Q+QP+tCAO*u-%L zI?WD7fy7=NpCa~#4G(^Zy?Mvpv2E`V>|Mm(1)Z2*8oNdEk8K!8KA1ebHom=|ln*?fBIRQ{<=3{$uLX8u?g8ematLE<>I<2bkNI0pu4#Bm-n!Ppd$qT?H*q^LW30hA3# zD&rmR-F|o*O+cu<1i0(QL;;#y6f|xulY(xrVl1eM2T8&4jS*7N2|;WA`edv!u6fVB zKF3?D;0q>qeC@f%cCa0I>?5^T1nU(kL7>S%spT~rx(&}GgWzi3>=%xn0Ln^~cW+ga z@-uwzEq?qC>3x}>c!l(OgmMq>^$9K?Z!QB2k2jLKo~@Uj92e?dAayUmY5oN;0)1Kx zBV4y}_OXdC9uJso*>l|ytyJ#e?EF~?Q*P_ewJgSK)0B$ z`{VA5PcHJe0z&r!>0aQuC82tmR4+r3r^O8)H=cW3@?=J6yh$2w^0y|0;#WxVE76Nj z%bGuK>3e*Uzj|9}xkFm+@DpC4Y>JdkMK3*d)_r{Z^w#W?4&nG!avZR@B{;{4b38iy zYXei!4f>wf65aj$)rmysnaBN!Qv->iJBhw;B|1+fdav$TvMR2FO$fTbqAm>lo`b1q z=i3J#e}}Z+{$GPJ{fY zC~Q!Qr}%donIlAcKn@ptsDPUtRwZk;f$r9r`NNl@bWN~zqj}e+K*6MuYm>wJ1H!Xr zZ5eXu!diOPn|1#Iy(Tm0^W)7Qm$VSkLm*h*Tz69j8hz=%)Ny%0G3f$<%nK(kewLbT zNERDGi1p%49)JX99ZC71p27#o3I3ADHG}ts5J0e=7L-Rz!doNFPIb<3S71Ik2x6fj za2L*+Uh}e_Vn<7=XEbzhXNg(#%Fx|q?qf`$;-LWyH0BrQ7M3|Z#KGAT>W#gk0S!3t zA`57=VVy^XZfX@5?T8l~4}pd@-7q{S3Q-im@*NEPy{u?WwJlxHEHz*P%Lhf9EJUFN zC5C zfB@RyY^Jbg$Jwxri`3%|-q|2HM~HI-MF(f~jxhPPSgK*oU~uzZ@jeK{t~IY&0Aex?3zmWvc^p_Z|dQ-JqK+bkSHj}2!lsy^N=wH z*su1DsNkSnZe{>wrDy+NCOy~eR)^KFT~yx}Dftd8dFB@U-jgmkn_UdKDw3C^yeyn& zj5c>pv^KZ4wY0Q!w6r$ElMYTaH@8f*v{Eu@oav~buu^1kc`*dAPP%H3WuP6acO9b; z(Stzo-O@tc4(hg|+uWRX6(A2S0ytz!QdEw)X{r0K)@EvUpRI+8Z?kW-M%)v%@NSQ| z@dd#zdmWyY#U2xDPnt*A~sAUG+x0R9Q+R&V}^kb_Ci)L)X8PC&1=PQBAWj#So~Dk zFTmo5?#g+f$Xx3mj=wz~GYUBsB&T90r)E2+M#!lpIkjM(W3sJ`Nz{mIR_aMp<28uE z^-IBzRkKh%$oR@wwZ!4?L)yL+O(q2mwJ42Uqr)Mc54k+9IZtqwp3qC|f}Z9BhYl`s zQ(zWQ?}BqDIJ5`TH;Lt@8Qg?)U`K(8dMWTP8MjU}0jrt^T1AE<9a|+~B}<4F07)UH zBCPv?qRCxwHi#=GrC(`0Ovy7XOygY8*kT-qbC3x*7u>Naj2VczoUiWMHg_e=P8y0& zY@6HR4gI`OGk(M<5hFI#5=2IMG4EHCBCOX9~na%CwMEB`-*O!02}p)L+wZqrWEh+@ zL4Xw%ii4g>y2b7L)j$5@KYohKIMq_#K-(wJk`Gi=l1M5k+k%SQ)_TZ|I{eR3zx0ke zdEffQ2>eB-(lBEZ&N5~xJ#lt9O|0&-c9kgY=N0p66*J#Pp)i@AeI}HBG?IieK%rQb zm_SGdaZ3FI_1Z053M5M~Y(7|OqVNj~rUPE026|dFN&QD`x;%iFfF^o<9%u0F1O?D=I4fBHrEZd3Q~+MX=^ z$J77mv=ow3(7p3Af7i=TO_RGb{GB)8yG`AXXXp9AePQ+uGMkK%Qo&tsTYvRIXRIyu z>cdXBV3dwOC=%jIK*x9qJnv*B$G9^BmvX`~W1CftWWWCN+*PnR%#7KpIvHQQs$Z3z zt}F6rpOr$#r|UYL3IOp?$8D5`MdcH-ak@wY1FCOoVHVY zBa)7Vzhh;B$e3KN73ulr1KNuNdRrP$5QZw}@Mc8Xef(;o2Cj3EniE??+ckYWe22$D z9YBWf@SfT2;aProc2C1p*KTOvAKCD{Ke}17<@l(6>(!5%_{#GMnhsg$K)Eg4KZknY zf;Cm$i<&v0Rn44d3I62O2i8SCu-6;G44V7C1yR2^?|XI8o7DVM3qJ0@(A41K9Npnb z3VJQ{i91i)8)A2I*h!)pyDr5tL`$-V(-Ao!SHc*8tOG6>{YiC60Z{gXo*w=~0GJKf z_|Oc76ibtaQQF9H@K3x9SBK7VbkN|BJBCgJI&|Wp6#L36uTWVCopbb&q@s%7Jp;Kj z0I3Q`=)Zvn?bql7(komq&RbiK*?;W(q4T|>heh$eKNY*p}*vgD<`$ z6kj6XYMm<=*9$;U%ZsSetO7h6v)~A}FtLSKF6>%tE5nJS?mb4YgPUI92!;~agBB-D zdFxl-J{3I`>-yRCjl!SYdH>FKNh@E{x_SR`?=QZ+`RyllAKwI0oDyzMlbh4q7pD0O z(@#O`gx9ju^!ru)e>d>)wQun+j0@LZBG+CLMsJf*P*5T~*dl-nTLj5pJdb{GqZi-? z$ok3E@2q_%Zriq0@Ro|F&hj|ywi`fWysk}H3*WW;ktLqJ(f;T(alwV*lf-(Gx1NOU zt$qEac-_VfZ|dZ=ozfgpf!>4rKR`9^7P=CSO%n45V7M2@>a7Do9@k^=~1N`Fw z?7HAT8M1?mcaz0L4I0Q{EpX$4-s+$iIK(^|DzE$4X*gWrkjIG@SpvO)fTBI@L6Qhf z`WJ&B5^yGpMdlC>FJ(+&9Nzo!gfd2h^kM=%4V2FJ@XUqkQRvo??n~%=lh}75rWSzn zTSL!WfQ7#@Im2CtNeEvih*J`7-lE59;;XL#n2Z-S}fmET>)vO+%z#>S_poPzX_(4Pkr~ymozGv{|DSDy-}4P8vsLKRsM#K zzV20$@=E81%A|se Ze`%*QOJ#-2*D1$Qsp{He4mxyB|3B>UMic-5 diff --git a/icesat2_kdph-main/kd_utils/__pycache__/interpolation.cpython-311.pyc b/icesat2_kdph-main/kd_utils/__pycache__/interpolation.cpython-311.pyc deleted file mode 100644 index eb9cda4ec866938ef3e0e96672de9854fe33848a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1306 zcmah|&1(}u6rb6T5W5>``l0EeHKGJ^XoInOs8*^_g;skhMJSkM%}$zaHy_Myift1J z;z7ZK2cbRoR9otye}dq}Vdk|6`i23;ocz#lYOO1EwCCc_qC zHx~eQi38YP>$H8^@3m+PNtu+XK|c!zV1JB0{8bUk0>l!RJcYe-xLzz+y2Iks8_1ZJ zrETg~iN!@vw$o;D%Tvs}!+7hB7i?W_8K75eww7agM+0jwVCgTJWqWe2V89n+MWfNP z+lg!;#}ey>%`H8jFw@M|ousy56tjs9Ln}F^Whc7+%|d<(A`W#W44k819s-9*gnbjB zN>0_VtB(IvW8c--{?5tcFO`}atE(%nx>BA0r3_Y|HsKxV;}LVh-HZV262WKZ02n;( zu((W)=+Y613tWLWSd^m`vo>-YjdB%b!+No3ZE4*UA!$AgnoF?lL4YcO1m52HaOK_X z``MZl;g>;}?ywIR3AUffBRD`uJMjtht1KKqyyH$kE27h5TNcZtU%yN^Mm-XIj{H>O z5+4E)$CNyIjTKD8FUZEg(3bO327Qf|E^yA$4%TrM^jM{R9ROLL*xNarud7K{O;+bm zm5II5ex|NWy2@ltnrsz@KHIA^s;@!v-@>E|g^T@#Rph?HrHh64Y2}OB42-x>3?GGD z;(;DUf}CYEX0c6A!IQpi=1NZ18$glfೇq+f;09+t%ZRSS7j_W>Wz4VR4Gwg-^ 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 sea_photon_dataset['seafloor_elevation']] - # filtered_sea_photon_dataset.drop(columns=['seafloor_elevation'], inplace=True) - - return filtered_sea_photon_dataset - - -# 5. The function to get the subsurface photon dataset -def get_subsurface_photon(binned_dataset_sea_surface, subsurface_thresh, GEBCO_paths): - # get sea surface height - # threshold to determine how much depth below sea surface will be accounted - # Output: - # ->final_sea_surface_height - # ->sea_surface_height_abnormal_label - # ->sea_surface_dominated_label - sea_surface_height, sea_surface_label, solo_sea_surface_label, subsurface_photon_dataset = \ - get_sea_surface_height(binned_dataset_sea_surface, subsurface_thresh) - - - # Filter out points below the seafloor - filtered_seafloor_subsurface_photon_dataset = process_seafloor_data(subsurface_photon_dataset, GEBCO_paths) - - # filtered_seafloor_subsurface_photon_dataset = subsurface_photon_dataset - return sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset - - -# Main processing function to apply the subsurface photon filtering beam-by-beam -def process_subsurface_photon_filtering(binned_dataset_sea_surface, subsurface_thresh, GEBCO_paths): - # Initialize lists to store results for each beam - sea_surface_heights = [] - sea_surface_labels = [] - filtered_beam_datasets = [] - - # Group the binned dataset by 'beam_id' and process each group separately - for beam_id, beam_data in binned_dataset_sea_surface.groupby('beam_id'): - print(f'Processing subsurface filtering for beam: {beam_id}') - - # Apply get_subsurface_photon to the current beam's dataset - sea_surface_height, sea_surface_label, filtered_seafloor_subsurface_photon_dataset = \ - get_subsurface_photon(beam_data, subsurface_thresh, GEBCO_paths) - - # Append each result to the lists - sea_surface_heights.append(sea_surface_height) - sea_surface_labels.append(sea_surface_label) - filtered_beam_datasets.append(filtered_seafloor_subsurface_photon_dataset) - - # Combine all filtered beam datasets into a single DataFrame - combined_filtered_dataset = pd.concat(filtered_beam_datasets, ignore_index=True) - - return sea_surface_heights, sea_surface_labels, combined_filtered_dataset diff --git a/icesat2_kdph-main/kd_utils/data_processing.py b/icesat2_kdph-main/kd_utils/data_processing.py deleted file mode 100644 index 3ea5b37..0000000 --- a/icesat2_kdph-main/kd_utils/data_processing.py +++ /dev/null @@ -1,586 +0,0 @@ -# utils/data_processing.py - - -import re -import os -import io -import time -import math -import h5py -import logging -import netCDF4 -import numpy as np -import geopandas as gpd - -import pandas as pd -from datetime import datetime -import matplotlib.pyplot as plt -import hdbscan -from sklearn.preprocessing import StandardScaler, MinMaxScaler -from scipy.spatial import ConvexHull - -import argparse -import subprocess -# import fiona -import utm -import pyproj -from pyproj import Transformer, Proj - -# from pyproj import Transformer -from matplotlib.widgets import LassoSelector -from matplotlib.path import Path - -from sklearn.cluster import DBSCAN -from .interpolation import * - - - -#this function from icesat2_toolkit -# PURPOSE: read ICESat-2 ATL03 HDF5 data files -def read_granule(FILENAME, ATTRIBUTES=False, **kwargs): - """ - Reads ICESat-2 ATL03 Global Geolocated Photons data files - - Parameters - ---------- - FILENAME: str - full path to ATL03 file - ATTRIBUTES: bool, default False - read file, group and variable attributes - - Returns - ------- - IS2_atl03_mds: dict - ATL03 variables - IS2_atl03_attrs: dict - ATL03 attributes - IS2_atl03_beams: list - valid ICESat-2 beams within ATL03 file - """ - # Open the HDF5 file for reading - if isinstance(FILENAME, io.IOBase): - fileID = h5py.File(FILENAME, 'r') - else: - fileID = h5py.File(os.path.expanduser(FILENAME), 'r') - - # Output HDF5 file information - logging.info(fileID.filename) - logging.info(list(fileID.keys())) - - # allocate python dictionaries for ICESat-2 ATL03 variables and attributes - IS2_atl03_mds = {} - IS2_atl03_attrs = {} - - # read each input beam within the file - IS2_atl03_beams = [] - for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\d[lr]',k))]: - # check if subsetted beam contains data - # check in both the geolocation and heights groups - try: - fileID[gtx]['geolocation']['segment_id'] - fileID[gtx]['heights']['delta_time'] - except KeyError: - pass - else: - IS2_atl03_beams.append(gtx) - - # for each included beam - for gtx in IS2_atl03_beams: - # get each HDF5 variable - IS2_atl03_mds[gtx] = {} - IS2_atl03_mds[gtx]['heights'] = {} - IS2_atl03_mds[gtx]['geolocation'] = {} - IS2_atl03_mds[gtx]['bckgrd_atlas'] = {} - IS2_atl03_mds[gtx]['geophys_corr'] = {} - # ICESat-2 Measurement Group - for key,val in fileID[gtx]['heights'].items(): - IS2_atl03_mds[gtx]['heights'][key] = val[:] - # ICESat-2 Geolocation Group - for key,val in fileID[gtx]['geolocation'].items(): - IS2_atl03_mds[gtx]['geolocation'][key] = val[:] - # ICESat-2 Background Photon Rate Group - for key,val in fileID[gtx]['bckgrd_atlas'].items(): - IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:] - # ICESat-2 Geophysical Corrections Group: Values for tides (ocean, - # solid earth, pole, load, and equilibrium), inverted barometer (IB) - # effects, and range corrections for tropospheric delays - for key,val in fileID[gtx]['geophys_corr'].items(): - IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:] - - # Getting attributes of included variables - if ATTRIBUTES: - # Getting attributes of IS2_atl03_mds beam variables - IS2_atl03_attrs[gtx] = {} - IS2_atl03_attrs[gtx]['heights'] = {} - IS2_atl03_attrs[gtx]['geolocation'] = {} - IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {} - IS2_atl03_attrs[gtx]['geophys_corr'] = {} - # Global Group Attributes - for att_name,att_val in fileID[gtx].attrs.items(): - IS2_atl03_attrs[gtx][att_name] = att_val - # ICESat-2 Measurement Group - for key,val in fileID[gtx]['heights'].items(): - IS2_atl03_attrs[gtx]['heights'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val - # ICESat-2 Geolocation Group - for key,val in fileID[gtx]['geolocation'].items(): - IS2_atl03_attrs[gtx]['geolocation'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val - # ICESat-2 Background Photon Rate Group - for key,val in fileID[gtx]['bckgrd_atlas'].items(): - IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val - # ICESat-2 Geophysical Corrections Group - for key,val in fileID[gtx]['geophys_corr'].items(): - IS2_atl03_attrs[gtx]['geophys_corr'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val - - # ICESat-2 spacecraft orientation at time - IS2_atl03_mds['orbit_info'] = {} - IS2_atl03_attrs['orbit_info'] = {} - for key,val in fileID['orbit_info'].items(): - IS2_atl03_mds['orbit_info'][key] = val[:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Global Group Attributes - for att_name,att_val in fileID['orbit_info'].attrs.items(): - IS2_atl03_attrs['orbit_info'][att_name] = att_val - # Variable Attributes - IS2_atl03_attrs['orbit_info'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs['orbit_info'][key][att_name] = att_val - - # information ancillary to the data product - # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC) - # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC) - # Add this value to delta time parameters to compute full gps_seconds - # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5 - # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch) - IS2_atl03_mds['ancillary_data'] = {} - IS2_atl03_attrs['ancillary_data'] = {} - ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc', - 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit', - 'end_region','end_rgt','granule_end_utc','granule_start_utc','release', - 'start_cycle','start_geoseg','start_gpssow','start_gpsweek', - 'start_orbit','start_region','start_rgt','version'] - for key in ancillary_keys: - # get each HDF5 variable - IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Variable Attributes - IS2_atl03_attrs['ancillary_data'][key] = {} - for att_name,att_val in fileID['ancillary_data'][key].attrs.items(): - IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val - - # transmit-echo-path (tep) parameters - IS2_atl03_mds['ancillary_data']['tep'] = {} - IS2_atl03_attrs['ancillary_data']['tep'] = {} - for key,val in fileID['ancillary_data']['tep'].items(): - # get each HDF5 variable - IS2_atl03_mds['ancillary_data']['tep'][key] = val[:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Variable Attributes - IS2_atl03_attrs['ancillary_data']['tep'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val - - # channel dead time and first photon bias derived from ATLAS calibration - cal1,cal2 = ('ancillary_data','calibrations') - for var in ['dead_time','first_photon_bias']: - IS2_atl03_mds[cal1][var] = {} - IS2_atl03_attrs[cal1][var] = {} - for key,val in fileID[cal1][cal2][var].items(): - # get each HDF5 variable - if isinstance(val, h5py.Dataset): - IS2_atl03_mds[cal1][var][key] = val[:] - elif isinstance(val, h5py.Group): - IS2_atl03_mds[cal1][var][key] = {} - for k,v in val.items(): - IS2_atl03_mds[cal1][var][key][k] = v[:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Variable Attributes - IS2_atl03_attrs[cal1][var][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[cal1][var][key][att_name] = att_val - if isinstance(val, h5py.Group): - for k,v in val.items(): - IS2_atl03_attrs[cal1][var][key][k] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val - - # get ATLAS impulse response variables for the transmitter echo path (TEP) - tep1,tep2 = ('atlas_impulse_response','tep_histogram') - IS2_atl03_mds[tep1] = {} - IS2_atl03_attrs[tep1] = {} - for pce in ['pce1_spot1','pce2_spot3']: - IS2_atl03_mds[tep1][pce] = {tep2:{}} - IS2_atl03_attrs[tep1][pce] = {tep2:{}} - # for each TEP variable - for key,val in fileID[tep1][pce][tep2].items(): - IS2_atl03_mds[tep1][pce][tep2][key] = val[:] - # Getting attributes of included variables - if ATTRIBUTES: - # Global Group Attributes - for att_name,att_val in fileID[tep1][pce][tep2].attrs.items(): - IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val - # Variable Attributes - IS2_atl03_attrs[tep1][pce][tep2][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val - - # Global File Attributes - if ATTRIBUTES: - for att_name,att_val in fileID.attrs.items(): - IS2_atl03_attrs[att_name] = att_val - - # Closing the HDF5 file - fileID.close() - # Return the datasets and variables - return (IS2_atl03_mds,IS2_atl03_attrs,IS2_atl03_beams) - - - -# convert_wgs_to_utm function, see https://stackoverflow.com/a/40140326/4556479 -def convert_wgs_to_utm(lon: float, lat: float): - """Based on lat and lng, return best utm epsg-code""" - utm_band = str((math.floor((lon + 180) / 6) % 60) + 1) - if len(utm_band) == 1: - utm_band = '0' + utm_band - if lat >= 0: - epsg_code = 'epsg:326' + utm_band - return epsg_code - epsg_code = 'epsg:327' + utm_band - return epsg_code - - -def orthometric_correction(lat, lon, Z, epsg): - # Define the Proj string - #To transform from WGS84 ellipsoidal height - # to EGM2008 orthometric height using PyProj - # proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +vunits=m +no_defs +geoidgrids=egm2008-1.gtx' - # # Define the Proj string for WGS84 ellipsoidal height - # wgs84_proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs' - - # # Define the Proj string for EGM2008 orthometric height: egm08_25,egm2008-1 - # egm2008_proj_string = \ - # '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs ' \ - # '+geoidgrids=C:/Workstation/ICESat2_HLS/Code/Geoids/egm08_25.gtx' - - # transform ellipsoid (WGS84) height to orthometric height - # transformer = Transformer.from_crs(wgs84_proj_string, egm2008_proj_string, always_xy=True) - transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) - X_egm08, Y_egm08, Z_egm08 = transformer.transform(lon, lat, Z) - - # transform WGS84 proj to local UTM - myProj = Proj(epsg) - X_utm, Y_utm = myProj(lon, lat) - - return Y_utm, X_utm, Z_egm08 - - - -def load_data(file_path): - IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = read_granule(file_path, ATTRIBUTES=True) - return IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams - - - -# requires that the input gdf has ranged index values i -# will need to change if index is changed to time or something -# this currently checks point in polygon for EVERY point -# would be significantly sped up if evaluated at 10m or something similar -# maybe later, fine for now -def isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF): - # try loading the shoreline data - try: - ICESat2_GDF.insert(0, 'lat', ICESat2_GDF.geometry.y, False) - ICESat2_GDF.insert(0, 'lon', ICESat2_GDF.geometry.x, False) - - # allocation of to be used arrays - zero_int_array = np.int64(np.zeros_like(ICESat2_GDF.geometry.x)) - - # Land flag initialized as -1 - # If shorelines downloaded already, will be set to 0 or 1 - ICESat2_GDF.insert(0, 'is_land', - zero_int_array - 1, False) - - # set the projection - ICESat2_GDF.set_crs("EPSG:4326", inplace=True) - - # load shoreline dataset to include only the features that intersect the bounding box - # bbox can be GeoDataFrame or GeoSeries | shapely Geometry, default None - # Filter features by given bounding box, GeoSeries, GeoDataFrame or a shapely geometry. - # engine str, 'fiona' or 'pyogrio' - # somtime it gives error if using fiona - # land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='fiona') - land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='pyogrio') - - # continue with getting a new array of 0-or-1 labels for each photon - land_point_labels = np.zeros_like(ICESat2_GDF.is_land.values) - - # update labels for points in the land polygons - pts_in_land = gpd.sjoin(ICESat2_GDF, land_polygon_gdf, predicate='within') - - # get land or not bool value - land_loc = ICESat2_GDF.index.isin(pts_in_land.index) - - # asigned them to new numpy array - land_point_labels[land_loc] = 1 - land_point_labels[~land_loc] = 0 - - return land_point_labels - - except Exception as e: - - print(e) - - print("Error loading shoreline data, returning -1s for is_land flag") - - # if the shoreline data is not available - # return the original label array - - return -np.ones_like(ICESat2_GDF.is_land.values) - - -def create_photon_dataframe(lat_ph, lon_ph, ref_elev, ref_azimuth, geoid, h_ph, \ - quality_ph, is_land_label_interp1d, signal_conf_photon, x_atc, relative_AT_dist): - # Apply geoid correction to the photon heights to convert them from ellipsoidal to orthometric heights - h_ph_geoid_cor = h_ph[:] - geoid[:] - - # Determine the EPSG code for the UTM zone based on the first photon's longitude and latitude - epsg_code = convert_wgs_to_utm(lon_ph[0], lat_ph[0]) - - # Perform orthometric correction to obtain UTM coordinates and corrected heights - lat_utm, lon_utm, h_ph_cor = orthometric_correction(lat_ph, lon_ph, h_ph, epsg_code) - - # Put the data into the dataframe - sea_photon_dataset = pd.DataFrame({ - 'latitude': lat_ph, - 'longitude': lon_ph, - 'lat': lat_utm, - 'lon': lon_utm, - 'photon_height': h_ph_geoid_cor, - 'quality_ph': quality_ph, - 'is_land_label': is_land_label_interp1d, - 'photon_conf': signal_conf_photon, - 'ref_elevation': ref_elev, - 'ref_azimuth': ref_azimuth, - 'relative_AT_dist': relative_AT_dist - }, columns=['latitude', 'longitude', 'lat', 'lon', 'photon_height', 'quality_ph', 'is_land_label', 'photon_conf', 'ref_elevation', 'ref_azimuth', 'relative_AT_dist']) - return sea_photon_dataset - - -def Extract_sea_photons(IS2_atl03_mds, IS2_atl03_beams, shoreline_data_path): - Segment_ID = {} - Segment_Index_begin = {} - Segment_PE_count = {} - Equator_Segment_Distance = {} - Segment_Length = {} - Segment_Is_Land = {} - Segment_Lon = {} - Segment_Lat = {} - Segment_Elev = {} - Segment_Time = {} - Segment_ref_elev = {} - Segment_ref_azimuth = {} - background_rate = {} - background_counts = {} - - # Initialize a list to store data for each beam - beam_datasets = [] - - - # Loop over each strong beam in IS2_atl03_beams using the defined indices - for gtx in IS2_atl03_beams: - # Define the indices of the strong beams - if gtx.startswith('gt') and 'l' in gtx: # logic for strong beam - - print('Processing strong beam:', gtx) - - # Access the data for the current beam - IS2_val = IS2_atl03_mds[gtx] - - # Initialize dictionaries to store segment data for the beam - Segment_ID[gtx] = IS2_val['geolocation']['segment_id'] - n_seg = len(Segment_ID[gtx]) - n_pe, = IS2_val['heights']['delta_time'].shape - Segment_Index_begin[gtx] = IS2_val['geolocation']['ph_index_beg'] - 1 - Segment_PE_count[gtx] = IS2_val['geolocation']['segment_ph_cnt'] - Equator_Segment_Distance[gtx] = IS2_val['geolocation']['segment_dist_x'] - Segment_Length[gtx] = IS2_val['geolocation']['segment_length'] - delta_time = IS2_val['geolocation']['delta_time'] - segment_lat = IS2_val['geolocation']['reference_photon_lat'][:].copy() - segment_lon = IS2_val['geolocation']['reference_photon_lon'][:].copy() - ref_elev = IS2_val['geolocation']['ref_elev'][:].copy() - ref_azimuth = IS2_val['geolocation']['ref_azimuth'][:].copy() - geoid = IS2_val['geophys_corr']['geoid'][:].copy() - h_ph = IS2_val['heights']['h_ph'][:].copy() - lat_ph = IS2_val['heights']['lat_ph'][:].copy() - lon_ph = IS2_val['heights']['lon_ph'][:].copy() - signal_conf_photon = IS2_val['heights']['signal_conf_ph'][..., 0].copy() - x_atc = IS2_val['heights']['dist_ph_along'][:].copy() - y_atc = IS2_val['heights']['dist_ph_across'][:].copy() - quality_ph = IS2_val['heights']['quality_ph'] - - # Adjust x_atc based on segment distances - for seg_index in range(n_seg): - idx = Segment_Index_begin[gtx][seg_index] - cnt = Segment_PE_count[gtx][seg_index] - x_atc[idx:idx + cnt] += Equator_Segment_Distance[gtx][seg_index] - - # Calculate relative distances - relative_AT_dist = (x_atc - x_atc[0]) / 1000 - relative_seg_dist = (Equator_Segment_Distance[gtx] - Equator_Segment_Distance[gtx][0]) / 1000 - - # Create a GeoDataFrame to hold segment data for shoreline check - Segment_Is_Land['geometry'] = gpd.points_from_xy(segment_lon, segment_lat) - ICESat2_GDF = gpd.GeoDataFrame(Segment_Is_Land, crs="EPSG:4326") - - # Determine if it is land by the land/sea mask - Segment_Is_Land_Labels = isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF) - ICESat2_GDF.loc[:, 'is_land'] = Segment_Is_Land_Labels - - # Apply interpolations for required data - is_land_label_interp1d = apply_interpolation(interpolate_labels(segment_lat, Segment_Is_Land_Labels), lat_ph) - ph_ref_elev = apply_interpolation(interpolate_labels(segment_lat, ref_elev), lat_ph) - ph_ref_azimuth = apply_interpolation(interpolate_labels(segment_lat, ref_azimuth), lat_ph) - ph_geoid = apply_interpolation(interpolate_labels(segment_lat, geoid), lat_ph) - - - # Create photon DataFrame for the current beam - sea_photon_dataset = create_photon_dataframe(lat_ph=lat_ph, lon_ph=lon_ph, - ref_elev=ph_ref_elev,ref_azimuth=ph_ref_azimuth, - geoid=ph_geoid,h_ph=h_ph, - quality_ph=quality_ph, - is_land_label_interp1d=is_land_label_interp1d, - signal_conf_photon=signal_conf_photon, - x_atc=x_atc, # Note: x_atc is not used in the function. Remove if unnecessary. - relative_AT_dist=relative_AT_dist) - - # Filter out land photons - sea_photon_dataset = sea_photon_dataset[sea_photon_dataset['is_land_label'] != 1] - - # Add a new column to indicate the beam ID - sea_photon_dataset['beam_id'] = gtx - - # Append the processed dataset for the current beam to the list - beam_datasets.append(sea_photon_dataset) - - # Concatenate all beam data into a single DataFrame - all_beams_dataset = pd.concat(beam_datasets, ignore_index=True) - - return all_beams_dataset - - -def filter_photon_dataset_by_hull_area(photon_dataset, hull_area_threshold=3000): - """ - Filters photon dataset based on ConvexHull area threshold and returns the filtered dataset, - convex hull areas, and convex hull points. - """ - lat_bins_grouped = photon_dataset.groupby('lat_bins', observed=False) - filtered_dataset = photon_dataset.copy() - - convex_hulls = {} - convex_hull_areas = {} - - for lat_bin, bin_data in lat_bins_grouped: - if len(bin_data) >= 3: - points = bin_data[['lat', 'photon_height']].to_numpy() - hull = ConvexHull(points) - area = hull.volume - convex_hull_areas[lat_bin] = area - - # Store the ConvexHull points if area meets the threshold - if area >= hull_area_threshold: - convex_hulls[lat_bin] = points[hull.vertices] - else: - # Remove bins with hull area below the threshold - filtered_dataset = filtered_dataset[filtered_dataset['lat_bins'] != lat_bin] - - return filtered_dataset, convex_hull_areas, convex_hulls - - - - - - - - - -########################## -##Discard Functions Below -########################## - - -# Extracts key information from filenames, -# which could include processed status, product ID, timestamps, identifiers, or metadata. -def extract_file_params(file_path): - ''' - Example: input "processed_ATL06_20231115120000_20231115_001_12_data.h5" - Output: ('processed_', 'ATL06', '2023', '11', '15', '12', '00', '00', - '2023', '11', '15', '001', '12', '_data') - ''' - # Defines a regex pattern to match strings in the file path - rx = re.compile(r'(processed_)?(ATL\d{2})_(\d{4})(\d{2})(\d{2})(\d{2})' - r'(\d{2})(\d{2})_(\d{4})(\d{2})(\d{2})_(\d{3})_(\d{2})(.*?).h5$') - # Searches for all matches of the regex pattern in the given - params = rx.findall(file_path).pop() - return params - - -def create_mask(binned_data, sea_surface_height, seafloor_height, threshold_height): - ''' - create a mask for filtering sea surface, sea floor, and threshold_height - ''' - mask = (binned_data['height'] <= sea_surface_height) & \ - (binned_data['height'] >= seafloor_height) & \ - (binned_data['height'] >= threshold_height) - return mask - - -def generate_polygons_from_binned_data(lat, height, mask, lat_interval, height_interval): - ''' - horizontal_vertical_bin_dataset - Generate polygons for each bin after masking within a rectangle formed by height and latitude intervals - ''' - # Create latitude bins based on the specified interval - lat_bins = np.arange(lat.min(), lat.max() + lat_interval, lat_interval) - - # Create height bins within the range [-12, 2] based on the specified interval - height_bins = np.arange(-12, 2 + height_interval, height_interval) - - # Identify which bin each masked latitude and height value belongs to - lat_bin_indices = np.digitize(lat[mask], lat_bins) - - # Determine which height bin each masked point belongs to - height_bin_indices = np.digitize(height[mask], height_bins) - - # Combine latitude and height bin indices for each point - combined_bins = list(zip(lat_bin_indices, height_bin_indices)) - - # Find unique bin combinations and count the number of points in each bin - unique_bins, counts = np.unique(combined_bins, axis=0, return_counts=True) - - # Filter bins to include only those within valid index ranges - valid_bins = [(bin[0], bin[1]) for bin in unique_bins if 1 <= bin[0] < len(lat_bins) and 1 <= bin[1] < len(height_bins)] - - polygons = [] - for bin_lat, bin_height in valid_bins: - if bin_lat > 0 and bin_lat < len(lat_bins) and bin_height > 0 and bin_height < len(height_bins): - bin_points = np.array([(lat[mask][i], height[mask][i]) for i in range(sum(mask)) - if lat_bin_indices[i] == bin_lat and height_bin_indices[i] == bin_height]) - if len(bin_points) > 2: - hull = ConvexHull(bin_points) - polygons.append(bin_points[hull.vertices]) - - return lat_bins, height_bins, valid_bins, polygons - - - diff --git a/icesat2_kdph-main/kd_utils/interpolation.py b/icesat2_kdph-main/kd_utils/interpolation.py deleted file mode 100644 index 7670c89..0000000 --- a/icesat2_kdph-main/kd_utils/interpolation.py +++ /dev/null @@ -1,19 +0,0 @@ -# utils/interpolation.py - -import scipy.interpolate - -def interpolate_labels(segment_lat, labels): - model = scipy.interpolate.interp1d(segment_lat, labels, fill_value="extrapolate") - return model - -def apply_interpolation(model, lat_ph): - return model(lat_ph) - -def geoid_correction(lat_ph, segment_lat, geoid): - model = interpolate_labels(segment_lat, geoid) - return apply_interpolation(model, lat_ph) - -def refraction_correction(lat_ph, segment_lat, ref_elev, ref_azimuth): - elev_model = interpolate_labels(segment_lat, ref_elev) - azimuth_model = interpolate_labels(segment_lat, ref_azimuth) - return apply_interpolation(elev_model, lat_ph), apply_interpolation(azimuth_model, lat_ph) diff --git a/icesat2_kdph-main/kd_utils/kd_utils.py b/icesat2_kdph-main/kd_utils/kd_utils.py deleted file mode 100644 index 39c3687..0000000 --- a/icesat2_kdph-main/kd_utils/kd_utils.py +++ /dev/null @@ -1,1181 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -##### -# This group of functions processes ICESat-2 data and creates a bathymetric model. -# To do this, it follows a number of steps in the form of functions, including: -# 1. Reading data (ReadATL03()) -# 2. Orthometrically correcting the dataset (OrthometricCorrection()) -# 3. Pulling down the data segment ID (getAtl03SegID()) -# 4. Bin the data along latitudinal and height gradients (bin_data()) -# 5. Calculate sea height (get_sea_height()) -# 6. Get water temperature (get_water_temp()) -# 7. Correct bathymetric surface for refraction (RefractionCorrection()) -# 8. Calculate bathymetric height (get_bath_height()) -# 9. Produce figures (produce_figures()) -##### -import os -# os.environ["PROJ_LIB"] = r"C:\Users\wayne\anaconda3\Library\share\proj" - -import io -import os -import re -import time -import math -import h5py -import logging -import netCDF4 -import numpy as np -import geopandas as gpd - -import pandas as pd -from datetime import datetime -import matplotlib.pyplot as plt -import hdbscan -from sklearn.preprocessing import StandardScaler, MinMaxScaler - -import argparse -import subprocess -# import fiona -import utm -import pyproj -from pyproj import Transformer, Proj - -# from pyproj import Transformer -from matplotlib.widgets import LassoSelector -from matplotlib.path import Path - -from sklearn.cluster import DBSCAN - -#this function from icesat2_toolkit -# PURPOSE: read ICESat-2 ATL03 HDF5 data files -def read_granule(FILENAME, ATTRIBUTES=False, **kwargs): - """ - Reads ICESat-2 ATL03 Global Geolocated Photons data files - - Parameters - ---------- - FILENAME: str - full path to ATL03 file - ATTRIBUTES: bool, default False - read file, group and variable attributes - - Returns - ------- - IS2_atl03_mds: dict - ATL03 variables - IS2_atl03_attrs: dict - ATL03 attributes - IS2_atl03_beams: list - valid ICESat-2 beams within ATL03 file - """ - # Open the HDF5 file for reading - if isinstance(FILENAME, io.IOBase): - fileID = h5py.File(FILENAME, 'r') - else: - fileID = h5py.File(os.path.expanduser(FILENAME), 'r') - - # Output HDF5 file information - logging.info(fileID.filename) - logging.info(list(fileID.keys())) - - # allocate python dictionaries for ICESat-2 ATL03 variables and attributes - IS2_atl03_mds = {} - IS2_atl03_attrs = {} - - # read each input beam within the file - IS2_atl03_beams = [] - for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\d[lr]',k))]: - # check if subsetted beam contains data - # check in both the geolocation and heights groups - try: - fileID[gtx]['geolocation']['segment_id'] - fileID[gtx]['heights']['delta_time'] - except KeyError: - pass - else: - IS2_atl03_beams.append(gtx) - - # for each included beam - for gtx in IS2_atl03_beams: - # get each HDF5 variable - IS2_atl03_mds[gtx] = {} - IS2_atl03_mds[gtx]['heights'] = {} - IS2_atl03_mds[gtx]['geolocation'] = {} - IS2_atl03_mds[gtx]['bckgrd_atlas'] = {} - IS2_atl03_mds[gtx]['geophys_corr'] = {} - # ICESat-2 Measurement Group - for key,val in fileID[gtx]['heights'].items(): - IS2_atl03_mds[gtx]['heights'][key] = val[:] - # ICESat-2 Geolocation Group - for key,val in fileID[gtx]['geolocation'].items(): - IS2_atl03_mds[gtx]['geolocation'][key] = val[:] - # ICESat-2 Background Photon Rate Group - for key,val in fileID[gtx]['bckgrd_atlas'].items(): - IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:] - # ICESat-2 Geophysical Corrections Group: Values for tides (ocean, - # solid earth, pole, load, and equilibrium), inverted barometer (IB) - # effects, and range corrections for tropospheric delays - for key,val in fileID[gtx]['geophys_corr'].items(): - IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:] - - # Getting attributes of included variables - if ATTRIBUTES: - # Getting attributes of IS2_atl03_mds beam variables - IS2_atl03_attrs[gtx] = {} - IS2_atl03_attrs[gtx]['heights'] = {} - IS2_atl03_attrs[gtx]['geolocation'] = {} - IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {} - IS2_atl03_attrs[gtx]['geophys_corr'] = {} - # Global Group Attributes - for att_name,att_val in fileID[gtx].attrs.items(): - IS2_atl03_attrs[gtx][att_name] = att_val - # ICESat-2 Measurement Group - for key,val in fileID[gtx]['heights'].items(): - IS2_atl03_attrs[gtx]['heights'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val - # ICESat-2 Geolocation Group - for key,val in fileID[gtx]['geolocation'].items(): - IS2_atl03_attrs[gtx]['geolocation'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val - # ICESat-2 Background Photon Rate Group - for key,val in fileID[gtx]['bckgrd_atlas'].items(): - IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val - # ICESat-2 Geophysical Corrections Group - for key,val in fileID[gtx]['geophys_corr'].items(): - IS2_atl03_attrs[gtx]['geophys_corr'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val - - # ICESat-2 spacecraft orientation at time - IS2_atl03_mds['orbit_info'] = {} - IS2_atl03_attrs['orbit_info'] = {} - for key,val in fileID['orbit_info'].items(): - IS2_atl03_mds['orbit_info'][key] = val[:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Global Group Attributes - for att_name,att_val in fileID['orbit_info'].attrs.items(): - IS2_atl03_attrs['orbit_info'][att_name] = att_val - # Variable Attributes - IS2_atl03_attrs['orbit_info'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs['orbit_info'][key][att_name] = att_val - - # information ancillary to the data product - # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC) - # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC) - # Add this value to delta time parameters to compute full gps_seconds - # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5 - # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch) - IS2_atl03_mds['ancillary_data'] = {} - IS2_atl03_attrs['ancillary_data'] = {} - ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc', - 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit', - 'end_region','end_rgt','granule_end_utc','granule_start_utc','release', - 'start_cycle','start_geoseg','start_gpssow','start_gpsweek', - 'start_orbit','start_region','start_rgt','version'] - for key in ancillary_keys: - # get each HDF5 variable - IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Variable Attributes - IS2_atl03_attrs['ancillary_data'][key] = {} - for att_name,att_val in fileID['ancillary_data'][key].attrs.items(): - IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val - - # transmit-echo-path (tep) parameters - IS2_atl03_mds['ancillary_data']['tep'] = {} - IS2_atl03_attrs['ancillary_data']['tep'] = {} - for key,val in fileID['ancillary_data']['tep'].items(): - # get each HDF5 variable - IS2_atl03_mds['ancillary_data']['tep'][key] = val[:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Variable Attributes - IS2_atl03_attrs['ancillary_data']['tep'][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val - - # channel dead time and first photon bias derived from ATLAS calibration - cal1,cal2 = ('ancillary_data','calibrations') - for var in ['dead_time','first_photon_bias']: - IS2_atl03_mds[cal1][var] = {} - IS2_atl03_attrs[cal1][var] = {} - for key,val in fileID[cal1][cal2][var].items(): - # get each HDF5 variable - if isinstance(val, h5py.Dataset): - IS2_atl03_mds[cal1][var][key] = val[:] - elif isinstance(val, h5py.Group): - IS2_atl03_mds[cal1][var][key] = {} - for k,v in val.items(): - IS2_atl03_mds[cal1][var][key][k] = v[:] - # Getting attributes of group and included variables - if ATTRIBUTES: - # Variable Attributes - IS2_atl03_attrs[cal1][var][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[cal1][var][key][att_name] = att_val - if isinstance(val, h5py.Group): - for k,v in val.items(): - IS2_atl03_attrs[cal1][var][key][k] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val - - # get ATLAS impulse response variables for the transmitter echo path (TEP) - tep1,tep2 = ('atlas_impulse_response','tep_histogram') - IS2_atl03_mds[tep1] = {} - IS2_atl03_attrs[tep1] = {} - for pce in ['pce1_spot1','pce2_spot3']: - IS2_atl03_mds[tep1][pce] = {tep2:{}} - IS2_atl03_attrs[tep1][pce] = {tep2:{}} - # for each TEP variable - for key,val in fileID[tep1][pce][tep2].items(): - IS2_atl03_mds[tep1][pce][tep2][key] = val[:] - # Getting attributes of included variables - if ATTRIBUTES: - # Global Group Attributes - for att_name,att_val in fileID[tep1][pce][tep2].attrs.items(): - IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val - # Variable Attributes - IS2_atl03_attrs[tep1][pce][tep2][key] = {} - for att_name,att_val in val.attrs.items(): - IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val - - # Global File Attributes - if ATTRIBUTES: - for att_name,att_val in fileID.attrs.items(): - IS2_atl03_attrs[att_name] = att_val - - # Closing the HDF5 file - fileID.close() - # Return the datasets and variables - return (IS2_atl03_mds,IS2_atl03_attrs,IS2_atl03_beams) - -# convert_wgs_to_utm function, see https://stackoverflow.com/a/40140326/4556479 -def convert_wgs_to_utm(lon: float, lat: float): - """Based on lat and lng, return best utm epsg-code""" - utm_band = str((math.floor((lon + 180) / 6) % 60) + 1) - if len(utm_band) == 1: - utm_band = '0' + utm_band - if lat >= 0: - epsg_code = 'epsg:326' + utm_band - return epsg_code - epsg_code = 'epsg:327' + utm_band - return epsg_code - - -def orthometric_correction(lat, lon, Z, epsg): - # Define the Proj string - #To transform from WGS84 ellipsoidal height - # to EGM2008 orthometric height using PyProj - # proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +vunits=m +no_defs +geoidgrids=egm2008-1.gtx' - # # Define the Proj string for WGS84 ellipsoidal height - # wgs84_proj_string = '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs' - - # # Define the Proj string for EGM2008 orthometric height: egm08_25,egm2008-1 - # egm2008_proj_string = \ - # '+proj=latlong +ellps=WGS84 +datum=WGS84 +no_defs ' \ - # '+geoidgrids=C:/Workstation/ICESat2_HLS/Code/Geoids/egm08_25.gtx' - - # transform ellipsoid (WGS84) height to orthometric height - # transformer = Transformer.from_crs(wgs84_proj_string, egm2008_proj_string, always_xy=True) - transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True) - X_egm08, Y_egm08, Z_egm08 = transformer.transform(lon, lat, Z) - - # transform WGS84 proj to local UTM - myProj = Proj(epsg) - X_utm, Y_utm = myProj(lon, lat) - - return Y_utm, X_utm, Z_egm08 - - -# Snippet by Eric Guenther (via Amy N.) for assigning photons to a segment -def get_atl03_seg_id(atl03_ph_index_beg, atl03_segment_id, atl03_heights_len): - # We need to know spacecraft orbit info, - # which is provided across segments. - # This first function assigns photons to the segment they belong to. - # We end up making a new array - # that has more points to match the photon. Segment is defined as every 100m in the long track. - - # Filter all data where atl03_ph_index starts at 0 (0 indicates errors) - indsNotZero = atl03_ph_index_beg != 0 - atl03_ph_index_beg = atl03_ph_index_beg[indsNotZero] - atl03_segment_id = atl03_segment_id[indsNotZero] - - # Subtract 1 from ph_index_beg to start at python 0th pos - atl03_ph_index_beg = atl03_ph_index_beg - 1 - - # Sometimes the ph_index_beg is not at the 0th position, it is not, - # add it in and then add the associated segment id - # Warning, this is assuming that the segment id for the points are from - # the segment id directly before it, this assumption might fail, but I have - # not come across a case yet where it does. If you want to play it safe - # you could comment this section out and then if the first position is not - # 0 then all photons before the first position will not be assigned a - # segment id. - # if atl03_ph_index_beg[0] != 0: - # atl03_ph_index_beg = np.append(0,atl03_ph_index_beg) - # first_seg_id = atl03_segment_id[0] -1 - # atl03_segment_id = np.append(first_seg_id,atl03_segment_id) - - # Append atl03_height_len to end of array for final position - atl03_ph_index_beg = np.append(atl03_ph_index_beg, atl03_heights_len) - - # Make array equal to the length of the atl03_heights photon level data - ph_segment_id = np.zeros(atl03_heights_len) - - # Iterate through ph_index_beg, from the first to second to last number - # and set the photons between ph_index_beg i to ph_index_beg i + 1 to - # segment id i - for i in range(0, len(atl03_ph_index_beg) - 1): - ph_segment_id[atl03_ph_index_beg[i]:atl03_ph_index_beg[i + 1]] = atl03_segment_id[i] - - # Return list of segment_id at the photon level - return ph_segment_id - - -def ref_linear_interp(x, y): - # initialize an empty list - arr = [] - - # get unique x values - ux = np.unique(x) - for u in ux: - # get y values for x=u - idx = y[x == u] - - # try to get the y values for x=u-1 and x=u - # if this is not possible, set min and max to y values for x=u - try: - min = y[x == u - 1][0] - max = y[x == u][0] - except: - min = y[x == u][0] - max = y[x == u][0] - - # try to get the y values for x=u and x=u+1 - # if this is not possible, set min and max to y values for x=u - try: - min = y[x == u][0] - max = y[x == u + 1][0] - except: - min = y[x == u][0] - max = y[x == u][0] - - # if the min and max values are the same, - # fill the sub array with the value - if min == max: - sub = np.full((len(idx)), min) - arr.append(sub) - - # if min and max are different, - # create a sub array using linear interpolation - else: - sub = np.linspace(min, max, len(idx)) - arr.append(sub) - - # concatenate all the sub arrays into a single array and return - return np.concatenate(arr, axis=None).ravel() - - -# Bin data along vertical and horizontal scales -def horizontal_vertical_bin_dataset(dataset, lat_res, vertical_res): - """Bin data along vertical and horizontal scales - for later segmentation""" - - # Filter values within the range (-50, 10), because photons elevation outside this range will be real noise - valid_range = (-50, 10) - valid_mask = (dataset['photon_height'] > valid_range[0]) & (dataset['photon_height'] < valid_range[1]) - - # Apply the valid_mask to filter unwanted values - filtered_dataset = dataset[valid_mask] - - # Calculate the number of height bins - height_range = abs(filtered_dataset['photon_height'].max() - filtered_dataset['photon_height'].min()) - height_bin_number = max(1, round(height_range / vertical_res)) # Ensure at least one bin - - # Calculate the number of latitude bins - lat_range = abs(filtered_dataset['lat'].max() - filtered_dataset['lat'].min()) - lat_bin_number = max(1, round(lat_range / lat_res)) # Ensure at least one bin - - # Create bins for latitude - lat_bins = pd.cut(filtered_dataset['lat'], bins=lat_bin_number, labels=np.arange(lat_bin_number)) - - # Create bins for height - height_bins = pd.cut(filtered_dataset['photon_height'], bins=height_bin_number, - labels=np.round(np.linspace(filtered_dataset['photon_height'].min(), - filtered_dataset['photon_height'].max(), - num=height_bin_number), decimals=1)) - - # Add bins to dataframe using .loc to avoid SettingWithCopyWarning - filtered_dataset.loc[:, 'lat_bins'] = lat_bins - filtered_dataset.loc[:, 'height_bins'] = height_bins - filtered_dataset = filtered_dataset.reset_index(drop=True) - - return filtered_dataset - - -# thinking about grid searching to detect bathymetric directly -# rather than bin and then search -def horizontal_vertical_grid_density_cal(dataset, lat_res, vertical_res, density_threshold): - """Bin data along vertical and horizontal scales - and calculate high-density points using a grid method""" - - # Calculate the number of bins required both vertically - lat_bin_number = round(abs(dataset['lat'].min() - dataset['lat'].max()) / lat_res) - # and horizontally based on resolution size - height_bin_number = round(abs(dataset['photon_height'].min() - dataset['photon_height'].max()) / vertical_res) - - # Create the grid - grid = np.zeros((lat_bin_number, height_bin_number)) - - # Iterate over the dataset and assign points to cells - for _, row in dataset.iterrows(): - lat_index = int((row['lat'] - dataset['lat'].min()) / lat_res) - height_index = int((row['photon_height'] - dataset['photon_height'].min()) / vertical_res) - grid[lat_index, height_index] += 1 - - # Identify high-density cells - high_density_cells = np.argwhere(grid > density_threshold) - - # Create a copy of the dataset - dataset_copy = dataset.copy() - - # Assign the cell indices as bins to the dataset - dataset_copy['lat_bins'] = pd.cut(dataset['lat'], bins=lat_bin_number, - labels=np.arange(lat_bin_number)) - dataset_copy['height_bins'] = pd.cut(dataset['photon_height'], bins=height_bin_number, - labels=np.arange(height_bin_number)) - - # Reset the index of the copied dataset - dataset_copy = dataset_copy.reset_index(drop=True) - - return dataset_copy, high_density_cells - - -# Bin data along horizontal scale only -def horizontal_bin_dataset(dataset, lat_res): - """Bin data along the horizontal scale (lat) only - for later segmentation""" - - # Calculate the number of bins required horizontally based on resolution size - lat_bin_number = round(abs(dataset['lat_utm'].min() - dataset['lat_utm'].max()) / lat_res) - - # Cut lat bins - # lat_bins = pd.cut(dataset['lat'], bins=lat_bin_number, labels=np.array(range(lat_bin_number))) - lat_bins = pd.cut(dataset['lat_utm'], bins=lat_bin_number, labels=np.array(range(lat_bin_number))) - - # Create a copy of the dataset - dataset_copy = dataset.copy() - - # Add lat bins to the dataframe - dataset_copy['lat_bins'] = lat_bins - - # Reset the index of the copied dataset - dataset_copy = dataset_copy.reset_index(drop=True) - - return dataset_copy - - -# Bin data first, and then throw away only the surface bin -def get_rm_sea_surface_bin(binned_dataset): - """Calculate mean sea height for easier calculation of depth and cleaner - figures""" - - # set flag for the df save - flag = 1 - - # group dataset by lat bins - grouped_data = binned_dataset.groupby(['lat_bins'], group_keys=True) - data_groups = dict(list(grouped_data)) - - # Loop through groups and return average sea height - for k, v in data_groups.items(): - - lat_bin_average = v['lat'].mean() - - # Create new dataframe based on occurrence of photons per height bin - new_df = pd.DataFrame(v.groupby('height_bins',observed=False).count()) - - # Return the bin with the highest count - largest_h_bin = new_df['lat'].argmax() - - # Select the index of the bin with the highest count - largest_h_index = new_df.index[largest_h_bin] - - # get all values below this bin - # Use boolean indexing to select only the values below the peak bin - new_photon_array_without_peak_bin = v.loc[v['height_bins'] < largest_h_index] - - if flag == 1: - photon_array_without_peak_bin = new_photon_array_without_peak_bin - flag = 2 - - else: - photon_array_without_peak_bin = photon_array_without_peak_bin.append(new_photon_array_without_peak_bin) - - del new_df - - return photon_array_without_peak_bin - - -def get_sea_surface_height(binned_data, threshold): - """Calculate mean sea height for easier calculation of depth and cleaner figures""" - - #set flag for the df save - firstTimeIndex = True - - # Create sea height list - sea_surface_height = [] - mean_lat_bins_seq = [] - sea_surface_subsurface_photons_ratio = [] - - - # Group dataset by latitude bins - grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) - data_groups = dict(list(grouped_data)) - - # Loop through groups and return average sea height - for k, v in data_groups.items(): - # based on lat_utm - lat_bin_average = v['lat'].mean() - - # Create new dataframe based on occurrence of photons per height bin - new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) - - # Return the bin with the highest count - largest_h_bin = new_df['lat'].argmax() - - # Select the index of the bin with the highest count - largest_h_index = new_df.index[largest_h_bin] - - # Calculate the median value of all photon height values within this bin - photons_sea_surface = v.loc[v['height_bins'] == largest_h_index, 'photon_height'] - lat_bin_sea_median = photons_sea_surface.median() - - # Append to sea height list - sea_surface_height.append(lat_bin_sea_median) - mean_lat_bins_seq.append(lat_bin_average) - del new_df - - # Get all photons below sea surface - # to determine segment type of each subsurface water column - # Use calculated sea height to determine photons at 0.5m below peak - photons_sea_surface_up = \ - v.loc[(v['photon_height'] > (lat_bin_sea_median - threshold)) & - (v['photon_height'] < (lat_bin_sea_median + 2*threshold))] - - # Calculate the photon ratio between surface and whole photons - if v['photon_height'].shape[0] > 0: - new_photons_ratio_sea_surface = \ - photons_sea_surface_up.shape[0] / v['photon_height'].shape[0] - else: - new_photons_ratio_sea_surface = np.nan - - sea_surface_subsurface_photons_ratio.append((1 - new_photons_ratio_sea_surface)) - - # Filter out sea height bin values outside 2 SD of mean. - mean = np.nanmean(sea_surface_height, axis=0) - sd = np.nanstd(sea_surface_height, axis=0) - - final_sea_surface_height = np.where((sea_surface_height > (mean + 2 * sd)) | - (sea_surface_height < (mean - 2 * sd)), - np.nan, - sea_surface_height).tolist() - - sea_surface_height_abnormal_label = np.where(np.isnan(final_sea_surface_height), 0, 1) - - # Determine label based on ratio of sea surface photons and subsurface photons - sea_surface_dominated_label = \ - np.where(np.array(sea_surface_subsurface_photons_ratio) >= 0.2, 0, 1) - - # Loop through groups again and return photons below 0.5m of sea height - PhotonDFBelowThresholdPeak = pd.DataFrame() - for i, (k, v) in enumerate(data_groups.items()): - # Get all values below this bin - NewPhotonDFBelowThresholdPeak = \ - v.loc[v['photon_height'] < (final_sea_surface_height[i] - threshold)] - - if firstTimeIndex: - PhotonDFBelowThresholdPeak = NewPhotonDFBelowThresholdPeak - firstTimeIndex=False - else: - PhotonDFBelowThresholdPeak=\ - pd.concat([PhotonDFBelowThresholdPeak, NewPhotonDFBelowThresholdPeak]) - - - return final_sea_surface_height, \ - sea_surface_height_abnormal_label, \ - sea_surface_dominated_label,\ - PhotonDFBelowThresholdPeak - - -# -#Arbitrary cutoff below the max value - 0.5 m below peak -# (we may also use 1 m but we can add that later) (apply to raw photon data, each of 6 beams) -def get_photon_below_sea_surface(binned_data,threshold): - '''Calculate mean sea height for easier calculation of depth and cleaner figures''' - - #set flag for the df save - firstTimeIndex=1 - - # Create sea height list - sea_surface_height = [] -# mean_lat_bins_seq=[] - - grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) - data_groups = dict(list(grouped_data)) - - # Loop through groups and return average sea height - for k,v in data_groups.items(): - - lat_bin_average=v['lat_utm'].mean() - - # Create new dataframe based on occurance of photons per height bin - new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) - - # Return the bin with the highest count - largest_h_bin = new_df['lat_utm'].argmax() - - # Select the index of the bin with the highest count - largest_h = new_df.index[largest_h_bin] - - # Calculate the median value of all values within this bin - lat_bin_sea_median = v.loc[v['height_bins']==largest_h, 'photon_height'].median() - - # Append to sea height list - sea_surface_height.append(lat_bin_sea_median) -# mean_lat_bins_seq.append(lat_bin_average) - del new_df - - # Filter out sea height bin values outside 2 SD of mean. - mean = np.nanmean(sea_surface_height, axis=0) - sd = np.nanstd(sea_surface_height, axis=0) - Final_sea_height = np.where((sea_surface_height > (mean + 2*sd)) | (sea_surface_height < (mean - 2*sd)), np.nan, - sea_surface_height).tolist() - Abnormal_sea_height_label=np.where(np.isnan(Final_sea_height), 1, 0) - - - # Loop through groups again and return photons below 0.5m of sea height - for k,v in data_groups.items(): - - # get all values below this bin - # Use calculated sea height to determine photons at 0.5m below peak - NewPhotonArrayBelowThresholdPeak= \ - v.loc[v['photon_height']<(sea_surface_height[k]-threshold)] - - if firstTimeIndex ==1: - PhotonArrayBelowThresholdPeak=NewPhotonArrayBelowThresholdPeak - firstTimeIndex=2 - - else: - PhotonArrayBelowThresholdPeak=PhotonArrayBelowThresholdPeak.append(NewPhotonArrayBelowThresholdPeak) - - - return PhotonArrayBelowThresholdPeak - - - -# Function to get elevation for multiple points -def get_seafloor_bathy_GEBCO_batch(lons, lats, raster, raster_data): - # Convert geographic coordinates to the raster's coordinate system - rows, cols = raster.index(lons, lats) - rows, cols = np.array(rows), np.array(cols) - - # Ensure the indices are within bounds - valid_mask = (rows >= 0) & (rows < raster.height) & (cols >= 0) & (cols < raster.width) - elevations = np.full(lons.shape, np.nan) - elevations[valid_mask] = raster_data[rows[valid_mask], cols[valid_mask]] - - return elevations - -def get_water_temp(date_year, date_month, date_day, latitude, longitude): - """ - Pull down surface water temperature along the track from the JPL GHRSST opendap website. - - The GHRSST data are gridded tiles with dimension 17998 x 35999. - To get the specific grid tile of the SST, you must convert from lat, lon coordinates - to the gridded tile ratio of the SST data product using the coordinates of the IS2 data. - """ - # Get date from data filename - # data_path[-33:-25] - date = date_year + date_month + date_day - # date[0:4] - year = date_year - # date[4:6] - month = date_month - # date[6:8] - day = date_day - day_of_year = str(datetime.strptime(date, '%Y%m%d').timetuple().tm_yday) - # Add zero in front of day of year string - zero_day_of_year = day_of_year.zfill(3) - - # Calculate ratio of latitude from mid-point of IS2 track - old_lat = latitude.mean() - old_lat_min = -90 - old_lat_max = 90 - new_lat_min = 0 - new_lat_max = 17998 - - new_lat = round(((old_lat - old_lat_min) / (old_lat_max - old_lat_min)) * - (new_lat_max - new_lat_min) + new_lat_min) - - # Calculate ratio of longitude from mid-point of IS2 track - old_lon = longitude.mean() - old_lon_min = -180 - old_lon_max = 180 - new_lon_min = 0 - new_lon_max = 35999 - - new_lon = round(((old_lon - old_lon_min) / (old_lon_max - old_lon_min)) * - (new_lon_max - new_lon_min) + new_lon_min) - - # Access the SST data using the JPL OpenDap interface - url = 'https://opendap.jpl.nasa.gov/opendap/OceanTemperature/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/' \ - + str(year) + '/' + str(zero_day_of_year) + '/' + str(date) \ - + '090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc' - - dataset = netCDF4.Dataset(url) - - # Access the data and convert the temperature from K to C - water_temp = dataset['analysed_sst'][0, new_lat, new_lon] - 273.15 - return water_temp - - -def refraction_correction(WTemp, WSmodel, Wavelength, - Photon_ref_elev, Ph_ref_azimuth, - PhotonZ, PhotonX, PhotonY, Ph_Conf): - """ - WTemp; there is python library that pulls water temp data - WSmodel is the value surface height - Wavelength is fixed - """ - - # Only process photons below water surface model - PhotonX = PhotonX[PhotonZ <= WSmodel] - PhotonY = PhotonY[PhotonZ <= WSmodel] - Photon_ref_elev = Photon_ref_elev[PhotonZ <= WSmodel] - Ph_ref_azimuth = Ph_ref_azimuth[PhotonZ <= WSmodel] - Ph_Conf = Ph_Conf[PhotonZ <= WSmodel] - PhotonZ = PhotonZ[PhotonZ <= WSmodel] - - # water temp for refraction correction - WaterTemp = WTemp - - # Refraction coefficient # - a = -0.000001501562500 - b = 0.000000107084865 - c = -0.000042759374989 - d = -0.000160475520686 - e = 1.398067112092424 - wl = Wavelength - - # refractive index of air - n1 = 1.00029 - - # refractive index of water - n2 = (a * WaterTemp ** 2) + (b * wl ** 2) + (c * WaterTemp) + (d * wl) + e - - # assumption is 0.25416 - # This example is refractionCoef = 0.25449 - # 1.00029 is refraction of air constant - correction_coef = (1 - (n1 / n2)) - - # read photon ref_elev to get theta1 - theta1 = np.pi / 2 - Photon_ref_elev - - # eq 1. Theta2 - theta2 = np.arcsin(((n1 * np.sin(theta1)) / n2)) - - # eq 3. S - # Approximate water Surface = 1.5 - # D = raw uncorrected depth - D = WSmodel - PhotonZ - - # For Triangle DTS - S = D / np.cos(theta1) - - # eq 2. R - R = (S * n1) / n2 - Gamma = (np.pi / 2) - theta1 - - # For triangle RPS - # phi is an angle needed - phi = theta1 - theta2 - - # P is the difference between raw and corrected YZ location - P = np.sqrt(R ** 2 + S ** 2 - 2 * R * S * np.cos(phi)) - - # alpha is an angle needed - alpha = np.arcsin((R * np.sin(phi)) / P) - - # Beta angle needed for Delta Y an d Delta Z - Beta = Gamma - alpha - - # Delta Y - DY = P * np.cos(Beta) - - # Delta Z - DZ = P * np.sin(Beta) - - # Delta Easting - DE = DY * np.sin(Ph_ref_azimuth) - - # Delta Northing - DN = DY * np.cos(Ph_ref_azimuth) - - outX = PhotonX + DE - outY = PhotonY + DN - outZ = PhotonZ + DZ - - ''' - print('For selected Bathy photon:') - print('lat = ', PhotonY[9000]) - print('long = ', PhotonX[9000]) - print('Raw Depth = ', PhotonZ[9000]) - print('D = ', D[9000]) - - print('ref_elev = ', Photon_ref_elev[9000]) - - print('Delta East = ', DE[9000]) - print('Delta North = ', DN[9000]) - print('Delta Z = ', DZ[9000]) - ''' - return (outX, outY, outZ, Ph_Conf, PhotonX, PhotonY, PhotonZ, Ph_ref_azimuth, - Photon_ref_elev) # We are most interested in out-x, out-y, out-z - - -def get_bath_height_percentile_thresh(binned_data, percentile_thresh, sea_surface_height, vertical_res): - """ Detect bathymetric level per bin based on percentile_thresh """ - # Create sea height list - bath_height = [] - - geo_photon_height = [] - geo_longitude = [] - geo_latitude = [] - - # Group data by latitude - # Filter out surface data that are two bins below median surface value calculated above - binned_data_bath = binned_data[(binned_data['photon_height'] < - sea_surface_height - (vertical_res * 2))] - grouped_data = binned_data_bath.groupby(['lat_bins'], group_keys=True) - data_groups = dict(list(grouped_data)) - - # Create a percentile threshold of photon counts in each grid, - # grouped by both x and y axes. - count_threshold = np.percentile( - binned_data.groupby(['lat_bins', 'height_bins']).size().reset_index().groupby('lat_bins')[[0]].max(), - percentile_thresh) - - # Loop through groups and return average bathy height - for k, v in data_groups.items(): - new_df = pd.DataFrame(v.groupby('height_bins').count()) - bath_bin = new_df['lat'].argmax() - bath_bin_h = new_df.index[bath_bin] - - # Set threshold of photon counts per bin - # here this script determines whether there is bathymetry signals by - # the photon counts per bin below sea surface height - if new_df.iloc[bath_bin]['lat'] >= count_threshold: - - geo_photon_height.append(v.loc[v['height_bins'] == - bath_bin_h, 'cor_photon_height'].values) - geo_longitude.append(v.loc[v['height_bins'] == bath_bin_h, 'lon'].values) - geo_latitude.append(v.loc[v['height_bins'] == bath_bin_h, 'lat'].values) - - bath_bin_median = v.loc[v['height_bins'] == bath_bin_h, 'cor_photon_height'].median() - bath_height.append(bath_bin_median) - del new_df - - else: - bath_height.append(np.nan) - del new_df - - geo_longitude_list = np.concatenate(geo_longitude).ravel().tolist() - geo_latitude_list = np.concatenate(geo_latitude).ravel().tolist() - geo_photon_list = np.concatenate(geo_photon_height).ravel().tolist() - geo_depth = sea_surface_height - geo_photon_list - geo_df = pd.DataFrame( - {'lon': geo_longitude_list, 'lat': geo_latitude_list, - 'photon_height': geo_photon_list, - 'depth': geo_depth}) - - del geo_longitude_list, geo_latitude_list, geo_photon_list - - return bath_height, geo_df - - -def get_bath_height_HDBSCAN(lat_binned_data, percentile_thresh, sea_surface_height, vertical_res): - """ Calculate bathymetric level per lat bin based on horizontal resolution """ - # Create sea height list - bath_height = [] - geo_photon_height = [] - geo_longitude = [] - geo_latitude = [] - - # Group data by latitude - # Filter out surface data that are two bins (2 times height resolution) - # below median sea surface value calculated above - binned_data_bath = lat_binned_data[(lat_binned_data['photon_height'] < - sea_surface_height - (vertical_res * 2))] - - grouped_data = binned_data_bath.groupby(['lat_bins'], group_keys=True) - data_groups = dict(list(grouped_data)) - - # Loop through groups and return average bathymetric height - for k, v in data_groups.items(): - - # assign each group of dataset to a new dataframe - new_df = pd.DataFrame(v) - - # Check if the DataFrame is empty - if new_df.empty: - # If the DataFrame is empty, append null values to the lists and skip to the next iteration - bath_height.append(np.nan) - geo_photon_height.append([]) - geo_longitude.append([]) - geo_latitude.append([]) - del new_df - continue - - lat_height_pairs = list(zip(new_df['lat_utm'], new_df['cor_photon_height'])) - - # Convert to a numpy array for sklearn - lat_height_pairs_array = np.array(lat_height_pairs) - - # Perform HDBSCAN clustering on the photons below sea surface for each lat bin - # scaler = StandardScaler() - scaler = MinMaxScaler() - data_scaled = scaler.fit_transform(lat_height_pairs_array) - - min_cluster_size = 4 - - # Check the number of data points is greater than the initial min_cluster_size - if len(data_scaled) < min_cluster_size: - min_cluster_size = len(data_scaled) // 2 - if min_cluster_size < 2: - bath_height.append(np.nan) - geo_photon_height.append([]) - geo_longitude.append([]) - geo_latitude.append([]) - del new_df - continue - - # cluster = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, leaf_size=20) - cluster = hdbscan.HDBSCAN(min_cluster_size=min_cluster_size, - min_samples=3, cluster_selection_epsilon=20, - leaf_size=25, core_dist_n_jobs=-1) - cluster.fit(data_scaled) - - # Get the labels assigned to each point by the HDBSCAN model - labels = cluster.labels_ - - # Count the number of points assigned to each cluster - unique, counts = np.unique(labels, return_counts=True) - - # Create a dictionary that maps each cluster label to the count of points assigned to it - clusters_dict = dict(zip(unique, counts)) - - # Print the dictionary to see the size of each cluster - print(clusters_dict) - - # Identify the label of the largest cluster - max_cluster_label = max(clusters_dict, key=clusters_dict.get) - - # Check if no cluster is found - if max_cluster_label == -1: - bath_height.append(np.nan) - else: - # Add labels to the DataFrame - new_df_copy = new_df.copy() - new_df_copy['cluster'] = labels - - # Subset the DataFrame to get only the data points in the largest cluster - bath_cluster_data = new_df[new_df_copy['cluster'] == max_cluster_label] - - # calculate the median height value as the average bathymetric height - bath_bin_median = bath_cluster_data['cor_photon_height'].median() - bath_height.append(bath_bin_median) - - # Extract the longitude, latitude, and photon height for each lat bin - # and add it to respective lists - geo_photon_height.append(bath_cluster_data['cor_photon_height'].values) - geo_longitude.append(bath_cluster_data['lon_utm'].values) - geo_latitude.append(bath_cluster_data['lat_utm'].values) - - del new_df - - # Convert the lists to a single list - geo_longitude_list = np.concatenate(geo_longitude).ravel().tolist() - geo_latitude_list = np.concatenate(geo_latitude).ravel().tolist() - geo_photon_list = np.concatenate(geo_photon_height).ravel().tolist() - - # Calculate depth - geo_depth = sea_surface_height - np.array(geo_photon_list) - - # Create a DataFrame - geo_df = pd.DataFrame( - {'lon': geo_longitude_list, 'lat': geo_latitude_list, - 'photon_height': geo_photon_list, - 'depth': geo_depth.tolist()}) - - return bath_height, geo_df - -# requires that the input gdf has ranged index values i -# will need to change if index is changed to time or something -# this currently checks point in polygon for EVERY point -# would be significantly sped up if evaluated at 10m or something similar -# maybe later, fine for now -def isolate_sea_land_photons(shoreline_data_path, ICESat2_GDF): - # try loading the shoreline data - try: - ICESat2_GDF.insert(0, 'lat', ICESat2_GDF.geometry.y, False) - ICESat2_GDF.insert(0, 'lon', ICESat2_GDF.geometry.x, False) - - # allocation of to be used arrays - zero_int_array = np.int64(np.zeros_like(ICESat2_GDF.geometry.x)) - - # Land flag initialized as -1 - # If shorelines downloaded already, will be set to 0 or 1 - ICESat2_GDF.insert(0, 'is_land', - zero_int_array - 1, False) - - # set the projection - ICESat2_GDF.set_crs("EPSG:4326", inplace=True) - - # load shoreline dataset to include only the features that intersect the bounding box - # bbox can be GeoDataFrame or GeoSeries | shapely Geometry, default None - # Filter features by given bounding box, GeoSeries, GeoDataFrame or a shapely geometry. - # engine str, 'fiona' or 'pyogrio' - # somtime it gives error if using fiona - # land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='fiona') - land_polygon_gdf = gpd.read_file(shoreline_data_path, bbox=ICESat2_GDF, engine='pyogrio') - - # continue with getting a new array of 0-or-1 labels for each photon - land_point_labels = np.zeros_like(ICESat2_GDF.is_land.values) - - # update labels for points in the land polygons - pts_in_land = gpd.sjoin(ICESat2_GDF, land_polygon_gdf, predicate='within') - - # get land or not bool value - land_loc = ICESat2_GDF.index.isin(pts_in_land.index) - - # asigned them to new numpy array - land_point_labels[land_loc] = 1 - land_point_labels[~land_loc] = 0 - - return land_point_labels - - except Exception as e: - - print(e) - - print("Error loading shoreline data, returning -1s for is_land flag") - - # if the shoreline data is not available - # return the original label array - - return -np.ones_like(ICESat2_GDF.is_land.values) - - -# -def produce_figures(binned_data, bath_height, sea_height, solo_sea_surface_label, - y_limit_top, y_limit_bottom, percentile, file, geo_df, - ref_y, ref_z, beam, epsg_num): - """Create figures""" - - # Create bins for latitude - bath_x_axis_bins = np.linspace(binned_data.lat.min(), - binned_data.lat.max(), len(bath_height))+20 - - sea_surface_x_axis_bins = np.linspace(binned_data.lat.min(), - binned_data.lat.max(), len(sea_height))+10 - - # Create new dataframes for median values - bath_median_df = pd.DataFrame({'x': bath_x_axis_bins, 'y': bath_height}) - - # Create uniform sea surface based on median sea surface values and filter out surface breaching - sea_height1 = [np.nanmedian(sea_height) if i == i else np.nan for i in sea_height] - sea_median_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_height1}) - - # Create uniform solo sea surface label - sea_surface_label = solo_sea_surface_label - sea_surface_label_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_surface_label}) - idx_1 = np.where(sea_surface_label_df.y == 1) - idx_0 = np.where(sea_surface_label_df.y == 0) - - # Define figure size - fig = plt.rcParams["figure.figsize"] = (40, 25) - - # Plot raw points - # plt.scatter(x=binned_data.lat, - # y = binned_data.photon_height, marker='o', lw=0, s=1, alpha = 0.8, - # c = 'yellow', label = 'Raw photon height') - plt.scatter(ref_y, ref_z, s=0.5, alpha=0.1, c='black') - plt.scatter(geo_df.lat, geo_df.photon_height, s=0.8, marker = 'o', - alpha=0.1, c='red', label='Classified Photons') - - # plt.scatter(x=geo_df.lat, - # y = geo_df.photon_height, marker='o', lw=0, s=0.8, - # alpha = 0.8, c = 'black', label = 'Corrected photon bin') - - # Plot median values - plt.scatter(bath_median_df.x, bath_median_df.y, - marker='o', c='r', alpha=0.8, s=2, label='Median bathymetry') - - plt.scatter(sea_median_df.x, sea_median_df.y, - marker='o', c='b', alpha=1, s=2, label='Median sea surface') - - plt.scatter(sea_surface_label_df.iloc[idx_1].x, sea_surface_label_df.iloc[idx_1].y, - marker='o', c='pink', alpha=1, s=3, label='solo_sea_surface') - plt.scatter(sea_surface_label_df.iloc[idx_0].x, sea_surface_label_df.iloc[idx_0].y, - marker='o', c='g', alpha=1, s=3, label='non_solo_sea_surface') - - # Insert titles and subtitles - plt.title('Icesat2 Bathymetry\n' + file) - plt.xlabel('Latitude', fontsize=25) - plt.ylabel('Photon Height (m)', fontsize=25) - plt.xticks(fontsize=16) - plt.yticks(fontsize=16) - - plt.legend(loc="upper left", prop={'size': 20}) - - # Limit the x and y axes using parameters - plt.xlim(left=binned_data.lat.min(), right=binned_data.lat.max()) - plt.ylim(top=y_limit_top, bottom=y_limit_bottom) - - timestr = time.strftime("%Y%m%d_%H%M%S") - file = file.replace('.h5', '') - # Define where to save file - plt.tight_layout() - plt.savefig("C:/Workstation/ICESat2_HLS/" + file + '_gt' + - str(beam) + '_' + str(percentile) + - '_EPSG' + str(epsg_num) + '_' + timestr + ".pdf") - # plt.show() - # plt.close() - - # convert corrected locations back to wgs84 (useful to contain) - transformer = Transformer.from_crs("EPSG:" + str(epsg_num), - "EPSG:4326", always_xy=True) - print(transformer) - lon_wgs84, lat_wgs84 = transformer.transform( - geo_df.lon.values, geo_df.lat.values) - - geo_df['lon_wgs84'] = lon_wgs84 - geo_df['lat_wgs84'] = lat_wgs84 - - geodf = gpd.GeoDataFrame(geo_df, - geometry=gpd.points_from_xy(geo_df.lon_wgs84, - geo_df.lat_wgs84)) - - geodf.set_crs(epsg=4326, inplace=True) - - # geodf.to_file("C:/Workstation/ICESat2_HLS/" +file + '_gt' + '_' + str(percentile) + '_EPSG' + - # str(epsg_num) + '_' + timestr + ".gpkg", - # driver="GPKG") diff --git a/icesat2_kdph-main/kd_utils/sea_photons_analysis.py b/icesat2_kdph-main/kd_utils/sea_photons_analysis.py deleted file mode 100644 index 2e9cfcd..0000000 --- a/icesat2_kdph-main/kd_utils/sea_photons_analysis.py +++ /dev/null @@ -1,323 +0,0 @@ - -import numpy as np -import geopandas as gpd -from datetime import datetime -import pandas as pd -import netCDF4 - - -# Function to apply binning beam-by-beam by calling the function of horizontal_vertical_bin_dataset -def process_sea_photon_binning(sea_photon_dataset, horizontal_res, vertical_res): - # Initialize list to store results from each beam - binned_beam_datasets = [] - - # Group the dataset by 'beam_id' and process each group separately - for beam_id, beam_data in sea_photon_dataset.groupby('beam_id'): - print(f'Processing binning for beam: {beam_id}') - - # Apply binning to the current beam dataset - binned_beam_data = horizontal_vertical_bin_dataset(beam_data, horizontal_res, vertical_res) - - # Append the binned data for the current beam to the list - binned_beam_datasets.append(binned_beam_data) - - # Combine all binned beam datasets into a single DataFrame - binned_dataset_sea_surface = pd.concat(binned_beam_datasets, ignore_index=True) - - return binned_dataset_sea_surface - - -# Bin data along vertical and horizontal scales -def horizontal_vertical_bin_dataset(dataset, lat_res, vertical_res): - """Bin data along vertical and horizontal scales - for later segmentation""" - - # Filter values within the range (-50, 10), because photons elevation outside this range will be real noise - valid_range = (-70, 5) - valid_mask = (dataset['photon_height'] > valid_range[0]) & (dataset['photon_height'] < valid_range[1]) - - # Apply the valid_mask to filter unwanted values - # and create a copy to avoid SettingWithCopyWarning - filtered_dataset = dataset[valid_mask].copy() - - # Calculate the number of height bins - height_range = abs(filtered_dataset['photon_height'].max() - filtered_dataset['photon_height'].min()) - height_bin_number = max(1, round(height_range / vertical_res)) # Ensure at least one bin - - # Calculate the number of latitude bins - lat_range = abs(filtered_dataset['lat'].max() - filtered_dataset['lat'].min()) - lat_bin_number = max(1, round(lat_range / lat_res)) # Ensure at least one bin - - # Create bins for latitude - lat_bins = pd.cut(filtered_dataset['lat'], bins=lat_bin_number, labels=np.arange(lat_bin_number)) - - # Create bins for height - height_bins = pd.cut(filtered_dataset['photon_height'], bins=height_bin_number, - labels=np.round(np.linspace(filtered_dataset['photon_height'].min(), - filtered_dataset['photon_height'].max(), - num=height_bin_number), decimals=1)) - - # Add bins to dataframe using .loc to avoid SettingWithCopyWarning - filtered_dataset.loc[:, 'lat_bins'] = lat_bins - filtered_dataset.loc[:, 'height_bins'] = height_bins - filtered_dataset = filtered_dataset.reset_index(drop=True) - - return filtered_dataset - - -def get_sea_surface_height(binned_data, threshold): - """Calculate mean sea height for easier calculation of depth and cleaner figures""" - - #set flag for the df save - firstTimeIndex = True - - # Create sea height list - sea_surface_height = [] - mean_lat_bins_seq = [] - sea_surface_subsurface_photons_ratio = [] - - - # Group dataset by latitude bins - grouped_data = binned_data.groupby(['lat_bins'], group_keys=True, observed=False) - data_groups = dict(list(grouped_data)) - - # Loop through groups and return average sea height - for k, v in data_groups.items(): - # based on lat_utm - lat_bin_average = v['lat'].mean() - - # Create new dataframe based on occurrence of photons per height bin - new_df = pd.DataFrame(v.groupby(['height_bins'], observed=False).count()) - - # Check if new_df is not empty before finding the bin with the highest photon count - if not new_df.empty: - # Find the vertical bin with the highest photon count - largest_h_bin = new_df['lat'].argmax() - - # Select the index of the bin with the highest count - largest_h_index = new_df.index[largest_h_bin] - - # Calculate the median value of all photon height values within this bin - photons_sea_surface = v.loc[v['height_bins'] == largest_h_index, 'photon_height'] - lat_bin_sea_median = photons_sea_surface.median() - - # Append to sea height list - sea_surface_height.append(lat_bin_sea_median) - mean_lat_bins_seq.append(lat_bin_average) - del new_df - - # Get all photons below sea surface - # to determine segment type of each subsurface water column - # Use calculated sea height to determine photons at 0.5m below peak - photons_sea_surface_up = \ - v.loc[(v['photon_height'] > (lat_bin_sea_median - threshold)) & - (v['photon_height'] < (lat_bin_sea_median + 2*threshold))] - - # Calculate the photon ratio between surface and whole photons - if v['photon_height'].shape[0] > 0: - new_photons_ratio_sea_surface = \ - photons_sea_surface_up.shape[0] / v['photon_height'].shape[0] - else: - new_photons_ratio_sea_surface = np.nan - - sea_surface_subsurface_photons_ratio.append((1 - new_photons_ratio_sea_surface)) - - else: - # Append NaNs if the group is empty - sea_surface_height.append(np.nan) - mean_lat_bins_seq.append(np.nan) - sea_surface_subsurface_photons_ratio.append(np.nan) - - # Filter out sea height bin values outside 2 SD of mean. - mean = np.nanmean(sea_surface_height, axis=0) - sd = np.nanstd(sea_surface_height, axis=0) - - final_sea_surface_height = np.where((sea_surface_height > (mean + 2 * sd)) | - (sea_surface_height < (mean - 2 * sd)), - np.nan, - sea_surface_height).tolist() - - sea_surface_height_abnormal_label = np.where(np.isnan(final_sea_surface_height), 0, 1) - - # Determine label based on ratio of sea surface photons and subsurface photons - sea_surface_dominated_label = \ - np.where(np.array(sea_surface_subsurface_photons_ratio) >= 0.2, 0, 1) - - # Loop through groups again and return photons below 0.5m of sea height - PhotonDFBelowThresholdPeak = pd.DataFrame() - for i, (k, v) in enumerate(data_groups.items()): - - # Get all values below this bin - if not np.isnan(final_sea_surface_height[i]): - NewPhotonDFBelowThresholdPeak = \ - v.loc[v['photon_height'] < (final_sea_surface_height[i] - threshold)] - - if firstTimeIndex: - PhotonDFBelowThresholdPeak = NewPhotonDFBelowThresholdPeak - firstTimeIndex=False - else: - PhotonDFBelowThresholdPeak=\ - pd.concat([PhotonDFBelowThresholdPeak, NewPhotonDFBelowThresholdPeak]) - - - return final_sea_surface_height, \ - sea_surface_height_abnormal_label, \ - sea_surface_dominated_label,\ - PhotonDFBelowThresholdPeak - - -def get_water_temp(date_year, date_month, date_day, latitude, longitude): - """ - Pull down surface water temperature along the track from the JPL GHRSST opendap website. - - The GHRSST data are gridded tiles with dimension 17998 x 35999. - To get the specific grid tile of the SST, you must convert from lat, lon coordinates - to the gridded tile ratio of the SST data product using the coordinates of the IS2 data. - """ - # Get date from data filename - # data_path[-33:-25] - date = date_year + date_month + date_day - # date[0:4] - year = date_year - # date[4:6] - month = date_month - # date[6:8] - day = date_day - day_of_year = str(datetime.strptime(date, '%Y%m%d').timetuple().tm_yday) - # Add zero in front of day of year string - zero_day_of_year = day_of_year.zfill(3) - - # Calculate ratio of latitude from mid-point of IS2 track - old_lat = latitude.mean() - old_lat_min = -90 - old_lat_max = 90 - new_lat_min = 0 - new_lat_max = 17998 - - new_lat = round(((old_lat - old_lat_min) / (old_lat_max - old_lat_min)) * - (new_lat_max - new_lat_min) + new_lat_min) - - # Calculate ratio of longitude from mid-point of IS2 track - old_lon = longitude.mean() - old_lon_min = -180 - old_lon_max = 180 - new_lon_min = 0 - new_lon_max = 35999 - - new_lon = round(((old_lon - old_lon_min) / (old_lon_max - old_lon_min)) * - (new_lon_max - new_lon_min) + new_lon_min) - - # Access the SST data using the JPL OpenDap interface - url = 'https://opendap.jpl.nasa.gov/opendap/OceanTemperature/ghrsst/data/GDS2/L4/GLOB/JPL/MUR/v4.1/' \ - + str(year) + '/' + str(zero_day_of_year) + '/' + str(date) \ - + '090000-JPL-L4_GHRSST-SSTfnd-MUR-GLOB-v02.0-fv04.1.nc' - - dataset = netCDF4.Dataset(url) - - # Access the data and convert the temperature from K to C - water_temp = dataset['analysed_sst'][0, new_lat, new_lon] - 273.15 - return water_temp - - -def refraction_correction(WTemp, WSmodel, Wavelength, - Photon_ref_elev, Ph_ref_azimuth, - PhotonZ, PhotonX, PhotonY, Ph_Conf): - """ - WTemp; there is python library that pulls water temp data - WSmodel is the value surface height - Wavelength is fixed - """ - - # Only process photons below water surface model - PhotonX = PhotonX[PhotonZ <= WSmodel] - PhotonY = PhotonY[PhotonZ <= WSmodel] - Photon_ref_elev = Photon_ref_elev[PhotonZ <= WSmodel] - Ph_ref_azimuth = Ph_ref_azimuth[PhotonZ <= WSmodel] - Ph_Conf = Ph_Conf[PhotonZ <= WSmodel] - PhotonZ = PhotonZ[PhotonZ <= WSmodel] - - # water temp for refraction correction - WaterTemp = WTemp - - # Refraction coefficient # - a = -0.000001501562500 - b = 0.000000107084865 - c = -0.000042759374989 - d = -0.000160475520686 - e = 1.398067112092424 - wl = Wavelength - - # refractive index of air - n1 = 1.00029 - - # refractive index of water - n2 = (a * WaterTemp ** 2) + (b * wl ** 2) + (c * WaterTemp) + (d * wl) + e - - # assumption is 0.25416 - # This example is refractionCoef = 0.25449 - # 1.00029 is refraction of air constant - correction_coef = (1 - (n1 / n2)) - - # read photon ref_elev to get theta1 - theta1 = np.pi / 2 - Photon_ref_elev - - # eq 1. Theta2 - theta2 = np.arcsin(((n1 * np.sin(theta1)) / n2)) - - # eq 3. S - # Approximate water Surface = 1.5 - # D = raw uncorrected depth - D = WSmodel - PhotonZ - - # For Triangle DTS - S = D / np.cos(theta1) - - # eq 2. R - R = (S * n1) / n2 - Gamma = (np.pi / 2) - theta1 - - # For triangle RPS - # phi is an angle needed - phi = theta1 - theta2 - - # P is the difference between raw and corrected YZ location - P = np.sqrt(R ** 2 + S ** 2 - 2 * R * S * np.cos(phi)) - - # alpha is an angle needed - alpha = np.arcsin((R * np.sin(phi)) / P) - - # Beta angle needed for Delta Y an d Delta Z - Beta = Gamma - alpha - - # Delta Y - DY = P * np.cos(Beta) - - # Delta Z - DZ = P * np.sin(Beta) - - # Delta Easting - DE = DY * np.sin(Ph_ref_azimuth) - - # Delta Northing - DN = DY * np.cos(Ph_ref_azimuth) - - outX = PhotonX + DE - outY = PhotonY + DN - outZ = PhotonZ + DZ - - ''' - print('For selected Bathy photon:') - print('lat = ', PhotonY[9000]) - print('long = ', PhotonX[9000]) - print('Raw Depth = ', PhotonZ[9000]) - print('D = ', D[9000]) - - print('ref_elev = ', Photon_ref_elev[9000]) - - print('Delta East = ', DE[9000]) - print('Delta North = ', DN[9000]) - print('Delta Z = ', DZ[9000]) - ''' - return (outX, outY, outZ, Ph_Conf, PhotonX, PhotonY, PhotonZ, Ph_ref_azimuth, - Photon_ref_elev) # We are most interested in out-x, out-y, out-z - diff --git a/icesat2_kdph-main/kd_utils/visualization.py b/icesat2_kdph-main/kd_utils/visualization.py deleted file mode 100644 index d07d80d..0000000 --- a/icesat2_kdph-main/kd_utils/visualization.py +++ /dev/null @@ -1,217 +0,0 @@ -# utils/visualization.py - -import numpy as np -import pandas as pd -import time -import geopandas as gpd -from pyproj import Transformer, Proj -import matplotlib.pyplot as plt - -def plot_photon_height(sea_photon_dataset, hlims=[-25, 10]): - fig, ax = plt.subplots() - ax.scatter(sea_photon_dataset['latitude'], sea_photon_dataset['photon_height'], s=1, c='k', alpha=0.15, edgecolors='none', label='ATL03 Photons') - ax.set_xlabel('Relative AT Distance') - ax.set_ylabel('Height (h_ph)') - ax.set_title('Scatter Plot of ATL03 Photons') - ax.set_ylim(hlims) - ax.legend() - #plt.show() - -def plot_filtered_seafloor_photons(filtered_seafloor_subsurface_dataset, sea_photon_dataset, sea_surface_height, output_path): - """ - Plots the filtered seafloor photon data along with sea surface and seafloor elevation data. - - Parameters: - - filtered_seafloor_subsurface_dataset: DataFrame containing the filtered subsurface photon data. - - sea_photon_dataset: DataFrame containing the original sea photon data. - - sea_surface_height: Array of sea surface height values. - - output_path: Path to save the output plot. - """ - - # get sea_surface_x_axis_bins - sea_surface_x_axis_bins = np.linspace(filtered_seafloor_subsurface_dataset['relative_AT_dist'].min(), - filtered_seafloor_subsurface_dataset['relative_AT_dist'].max(), - len(sea_surface_height)) - - hlims = [-25, 10] - fig, ax = plt.subplots() - - # Scatter plot of subsurface photons - ax.scatter(sea_photon_dataset['relative_AT_dist'], sea_photon_dataset['photon_height'], - s=1, c='k', alpha=0.15, edgecolors='none', label='Subsurface ATL03 Photons') - - # Overlay the seafloor elevation data as points - ax.plot(filtered_seafloor_subsurface_dataset['relative_AT_dist'], filtered_seafloor_subsurface_dataset['seafloor_elevation'], - linewidth=0.8, c='b', alpha=0.4, label='Seafloor Elevation') - - ax.plot(sea_surface_x_axis_bins, [x - 0.5 for x in sea_surface_height], - linewidth=0.8, color='#DD571C', alpha=0.4, label='0.5 m Below Surface Peak') - - # Set labels and title - ax.set_xlabel('Distance From Start of Track (km)') - ax.set_ylabel('Photon Height (m)') - ax.set_title('Scatter Plot of Filtered Sea Photon Dataset') - ax.set_ylim(hlims) - - # Add a legend - ax.legend() - - # Save the plot - plt.legend(loc='upper right') - plt.savefig(output_path, dpi=400, format='jpeg') - - # Show the plot - #plt.show() - -def plot_kd_photons(subsurface_photon_dataset, Kd_DF_MergedDistance): - hlims = [-45, 5] - fig, ax1 = plt.subplots(figsize=(10, 6)) - ax1.scatter(subsurface_photon_dataset['relative_AT_dist'], subsurface_photon_dataset['photon_height'], s=1.5, c='k', alpha=0.2, edgecolors='none', label='Subsurface ATL03 Photon Height') - ax1.set_xlabel('Relative Along-Track Distance') - ax1.set_ylabel('Photon Height', color='b') - ax1.tick_params(axis='y', labelcolor='b') - ax1.plot(subsurface_photon_dataset['relative_AT_dist'], subsurface_photon_dataset['seafloor_elevation'], linewidth=0.8, c='b', alpha=0.4, label='Seafloor Elevation') - ax1.axhline(y=-6, color='blue', linestyle='--', label='y=-6 m') - ax2 = ax1.twinx() - ax2.scatter(Kd_DF_MergedDistance['relative_AT_dist'], Kd_DF_MergedDistance['kd'], label='Kd values', color='r', alpha=0.6) - ax2.set_ylabel('Kd Value', color='r') - ax2.tick_params(axis='y', labelcolor='r') - ax1.set_ylim(hlims) - fig.suptitle('Photon Height and Kd Values along Relative Along-Track Distance') - handles1, labels1 = ax1.get_legend_handles_labels() - handles2, labels2 = ax2.get_legend_handles_labels() - fig.legend(handles1 + handles2, labels1 + labels2, loc='lower left', bbox_to_anchor=(0.08, 0.08)) - fig.tight_layout() - plt.savefig(r'C:\Workstation\ICESat2_HLS\Kd_ComparisionPaper\Results\IS2_subsurface_kd.jpg', dpi=400, format='jpeg') - #plt.show() - -def plot_bin_polygon_data(lat, height, seafloor_height, mask, lat_bins, height_bins, valid_bins, polygons, y_min, y_max): - plt.figure(figsize=(12, 6)) - - plt.subplot(1, 2, 1) - plt.title("Original Height Data") - plt.scatter(lat, height, c=height, cmap='viridis', s=10) - plt.plot(np.sort(lat), seafloor_height[np.argsort(lat)], 'r-', label='Seafloor') - plt.colorbar(label='Height') - plt.xlabel('Latitude') - plt.ylabel('Height') - plt.ylim(y_min, y_max) - plt.legend() - - plt.subplot(1, 2, 2) - plt.title("Masked Region (ROI)") - plt.scatter(lat[mask], height[mask], c=height[mask], cmap='viridis', s=10) - plt.plot(np.sort(lat), seafloor_height[np.argsort(lat)], 'r-', label='Seafloor') - - for polygon in polygons: - plt.gca().add_patch(plt.Polygon(polygon, edgecolor='red', facecolor='none', linewidth=1)) - - for lb in lat_bins: - plt.axvline(x=lb, color='gray', linestyle='--', linewidth=0.5) - for hb in height_bins: - plt.axhline(y=hb, color='gray', linestyle='--', linewidth=0.5) - - plt.colorbar(label='Height') - plt.xlabel('Latitude') - plt.ylabel('Height') - plt.ylim(y_min, y_max) - plt.legend() - - plt.tight_layout() - #plt.show() - -# -def produce_figures(binned_data, bath_height, sea_height, solo_sea_surface_label, - y_limit_top, y_limit_bottom, percentile, file, geo_df, - ref_y, ref_z, beam, epsg_num): - """Create figures""" - - # Create bins for latitude - bath_x_axis_bins = np.linspace(binned_data.lat.min(), - binned_data.lat.max(), len(bath_height))+20 - - sea_surface_x_axis_bins = np.linspace(binned_data.lat.min(), - binned_data.lat.max(), len(sea_height))+10 - - # Create new dataframes for median values - bath_median_df = pd.DataFrame({'x': bath_x_axis_bins, 'y': bath_height}) - - # Create uniform sea surface based on median sea surface values and filter out surface breaching - sea_height1 = [np.nanmedian(sea_height) if i == i else np.nan for i in sea_height] - sea_median_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_height1}) - - # Create uniform solo sea surface label - sea_surface_label = solo_sea_surface_label - sea_surface_label_df = pd.DataFrame({'x': sea_surface_x_axis_bins, 'y': sea_surface_label}) - idx_1 = np.where(sea_surface_label_df.y == 1) - idx_0 = np.where(sea_surface_label_df.y == 0) - - # Define figure size - fig = plt.rcParams["figure.figsize"] = (40, 25) - - # Plot raw points - # plt.scatter(x=binned_data.lat, - # y = binned_data.photon_height, marker='o', lw=0, s=1, alpha = 0.8, - # c = 'yellow', label = 'Raw photon height') - plt.scatter(ref_y, ref_z, s=0.5, alpha=0.1, c='black') - plt.scatter(geo_df.lat, geo_df.photon_height, s=0.8, marker = 'o', - alpha=0.1, c='red', label='Classified Photons') - - # plt.scatter(x=geo_df.lat, - # y = geo_df.photon_height, marker='o', lw=0, s=0.8, - # alpha = 0.8, c = 'black', label = 'Corrected photon bin') - - # Plot median values - plt.scatter(bath_median_df.x, bath_median_df.y, - marker='o', c='r', alpha=0.8, s=2, label='Median bathymetry') - - plt.scatter(sea_median_df.x, sea_median_df.y, - marker='o', c='b', alpha=1, s=2, label='Median sea surface') - - plt.scatter(sea_surface_label_df.iloc[idx_1].x, sea_surface_label_df.iloc[idx_1].y, - marker='o', c='pink', alpha=1, s=3, label='solo_sea_surface') - plt.scatter(sea_surface_label_df.iloc[idx_0].x, sea_surface_label_df.iloc[idx_0].y, - marker='o', c='g', alpha=1, s=3, label='non_solo_sea_surface') - - # Insert titles and subtitles - plt.title('Icesat2 Bathymetry\n' + file) - plt.xlabel('Latitude', fontsize=25) - plt.ylabel('Photon Height (m)', fontsize=25) - plt.xticks(fontsize=16) - plt.yticks(fontsize=16) - - plt.legend(loc="upper left", prop={'size': 20}) - - # Limit the x and y axes using parameters - plt.xlim(left=binned_data.lat.min(), right=binned_data.lat.max()) - plt.ylim(top=y_limit_top, bottom=y_limit_bottom) - - timestr = time.strftime("%Y%m%d_%H%M%S") - file = file.replace('.h5', '') - # Define where to save file - plt.tight_layout() - plt.savefig("C:/Workstation/ICESat2_HLS/" + file + '_gt' + - str(beam) + '_' + str(percentile) + - '_EPSG' + str(epsg_num) + '_' + timestr + ".pdf") - # plt.show() - # plt.close() - - # convert corrected locations back to wgs84 (useful to contain) - transformer = Transformer.from_crs("EPSG:" + str(epsg_num), - "EPSG:4326", always_xy=True) - print(transformer) - lon_wgs84, lat_wgs84 = transformer.transform( - geo_df.lon.values, geo_df.lat.values) - - geo_df['lon_wgs84'] = lon_wgs84 - geo_df['lat_wgs84'] = lat_wgs84 - - geodf = gpd.GeoDataFrame(geo_df, - geometry=gpd.points_from_xy(geo_df.lon_wgs84, - geo_df.lat_wgs84)) - - geodf.set_crs(epsg=4326, inplace=True) - - # geodf.to_file("C:/Workstation/ICESat2_HLS/" +file + '_gt' + '_' + str(percentile) + '_EPSG' + - # str(epsg_num) + '_' + timestr + ".gpkg", - # driver="GPKG") \ No newline at end of file diff --git a/icesat2_kdph-main/load_icesatcsv.m b/icesat2_kdph-main/load_icesatcsv.m deleted file mode 100644 index 3eabcfe..0000000 --- a/icesat2_kdph-main/load_icesatcsv.m +++ /dev/null @@ -1,10 +0,0 @@ -clear all,close all,clc - - -cd /Users/hglover/Library/CloudStorage/Box-Box/HannahGlover/Research/data/icesat2 - -fid = fopen('icesat2_3873_formatlab.csv'); -formatspec='%s %f %f %f %f %f %f %f %f %f %f %f %f %f %f'; %14 - -T = textscan(fid,formatspec,'HeaderLines',1,'Delimiter',','); - diff --git a/icesat2_kdph-main/results/all_relevant_stations.pkl b/icesat2_kdph-main/results/all_relevant_stations.pkl deleted file mode 100644 index fcf54829f688683ef8dac1a7948dc9945aa601e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923518 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%0AyP|v-XK6z+xCh|PidI} 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 PR}C9ed(fD1{oDT^lZxFF diff --git a/icesat2_kdph-main/results/glider_matches.pkl b/icesat2_kdph-main/results/glider_matches.pkl deleted file mode 100644 index 49b7cbf89c5e51649d9bcccd4fe2dc29499d9f0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170527 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%0Dn^MBh>6W`w^3ptVtl$}P4g#tpelVJDR*HT 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 HbW-^rzo`^g diff --git a/icesat2_kdph-main/results/labeled_relevant_stations.pkl b/icesat2_kdph-main/results/labeled_relevant_stations.pkl deleted file mode 100644 index feb3ff25a66cc9ee1f59e4b7a70fab7460f8f279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 941140 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⩔=ryMC9;Oee8QaEwD8vhm) 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
        S5_EI-{&VolVfusbAgp^mLSs zPsWpMG&-4krHp1HJTREd<^X2`Fa0S3=5#e%W>@R!+jD+z=})HXSF3Ds`6|1dzFETS zJ-W<>{gZ6bJvqtdvmV^U!!qxTf$m~*n)QbrbmU=~o^lccB56S+{?h&HL>>bea2|VKM7Xv*`e49JLn#OHVqd*%(uP zHk^$7EYp*AFPooCXW67TIPt1G9?jd?Xa-%nqlMqSCnqzoEZ|q8>B4X6*~t{1-S70W z_T&^U^_xfEy?Auke~>*me)i<+Lqz}O!Fu)fGJF2y(YM*rVwz8ZZ_we-H}ejDiZjDJ zbiJH$9tZS!WzSdH_f!r?w(=*_^Yd);_H^UqeZ)=%15e$=)cuTn!(MhaeZ44D$*cOh z%8G}-iTKg55>?iXOr34mD;oC46_cwQwwrYm)dBcE-C!xeYIM1%2G0-W|FMh}4)GWK zM;kwpf~>%mhPu?9=n`z8IETUsQ;HM-3|d*@a$A)|3TQb}gY5chwE+X|m{$!ORlQzW z1*n8;&}~#fBPR>v6)x4#RgET^>x&8%$zNtGF29?b^_#`JVtgqU48;@I3(U&dblkzm z{U&XHp!7~AnC}*oY1TX8>8(e~Y&x7|lhJUF&>#6@X?oi0W|-c48GbWl>XkC!^wM68 zM+oj2aPV|=ayl7j?I|Yt&Xnf&u*@c)j!xkrBTPnKmXi)wn6R>x^;5bweB2u@Wjtc&Rc^#tdo0eT?ij^ zCl&ce54cVoJU+~xzBtBUj-DMJK12S73ZWcbPOmm+t80{IXUjK8-+o$Sf&TN;RqJB9 zezUwpgw^{M-MRy?1-EGdr^TI4^e4AwO7V*pASIWyzNq+X2iur>X!H z-pJO_VrV!+PeYdF7X%tWH!;)Q0D%TC^Eb47<@g@Hhp+#ne=Bq6-YdUz3YTVgk4T*f z2x?|!?JqAYSLV*|R3X0n>@S{P-M!Y=_Pe{g%Ln^=hkMJ6-~Z&$bZP%uW|c7$8vt9@zjuO93#HDBl%N8)b6)j{92zusZQ zgZNj$Xg9xx%qcXsxSdpr7Jio@Xj zE)KcaQwU-3-4M@1F5Tc4be}sq>>j@Z{Q^`uF2484ixE=&0@vLIA>9M|-$$G==4`oV`kzqqBV=`FmuQnqh>@%$DB zUn>j0{_@{@{c|RO=bt}*_}S~vAAa_XLHzT_PhWiTjN9u+kAB5n^!4+X&$$X{F8qU6 zuRo6q#ix%xdim(d^Op~~%c$)fAS@;x{uxbJ>+TZ@{qOwQ)x%#Nm|yh6+Ss>$`1G?! zx9(m;UHG!Q^&fJ_d$Z2r9ds_=LFdjp=-hj|&c!>}3~=7+*Tp;73-@!=Y=#8E^X1`9_LR<>>?xf$ z*;6|2V9y(|I?j0`R!ip{YzsG6`Hff|=M1d=?LWKo@R#=vTzqyr{l9w;fAZn} z`r-bP{{h+1{NADgPrpTjUiTIaMuj(N9M~DWRpaevum||(Kls6q9)hv@uRF{xDZ4vm zx{D53eaBuSL&)~}e8~7OhK~HNyHj?Tc%|$f%{cyx8L<9qKKF2mKlxRyLGr(}T+IKv zJHPktl9dGqtzU*7)_?c!{piC#e)xkAKlpzA_Xpp9F#lU$Ecrh$`Hz3_$5ZFWfBz@* zzkl+R^}YY-k3RSbo2)@=pheS^+xK4EbFb^U zAO7ekKdfhc`uv4b_1(Yt{1<++*VFZAD^Jb8WV^PfG@e}D4v%V)Pf`O9BE()ll5 zy}ot#V~r}`efrVG=eJ(}@-Zuz@BZ@o$**obdh|@^KYjA(>ei#zAH8Or`RLj6hmXGa z^wHd~z)o;~}5|NiV}hrhUWb@@v9y#CoQ4!3^w(cxoe&L92b4?AASGf51zha zlkfwUzz;wCJ{Os*hZnogo_)@+_C}?TUw``PufM$e(=Wbw@#_8`{^8S?Po6w_ar^m4 zub#gA`6CUJuWtYR`LoAQpMT7+A$|V%>7&nYKY#hj(EGz*|M@@pSHAO|^Izu}oN;h2 zgMU`3;OQTn8SrGN);upWT&0gr)iHH2>ddN+Geff9mgfS9)#A52n zXU}{0|1WgJ*Yekw|5iQk@h={K^8B;gkDh<_=?SC%OFeP^_2s`)-!-g!_4M;s&tJZ} z{p|VkSGQlkS`q!P^nK^Q&M`RS;9Lf0DmXLYnF)V~m@wy^wZC}$^z+A>0NSeJ*K+uG zoR=Q21`!I=rq zO!y`yWK(&D$QdGUg2)*l=QeWYh;NW1zWn!VXZ_;Q(_1ed{q)i87mpst!uqHDsK>Ks zx1TeNHzgz#evhuzE`ttY3E%y1V&mNyx_WyS}^~7KK zPKJA7d{*J}$G7!a*!E85zt?x3|2oIujDv5t48FWy>^9!WJ>etlPk;I1)8{XrzPueD zAgT`+@oBB6n-$&vpmd%8`rV4bmmhRU-1_ACr%xU~fAOo^?}d&3QP?>Db&kOq2j?<4 zQ^A=D&rJARz=U7^+vAG&#gkXJ^^y9|pWc4?`ioDV@*yq1=dRCxeWF*HSGPZT%KO_d z9)0$@sr~u?gwJd-_5Yp!I>+FQgL4_2so>0nXC^!|;h71~On7F(GZUVf@XUl~COk9Y znF-HKcxJ+HlnKw9xO0h}OY9phv2!0k_wh5yoJrxPJ%YU1%H{p{8A+fQF_TF?I{ zv*ur4eoz1Q{H@*HTZg+3_IK~^uJ7*;{|Wyf>XG`1A9m8-@9*#LoD^SPtw-)}?Jpke4l;0e_oVo6xx|;Z z_WK9>!~Lu4`xmBd;w#g>b4!+R_Wu6idL3fo3lm@8+TD4uyLbQUaR0JGMNCY5wY2xx zO<)iA5104Noh2q(b;wM^9gJRO}TjMV*fw@B=e>1 z;)?}M{!M#=cqL2r7x!nVy7;PM5@N+0xZb;es7H43Ofh1BOfK*0>>0r>_Cu~PM!D4S zRZ?i1cvb`Ad$$hM&K=>~4RmpV4ejg5JV?82+EYw@S9Zu4(Yp6wcQ?*HCB~h~JlaCO zB6#4C6_X~eG@vT~RSg$7TBzEHEAv8w@U6`63HiX_&Ekt&)Q-Y;y>No|4dTmNhwxIU zDtFMHVmP*(M|>4k44Fa_=8lQ4%6YW!;;14hRGB+deA%3*Tp?eTpH|WuS_iN|Vv|cPrj5p6tURd&N6hb5gI1Va=)?#DoRJ z?t~M!WQscvl6kb1_Ql9?$PjNE47~v_uZ&}V5{sPE@4%+-7Cinu) z7EXvNmB!h3;h6h}0&*8$mKe;-7#Rqe?kf#lJaH1@{k56^Po3?^#SmxV1Ti#2g9-Rt zlsjEKp^5k^id!eFK3`(^1OwfYJ26A3hu%LFt)p$?2?)d>HfWu8G&`V+ji?b5LEsZ5 zHQRp|&(0mBB;vScW`UOm6_i-uzPN8*s_(?v7ck9=w~H;Xf+i8%-M^&ot_U`<9g@%_ zPR$*(1Qr=;@KO5I2c<9-xVWxQEwN|vk^1Ua5jm= z`SP-h5A{gISGO*Lt1f8hcJ>rstWZ%TOa+H=_MGiEVq*xpRG>;;o)DAENz@zyAYy>R z5AHxV#Lpnl9|KUmb8Gu23O{A@DNBayQV$1x>Vp4>;LFnTysp z;tDK4<|{CS2A@^)H;bcXVE2U$IcS^M?ow-pAl?g_OALIES9S5k3F5rz3M31IU3^vWK^!+-VNg^!FJvxO z%lNCm`JLbUj{YyU1AJRtc~utBPzw%qn_{z6!HME$lJY1_v1M;gI~wJeyInl*anu{t z0$|kH7Ia+<{>wnb#6E{0yOX<^iLA1RIENtSMKD@v>f)I_#5DwItgBFV@r(&#m@itP zrpwC5MqKzuTtiS?&gP)9#2|V-k}j5G4a0;P=;B$Ruy;#N;xEH)~g2 zJV!mmv_iDuAO;n)q{NyUDrupe+kpcGT3xJ*{g9lE7=JDEXiqU-T1@WhmJPA&Fvct~ z@vH_8xfgc#`;d#d4^@*0ajspi5Lb4(*g2SsecXf@g4}r%PeKGf3|MG$EknD2On#G{ z=m^{PU615qX4T&!ksCeS1`m% ze((v$+aV^Nxx{nMj(Z%BoNF!@^B$!RiBO48s3)3Nxzokd62y!x5m+4U#4*LQNYDnz zc~hVo?2#pAX)?0|su)CoPuy1R5Q!;QJU1Ytjq}O&e8muJ;#q)TC-=;dpuJn_;_1A? z7rO-3&$ga(F^3c>Wzw)4AfsIobTRy0#1Z0L;P2QXH6RZ$J;vaJJMbV}WxY57QDU2v z)ElT`?L}HAnPR$Y5nkkSvi+RGTx`{VxN1i)9_$bkPwI_a=D0=8&z|ODtNF;K#x2mbY3pu_i?sj3 zcW6)Xq({WHG@vdgPB!8SEMkU**d@Rx^UAvs7pj0Jf3l}x$uh8sO*;W0TyCay!6(GV z-;k-|4XslU3*R@1nc1iY^^0|*1jRRqnK-z_f;1SSoJYIFoHHY+%8n~<%qJ5N8}X_g za;fW^2KzR%-5}<^AFtui_OS(Y7Clb*Pz@%Y%j&2dr2z_Kt}IIsC*f&SU(KtFt)wOo zUQr|!@2DLSo{DmXDryI@Y6pfeZG~lsV(a6-y{7OAYJ_<{^{p&*KEC=Iww9 z)&Ph$;)@3`w>Ek8yg)H`AYHDwD_1FCLvB$R`Ls449hXD67sh>7qvIe!J(6#rE5_WM z!QNlrlT5V6(vzahfb6d?Lz_bwST0F%SaO3H&oMe@TdA(7#@Q@AIa__c++jM#BUnSK zU$0oXI_g7GDx7(xCO@-0mnQWCz63_!myr*>Q1=kzkY= zA?J~hS3OU=$6yj&Lr;7}Y3u#J?DqHnL;p7}cDc}qB3#ZA3amfDqnwd-m7>&OI zf;hBQPteiY5@eY%Yj8F*OGWj7=S1)-N|;(*%|eYRT8kEn#c4bbG1pVjh^iAy?jxkDmNJiSEB!K%y1uW2JDCS1Z9c1_G7IwvC7#rlRw z`;mBC@UjH#;EoV7LnTY%-XGy>VuDC^bk$zsat8w~-Z})kp&kxiX^@z!7__EoWgeoa z(zZx3@uoiyqFQ2RvQygP;uG4ao)VL>b%-!eis5wH&3dGZRUyNYDHb$OY2)Q7ZI;^o zk$4H!YtnCLhnTZjf%_v<%n2tBA!)N;Bz$si)XIGxqK~wZ%euJL*$043-m+8j$T2qx z5HK>?33{lt=oF{(M`ERz(Wy$R9!X%~uPM$)Qm)i02rBILp)@sWnQnQNF=?#rC4ILmw^dn ziLpeZ+!(BUm0n z+g@kqXG+zjxc9C@hBidaoqBn>#6t0WthvM#U{0n_|3L4G^9#D}K)z;+=002% zqxh6eH>SL=)xK;z6N%0J1`nvH&~^xV0LTVKY3q_D6xt<2EuFalqyUL^2-+N?Jpq_q zVhyGoLYc_-^+=L~cCaiQQI_N*kFJ*|FLlHu-2o}l2I>$O+aoc9o5MJJB|>MPxOFyd zc{Bj@_DA}>9wVzBDG07Z5G!xuOh#2$^%!@iIHZ=`N&`Ve+~S?$ zEJ4eT#C6xR6zj$_W3mjqA(uCZb#`4=%*z|JZxAbKa#YS=8oohsAXfadl6J!(UynGe zK4uQf&JAZPf}|mU%%>Y>E~gm2TPfxc)#dg!B{49h09!6^c;pnTNw1_uBI9hk0v~n~ z3x>Lnnma0ZKH3zwKoiRnOh08Hn~&(m_Q+|;ZfiGB)!Uj@^E&%$6zjS(j=o)Gx8AHsP#)3 zcmwR;Pt5Ujz*c}d8yhk3NKDPg2SJpbS`0^#(77SJE9U;{JE-Pc4=yW9;00i2x z6R9!&q&uv=-~li}67V^6ioQC?3!x zRNOOEeX{^nQgl~-DZi)`+*>k?_V0S5U<*gJr}(Y!h>j9{6rzZZ~6Km6(yAdo(d&ni~|>DovoB&J!vIsASFk z5XXQ_5VvGX1UZ{F+F>8;bF6&>st7FEp}1jE`*80KNkcoSK<`L~-QXKWj*nb1vqcTc zof7lj4DnobyO=Fjjkhl5;O*HuB-V8qD%U0l#Z_Hw_fge+UTnC|7h+wTjGcNUnJ*x_ zHn;qvLzsH;QZRJqHTw|NQ`%gwkIv>0%rI@rjN&Fcc&YkMoQNI~!-K4PPaV?6+u?lf zZ?^{KE&7x@LTo*u#)T^GpoTql;&D6XD<{@au-XbQhr5$1_jdh(LQey6a zr^FkaP!NPlFPxipLKBYZDNb#zW|}sSWGM-dd#Dgc-=T^(mM}f$n|yOV&*p?vj|9m5 zk)=H^dl{+}quRC0or&0NUJ-9qUpFugA(wM$V`n4YWInZ7@tm+*I}U>;HIH`85cA#M zJUd5=T-p>B80j}8G4#Je8JG9xDH@lLXwcQLX$+r&cb5l)!!m^ey%Vi2*`_AQqg z*!V%4OtA+R13Rk1c?xhtcqL|^=r~C+&ntHY-w-!B*h^1D1sDVtaXnc$?~?_ z4UqGu+hdYv9|3u(9MYyb(FcQTJcYQ9AM=n4t zaeTD8va`gbp&sdnQ1ev{F4n;#J6$|OU^=GE%cpGinE;cWhm<_nadmaLOR!o*Q7(B9syDQaT;;c)$RJ=VZ14p@r zcoyKSOYVTcep$k*n~_jgLpJU!#V($#$stplc(0@_G45Err#7#&kF+6bsNm?4h)f@X68w|A=briV8I7%!=S1mi9@fYChV6On(5*!De&E$ zk3$5KY67@33y``zrLEm^dt{!CmnX!Wz+0G^`8qqQZ;9t{hCAz#ZRB4sm2SB2=;o1^ zCPq-4uUkfmWyyMXJ+-j}?Zc5aJV?ckS2?kDjb9QG+HcuFk@*~*1$&DLUUHp^*SAKd zxw;^r+0*7(8fT#Wbpf)c&oxq;M9st_sjgyOG~ku4!fD)Dhuq= zrZE&L(a`51?cLrI>n-xk&JgoCL5RcJQEZ9yfiWd=s~v!_a$Semcx#q$@VqxnF@ql{ zHoNnY>>f`&5^aoLu%C~FdbP%?7M;$=>SLpQ>V;q4qTlKL4j<>Mn8=b96V>I3EvP=A z2XSoO(Pv6Tv*D%n;?vjs%`)R1Rv)K!9BIiBLtuAY#W#EsF*za*`GWtHYb$OHq>A+p zM%bBY5ZeP}#PKx&y|Hd>H+b`_3qmSlQI4x5hPyToOSo zT*f1rV}VK*AfHjI?h0#=PQ(%KeZAyQZP;GF80A=7{Q|q|gDLY64(9q=pMMMX5l$!) zxMQ5HDGWzJZ2TNnIj=#4+dnkJD{5V&({70YGMSIDygr7QAA*(`3^EVaBhk*Woabp- zIS-+BbbZ5Ueb#NngcMUJ855?^`V>@%d26VeN4pMD;b>+fJDQ3P989#zOT?fmVxsw^9vOg8cDQzm zu2$yxO1vS{9ABRujha_X7%lWsvZ=l7#*%s@p^DnU7yAIJVxmHh&+1}&*^QVqYFupjhDI*m_qw20c- zEp4R%)9a%YM$ zLsU4m6~TN@Lf2T@OKiCeAm`x6Q$4Ub;YHu651rF@usaKoS)@>$#rD^$!7 zI1hg-2doGeVlgoGgFNzTrC2-|A3CQ1i%$kUme^WG;sgvbKphsDPO(14S~0=PsAB4p zk*Lxz>}K|f7f_ZodC9GgG^|S#DIQ`#0(>ev0GZ#+1kHeXA!ww*#Dr>ZUILZSwrNIQ zns`=PW(P~cz{~0lCJtsFk3?LfGdP(XOVaoQal{Khcb=GVHmVD3V?`Dmi`|89jYO3l zI^b;4U2NIO3j!`u#l>v$GEfD$b>%UJpf14)1~RskmuOEh!-ADm!iSCvxfR$VI}o){ zymm^Nv>}FLiy>z1=md6Zvv$OTR2p3o151o0={zzZZkeBALS@Ogz=8jw6n7s^0iNS$sr}C&zIdA zhQn^)L(R_uM4VTw7(^yLnpo3gSuz8wA$H}G!0IABihFvAIBSPSO!-s*A3M^vEHSRmK=$*x6imCZ} zB<{qpAZ834anDEgA>uj9o zEAeB6x_q1x3$(3@>44bHP1oQviJF2i?c^$5xF^0BS0P^e6V+uLBAVeVWr>S5FAPhF zAnp(o=6xPns8T&CCWMMtGxG-HVunhiUeXXVGNW7#A~JA_alZNvmLSe)9i}Nu(B=nt zc_afHUY6ZcjH+D_IHX1kzG2b~+LS%;!NoR(Nlg3aU~1mZhC2cfS_fGgh<9A`Sxi-t z;Eo0nyaXhAQ9B}tB|&()G+@ahCEU>z26oiyQ(KkB6^ktq(`vt5a|oaGVvg0KXlU#D zqL@$$B&bM9!-D*mCDN{O3k;G@dYVdjS|Y-8v1vzkaw?cfL)*pWC4q&jsD^AA7C{qF zT1Oi%u|$bnmSlEfz3kVwF0KL`+m`FNjZ!D|NId845_@2k3GLbFBz1#Pyuk^8V4V*J ztL9Zt$|XsIIBZ&%HoKX)2~1Q)aZmBAot(mgA$X+m;9v+1Y$Ryl1TXW$s_`)iZ|EkT z5yY38!Y=rRqJoXMxC#mbY}gH%fY`x25ZELowJ5(GEwQ00>oTry8Y>43cth(vGKhnIX+6!wbxBQ9 zVy7fDK)nVw-ocdE;gf7nDcISQI2aS<=mf+dju6k7SQDTZS4_OPHO-7e5D#YSKR99$ zR2wx6R$viNjx|)#(2HY*lLDK>71#*~=z*qNQ^7`TRa~JG_1YmNR-N>~#%!;Ve>4Hz zrLwzHtLu@92~Uk&Qc}f(vjFuxs^Nt5mo`0GsOVBY6-;IWv}GVMaj}(ag-Qizb$Nq$ z)+O%P*(R>hLKw{60004m1vZynLfWDNv`uXIRvXQ|Cg)Ul#T~?S5>_9^_K4FGHOp1p zT|8%qdZb2+)pTWdSd!w(rLvP4q@)ZG8*zDwI9ZcY&x&c zyQ~yrVB7>S1AI@Ma7aFqX@uGi;~fl5haxdCB}I27V~lN8muQ2*cteKsK5^)E zv@F5@;u9r}PJ-Rc`@QLMtHXJk4yKovvM$8Y{;dg2u||}kJt(X&xF0P;Vgefz2QZxU z$PkO&*BYHK$b2;z6Z4fhJtEGz3cGDvZem{hTom;p&RcZM_B9n~Q#r-j+KlWV1`v=E zXX};2u~?b6vmxbdb#^u6kSXSzb%<^mjJLRG*@?Srin)Bu+KH0V8_E2nz)FM8Mhx{} zcOf>li8nYQu%(S9z$b2AXiq*t418hq`t701?sE7oCYE3n}Xfi19sZ#CVBw=Ag?o0t#9 z&AAG@IXj@K6c^37*bdQlUY8F_iqXQMIS*OdqZ*h`h!f>n@S$9(G;)dO)a7{O(9ZWH zXcwR0eEl>sb$NtX&elb8fh~b7F*q5-u?i5Rt$`J>syO0(N&Bzth`-_%O|Ut;VuIZ` zPmy3ZHDB6@sqdKZxQfp{AE6poaSka8yFtt$bdsQ6hK0#&SO;R~2dOOcd;_5h;_x&8 z`>0}W=ri-=lGpa};!K&ZG~gwO#d+208q0&$g(_Tx^9sm3ue2G?+(0H53J}i;OQiv@ zaSn&b^Z8aqLk@w>P%#yhwp7LT+B2R=4WbU`pu z0?1LWRPkK!Ui7WWU!@)VPx z;-v_p){g>m3psfsbT2Gxm2P9D+7c z?L!{gF-8c>4Yb;O5fe?EqcpK3?WU@P#1tnWWC;iBwl)hHENdPPrkQ0=Olq#AtCZ~<%})m zV=JV@M35xL%(H7MRR6~MiWZKt10XDjtx+Q;h=EQAEqsbNs*1s=>RYkpsfjmCACrW{ z_@6|^%b1Zj#0q(^fhM4Gp1e`^@klI*yops@Oy2I^?vTrtaxn;Dd_z#2f++B>sB;wd z@Pt@C#K(=sH@NuTZKK6WbUYy@yZnYBCLd~ux8p0{OA5@eiE^`B=o>60A-;VKKi0fs z=FM*ysN@_*oWt$AR>Ranwi4*4Mm+Kr^A>%CeAS9o8BqL$94#L!>7n1DIS&^eM9>aZHk0yZy&h$u8;QCBgOv5=o5`r4>1{Nr7WEw+f4dcH6MR<9t zF;%QV0qYKEmnC6fl8kQG#SdYiUV3RxT1mv*rmEb230iYz9s-hgbo|ur(STfi2=FG536CnHs5cdnEp62BZH~(ug-xJmOgM zALRn2j93 zY!wsEj-4cr+~ZL@Tlgm45XTbB?x07q)6bq9JI^NGq!Z_v@Ay-P1boD7z#e1D5{xb& zYkXQ_ZAy}Q2~~+B^GY#|oME%Xs8W}KSY6bXSo|G0;qvb8B!5HeguJvlyM`@pHuI2# z4?IZH=-A~>dI{lih>;Rr%9vO|buZ&Gg^QXh+9S~(6Puk~K!&TPHfM9;iBVWxst)0K zT>r5I08&0B#vQ&AG0_6W#7SYK!FD!rh~R_gEe&Ie)dj;3k(XG4^GfF^l0zw#0>_|7V}P=(zZGZ~zicI<3`9BCkkhAIq9ZM>Y~cw}~0(W5<*L*kJ-eu*_& zggaznY6l>O82&Cx5L4Vq99AUZytZECphu7wC2TOYXj+G0V76$<+!B%|F9}t{pi)fj z0DC*+W(?*q-777CtY5Q8J@ur~M&WPO>WVi8g15jo)N7%V^N2CS(h#A-Zn%*f$xK>2 zGOtWt+=df6_Y7<#Ew8AYV~@=JGDhooOG7mQt+XqbQ6z(_I?0RWv&eiIUQAM%(5qCXO|~_=K{rLr4Rb#378g8Y=TQ zKIc56S&16qxi%>B08WoPu8Dy%ogQrs&qoobj&)0zi4gg6NYvUzO;$QMY|*A}U9u39 zpQud6$~g`Lld=S&oo7cK=N#7Obv+Ui(<*gE9Bs~yPlf}xIfSChToA-gl3h&I)4L-k zm(6Z&#$c9C?>DuCG6M(q^-2Vfr0UrjlLhV+6%%}+Ot?9ywwLoHIqXKvO9Xqno)Oe= zq2pKX6&Af)&`fP&swY1=+jEbX6cs~(!Hwt99XN#gBSGe6eAE=@H4z3N_SbjA9i1&M zo%|z$;2bDVvMJ7gp+!^;){64>_b#yxZNzG>L)*k5n}?_yFw>-j zA#rfT4qt?~4Al@*nKEP6Lqs)xF)@~KNL}F6&&O-@aC96((r8HWE{6owl}xulY>ZnV zQ`<%iP9T~iG1^+gOzrVbgkB=vm{cwDVIrg&6sH*zy%Q0M$LFz4jM1VAWe2J*AnSJ% z@FFW{iCj(t)#k-*aH(QD*h;roP{qe@MfR>OG4ES4^HuXaFYYj6@MXzZC1Od4v-4Pr z-zoFs_vgl4fVrTWM*j8^+==IH!~mj0Gqttrjm*zO#4$qb<`76T2r{0xIa^a3T(!L9 z*YE`LH@_K0kL3D6sATl^kRV?di>Eb3Y_wIB(RtLk$07VW1OYJK+`}3)`%YddH z33)3)LM&n|;SbDa&cAOO*d56ooQDb^C7u1R<*!3v%n3f>Hg$P{z8yU=v9!NwcDM6JY(5~aUls8oKXFDddd zC2ak|sju)QGC~2x#1O$Z3%~N0@=~L5w@01>zuK1=b>b$o#Rdm{?O%#jC81z;Zm{85 zU;CHTDq{dSe%4p|Qg*>(wqc|ERlYLxM6b5+ zE1tFal5PUAt2{QIRH~M9L(^RrdZ831Yi5MzRa_@ zZEt89%fWmMW}AHd&Ki%uj0ZW3ZUO~`Dj>RaF-u=SjY8&Z6l^jV0QeGSm~a>!KbU54>S<}1P* zcjlun(MH)X=z6!lG%DqH&-iGg8t2A!cDXDZGN$GWluZl?Z;+m#yGaV+%{3`s+7uCA z%0W6lu+&QL<}axsW?#m_USG+gd#+|&+xyk*tAAI#-=_3V60CY9?*n=*PxL~|+j%3& zoba+=?uZ(U%~D98&}(2DE#NDB7gJ>nfkgg_k6X>vkNG`{61hS?DHiJ<-^EEIr)H#X>v89P4?u>qS#eF&DM@CIR14iUrLz-&gxT)5?e z^Mqg27iO^X-k5=3tUgGJDySPzQt<2KEINw_^!7@@_`FF8ha0Noz`1TDn?7RkCAc@% z5!-T@UlOXjg+f{^xA2QqRk7&zSa3laki)tZk1cSB^?DD}G|M+}AStGw) zDIRA7E_we}F|9d@rJp@JcFbk-5FV+e60RzIOH3TN{XstVNN%6NIgsMoQw)PBWaALs zRW(}%KfG0pDuW1icT4h+H5sQ*$o<-+Bb+ZCb77S`tnCYT|Cn5p4v*}Iy=R2my8*s z9TL;l@!5z^9RgeOiA{@1J#r&XcbItS3P)bvAO>ta@<{tg40V9mxF)#v4Pwy1bQo_7 zVog7sFYyM0C64yEA{b}u%8ln{;0OD$WlV=#w1lkhGfy#~5%Vrsl^)zmkTRAr`QT9?N-T$7ciN@s469E#VV$*gAw} z8tdW+-x8BZGGDLj<|A<)F>J5Yxb_X=laHK-=wlVzL*gCl237gUu1z9yQt9}Pv$ZhM zC&1U)^#9nF>3I!RL)`f!wb^&k^v%E&gILBK69?Pt^COIp*6LCm4gI7T>y8cy?RxE{ zseon~+e_U+j?RvctVB8|PSlRbJfF?5?35*9%~OwLhSk(I4q34@VscrJjF_kz^ojc=p4#KmFx;8i zxX1?)>X4hYDOcJ*S2Rkqv^gZj33NSQcMMeUGwZeFDwwWE6# z)T<3jgAWs4>=C9mIAL`bXJ4|IDs9AZ-Ph>cQH6~`k7zsWORUd3)gc_rHHeZrq8X0Q zk8pyIa z*CBMfZ{uujUt;Z%GsLX4zZQ4iBPMUKo8EYYSYRJF0cEG73T-e*4{fMY(~Zupf*62M zc2p2?`LII>)%lU%WMIhw$6GZhm#o2#Dvcp0Z(b{D?9-G>+J7vUW&u{xzJap`PU4#H zVEgNOBzz(-nf;2{vKnaUCnBf|!nQ~hK}ZRrT17Iv%saOc9$uarx8Om(LT}K=_Gd12 z2*$*##tU9;F9S~vXRggiAMy0Jewln>{e+aJhb@~w6&ufv=P(1Vk<{3cgC6;I>eg%sa`yszd_7}j1SeV8_dvt zN3lLO%)%uWnEHfud6{BH3npq^r?StFvuWs24Q00$@h1k68?;kA?hW>{CV}r1gV=Ij zXP=l))**N&TuzPY zBT;-jtT3oU2o;x)*t7W|loUh_r}Lq)h1gNWecY-l?o=@19X~;!A8fL~^0UWrmvX|( zD*iSfIZzdMDRt8FGA+rMs5TNs=Gm!>k+UqW`rSq|}DQFJX{5BuC zoY&=Y>wLVL@pb2fJ*cXm31Cx+xORBlbf-IrqcI*|#p&~uD*g|5zoS)A{ehB zG!m>dNX#L*He8E9xdRn&%^#m}T=AywP$Ue4tM5pgaz&f7mpc;Ecj9#wi;Dt8hDu9; z_-XkPuU1D_v<>SyR3}3PP6%x5?HwmUO6+}X38Q!?DM8+AOdRo!n*e-LILRiU8G=iL zRdLoO!-9TrWI}V)C3irm{zP432~e45Cl!2~j~rkNyQ#Dd*uoN{nQV1JY#;fj^SHRU z%AG$&N=n1p3@=Og+}#S*NCO4fN@}Emw{J1zbb8dw#5SJ{OJW7=gI`uLyBX2L9218n zvHZ7r@U51#p%Me3nY6@E^#)7mfJcv{xLMY5U5396nutLx*?|YPV9V8>erKUI0k|qY zbj^HLDVCQE+POqugqL3G!wGF#AMqv)@a`I&hnMklvwWq1oL=Tfe2#iCJV-SdPDWtk zRj<{~j3BSV^we@Ergd>*$a(OmXHiwk^D%a4}v6e2yN;xJ57G!&-Jh(8LkT(aUzf zR4xN2$MMcLz_v5R5*C>3@S5Etu;1n*6UcNxdC8i(W(XRZY&_n!Xswc{S}7)%>X&iF z>Ye*HKLi6gL|bRV2gHAy42*xG1*5^>v^#roF8_H~S?(aFxCtz9HE32~nVUB}7&Dvd zNuL{5Zlb@%Q1wrTB??vkTUvcu&zg@=F;`9g&H_9!-YN|d!5czleBz;k z!s_gI2-Uk;61&F@nOb(<{>T-Reii2mooiY?dBmr6s_y`Z+zg}5ZDsrx5W$DL6nw%I zMr_9~PZ;80Ou+e>ta{>V$BHGdICi1qO$ zn3QN)cDR4U%*O9j@J9ll(AIEj*$GsUF&`7-1|v(9Uw4O+5-D+UC7sJ|HGv$ov1G+t zVzlXsn)+uN5R0ocmd@W6gO?JcO`O)qFR_?LVlm{(j>Pejh_f&2cb$axXh$5<#c1ny z@U#?z?|7HN9k71!sNx;F0)6I8TZC!1#AxgH`ox-d95xHbGBO4{5J>^RRVIfQKK19B};TkTfYh_@GT%y zlpL~RGJp(aa{RJn09h*{zF}6H#GDQLfY=oi#Cod&s^}yp2C=bIBCwV;AvSIqIDc4a z7(m8zk@9@x7%iX&?tse@i5V@_&>B|(O|rw~y0Z`BeA&`UN-Osm7Bm=G(h#G~!D>{? z5}?UVH{LFLZ$QjwLE2#&I|OJ(yur7%qcK|GIqhN9{1`2044l)+l8B~7CRXOlFl zs*BMUc03JeD?3ma^}SLo#F8Dsbt6`Gs2wr;avlW5o{d)TX#kqJhrpettoW@r zRhl8j1@VO-*7DiUQK~Tpxs8VGE@#&86jdpUZ zr5GTi&Apg&8Z>F>6eav^F%iDers=|i%N>bfHf`tKc~LJ7J!0aP1in?Py+sGU>542f zE>{E---yY)F+}1Uv6{Cz4wYqSCcY{It+-fKsQrFP;& zEZ+VT-?1=0tlAM`(bg2wpoy5X!KKz=6Fz8bKS<%UF;PI~b4o;zLl&wez8*DiRg9R? z0xD4JY1&j8DAp8ap#tA%<9ufb#AwIh=eY#mjQrF*jxM_e`)gqkuz6zy_Gqh(a2c3h zf>`V(k@`IwD^$Wa+CUTk%|OIx6YoxV;5#oLfYvNQjJ5#SdNHt%nkR34MoxyH?2R}C zd$eI>l5Yiwn3w=ImCteq*b~7(Y}dw;Oqz99@i%*WtfM`c-G~{t2p@me^eB9zO(K>2 z^+?2VCm|E{%UE+h(FZob4#~Gl1NIDOT+%4lb%^lID8~sf#7cw2G0HJ$?^YTR>q3Uz zRPi!UVzkKtCDp_l6JZVTwnBxrEJ2lmST!#oLt!LMgg?EMm|<9Kw?V9K=m%1B|8f~9 z48{$eq?z3U8*LQl!JEY!F-`62xfdFuVfG*+5hH zUT@zLKG{ZrkEKC~&BmxgUNH%1k{xo{`CEVhgT&h`0fPX7%wtSDM1X)`+r%LZqD}jw zE?2xI4zPg}yV44S0ZjsHR3I_h#0f9kA+iMLTSG@XZ!jdy3>?tpV49!-IiRVMTAx$W zY!CHD=jJZu)qptqJO%H+QbR4S<(P9+B5;7b7dZJ00J^SG-y)ABvK!fu#y7b@na9FhLr~4J6`f1 z5w(UK9;ta@JrcwQLr`o^c!<$f+irJ25X*HUR!ugU3dnK!U}iJ;h-1;l#U5D1G30Q4 z>(oolC#swwz;_Ng1aW0Yh(%iyyz_~~XoD))U}av2MVkgAUYgEJ44-5#ZrWlW4G<8% zYm0rTv@O1MouK{oK^q{$5VTf`+s+2DF}7%wTS*hXgR6MtZh1)r;S;$7?3X1eR@2cS zHVs6~kb{?)ezCx&m~b}FJBkUGP-bMu3?wF@O)hOL=MeE=gsMjn9@Hb@?-tm!M6GAB zy=tD(g1!T)x;u4m5We%bl#jL>Ba~WIk4j7^RF4;I28-!dL*a~y+($c>WEMk-2`%|S zd)b0GXC-=|T@EEin;HSL%M!$zl~nRuG1?jm+)uer)vFkM6QOJdiO~ZMDJdp^T${Wy z(Ply+Ih<|0i91Xv1ca|Fj*yoz{cwmyQ0|1b(AV-d{E6A&3=cBk{Cp)vT#JXO!xt7%9~(ilY=TaC;E zsdhO`=gB;^V}qg$%+7<2&5{A+4xdOdM#F^l4;*MN2z;x>&;wgc)Q!n6f7;nfu@2sZ zDhC%}zu$UE1l7Ckkia*dZx|v|OpB4DEyY3XO4_P4Qmp$ZwJJug0`p{*;Xv7CSzoI8K|VeY!IHV8q+{Qlm1HPbr))4iW^@@ z@m4HwZ`-aiAF#LfCFd!U7#HkPD=*R3(7Q>R<{9Fo<TWZpvQN#?y`FNktaAAvaxf6g8%`R<;L2OX( zhS@kIi==7iT)^4BSV`CmfF5so88ZjK+FQ~B_R+aEfY5|OoWx5WZy87qdN0m}5NU7s z|AalPA!b{sN-y!e*LY=j$hd9O-pjnShvEF^eMX1`*5C;!xfEw;d9KV+VRB0(W zP&LF{C`hsT*RmVuWBGwQ2Qv^c+RU2ZZDc18(Pf2Ufpgl~x~ve`g(_+DJ9MyH8Jk1S z5M#HBa$cKKEcOX9Eg%nZybmJFRmCaB5}1t$79fT=n2p^+fi1;g5W>TwnoK2*PZLpT z8|UMbcp8QwiP4KwTOE*Gs!mn};|Cl?^?ZYc3NhM{Ab@CMkrJaEnYTmubUE4z_PikI zk?||Gs6J@jGmjYU*1S?1Qj&GhtfiPAc|lwE-&qZ*J$f;Z991ka9~FdpX)uJ!>_!~7 z4Dz-g#F5&%!9AYg;k+FA13}XEd#7w4ShqZvkB=*jT zLB6LLao%^xr7;A{kGLJF9h)VH(T-et8d!c%Qi9YRv}GV-N-E})+C-#SG($okT47n_~c4W4V~Hn`6D|+3{Euo zOy?zr!qCp^+puJa(I$Kg$SKZS^syLiLPed7z^3-NMMFR~V(+Uj`ESpyg<^xMofq|zA!1-BN0dD z5qr(YkI;$j$fenh812@g^~m^TzvOpQJBZQd;5C^_J7^v3pk34B5VIj9f_%l`!>|5h zL#Rt}D=Eax$lBO!v^7y{bewZlo~;cbB?Tsol;H0eMBtN3v9u90h=eA@DcansDa8I>fxqKvm6T0U~IfB7xQ~?d+s= zROti8Z16XK1$emYofM$MuaO*;~A0)eU@9Cw54zx^)u(%N7&F6ba)N6lO7rRW~Q-(q!ct zt8Q?jZfDe6|A?B(#|(tlNiiqjzg4kT5i!Is>Qw|0qaCzfSF98ZKFqNlK6#hIb4@NQ zRJkkAj5xVUteLbP#8H-{7%~;U*Yr5VG=YfVuJd<(igoqNWaM4aIt^wxpW;F5WVwsc z1|%ZRv^%v$>kOJ8f87B!#K+kHd2jJfTF1+^vQem#)*%zBs%h)qKpQ3AhLfOmi3zL$ zB5yD-1bH*~T5u?I{vG>W>tk;3dWw2KkwV z_&B!M$7%<0zH6epT6Xd$8~_BCv`6aNskx$+RQ><~*y#mWBflmW3l-w{u|j&W!ar zC*CCA`GnpOJ&nymU9JT-nm}wVv|cuvp$Wu}1LvKq5Tl)>WbVNBu|FX!K9(bflr$!_ zz~;Z7%Q(HIbrD|N=XYiaY@Zh!kZ)-~j5a-Vy@QcEuzmDPMbH=-apY1MG`sWPBIWK1 zDO=`g0`bu`t+5Q6usvSV0VpXu1Tite?ltww64)MX$=Vc#IO0uUYd@IUT*!hoHuJZJ zVMdGIcjyfblYFa}_j5Zb0#2Wd7zjePH&>U>f z8#Snhvj;;AF%3ONqWz$mBx+~|F=4498DeM#xYA5U(o!s%fd@d4oeklkt@bxLHnp{~ ziJn#+aEQ@Xtv0TL?P>owuWwi}K^(It^jMZCJFq?4u}5}NLX0+@gu&0q6t+hjTq@*# zw&qyqfl!$?Y!6p4AomLbV&+&1p5|rMfb(e6NfefKHsV;n37X~(9T07zO0gMY5yy-y z#E!ESD(vQ7Ow!i$IKk{-*F6q8G)0?w{}Im9ve@zh%I zq?lYP?L@F;Uh6kpWKy!a%v>r?6A+m+6 zw=Q4nY+5wK0^==**xA{+H4ildqZe}%0QT-Y;uwbM#ondjo+cgyh8Ebkr-@@Y$BKle z8$C^>*|gOG$ry*2fq730RC$pgMmt7Oe`NJyoZp-Ch~radJhGrE_~bo}N5WNBJ8@3~ z$jr!|ow%ogSY7kY9mLUhXb(Q&o+Qd%o|a|r<4={fqm?3#91VrzjOV@jLah~f{4+MMW7YQSif&Jv`K?gST+IOf#xGu69Agjjs-TGKwOuddb0^= zlhLNfYUn_-+{v@m1jsy9Y;~DUAl6t;1=-L=Jq>Kp1RxG^?8>En4OYC%V6)&H8x377 zebfZVJW1>0ZQknOK?vW@j$55nfxR&sY!6NZ?)fTAULpo3U=X{F*=Uuc2hWTo@Iw7zyKwBXrzRgc#}(r+AM+X(PsVz_U&wC2ct3FvIE=4 zaCSuN8W!k9Fq>Hd+oR2}AV+7VsW+faR6&*TAZ#C(R2gH`i#R_%iP#tdT93C_z-MQV zL>%wDaNaF})`=jh{nCV(2xf5`$3p99M|X8-B1RjUAuRStXg#=!6gy53qs?Vclgn}* zT953gUz$6Ji3$1DQ0>~89m>@$f$h;|Dp*`4utDo_ao5$*l7^Te=LAt}7=|90!puO} zK59qqn3vExUQ#5q9;*h#5kbwY<_@%;muraH0*jc@f^8zb(GC%xju%iqnIcA;T4lmB zXhQ2T#77OTP$AASk(eyIMeAsT29m$Llo)N=(eiQ-HD2mAHe2)%<0TvezDIVFdX;(3 zCOgBxAx4|R0V*RVDHaBWhDnb@jCK@YQCNxa?B!K1_3#`F$+WMVW1sgTEPD2<(=6 zcZ@B-mE(;H;BT}EEQD{5L>$8zu6Jy1hE~Wk%-i2x>z`YzpwJ5!ydvX4#c_O>Fg7~U<6c&3aq%{Z*Gin6HssXtKa+1?|n!A_vQBv zJ0+E`UkhF=X?FH(h@5YuQTJB~h|$I#0Au-p-_h2cw2fnk(N^l37=DjSEJW^&6LDT* z$<(SX5jhu4)kGU65XZGtOJ4&cL>|{ts}^~QIIpE^Z7wlH4o@ooZS#N_=7Y;P7#sLE~d&kSgmOt68t_|N*BYEtYUzY*$t5=t7=g5L&T~|WJ?-Ej<)8d zcGp6THgJY2tt|3qbKy78Xnv3K2)`fMw4PM4rpM zPPT~AX1Wv;tuzoSvQY;)mInAeYKPY=o?;jqZBheN3=oLXR)+u+ z>yZ#S+7K1mT^!YL322Q^Vm{{(vg|WP%;yolEx+SsbOWC;Vm_BUK*gMo`CQ=U8_bfJ z&k2>Nz}$)XJO?b#PR!?`FlBjp8S}aBEVyHRDduxBuXU)UIOg-@SZ8F!+!WxL9zlqj zdj;&%a~b>%zDa}cDT2S%GSD_lg1@PGLEM}V{ub|2Crx|YS^6y`_*-0sf#y!~H~m{} zZN(({8@qAdLY4f@g{@O>@wZGj)=d5eI~p+8*~#BjU+0tLZ#oJ0W_x7vH-$r}tVn{t z$<9HP;%9?ct#L`QSpuy`b{N~;dH6eLx<0=kjtNkm+bn^<(GGVuVzeP|7}*|~^LZ{I z&H0?qX)wJ-$9%2=)Hf`5Vm_xx_~Vr(K8=3aXCuVS&;*v&V>rqAJX-Y5Qk?TSfu*EY z6Ug~ogvZFZ;+^xkV2_vMY|$fxcO7?I6>{30V$F+!YvWi5FSQXjZOw~l1N$yUTa&^Z zTauAAxrTvN+(R7N*jUb|Se7VGb1)p@)F$5MPEM|&U6WF3YjWMjWPYLw*gGJy31By+ zY4Oe`fG?VJR*JI;AXc%tIM+oCe!G<&4f!+y#unmjsDkZ-s9~SI!6%yl;O-43n*d@A zw6n7bAjX|0&L$uhGXn`#Gy#%U5!9F%O+W(_@wU2*CLnQdqq(F(d^G!0uE+qgg({kW z4#6F>B$|MLbk8MhkG9HeL+e_NAchC6xM>2Rt=?z`A`WeRbYt;&> z$j*S~5Tnfqw(e;XLt$uZdYXJP#AwIGrrLjsbLoqh)#ry8ZN`>G94VG1A}XG`nitH5 zb}({zDcIwDeyE>sFbpD&1*Zza00FJXI+V^`G08(ftl&zD4G_>e+9XoP$o$;yJ35(7@Ty5Kui^D>C=bG4E?a?N`nw}RR5Tgw= zsRnCauszzkSvSH%j5Zn5VBm+y5=NP$O%B>I$9i4HO#m_48!`7{T%&T@y zUBq#VmbQ5rHv!FT#M?p@Hvz;Pzwd0HtqymrcH$-g$515hrAS$1s^zIUkC-CK`NYaK zZUWQ}u=f@nHvyFtb-C=$n*d_|l!0PRm@Os_U|$#<;+$qkQ0omjDUr9T`P9z&=uxN?Gf88BgIMszA&~}8VD6>$Tn)354MNuImA;OY|rylJC?Lyd&DXqI|Q~5K4BiL z<|RuI=XMLz?GV^Lwp-MMS!Jz^s0w{bGTEL1g5F?&NVeyBkc8zj*&ea#WIZz3KIqY_A=#c_>&EQb zVtb-W&0C6-?PEc|w+JTNGc3TG=4G-yMRL>xIGe^u*D!aO?O}TmtMO-95_=yw_Nuq& zWP2)&G??A7_YqN3#b!yeJ+KE@c6PFT@V5^O!S))435yvRY_F-W7a+8rBN2pWX$ZEL zJBSSs!S-^8Xmv5;7THnWmh-{(YK%myi_s=EH1y?8vb~^5FJ5-%-bY2kBij%U^-6n< ziAn3~fOG)3YMh;7tq^n#*ox7Hr~sRt4TYhtt~jfBHUVOyGz@4CwvW{Z&KE-rF|;0c zz-rMc&UQrRi|~dRZMqATV!b$<00H6b6{^t$XgVCywABQn?>IEG36KUFjDani02!l- z+aVfnIe2@vKJE@6_y()X82MpozT#v$n}Cd2fT$)QRCRICIs=r0jgcQxid&t}Y=|K| z1`#O5P?b$U{n_C&ngAr&i#wYDWrl(65H$hyi^e|L1Tb1KT<&BOAWquoFL5@3h)Ll@ zJc#&ODW)2(?2u>zx*({n`5`m`O$F4685m7K!6s=|uF(XPhJLGq?c;Uq1r=-XLCot| zXoja+6~p#W81w+djWrQNcz6z7ncc8G+7uumH$Wgpn*t<)_DI;CA`!>5!4Gj1AlC`s zTEO;EuDIitAVwR?qyw6PGy$}s2XV)WAmS)Mb_Jdt*ghsa#KkAd4q~+FT-z;?COkFy z<|VxWZ8G062-~AAq;1Zor0BT#??n=OA5Ak#{<1swJ~3K2AYgl-8B|b1rR+w`d=h&I zzqrHpXu}#L%_9zI75PjI-6yS|>q_HoX|_c8Jz0j6|A>()m0)0ii3cd3n%UMGcKf z$tsN|5FdIb-leU~6BAMlJ(6N04#cEbOxnhB*dA?NFgooKq=GJ@?@4aB4|au$i0-5!~257@w< z)qITnVhvDb&QG@2wPd+dY)`9mDoD1El5#JT?R6n(eJ9vnV57LLE`#kMCA!qkoKLn_ z;WR!;wkN7&!ZM$1Pa4Fh%kE@*n2iC-&Q7)`JMeeY7Te>w8kHX+wujS&`eOzL+w(jIsJ)#Ht#dX!pdHUTJJ?N;kM_?^V1#Oj(S}JC#AP5{ z6}^G^q!>B1HHd&>3Sz(~#bSGMfa#XBWP8$1Cuw5RpsuKW#)4+BJyi^a`8*hGuL%#< zG{h#`N4YxtB-;}w-D=m_$@ci7Of)h49lgPEl59^&tx%~;CEKgDw#+BnQ#%m8VKCXA zW=UX8oNSNt)Q(j{E_iUhUzc;XhmKc6mnE^_0ac8*9@u1i^$Y$iFO%)z7$JX&lkL^y z8&~CQFY1}Yf*x73Jv``VC)-EnePB(tCu4n?k!;V%FV0(*K$@~ zSQrxijytzcVaE2(5XJVydvBR9wuevr?pkb5ybC_!K?n~%5!KHzF~ws!3YLv}Aw0B& zh6%RR9xtFYJtwM$I5rE!yC_WJU^ehg->F;8kFJtxc~E&3qv8q9@_%?Mn8SL zmgAv@Lij#b-4s;~0LkD&3RK-I6TT-uz@!%yVzLQ|F;*Km;rnuxe8mn)z9-3aN6TjNy|}c^VafM-Z88Is?-i%kd6Msm6PdGygqUoSWGKk^ z2Vy7pG`m$)iXdVl$Pk9u$N*v|-aHQ*&2GeKC-BWnh&^(t%-bUolX(t?I_(gM9qpLz zovIO|9R~XR2(hykh@?6HAda;Fl(#cfLF{-*=b@K$F)^VmG2NgHv7-(7YLHm+(#`th|xyYdmzLfpFknx-Z2s5B}D}$%o6yXm=JGad0B!OZH(^29K?>c zM*F!$P%aTyyuIoncKR#q2+Nw?h`E&CBUGYO*eYHmGXNCW234aS6+x() zHUM$-wJu_sM$~0FpW4}CILApTh#jsXwmVC45Id|v8oY{O@GPmG;vjZdlg{gW0)GQG z`Z+Uzxs$X`4q!H;f~0k-L0MivMx4-uA&d%=)_ER9VrL_UX0Q$fwI)Eh0(<@xsuYu; zb&3Q>ogsqORoOhUoh=H33W&Fb3jW4RSOdH5k%*&QIld+oJre$o;wHs?#Y4G@da>JT z2mVGoiMl;fMUpoMiy-`sHq--_&2GeK6Dq`ZNR07_!JA(wVvGlxz}~4K#&}dIK+k22 z@rX4S*x510t0?tqW#ux)c*LCTojaB`0y2zjnU66(slW*@#(08_JGBQ@U=hbh*EE4Q zM$Qkq34_L(uzjr2X}X>?_?vsQ7CCL=KpY=*V?6WB!{4!EG7 zt0{2emOx<;HT?qqHUkl(4H^)Sc;_LS?zM)Poh12N^GTGe*G^6MIO?oPsB%78%_|Sl zd=kTgUuvTXP-&F?rZ=D+_y1~MI)s=+=O(Zfsv(X(uR&zxQcIhh3bYnkutyv-1cS)V z@J&qeMh_s2I1r=FAOb@ev%&UIuddu}I71vQ1CP8eVSBWRAn7zq5TlLf(3K5-Gy$}M z4@F`IB1Rkd^x}r?v0JLG!63$NxDmp$a-|8xnvu*GkQG71Ece8_?Mg-yKpP&=pA|vG zXmbL_^d^8dB~1BPC!qV&O}x!O*govmU8;-G4tFjsCh=SCzz)-+TS60n@Ko?^ zBti^5YK7NAMH8U7A=uuz5yy36!^rf8APy~r%o4}Yh7`+7 z3O}&rqpj&_UTjnih|wm$s=<{8XdUeshO5D(w#XEQ5Q3IA z&Qq>HliIOE5Xa(hGgsj}+E_<57;7Sq3z=r0c1T{xmM~vO#-FD}O zztP4Q4eTqhh|y*qq&-+n;P3cts;UO#LB#c2HJtF`gZQMKlJXV}t;cWGAeU|+{GGp5 z0~WJhj2Kc14En_e{)WP6#7DC|+PXBfE|tF^P5jl)hSs4lnpbbph+}$WB)YQfKA+~v<`)ddMQ9l8nlkKrl-v#Deh$C&atwDUc^=09tqo{4I}f%QVgx59kBNs3}Uon zdfYc{Swi&@Z_8zDau8#TPhs$PTn+W2&3Xf3s6d?F41~YYj#;xPOff->w!q!U6#kBj zBw#C2N^M;YBbSar_&ZAqy0VxAtut{z>s?zVMJ_wd1g&ER+I!=wpmoGF6YrOZvj8E9 zp`Apn?#cts&1<|xMumZqkx3pu3k1?rDN{HzVWWIxqP|-;=K+I6( zA?iCc7%jLK;pGq?+by38a)^(Ta#G46p8V414VpQ`Gr{xJM%1H7WaD~d4Do~yoOl7o z5UquW{V*nAj^MqCx&?7!&Kn?GKctBlsNn35U=*v=IdGfj(6gyA)ZHii;iDS zEu6r}R`WT;W3)_PmgEo*(%=)rU=Hy|SK1unfe+={4xyyP-!v)?@xDJ%%oJXUx!4W z-wpT-F$NNEQe6CMx19KX%i4&SX;R?@LB^DV5=&g5d_>2^(Njivl)<=w)kuE;1cH)*4^O{mBKdO zv5%D{J+O$i;MiIcVjfwHJRX_UyT;ogru~y0BG^L}V$xX`;H6E$gSVPyGE`{m0yr6Y zX@hUlu+=8TWWL@Y4DHx%p}lz|V$6W6dv*{55=`$giDjL(a)UV5*|Ae9S|8%52Gve4 zK->`zz`m{0LabSH>keSk4dzHp#$baUSnija5htw=OArUMRhL>~tm6{XEkQf(X}b=e zxQ$+dw_Z|cLng{{a|bcO)}*)DdV4`CQqYuz3~8Yl&7z8^wef(D-24P?TDlqk(E zh6*StBG}UaaWF$*OlP)y9lPeLnM)oilIWSIq!hm66svG}YR?Y0QJ}f{&N!PkO0y&r z9c+kc@||OuHG>LpzS^h`LCmZffbiN$ZIR%-VlC~+yi+gQ5fggxu^1`!4iFQX0S%9TYOo;bU zOej~)K2=g^$DWOXCxSD@Qyllp%R*J29hX#SeUj1?Yoc5QXku!xmj5GEad(xthbk_q zz^4O3ufhPgb*VZVRMENJ?)<=SOpi4>&qo4eZHWq+bqF!R?#cEc231fG+8sWK83wV$ zBM1ibN()qqHS26t8Bu0&n^=goG=$x14C)#UC&YxP0?n=6B0=)DJp?iBsHXMlJUC%` zK6<2T2X~4G%X!*AmFCWKH6$iPaJ^>J+4&ne5U*?g5-Y#0=2IIc1#Hy><{^+tM{GWl z6JTU3?mUE%K(qD=Rjwq}FV-N!*<4a{XUbEJW>PGcZgm+qT{Ru!!8{~Z*R%|WeQK++ z8<0aR9>jDj*A&Nuw>P^>tP6srp~O`2?8Rk?3de?=DaLN0bH#*1xMk3}Nt!`3#f;8i z;z*klpxGmBa-d?{p3MN!VV~KFM>>#8OwtZ5^Pq|Xq`sYzF)-fjA)eDrMPA|mKh8=fX$dK;!Qotc>`ODwLdsU6*8Zz%0QJAPqoa4^Y|j1SmsO2 zQ0b(UVmcS3)U*jz&d77nu19h(I5~n3z5tcuP^sfKu8Mdo2S+%eUkaCNdYq30m;5or zrrnW-IU}PTpFd$TrMMkzDLz8%&DuC0`xAd8+5sPi9B&!95dqvZSj%OJ>GN|W3Inwq z4Gem#OYOMW9G|VL=v+04@KPJ<0kMYf5Q7s9XO>IEK$8L_wpM^CrU2nnD?nB@X!A&N zX{bsuLs0YtVjMBxtMES<*NpUg3!cn>a~{c>8FPkEFQSLu@0+goE8aK&3Wdqb`k+ z|9|%016;SPDAxr=%qWV2f@BpG+O_uH-LMUqMKEW@oE3Ajmp8eFr^R2OJ)~Na_j4}Uzb;7jmK01db@|${E9LxP6 z6(aB1N-VhuWS238)i3~aS0G(m2}_tZLYFGLOxR-5M*f8Hs>UpS1IHZ+eee>~3iR8XqsF|zj+)#XPHy&g==UvIwxB|9o zwCDi4^Zg^^GDBlZlJH1)k_L94#8s1)^ha`KL;Hu~T}i%iM^E=jyju5z4?SqyLqy*h zpK7wfU#)(aK}^M5a09HOI!? z4Cz{@uvpDfTXaiTlLRyRX*74qQpWpkAiJbi0e61`V>FKKx`7EzpEc1PAF3cgJ4=9B zjqV;DE_lN3^X?O1!odE!CBWn=wWG%p-SO(N*4VTp=D|AQCG17mzCxe`ui8wSzhMNhx?69AkOkr76X*z+J&2 zgsXws3zjsW2oo{-?g55usBhbGH4$^dtv*Q@YL>j*9touyV<&vY*bi2Q;-w=WsqT3A|?Y|Tb9|=qyBu|=8Bm_aj?p0=3oiIf1mIzb7 zacqAiLp)e3y*@Hv5~5`B24nYm%?4qnnIKy!GZVJ5^`OP55!l9%m~I+mIat9sBlPT(q7wc3$NSk3b=z42QZ#{g>2uTqf@mVkNZ&~&ppMvF4uY6(GOw#W3Y1UP1h(&}=xtRgx+8{$-l-Mef6 zh7cBsW(hDJB-!>^3``c6cCA`lE4n+JvAJk_9i5SUCWWqs-fM)%<0f<5f)cBvAV?m{daBk0Kasf5uPPK=Yl zf~hg97jH00Li?xS_3Z#dHgbOB_gW1BZB#Wnev}y9>zuY$lYn}wu0Ep!Qoq*pn5%`s zAY1dGA3w!9_TL^UY_;13O&CgXjn%0MjN${Ufa8&)9c`8XhhxWiXBkK~tbVz{%=S5d zZ?$T{QIvLh$!krjCSmCOj!%8K(XA*=ON=~~y+wyz0#h}|W%OE2Zy>)9tE1KRSn6-$ zi=J*b)rZZmVPVq^jNMSBCt$!jw)-0xejm02j0V`*4GfrGyxR`2wW|H#4UxI6NYRhNfM4XWR~Yq*S*fA-aLFOS7SbA(ddaN6eLgz(k&0C-|Y4* z71_|YBOFbj)X3~ z1D2qtXPT!Bs7Z3~^HRk;b;0@hSYk<;IbXHPFFXQ@@)Boo1+2l-ahO9CD0u z=SgG(F5l4yONb?nv29)h*(FEJ{>c0|BmwH12PWY?d{qznMF#c)Px|WkHXEx;N~Np7 z7~;oUm2LA_Lc+H*$+ntUk~=Lr+U<;3%Q~xxJQ}=vYz7KbNtqP)9K?MVpyt?ALQxto z7ScdrY9p!HJSZH~dUvd_XXQHh<#wzw>l$lr9@u))XwNPwc=XGI2k|#IXS-6sYIp+N zwu2HY8$(CWd0WVbnX)W zN!)0ANNuZyAzM3N`bk}2sEJ!jN~LZrfk7o3ay5R!z~XOK#~Bc6cDvanw5OBQS{2)| zjq=D6d30wd!R`jLd3eIV>Z(v;UgGa=39f>G7+5%%tEotkws3I3a`2!8S25%q!f<92 zI9d|r@zVa0_69syI2ez_PiDgbrux{Z7OQeK#hZj^vBW3toLzQT(Hq#MBY0C1ErW!p zg9y6mQr^_=(yVU*D6G2gCuFyCt;=#R`*A8%a0|LnZtH4gVo)!yq&Q9?b9`2H{YWJ9Bs7I z$1kEeBesf+fz%TkOrKBERiqT`?1aFv)Bz}dfaT8KKvu`-Tzdn$qki`zmX$4F29X^# zsj;*p+CxhzD>6p&uM-&d`CIJb< zfyls4N}Zal#;cTqeY$D}Ewjgx)%2Zqf09i=7$Oh)aIsE>h)km~&Osz$sy%)p%EMI? zjygDt>44!0O?Ot!2{Ww|iD6*EOdRpjV)llFVO7?u5rzTN(7E)Q6=J|-11U8-;DniG zC^N%@6UKw2<{(6YZJGN=%2>kCHy_>AtQuh$N^AlrR$C!(%gExnn!R{ayOFKH1Z}cv z!ro1sSWSyU_ug&@Vc|F!$QBQejLvPf?>+%0VpiW~Ak~MUQQ5lPz%(>}(pEzs{9We3 z+)ls@OS7^i9EWR}-|YsD5p<5_b2SwSC-%*=8frr1&Tl^NLof17)(nh~0bOQwj}EZe zw+`3ik>n2Wc_%Wf2?KDqgimI~Jh;=HU!y9WBz4EqirYP zNQga5Wg`-O^Q?v>#H|O7yrhzr!^bqxUUV!4luU-4S*UY$ynS=x=n2UA5~CeDnt>1k z$CmTucqGr`CvyZXFg`i>n-Cuffn$TnyD|e$=&rJ}S(4wBBlta*tcJyep(hD&^5no+ zYWg8}(2YZ|yZajhVR1RQk6mV_?TDOz2$^)v=a!7-xWyK z!xSrO^Gd*UwOx=QJ{1KeeKoP?iKIl?Cx3097DLfw^#LXj6obN)_~Q5v9656xtcIg!F!TmNqprTf7f0zV7#@nn`|)bt*fybIJ(1u z_U4X-wrz*i;lVn%q!P-h^TmEO4uNkymMCGD#InQO_L2?oyL%9r?Bh&v0;aa@QYvo1 zS-pE?lssDFA;kDwCHoMQfcU!(MeGvB(gv`xl$nIdK09yQd|Z_{ij`8$Y7E4K7}z6E z?hs!}O7{t{Q_DVGfhG6eZg@fk@8ek*CQi6zaB zS*hDiBPEbfyeo;-*uAra)mVa!d-_;U$icl5>IwAOc`$}Ko?81<_}kTNXHOsNAnfcx z%bA0Dy>BNjCE>&_#K7z04Ndm@bVp+q$pYnk|LFC#5;!pX&28}5^$-nU9B~d%tj6eM2=8Gi*rl-}S6fmU+ zyK5K{W)6W^r5ERR9An#bpDp`H7X!!5 z52d$eal*7ZjOqSnHN%1fO$!4s#kA*qDuGq~K#_2C?wx@s3C7mmkgKD{?)c3`7HlvF zn zvHx9&fpHasZz+#yiDtC&7`mYp(W$4vTum?Tg<G2TbiKwJKn8$0pb}AGb=RYb9IO zD#8xg_F+H+x_2RFJ5*%U_iO;pYu!W8ESYWU#lZL@eD(cAR){zPQHxXy0yM}?7adI^gqq6OHX<5g>y$6jLxzlyW6%T{LX%pzW^UISC$n9X0F!bSwSzHycA?6nfk>i`X_+)pvm#gt0k1V^))np$NKuPX| z$zpoi0R|%nONe7Nv2={+tD(Kw*TTT+$a(mE-Yv;9U>}KC9cMt^9@PeuFwyZ6WtGQ- zJqEPHb;9&HN=hL_!env3RZ5uBOMv<=v4m`(J)D5`N#S59u{=;U_p5OggLX}lTpgXe z7E|D8b?PaRPncE*ze~<197Fu&zDtx4%RUw4YFY*dyS|z-1JkGmeLKMRi@jrkNqFY? z9tL0(v(ZjX;5;#wQh+7E4)%L$0^<{%*g_0UmF`nPDxu7vr<5?@xEuBxCEbHGMlj~H zt{XTi+m39&kc6M?b(=W&wr@VFJ*Mw?0u0%3OD6ogTXq1`+a-xb@A)d~#gP=EIWRcIcPpYMUYOcfedv?C1l`QZ`y#m6a{iwHwGI zJ<_$Z9Qfc-cWVYSiL*!~sddw$1XgSJ3pH9taqvYi-maLBB+m*e)(uM>Ar6=<-bDvE=E0+q_^j?B=ZOxSsHZwS zh>|?Gm!Jh~W}oOJXn>k^@MATR$LMxT#JfFp!(s@rT(!Xw%hHR5p}i%uz6so5oZaqY z6UGu;RW`q^rmQz=ZmY4Rjfui>oWL#R0KCCC+txEfyuoooFCG-W8W&UTGJ1ot#M_Ui zpU>oD&$p+&=$hKHDVMqSMYIs7%u1woj;}BAF6^;$Y ztL-SBFiS1?dnNQD7*z6-)qdcBEfV}y3O1M|X@_fdLx?y_m7~gp$%ayWHW*&Q&Ta|U zZ*ZRIv`6|;6JW#HqQiGY!tR}8<1gaT=XZ{cZ%$o3I)v8T*41Slo2cf-m ztzF91+$mX(k71DZG}ul}E&@qm7_<)qy771E#c2uAp_rC&Yl9>5=lkts2`lYrTg@Ze zd0sdMKgxP(83_|h3r9DQ%M9X6#`f)SZy&l3^#rd%w%z9A#*gh>d+;}>1H#b#&FVVgUIud1QJVzzsG9rE`>T_ zMrWD;HMUy# z!3k58D361h6D9#^um_k@FR`}VnXB>1DOPF5I@siD$i^cb@|qH0sy(YaoF_*5Wq%}a z?|`X0CnX}^=@WHOo*ZC2SV}=EiMMagRb$p1FqI7_&O_6H$q*877agVo3ZBewy9ACb zJ}QZuvw1p7-AtwskXxc2hJf8p_X)70`aWpDPOEUaSpv)!op2jW34=a(aFnpQ%NU7v zcE@qT3ejmF*M^$jJqS$pnSL&g zJfSv{_It7sF%EkNnAMiY?h}-t*m=0w4ICYCS0QMOQPy|m5kin=mf5BR7_ylVN7zU9 zUD5>PSN=b$3l+ z33DLBXoy@kAOEeZG;j_%xtdc322yDXV_D6F2T5pxrSBvRzrE{T9!!`=lA8UIF(x_z z99C0$Xgzz~u!>BpK?~i$R)Z29U`nr*bj`839YX9-wT6WWa}*`=eV5Qa^RnxXY+zcS z(_<vmoW?=kijxZE@+h}M>BVS$+g8WtW*8&p{dca8&jiAWd2pXF9pDgoR#PF$ zb^cflPw3n``cSJ_iWB=T<0N28?G1z{?6THDHcuU7i=N4L+hLa!rP|P09W9#DyJHnF z{wAeLjg8e{UhS0zGhipKo+MGiC^Ng10!BB}Oy5paO~cS*Nfw_fVHBmPK8M0V`?JjS z$g`ThV}P1Z*d>0Vc67Trq!LJKN8e?BoCbgQ=m3)>jBTBxDbbrG^ zN)P<*{su+~ruPsBOqtnLA7FHsW9P^nL&J``V_D7fa8(Z)xdZLJm2CbF*k0Tt4-7S> zN?T2cqmx`)9?1t}cn=td)JuDqNBY#V%UDfHQ8?<5lQ5;1?G(EQ3?ZtkfX9oo+Wr%^ z$u~kI46CrQY<|Eyp8&@JK?93V5~jfR86sg5zA+XU4?6g?+)0>NT7Z^g6As5-F4Rnz zSXv}@t0|^5-Lw5_vKYJ1yWKFBu;alKFgEU1=cgnwy{`_KvVLukWi$agU_HKJccc`I zt)(~NsG7SFM@mt@>&Yuu!+Ew-I2bULVkElUeZol>&J*PWEYtQJjH5z(e=4#3sGgJ>TtLXr}U$Q#pDjvDpB`_0SpV@LX1mr}~qZ3mY zt8323YDyT?+=YQb1T%Vf&DA6zZrSUmUzk!Ij`usH>n`%Z7!8*@PjW1W`Q0bLD5gS| zs);4QSYp9%w8w5dDDxXkEU6m)JHi&zZuj9s6&d1qDaXNPmuYd3)QNk$F@r3w!$R0? z8^yPW)x;7dy*xsQsG7CfqlBJDpLYsv+hH|c#Z?Cm5(8+zUoF4U(_Mw`DC@i2iAyhE z40k2KV3e@#SSD)9I<)VW0LNkPyhlFZYY&A3IL^hp$OD@pdqM!mT|u1+g0YZ|U)Ti= zLRi*XO7ZrMVK}q6kS$@NL#r#hOc=5;g_T_b#~e%K>)lMk=*Gqpd0;9VJ|Qo=ZeRo1 zhO=BvQaXaK$S2ICKn|AZ1dPAU`EDR}(6F~wm#eW3m+vjXRTxu~J6AKG03UQysQT=a ztFfEeuXOH!Et$Bb+szzHmqLA^CaW1O*rj>WHqZ3PfQ-L;&{)mD*1Hr+g2=S!nhgn4 zdc4-$mAWyp8z|fTh?2ioCxb^J-<8Q{q?y7)|e2*otQ+DelX<+0|9k+lP<gG zo+rQ_F87fKrUT&b?vwcR1RkuVmq*gmARuArJc$NFt3SZf9#-uc3(St{6o&37rVzPK z1qpKoqQQ0pqnH}`?h{}V{$NSK?DF_XoK57r2U$%|qfs3m$>!lie3uu#XZ7IsdA9^O8hRP!d?avmz*6lKCg*usUTW2Z$>JRc z`Rfzxg(}uv6}`de>@9JkCT@K@WEx8F);?Vwd7*vh36Es&c7>Gkogh6s+_hCCU2Kr_9ARHv@_+$^`Z|p8p zubXEzO&-T~4+5hbC-z4IvvX3axk@DzD!kR|oZ|5p$Plen+GWorWJYCAWx0Y$4 z+bavlh`sI@%WE&r)g(NfyCiqQY>|1P8+bJa5sB4w13SmHYLAkDAw(JcbSwu1^QkqM zgbBN6vZkBW1dUjBYQ`ypc2w(NDxsKQV2?bj>A3j&023Nq-jjsY7~RWy=r%fsB#GA$ zQl$qCm_mgUJ2io+-|cQ)p8yj`Oy4V^YBHbHIvA_*cOT1B39!^G^(0s0K}YcBSQ3x| z%fAlCn>EU@bW)F*L_r+NGdRcU2toZ5dq&Fu7`;G)sU9 zF}gcX;zmRU?F~#NyBf=CG*D>{O4uR>cAl^ruM&yAnzHVAw>J=fQ`s=RuO{+%l`_*E z8}Jo-Oxq=JjETFd31d%DlQ2*+ZO2VXTw}@Qp7X$Rr!~f)Ju@2xXy;f~Q%@*BT}iw$ zbt>qrihBspQu_qNK=kZt6^CmqIS?XX4j*+=3Ij3P<693gtI^QjPGt1~#wX>%VS_ny z^3-l1tnzuQeqZ(jjvks=O+pN6228>8UXRK)h@7k82@^G881xx1g^EHwLp))!_|)pC zvC~y^wU;L=xhITQ;oG23!a1L?qXSGVor*S|6jR2;5&488 zXr2VR?uZU`aHiB;%_E6U_aLh&9C+&hH!kLy16ohI2eUC!B)Y$Wse^QqZXgvo=Bk~m zfP=B~EHy0A-#B*vND`jjaNg<(A4{Q_cvR`E%F_`_I?UM>_mvVh{0(gG^hdH9yNPn& zB{0R5{S?1F~f5#n8RD35W>-$fpOM*{8`8?c9up02yHZhId2;_OfbU!hi{liQMc4j#J%^$iP%KudH^fWdl{L^CV7nkakx! zsV8wGQe!C%wS?6*=YivOEX1lEaKQMxdN5(i44W?;1SSm3M5#N-t%m5;>J%AYASS#)Sh(G7o!cV89qt%ZxuU=NVh(waQ#g$33;0=o~D` zvX0A3x`yuP&y7_HLmyhtVRal0cdjDSsBFHJTtrSK^qt4wf+9 z(YgC0$zl}qukSKom2|REOz{aj>aL0!OMcffgWbSHr;nfsvrATY-BGJpy>o29mXv*x z;3_z{D+R2EQn;n`c^(OjSIOd1zkx|^E9t&MaA@LrhcEyW$Ue59Bw$>%dn7$ATy?p- zDq0-|?#Kr0{lPj&qBwMKO`zM2Vhf9Wzz8c5I!DeS5Fu8NE1jahE9LpoHud90Q zusYtp9f=G~neFu9kwlCD^)N6|iyec;7L8l?2}%fqiQN1RjL}{f>|xjdzq?QHx1&rO zLE#B->OMq=etC#It0`-keuzATD0jWdK~~c;oD`dZ!1%k*-(iUv(x;h(o#6N75yq0M zs&Bd>M6`_b_xaVUy!PNP|8Q?l3R9>fmcV@QHs3dN_|)o4XXp1br7m6FhMX~R@Si8= z^w0YSIOtQipq;V$O8loTp{qASX&@g5^pP|eiZ=ylE2jL}GGTP*b~duH8YO%_R%((b zEjoNa9Sv09N_#FdG8-@^{C$4)eseqSyb_s5`sZ0W0FuRifl;>!O4(@W}*p<0>^QyCF&Z^(FFh!k5lm8j-g@ zkJTt)DK4k1li4ImZvOsPfLRS(buYMX2PH)8EIw`6b^B=zeiDbh^+^5$Ao-u`3ukYS zymWSnKbn}-Y)Wnh`26bqBMkmmopU}JtinLTkS8ztPHE_T5{7yL)7HJc{*Ki!mJ5e; zReBI=#-#wU%r13)^}5IgSq10U=Gl4t(-MklUeI5#`h5BOMukDehSTKc+He|34EQ23 znIf7$uA1cLPhf>DGYj1uePRBd%I_PHBF znSY>kZwP5Z@#*&I5)28&jy}UB33CeadTheyWJMD z`CUOy_=45IG{B}rYGPo}yKcw!90l3ro7-WvDTor2?*uHRZYm7fpg26~2HqTShS=}B zXx%jMBAA_Dr@wcrfl1dWK2-@}V0B!d++^4=pk%L`83#B^LD8KR%o5vLgG-59q-$Ai z7SkQzAm_hTG@~Mgzo}oV#3t-_X-Mt`ZNCzYbG7|^9RVlI*v$RT9PrHSFpy!r7&u_+;3?SA zeyzTQ(X=!w8zqbb+*Xm3K29xhe>pClGnSMY4CLB=OrSZ3_*E6osO8)q1<(HC1q?@o zZJ@@nc#B~@wli;R3hWz>ZRnLJCbIrU$vnL!kz-iL#(8WgkMtlgjyq+w7b4quvgsx| zkj(?!X5dtkt?rZ(yfu_WnMqca=89wGNlxXcFa2`@z&I!72gsl4jdZ#xpK%yfz+>3>Yt3Q*l>YonJ?Tp<^tR6j(wzKij`R?iAfY@IafEkz3Yb*s|aP# zEGwLti`{sTjeb4&1THLx01In33}I{1W|+8+swZcOh=;$Bt1 z@(X?;yX$stJ3i97i=OzCfW;CkDQ$yUhhDd)#n2E+`lXPHk1&P9Au@7)XE$7q`{DA) z+@(2hMcQqi=19&LSOe*>`(x&ERk?wrgi%TPg}5=ON~Yc2RpDmm&wkSCTSbfZ$s3%+=QZ<5A^^w5X z&9R5=6eSa;0~VNjKl_}$0Rv|&Q#YrR1KEOAd51E$!)mCRLwnJkkK_n@$Og6(2S+?e zgBc#QvhnY#li1W9$76{ctxkAMOEFk`H^+rjshS0z+d)ZzFIZh*L(DJaG_#V#YZP`# z+Y~B%#kQ`e2}sWOd`9*RQZD?zM|g&f~Zy zk^5>&LFmT7auLO9Y&68>v`=)Ra5xpjbzrtpV0MY!gn zt9nn1&EqPgL!}u_H!QIiw=$FU#PJ!&mN79{r6t8~{EZnS=SzqyT=G({5>5tUMz9h~ z6P~#3vH=c80lGez4>65~j*|F;($;UHJPtAwX53(27$+@q6~}V8!zYxKaioZf%q}Iw zxF3!a3#JQmb6P$r605y7X7FJOTaRRQ{wL(v{FPx~FxJiEZ=5&|U=t>2y!qRP${Z~$ z)W%>APz#PpslM}sY{wZ;^4dOGFB%n*@kW@ z6**4~%2{>7zUrpTPFERXdIO_#tAiU%7(A=4)nqZ%2TF0c9d!`K4w$%I8U_ZDttU+I z?ZdOSIw~^n4t)o?bf>@3&3IdM512?ye@Azf$Y2zpv3kNNHWHg|wupgbF_v%`7>pgT zF@S?(HN});5WDmku-@2BnD{bi4}SyGyyBeZv_5nPOmdS_Y^TB$P9l$WIJT@#7(!6< ziX|M!@gTg!vBOp9PMBDtrzoK=<%0NtZEa6h%dnQ4RH z!2E;uL5QL|VX6;~on?ll1P#W*Dx$pXp0Ig2ERhXy%S?0#!=TTAIWbZp=BH$Vi4Ke< z#87;Mp}_WmQBQzlj*X*HyS7T$_gnMOiYfI(Hk^bl zcq0s~<^mB85_SktHa}oG$&5U!$>KN{L$+E^5~c%S;BYLfDPh#X_=3W`wka@u{(Lln zEF4*5F=kmp%fn?)h%v$3;*|s+r=g4_ValAIZGU>P#C>~kem<4 z513}^pfY^sgJX3bONSRGjA!8g*Z^?8JXXW1suQNiwsf{hzzjb$*eu~c@5R1sGp(>N zM#Fy!Ss4$|4Gc5lDtmSs;8C6A<7hw=jyt|d0bm+XWI2SHJesg?UQW+ORJlO`{6xFX z=#fVw%YmU1)d?lkgtB_TBeW$?9Z*8ey2Q*3DZxD@dNq zh-F_rVQd^Nh1JX|(N7tICVeK%7MbbBE`eigx7fno!IJ{>$Ub9iQ-d9An~jERI}VkL6G6nFMNy8)}I z!4yPN!3w(hd&2Znyj6718H1KG>J6*Mj6uDbWe9kbX82tj{($k|9K=~22Olh9^H)ll zN!Tf+4OrX+kWyqH1#z$nB@^!5m%cnX^WBp51VZ2wwpjYu~t^&ata6B@gTA)Tfmear;k!N#t_8n$!{K+FgvGTj>rR# zlyb-)J_$JQobX_s(r_#}&+|;5Wl6x=%}++;QIgY+^{XC}HW)uqPuA)=*4Vt(<~O)~ zSiu8Z3@UJk>0%C@1NQ3AGx91*{DgGHIy^WCL3{%yDWT8oB*64W&WNmrZ^M!bW6ZD{ zvSCR?2glYKI$&B9qxJa+8mkE!SHv+u&GI;5o>vAaVCo5DBqS-VuE3Wa0w9gzA>zoa9TFbtSqnDmL&9`8tD{*}$ghx;&^S~YnB z8z61I7DCC$OCnDg7%JI3{w}OaID$6oNv!5Z&=~j&i-QpzVZu3T6|3VjQ8?RC?gVV< z9d@%i!ayu3bXz94ezwm(FdqhsXqyj#QK+Os0{=#ou^~ z5WAN~`vF@_hZ4fT5Kk1B1o zQBI8V`>L0aSTci_vo}iXFj0jjrRCFz>;G-;>C!=58|l zOGLE>$$4TKLyqY)918~% z=8+gU5-^5ghqK6rnZ*-EahV632`j+824$e`g^ z*m)wBmna-9mR<_59lF%mC4nS56jQoXu_Rz44;#qK5rzWGprIRoV>cCo`o+KH*a=f( zYjkF{C&Z&dpk!A2Hm&QyxFTloJ1@Euj=5?^Cxb>x5rf8)EsMF8b-LJCl|jQN(OqY& zn=srVoTFB;MJ6RO4ceF4XTlJImRVNQj-r!b_jDDj6OJ3f*#QH#7u%xRNq|8+$QG4- zvzyi93V~X6HawVcyb5+Q9YF&gR|p*T&dchAErKgLkSz|9JdYAKeNteiuvylDp%0ye zo`z!wHG{F<$`QzNVq_`CL{H<;G%cAh1SFA%2UWaL(-Jlku)sCBfnzu`(;V+-W!vB= z)U(XQYWro3a+8AvHg|>xfeBhnc&1M=FkzImBr!TU`{0(cI$;#|qY6a{e%k@o5sPfd z@<@v=mP{DOGMSE?2Of1$ONOg}^RB>?-r~uGsdl})8nCB@GQMF z-BAiAOkP4CJ;*nL{5&|HF}RwoZe?G%kH)~}&o-m|bOHZJN@#}eK`Bnw;XbI~6f(A$ zoM(01Ud~EN#8^$@c(t>7C`#B)4EAhixNrMFL$)ZKJtD?l;;hUT>pc^X5 zanDp>R_DOhSF41>CHFN=$px_QJR!u5(EY%NJtJO!+~W9ud?TWM?w9E>v@U!A!H)|k z(tm?Ky7n`a8}onS-A$0jDWB1;6$MN7C^(Y_V33_b zfOMgrl{Am0N7|j0xrRi-J^~8|N(3iq$WStGBYJLi5iici51vOY4(lSc)g zcT}=l%>Wbc(v03(ow0BPJm{tu5+d5>TJ0Aiu$$oY{9-Bd7?;81t|e_Nb5WbUUCQ~O zz?2JSrZ^4Gv4PbIb5uadC`A*dC=$*COnfnB54%Nn)L>oZoyG|m4SOZ5Ch~s5{h-9Y zzTlt_H-(PjJhiWm^M)Qgz;VHHfKejf4y!#?EI1z--}$f(_ti0Ez~vf-oDaNls#CrN zm(^tE-m$=1LU}&uX7dM2;%iOSClNFc{KT@Hc_&PgFs6;lI$_T02Y<&dY3(~plA3$n zz5rsE_;yS|NuThElX2%Da5T>&j3wyaueJjpU_#6zF|chX-UIk=>l6>Bfxrxr z`^~c&B0K1gFjzIVIkJ*%!ql(glK~sc^2huv&+D;_z5^lP+dNf`)fioqWWpSr z51Yr|G~@$J&~Q~bm!^`SCRDjRvLRu{58Q{{-Gj;R611s=W?$yfVc;2cphSMcoId;J zbKGNS@45rVx=IL?Buq;6T_#Kn4*t%o9w&fxe8S)Hl^(L;uzCD#GwJ6flmyx4<$G=? zu8!-$dBVi9?~+Hx_a>PC5A^+Gy`-6UMP@w2Z0f&Nn>-zuP^^<2-Vt5{4Wa zI%od95-hRi9h7kFffHkZioDGE#0!>|+`=d>hw@wveTY~&J5Crs8O{|Q2K|^J>}lf+ zmaF6N1FO!*>IrklfSz#)0?dSsCCm^c+X3bph3Y$KKUb4!r2V)?DzL?L6pnbLa}|E# zsl&iI55{YN*Zu!N%#V$2^D)Gp1>P!@4qEmrqfwg)lL3gpl4`OrVBE&QS(zW>H)S+#z zhTMI17}#|)^*XS|p}anFTGGRS-AvE0ilS6D56od8s;2PZ_k=^q>?9ZHz92dmz~MnJ zSP0sQT}rkSj-@DB2a5+YXwE}NnB!_326lH9z$aJ7E#%Zq#BgjJsU0f!kMt;f;*mJ^ z0{E0A?9$3sbjO*WU7lR+^X6(JFFWG|Lnj$Zu$xQOxCc3DiSApgM=US!2?pM8-1?p76+?t_7~H0*)&q z_fiZjt832RWcct%vzTlsySza62pYxo0#}`aj}Jf%ht0U~kpk1Kk z0{EisoF+t9lG(tkKZZ*F&1@LkA@W|T?wi*|wC4!zV=M;?YjC|5(%sv;x@yPIMGcaMg zRH;6xgefdu{mt#rh^bXg z=6;Z406!@wfm7pFyb&~ah-EP_qGLrq5w!n-@C-w5858c;o#YNq94}H1(TQBW@j<(A z$f@Z%Ey?@AJs~J~zLnm?9z{#ghLQ`?^+>iXGj#4gYku6gn*j|8SxS$di!Hw&Eg z1T#)#gVp{7%yuec=jK^WaU0b>V#x`{-eAq!&4W&1r*t0WB-QAs%?T=ibln}xBR0aFL~gzph1XeGpRHAlL_stLy($59EF zNA|{bb`48VT&X#gaK}*`J7KtU%I+SWvfBH>{z!&OZlF%s4P1M1Dv8w*iL~2S1y_9M zCRW<$Tuo>Wx?_&@#&2&4w-&r)Kf?X6H*~Z57#&h7J|VVK5+Sy%?;lAjc%jx|?l_3f z!4hC9+hLc$SaQ$}jNOOL2V9Rqxt+LMkA!H1fXG;P;9$N!IS>Mv=bbVTLLA7(YU=l4 zmjNG@#I<-mWemHmgC}&mmxF<^ojAm_T~Z3L`w#{m$*g%$60nzyJ!k>Pk*DbfhE=C@ z$7f59N@y@A{B31BI2PTUqED@6JEwdSA5%C!l9TR<)wr)#y%B*1y2y$>32y*!$`><9M=L)R0LXE>{;|6I*+f~6-S zZ@)OilGSvnLo5S6RtVs{VeQ+=*T@ImabbLP74WIj8}As8WCJFP51VJSAOR0{1N*VI zeUbq8gL}FPnC+af+u`H@$L-e9-@tUK1FQ1(_Rx2L8Osj_0_U5i?pWXpbThLZLd z$aZKjWWy;!0FzP&y90(;BVBEE@kckPUnM#VZpF01#e);Zk|PK4Alq4w^v;y2AjiZ* z1oAIc1?A={yo0OvcHu7o5ZxexvZh7GwL z{&4c`;!lyd{aAl=7BGe8P_2N`aqtT8sST0Gn0R1#z{h<;33z;XByYXqqk4lWTiAdx zS)9GU_n6E?zY!RcKjC1saVWF=Mx86jm6js>|*r}sCXLN7Ut+JIqWtXQ8hdi>v7w9fZ>SqOj^9`m(PrJPY=3l%f;tl5f zaH&`vo48%KMy@gEro30dgN63t*qiOWO4CiryZ-kolPQZr%#SCs1mso^WqS16FspJC%?P zW%F}&=6taPC-MTN_rO>!jM0VP1Ll#to6S_h^GYw7tAkaegx%09Km1(_hxa?z^M;2l z`YL`fcE-}3AK}QpBh2RO$@qGekn??)x%zrxYV4>!tmYHDQ9ZeV!XbV7E_qc+ zdDJ0mm%KE@i5O_9U+~^ z6n)-?wn1}*nB5jD6z)Uw##PY-Pg<3R44o8=stEm+{RA>L90*OC=2a z!7T31fN@KKQ4;MRJ(o7Su|(SESC9$X<`ZE{N>nxs9B+6C1I7fAA=?}(fk_eyb-%d> z#<8&-t}r`&{G=&E>~dB9bxrU2nK<~#@OS!z?dT^CF@{k(6}{4afzkH zJN~v<`*LHfj1$@B^Sj=%WA z^LXmWdH-YwKEZ?7-BSv_VR!O-ly&+X9K;goIzKI^WAohy*8+<^!g5)=VNeZ2!Xys# zSqbQ%jR$c^)4jpe7;GH=4xji92L=%@BQ~FOcpk_o)a;*nLWbbPl{*Q8(J!Y@2pXp2 zlgx(VZ+B#&mdL{r65P#V)M(4?@3FB`(xG6CV@!cBhAUVJK&URviY0Td%8**$Rxjonv7`McAG(^6% zbmt%v&qMt#3_OwsGwmMHv3NUOY^zZml?@N#mbrSu_9iF=! zgfP=Iec2s6!9a3nCU=fo)GC4o*-F18=VLoW=i1>x9Lp}D5A%29_k`6wIEaB1JXT|g z_Zce;3B#RIdQm(N?#>Hyb%TfQ;J0-U4TZ52h7e@hup5}lMl9n4sIyiP9sV&Ak*>6d zwfRg}`wku)9HfoJ?8EaelP7~GgFeDAcG*42##7Hqa#IJR16m&oLFfiz&znQhD9V7A)G#^R!!K%>#CyaF@@_1y zjc@czc*#gO2;o>7SH{!k3J7N@N&!nLr_dQ4c*2W& zTLwQFLBl6xF+`41P@`rPVI{jYBMMn}Jcna`1ybvwlw) z>qz^xOO-@kvdc>&8**lYnpFE1c|x2Q^cXmI3E2XUa=dmq^AhV?=bm}VFN|z(W(&s3 zDl8e>*}=nZTtyb==u9LAPq2jOM8Tsd)zS+brz3VW{mtr3*J!$PNMJ#(#Yy#{B8scxwRk={z##!OLay1+Gbg zjii*5!Wy8GgD9cyQey`PGf61a3}D zxoXu$pO}=+7a=G!PI#mgBjHlA!M2e}d(#!i=G_d07(wgs`S3S>%CVez-#fLf^j3H^ z^sTZ{A;>gr9P$pIJ?v;dP6!E0%GH+gAY#KPZ2x5drMMx&}(90>@9-IEZwioq}Xj$`t$q{AaRW-&K86eY@Wan*#GeQ^0u z60R~ys3(24#}Z)dCL79X(lyQvz&oB`AdD@gH|aCraqLX`7#*hGl{+(woqe1uH-EFs zxM7tidTYTH&OD*hObV+ej3r}+VDs3`Y78u|kt=L7Ss{*wP8i%#&r7xgT*wv$&rXv4 za%9?sS?y)crW>CG+2Bsi9q7t01R?O?l~LAra4|4X0{DqiupYS`5Fqk?Qj)Q-fhZ5% zJ})i;9(g2@r)n@mEF~2l zNwSEHW3i;{GWnhGi2N{+h%r=7yV*;;)-+ei`SnO$l^+!}Zi`i9EblTr1FhMf?Zkh| z)^vqFi-X!7AIGLe7i!uV>D)L3-DC4u!jU#ZY@=Fa%c0U{5;xX6)>fj;!T+ut_rdx?DcXhcsa1rMrZEeLH_Ysbp5ngHDT%?6{3_d%6gnK zc;txA)^vfXKIG1z4@VV>Y2I-F51&k!?gC>+EP+Roz>`Uc4v%``8-&OP8#*?QT~3%x z<6n7XR0yo&7bfjlO+}6~i9Z>RHDZp5IM!KYgrUPTU4cz|$1P%cK3G*@TK#~D4*&f* zR?{yiVS}2+fJoRIc#$(7nef%P0w#-#tEg=Fn=FR0%RoDKyp-cyJb5xb$WpvDEGaN{ zj{!=@rcdw_94xUMu0qMIC%MbG(Pkc;DK%iSfgKgHv3bZABw4F-mob*h#bhy^mH;)-mlkI@5!jY?;l;Qu zN?2amz#V3&0++w`QL85OVfKjwLOBLGYhobffg~C9!Bq?k>@uP==aUOytjk@(L57?` zWEES&oC@IJAaX=ro;Z9TY0qjHG^0c02}9Ix=fSc|ng9l(fr>mLPuQv7=%$#GmxEOi zH0yU9JLh&HU9Fm=Ldl&lP`kas&$A9F9$xpus_UL-7fE;?j%NQwbhqqYQqzdgOfi zB&t3Bo|j&%jw=K#frHb)3O9dm!!V;W(HZ{cd8j8k9!P56VLJ{BObX~82?*`^1&*{3 zP#SKux0q4QSxTFK&tC_kh_sXIEUs z=843B*$%^5+$`7_N8~SnQ%Mx1-ARDLfd}LIZSK+-1WaqCP><+@W3_}W;*-JH@SsUT zKEH793)Rz9i?}AFj|JI$(>S^a4a@v?(hpmHc#C_l+$eL$7JS)B%|nSd@v9m{&GUATcGNdYIHQW0 zY-Rs3Mqr73cNiE9@~@D3@3V^XgxNftXjzp3vVSeujOCH6w%BZ=?4$}Xx<{>M^Kn-~ z7o2HEY#VU5AglfPeDF|bA_?v+S`k69^y&k=*?QuX+SkwY1anDnm2jfMV% zC}9o?_q*o);}^2gh9~)jdGv{9XmO@YmfM7608fpIGmQzC=pVmG*O?*{s}d!HDe7nX1C#b- zU$ng0+oD1^jmGBds1m1JS}cjNYX$@jn3^|S#m=2m<1B2$njA6=#L}gc&Dq$q%wWv$ zH?W(Bh!{&%2JXrtqy+AAvFxlSKg!4 zXOdXZ@d@)R&3oBx^@Jyp+_My5M#7wN=ytUzy?-5u##EI~JLOa)e-VIVMfnNg^# ztD-0g#|d<rII?7RdGOZdm;S>3Y%#scHP0%Hm4A#z;GS4)_+u_Wf$Y6;zyBcgM~ z3K|-?rit94OV8E#n_b4}h-0Vj%(OTQQ%`Fcn5aXEwQBfe5E;eZe+@!}2W2eVDTM<| zsDt4XIXH?^x(aHtx;Pd;;aE0Lx>_N(oX;eQJjwPR!`W=+bxCPB7MCxQw^4OREn{ zdFmMaB0A(H+p#f@Y>1)Kc@W*~e~d)wD&EhLW~J}Mz)IhV{=8;n;CN*M%ve4r4&Vq{ zRHSuY3D`%HtGH@J9@w}=q2@BC96o4AWN}>0o(}_296sSXha{;Z5thW~a6E^OT}CYR zN#uMzldw@TjiHh1;tDJ-T(e_@SsK9YimCG_;+!PuqEE4Fh!l(@wxrufO@)W#}cawq;& z4Rh?|N!pFSVFNU5WyTimsb&qVl*b4fgT3dSp*wczMFFg`R&S4t$eTNKuCjTksWI^x zO$x`@C6*B4SdFVL4I%?GBjN-hs!+q!;mY^gDKkSARcyRv5 zX~utnhTO`xW_>V>*@&ru7CsWx^AI1<#?rVgKEPSDCK>VB_&fHr@bh75xDqmQ7hv)) z$D^BUaXu|~0oj-0il3*>Y^k~(1y%*YZt6Q{B&zcuW7J6xnvq*m31N!+&v@QSqJU{Y zv@kvkIb8|NyAwD{{L2+Xc$nys{G1W%F10bH%kEf|z-UYAa;yhi6V!S`bK894v6NyP zFQR4iUN!KfEg19nfxhQEc$hBnPh&49VI9zJ>I6Oc!e4Nh*U=a)Ak6>&ZhJwY#^ZeFL`jMVTAty!W_oncs{D_FeFovU| z$P|S)`A6hMoEi38M&S+qh;Ct$bu$=9U@v39&GjRy0-0;2I6Uiyeq;l<;I~fyhyzOG z@(JT_?jPCvnNMSKyS5Yu(tP{T)-aoUFZ?Yg#Auwf*}bD~@{g!~c;lqPoA4w075^wH z3}zl8%f4>fkLZis%jT!kj!`CIbNtz*9^Qa9k(FFg?#+Pqkq&zw{=fMwZMZp&x2Le> ztMNgxqoZObVw^d_`TP+R+O7rQ!?@!ni9Ed3Q09*!C^7V8lv~rBH|PHPu1eg9U%!dl zxe=N*j9C?KoaFos{m55+M{mS$o%j(^=8(n!?5`YrNEL;Lrpe()D2x$t|D&5-VS0mM z$_zSf#_>nn*E-@uDsj8H(%isNH)5#RD~t~7H5EO@tGo4EzE39m_|d6)2(hz&?G<7? z?2TM59BVxMKf_dCHOg(X+vC_araodDZpYDP-`}TyxMetIce<|qsJYHeiMwFjevy0g z+TME-X2>-tc0Cx6h4G2*y@l|ZX@{}!m<99;h7*3oiHJG5vgPJhxRHbp32-;E%L1pn z$kXE>l%ypK;s&o-m_N!cbF6-NK5{2^y(^y0b^jv`Bh9I7G0t(kZ*C#ngq6{eOPiga zAsg34Q5*`{g5fbac!wely22z$%=6xiRFYi$qpVR`H{t}j3xN;4k!u{)ViKkg@?n&D z`g6eZNFR08MpJ&2WssqZv2aIh{1dhA1P{Xr`D%*`;HK~<{}%a$!x`hbU8{#;6!LC} zPb71FjPcu#8Z+|+E|VTZ1))6Oonb>WHOE(ZN6m3-!(ecBZE;J+D?Vk+%yzkW%veB= z@bjJzxTvvH8QyZMj}@{h^fyZ(bS8O*pNKORP~fxM2h!--*u8@jk* z*pFD47w_|V(5|+)FES;}*!?K)0ZyBd`-)x}SM$Y(QL!)TmGi{mtD~#=TRo=uBx_w> zbkr_GK$*h{0WTj8q(!qs4)3Z~3mBQ3F9NwmEPnPA3ba+Y;CJ$JN})nGek?+{WT8{dN5?Mn8+gmX=7Q6P6S> zJm})KmFRocTol8#1Ga9V4+fqV9(fxw-yxyv|w?LHQP zPfox-lIYM#3N=$V@To@zT=_jMK|@KYi(%>K_GxO36SxRm$c;rsqeAQj*W=WFj!B}l;!n#7Xi&tNe zfI$dnhrUZ-np4}n?G-p)HEuQ8mxIpKHahvuzd>YI0~7hKWUOY+DUX~=PQtvbGVD|L z_V+pSzui<=#qh%EC%#5o9XsG)!&IVy3=-sJwVpuT|t&i4x# zSS%q7unHn?=ddlgSsnh~!82&Muatrc7fUA0RB^%TVhPiYJ2E=89Ze;iGf&Zn*9x9+ zH@nN~>evF8PXpmtW}Cbd_RZ0zWQLfz#?f-XSjSiyFHC(?Kj7pEhunCne|f;H<}N2L zDS5*_3^bNZnaoV_@vxy}`$RFi8^7ynN@3N_m;>#(G+AVO=2vsgM^VDx3~pYp%V5*)0S#LJk7SlcCcLD8jr1zdE;hd($U_%*Bz&O45+Laf!o`Ar-ixk8*L zV?Pkn?IsM=Z<4#O#^1OqZ>4x@d1O=w>q*hgYM38(!~C(!%wkXOht+vnA_4g{P}yZx zpKc(!DKq$+=j|==ZmcEX#zE}Hj76Wc#N;M4OG)}9FAj;@h~@RHE_HC)Jqliy#|fw1 zlt-So2qD?BY98QOdTCS#pO82m&dPRBatclZFZ793bJ6Dl4`R1%H2xq1t$q-~?c|46 z;&VwgT~EPbiB;nLxkQXd107Z@T#qTU&j-y3cuOzm)jM zcn<;@H*ibQLL) z)5!W038vfseI$+TS>#xHQc$yJgXa}u;MaL_03yW3G7b;DsLWWJK4WzTjnxcS6utpx zZIAa*=&qfB!x~vk2jezqtv;n&p5zCF;_NwB|8ILFjAb_M%?BdWkh#U=uv)f*2cv{h zmnxij*)~s&Wb^tvUZ<4RmQHlH86YdFAEczEuiVj990y21&8UubHb0DFtj394IXV}# zB7R~N%gT0gHJe8Xowtl)=#EoDO!rN9ykmwtl=aF%W?b4JZ)&``-G=b!8#V!~;}-^; zb~EYFPD&e`+i?!7{&tsfx~W|~`i}E6owt-Qmh#lN8l`?$11akq1X=CBnI!7QZv5>C z-Qf6SEsvb5S(;&p_feC`SVFR`SG-F}esG0DX8B|-*0DNRwVN#C!jfFQcJC^-BfN%` zjOC4ngPMN8(k+DW%o1ON$bNGGlc)HeLv4ts)y>=OBc4@kAb0k!fob z({AsGWtA^b7Jc9#BN0KXpQ$GDKGj?DT{fWp>Q0H#fhTMSpTM`J+k*+CZzvhj$!hN- zfr|(8k@2mIqD0*zXjn3otVg0@(caCEKmA%(*Uj^Cr4+my+PvQ|C_x*WFG`jrR_VFg zN78rjNk1Y*t4n|Tx#poeHy=4)Pfoe{@b`^-Um)+IhMakObh5jz9 zbMt=4IF3joNrWjJ`QhlkdECO=1=@(87+8796-ZXLb=1%js(rkaJ6rJeJo18(|5;_p z=Bl*2Ct$p)Gt+v%r0GTzsD~aoA16K>(l1e96%A&eX-Q< zIM~z<2+Sjcv4w-_SSvC{uc8FJJ+c!bS;Zs!6+n4pNfIqN@kn5sSC)cB&79W#&=_UC zId*Oy8z+6HB`~d=4|ybYkW&UqIy@}dwP+g5#gC-Mmg+MfNzSi6U;S!Igl( zD#>c!CnXq538VCsE=3sP4j?1k?hjO1RM@71SRQgbIaAC~MY1nOh+b@jA_Y*^8e-?abz43U;N%CXC` zc`S*KZ91Hl5{4y|-nfxw(C%UI(9}JMB{5X?QEsz@K2P!9k6WH#+N5MX2}=lZnIQ~A zoM2Q^dKxgD8zr3GR{i#orhW8=?h^_JMDB%yM+R&sS*v{{MJbDEKR3{#9S ze0-p;jLy^FCQk8SL_Y5&F=l21kIawa&@Xy6U|_tTsi*&_Y<|=UR;_Ep?DOc>RZbUM zd5m4cZ+BTvx;&DcAD@S=mc(tMtJmhYU4|tL3xg2bF6r}Rv3Diwk<{;KFp#b4j$N{} zY$r2~T~c~{YAMt>mPbOiLzm)_orCO>vQFQjORd{mb>|~bB)2c=@l!cS29arum{F1> zH=ie%?i0^xkd4GyKJk$>MyN@2_*b@*A1lJE4Spt+WcBgGSG3Xf$p0w@LQPz?K3t&P zF@H1Ul%XHuRw7-{xR-dA%3g@rtZX1^MEO z%0|xD5%lyUFIfFdTSCj=C{78ht{Sm)J1aWd{LPJa>z5e@m9#r0V0nTE$@z6fCOirU zKN+#i!m*W^){cxkM5Zz9$>tdlBCi)v%RtI;zaONSVj#W9FT-Y`epVW|EcySitB6jF zx3r8=W{f4l$FVI*gsD~WE`w~CL5uDxk=r?KizS7ckYi{e`q-=_F> z#bXtZQ+$WwI~Cuhc)a2XitkoDQSl_j_b9$s@qLQ#SNwqD2Ngf0_+iD5D1KD&V~QVF z{Dk5s6+fl;X~oYdepc~wil0~fg5nnyzohtO#jhxSRqJg?&U6wj}?jp79qFQ~Y!;)N71thk-xMHDZpxV_>IiWgJ7xZ;kAJ1Jg5 zac9L{6n9nJO>uX{Jrws;yrkl#6fdo~m*U=vmr=Z|;y#M|Dy~tyoZ?JzuDGPQthl1M zR&kx;ev11mt}0$$@d}DpRJ@Yn0g6{vyo%yg6|bgvb;WBaUQ_W}iU%rQTk#;pgB7o% zcwNQoDPCXk28uUSypiIK6>p+=Q^lJp-dyn(inmm}mEs|aw^qE3;%yagr+9nCJ1E{! z@lJ|&R=kViT@~-9cz4BnDBe@?P{n&G-dpiLiuYB#pW^)$AE5X^#Rn-qSn(l>4^@1a z;=>gmq4-F}M=3s9@iB^zRXj}baf**ue1hT=6`!Q|WW}c_K2`B)iceQOT=5x-M<_m1 z@mY$`R(y`)a}}Sb_kYi{e`q-=_F>#bXtZQ+$WwI~Cuhc)a2XitkoDQSl_j z_b9$s@qLQ#SNwqD2Ngf0_+iD5D1KD&V~QVF{Dk5s6+fl;X~oYdepc~wil0~fg5nny zzohtO#jhxSRqJg?&U6wj}?jp79qFQ~Y! z;)N71thk-xMHDZpxV_>IiWgJ7xZ;kAJ1Jg5ac9L{6n9nJO>uX{Jrws;yrkl#6fdo~ zm*U=vmr=Z|;y#M|Dy~tyoZ?JzuDGPQthl1MR&kx;ev11mt}0$$@d}DpRJ@Yn0g6{v zyo%yg6|bgvb;WBaUQ_W}iU%rQTk#;pgB7o%cwNQoDPCXk28uUSypiIK6>p+=Q^lJp z-dyn(inmm}mEs|aw^qE3;%yagr+9nCJ1E{!@lJ|&R=kViT@~-9cz4BnDBe@?P{n&G z-dpiLiuYB#pW^)$AE5X^#Rn-qSn(l>4^@1a;=>gmq4-F}M=3s9@iB^zRXj}baf**e zyz9Ll`U(F3PgH!8;*%AhqWDzBrzt*N@o>dwC?28sOvPs@K3nlQiqBPip5pTrk5oKL z@o2?k6knkDLd6#;zF6@kiZ4}snc~Y8U!nL)#aAi5TJbfCuT^}V;_DUPp!i0`Hz~eZ z@hysPReYP`+ZB&hJWlZ)itki>m*Vk?Cn&yK@kGUw6yKxxUd8t*zF+YJiXT+`km83G zKce_i#g8d|T=5f%pH%#m;-?iqqxf0H&nbRh@e7JyRQ!_SmleOF_*KP|6;Dz8n&PR7 zrzw72@f(WYRQ#6Ww-vvmc)H?u6~CwWeZ?Or{!sBpia%ETiQ-Qcf2R0z#a}4?Qt?-c zzgGN>;%^myr}%rtKPdiD@lT3>R{V?N8H#^Z{F~z675}05PsM*J{#$X2yCZI?cs9ke zD{iHD4#lk%DW#d9m3NAbLh=Tkht;x>vGP`sexwu%>0ys+YSiWgD5sN(jDJ1AaE z@#2a*D(<9s3B{cicTwC`aW}=?757lwQ}L3Dmr}g6;$Dh-D_%zNvWojC?yI;)@p6hY z#kt~=;^4;?)(ep?FQjYbhS6 zcx}al6c1Lsj^cF{ucvr@#TzKzQ1M2JH&(of;!PEArg(G3TPWUA@m7k5DBfD}Hj1}Z zyq)6h74M*UN5wlS-dXW3ig#7Ko8sLS@1b~4#X}YErFd_}`zYR5@qUW;SA2lt0~H^n z_+Z6{C_Ys2VTun|e1zg76(6PeXvN1UK34HC#m6Z=UhxTvPgH!8;*%AhqWDzBrzt*N z@o>dwC?28sOvPs@K3nlQiqBPip5pTrk5oKL@o2?k6knkDLd6#;zF6@kiZ4}snc~Y8 zU!nL)#aAi5TJbfCuT^}V;_DUPp!i0`Hz~eZ@hysPReYP`+ZB&hJWlZ)itki>m*Vk? zCn&yK@kGUw6yKxxUd8t*zF+YJiXT+`km83GKce_i#g8d|T=5f%pH%#m;-?iqqxf0H z&nbRh@e7JyRQ!_SmleOF_*KP|6;Dz8n&PR7rzw72@f(WYRQ#6Ww-vvmc)H?u6~CwW zeZ?Or{!sBpia%ETiQ-Qcf2R0z#a}4?Qt?-czgGN>;%^myr}%rtKPdiD@lT3>R{V?N z8H#^Z{F~z675}05PsM*J{#$X2dmwJ9cs9keD{iHD4#lk%DW#d9m3NAbLh=Tkht z;x>vGP`sexwu%>0ys+YSiWgD5sN(jDJ1AaE@#2a*D(<9s3B{cicTwC`aW}=?757lw zQ}L3Dmr}g6;$Dh-D_%zNvWojC?yI;)@p6hY#kt~=;^4;?)(ep?FQjYbhS6cx}al6c1Lsj^cF{ucvr@#TzKzQ1M2J zH&(of;!PEArg(G3TPWUA@m7k5DBfD}Hj1}Zyq)6h74M*UN5wlS-dXW3ig#7Ko8sLS z@1b~4#X}YErFd_}`zYR5@qUW;SA2lt0~H^n_+Z6{C_Ys2VTun|e1zg76(6PeXvN1U zK34HC#m6Z=UhxTvPgH!8;*%AhqWDzBrzt*N@o>dwC?28sOvPs@K3nlQiqBPip5pTr zk5oKL@o2?k6knkDLd6#;zF6@kiZ4}snc~Y8U!nL)#aAi5TJbfCuT^}V;_DUPp!i0` zHz~eZ@hysPReYP`+ZB&hJWlZ)itki>m*Vk?Cn&yK@kGUw6yKxxUd8t*zF+YJiXT+` zkm83GKce_i#g8d|T=5f%pH%#m;-?iqqxf0H&nbRh@e7JyRQ!_SmleOF_*KP|6;Dz8 zn&PR7rzw72@f(WYRQ#6Ww-vvmc)H?u6~CwWeZ?Or{!sBpia%ETiQ-Qcf2R0z#a}4? zQt?-czgGN>;%^myr}%rtKPdiD@lT3>R{V?N8H#^Z{F~z675}05PsM*J{#$X2dm?VB zcs9keD{iHD4#lk%DW#d9m3NAbLh=Tkht;x>vGP`sexwu%>0ys+YSiWgD5sN(jD zJ1AaE@#2a*D(<9s3B{cicTwC`aW}=?757lwQ}L3Dmr}g6;$Dh-D_%zNvWojC?yI;) z@p6hY#kt~=;^4;?)(ep?FQj zYbhS6cx}al6c1Lsj^cF{ucvtZ|Ha;0Kx=XwYqm0|L6U8Co0-{a{|shkW@Z^=W@ff! zmYJEEnVFfHnVDwqh{&q?Pq(h^H*fBpHA`pNpR)60B}4{iRvqE8!sUd^3s(@XC|pUn zvTzmQs>0QTs|(iB*5FRKz zNO-XD5aFT1!-R(mhYODo9w|IZc(m{s;jzNwgd>E<3r`T9C_G7cvhWn)slwBQrwh*z zo+&&_c((8y;km-|gy#z{5MC&}NO-aE65*x7%Y>H;uMl1-yh?br@EYN@!s~?B3vUqK zD7;B{v+x$-t-{-cw+rtO-YL9Gc(?E#;l0B9g!c;{5I!h;Ncgbu5#gi4$ApgypAbGN zd`kGV@EPH=!smp~3ttevD11ryvhWq*tHRfWuM6K0zA1c5__pvJ;k&~3gzpPK5Pm59 zNcgev6XB=A&xD@~zYu;Y{7U$>@EhT`!taFN3x5#)DEvwIv+x(;ufpGizYG5m{weHt zdf;fn(S>6O#}xJ#wh7yX9l}oG0O3I4AmLcTv4!IZ2MfD|-NJE&;|a$XP9U66IFWE- z;UvOIg_8*<7fvCZQaF`xYT-1(X@%1Xrx(s3oKZNFaAx5w!dZp035N)KgtH4HVJu99 zsW21f!a`UID`731LpY~!F5%q5d4%%{=M&B^TtK*>a3SHs!bOCO3KtVDE?h#mq;M(W z(!yng%LB2LFX9~{}o-I5_c&_j~;rYS~gck}g5?(C4M0lz2GU4UI zD}+}HuM%D@yheDf@H*l3!W)D)3U3nLEWAZ{tME4A?ZP{RcM9(k-YvXGc(3q2;r+q~ zgbxZI5%upL zZwlWMzAb!5_^$9h;rqf5gdYk&5`HZFMEI%jGvVjLFN9wTzY=~e{6_e#@H^r6!XJb` z3V#y*Ec`|ItME7B@4`QXe+v7Z0XUj)bm17nF@^nwZNhe8hp4h^0XB5sP zoLM-Fa8}`L!Xd&Q;q1al7z-0&D$Inrun?BQN>~f$5Y8!_OE|Z19^t&g`GoTe7Z5He zTu8XEa1r66!o`G(3zrZsDO^gpv~U^Wvclzr%L`W!t|(kdxUz5+;i|&bgsThJ5Uwd) zOSrah9pSpd^@QsSHxOp;jO~kgtrUt z5Z)=gOL({N9^t*h`-Jxk9}qq$d`S4P@Dbso!pDS<3!e}^DSS%!wD1|>v%=?u&kJ7= zz9@W2__FX7;j6;egs%(V5WXpVOZc|%9pSse_k`~YKM;N>{7Cq*@Dt&u!q0@C3%?M4 zDf~+KweTC^x5Dp)-wS^b{wVxO__OdA;jhBqgue^_5dJCbcShi7!qJ6e2*(um7q$u8 zg&o39;Q--4;UM8y!m)+p2nP$hgx$h%h2sgw7fv9YP&korV&NphNrjUMCl^j3oKiTI zaBAT+!fA!m38xp%Ae>P+lW=C?EW%lZvk8X?dxWzKBVjB|gsCtS=E6c)3M*kPoI^OL za4zB8!g+-A3g;8fFI+&lpl~7K!oo#_iwYMLE-qX`xTJ6?;nKoogv$z-6D}`YLAauD zCE?1#RfMYwR}-!-Ttm2~a4q55!gYk}3fB{^FWf-5p>QMNP~pbHO@x~YHxmvMZZ6zH zxTSC_;nu=!gxdsc%|?v;nl)xgx3nM6J9U8 zL3pF^CgIJ(TZFd?Zxh}wyhC`W@Gjxq!h3}G3hxu%FML4wpztB#!@@^|j|v|XJ}!Jh z_@wYD;nTurgwG0}6Fx6|LHMHZCE?4$SA?$$UlYDAd_(xA@Garn!gqx43f~jHFZ@9G zq3|Q&$HGs9p9(({elGk%_@(eG;n%`%gx?Ck6MirJLHMKaC*jY+UxdF3e-r*L{6qMs zu-}=0qX|bBjv*XV*k9NtY!`M2JB0&;1BHWxV+qF=jw2i_>=Jeh#}$qz9A7wra6;ik z!ij~G2qzUzCY)S2g>XvYRKlr+(+H;(PA8mRID>FT;Y`Arg|i4}70xCcBJ2^)E{ue+ zFcGH0OqdG`VJWPHwQvsMoWi+;a|`DY&MTZxIKOZK;ex`2gbNE75iTlROt`pk3E`5$ zrG!fhmk};2Tu!*Wa0TIt!j*(83s(`YDqKytx^NBQn!>e&YYW#At}9$mxV~@$;fBJE zghPcJ3pWvND%?ysOt`sl3*nZ+t%O?(w-IhD+)lW?a0lUz!kvUW3wIIjD%?%DyKoQT zp2EF^dkgmw?kn6+xWDiK;eo<~ga-=`5gsZ$OnA6(xbO(!k;0>dM+=V;9xFUfI6`>5 z@C4zB!jpt23r`WADm+biy6_C)nZmP#XA92}o+~_0c)sug;f2DBgcl1h5nd|1OnABQ z3gMN)tAtkzuMu7=yiRz%@CMcMIO!&C)3E`8%r-V-npAkMQd`|eh@CD(E!k2_E3tthwDtt}&y6_F* zo5Ht*ZwucMzAJoB_`dK1;fKPHgdYn(5q>KCO!&F*3*nc-uY_Lgc3x5&*D*R3OyYLU;pTd4;2972iT{wntOksavo3LHjA?y?m5DpX$5{@MtTR4tz zu&_(mEgV-ko^X8O1i}f06A334P9mICIGJ#A;S|Ctg;NQq7EU9aRydt-df^Ph8HFwx=KH>br1%wL< z7ZNTkTtv92a53TH!X<=D3YQWtEnG&ptZ+Hu@&K8*D_Fjwa3$f&!c~N;3Re@ZE?h&n zrf@Cc+QM~&>k8Kst}om`xS?<(;ZWhm!cBym3O5rD6K*ctLb#=HE8*6{ZG_tjw-atJ z+(Edba3|r;!d-;B3U?FkF5E-7r*JRf-okx^`wI6H?k_w*c%bkg;laW~gog?b6CN%c zE<8ebr0^)=(ZXYd#|n=Vju0L%JVAJ(@Fd~M!c&B&3QrTBE<8hcrtmD`*}`*#=L*jg zo-e#Wc%kqj;l;vBgqI306J9R7LU^U{D&f__YlPPduM=J`yg_)Q@FwBS!dry53U3qM zF1$l{r|>S}-NJi>_X_V5-YJKNj>4UUI}3La?ke0(xVvx<;hw_1gnJA35$-G8Pq@GE z0O5hcgM;| zc)IWm;hDm-gl7xS5uPhNPk6rY0^xoFA-iUyi9nx@CxCT!mET=3$GDgE4)s4 zz3>L%jl!FRHw$kO-YUFJc)Rcp;hn;}gm(+?5#B4jPk6uZ0pWwfhlCFc9}zw(d`$Sb z@Co6Q!l#5!3!f1_D|}A)yzm9#i^7+LFAHB0zAAi8_`2{7;hVy@gl`Mq5xy&YPx!v@ z1L23lkAxo!KM{T^{7m?{@C)IW!mos13%?P5EBsFQz3>O&kHVjXKMQ{m{wn-U_`C2A z;h(~OX9bQX99=kua7xAM z62`(rmoJTmXa6aMu!Ucp23KtSCEL=pmsBkgi;=(0_ zOA40~E-hR}xU6tF;qt;2gewYH60R&cotM7XJNGvP4d=E5z6TMD-lZY|tKxUFzI;r7BEggXj%67DSAMYyYQH{tHW zJ%oD-_Y&?c+()>ta6jSx!UKc{3J($BZUM;*vc&+d{;q}5Bgf|Lr65cGlMR=?5HsS5UJA`)%?-JfEyhnJi@IK-F z!Uu#83Lg?aEPO=xsPHl2R zH-v8r-vSWNW|n!?()$dcmr1ou3Ti6LWkpVlk}F zj~eiyp7xCfI~nvnUJqOIMIOJ-!562NeYKzS@MBRk|9Dzg?T0n^)&XDA>A%QB-~V+r zAM)5&>&GzPE(@P2$iDkOlyehjK10sX)*e2GL3tL4%IpKxOL;!|J4YSzUB`Fu|QM;yAo z_gM|=x<`HA>_45v$1eQ{R^vLVVWmd+ajSMMesYDr>BLoTl9C0)*E$(w`031e%#R51 z4G%xK+;1bFTg(Np+{W6B%?F|QA{%1kN5Y0wNFE+8Ac*6~rZx%BO!z!nP=R;0=kH?n+_cc4%f*sqOT}(Q^lhkIXydnR5Cn>%Iwps1UncxQbiXib- zrD5yPBk=8(A(=N6M5Apkhpowv%l33~CRFo9GCo7ZS3NhWn%`I56s%NTd`V6D?jz*=Mtp zu-J+#9>RcQ(~vXojR}^04{u=Je}<@3Cf_~YSf!+5MaU)91KD9Fp}z(iNlAlzN$(9w zvy=F4{T6Yh6Xpn?Z2kOQ?fj;2XW#p3jV%h18VYyvAT-%)Cj5pkO<{VmgUv*-#mt1( z_-cAXsZ5JcqBWm5n$1ebcCG!U8Q(tKM>SuAs!pc*K{ABjNbJA;r&8j(YgjJ6Haw_K zH4`(zv<@XLSd%46^5!y77vJQ>W#9|?qne=eM&U6ep9$Ppr85aL!UsvmZSkq_mt>^P#+W9t<5I}4iJjhoc=dCpz(@%U|Zs@;K9TpIpXaNT_Vezy^pFoqg9EN1x z$owJ}KiGLaj`)5V^XB7L#tX_kem66TZ@T%-tEgrgcnb078X)Yn8QmkP&Q5S;kYYZ6 z*On6=&fe}H%Ly+;UBwo=X(wbR!)iKN?pY0{&W^I3Xajb%O@>ib2=VnX7^_tW$q@)P z-#^CJHi&Ad#lE4%)GGZ#`HUW&K*9cRbtv|bCBGXA)!XLBPNZXi_;kJqedFh{6MW4N z25qgoUG^L8$@%=A3zavA)JmebLiG(vg?iHIxe`&;&@gwTLiKOXq}!d%YIGcZV>~yjvo-2)VDwwx zNcOOr*#%*Zd(a}2{3hmxz z-?0sJ5`InBI_Yh6wmD?$JM>rInwg|mvY8~I@9<$#4|W!q-N78-kE*EpPC8!~KZEM# zIY=kS;&L>e1I^ZL+MtuR4X_V?j&NVCkED7ylUR-+^+w#%OB#OUM*2+48O}Jiurt=V z9PBJfLY(8~c(VA&%RpGxKk03_$+j@4{x#udtfQ06G)9i4#I>tdYxJwk>WH`a_V=_6 z8C$Gp49DWBHVVc}s2{5q`e9Z1M8B?W8lA8^Y%$w_ z5p4cZRI^I69RrbyA@wHw1}Xk{u2PO=MG$r)COVR86$im4%5;+lTXoQ>CsnYfu4FP> zqsgEePi3yBwtK$XGhVNkll6MMo=vCo_3VhlcVy*ie#GJX&*yt4{C7A1olhs@Y4=0B zU0FF9FWOJl&Bn7~T|7LS&1dWO!^7JdWHKL3ho#-~<(~C=I7$q?kIG$6alV+3+Rxab z_gyz--fe=5Wwx`fO=i8eZq3Mx!TMU=a=B`2jwMU4$#OB9tR|DmV!miJq^|p+;jtv# zY&u@dMhgijttRvNvh_7(;ZArunlG25)pAA_XvTAHh;?0Gj*t&87Sri+zM9Ww>&dXL zb!i=L_GmgAFDIkHRDd^Vm;=hOLkam1l#VkND*HI9`q@M=jQzL+l7i^(czA9d?~lX7*lo`f zl$eiaQwTJj!?le%QP&tJwm{B<`H_s(Y`#=+_$+nHj&ZuJTCGP@b{;{Hae@vAPqzZ7 z9SdMj*l2iXwg`rZ$ynJ$sV78iXS%A+n;G7MbPhgo`Xw+@#55bs1`w1$l>kn#o(^tv3(A8+f7_-sF zLbI}wxCUVjONhJ}&w`;{=#oXbdxuQvXuR4>gQ3;>0fS&Fb_8NPLQyG5_6?(=|Jw%yK7V8-Tr1cn~bE@mvV!DJ1hz?r44L2Sy=yX*~ zkXz8w#ui>EuqPAYP`7hNF3ses*!@$wua=Mr@MkjJn zxkj@tR*ThY-Pj7F0qs}w=@iAl4mm}HVY(O%DH3uxAEg#zeM@w2`w68X9j1Lwxnc#ns#FU~Ga9G+=|mjiY(KWF zF8h_n9DN#sw)HKbXmd950aQx+X)-)RJ+z*Kwe4gvm}~HZl_=nDUTp@WezdN`C2FDl zw00=^R@F9YHiDVzr#-9MYd_Qlk#KTa)nd`8IfE;^+S0Z&C|={uru|A=Kl2Idu>Ew4 zn)Ln9aJ#$0*0pI*S9>pc-Y>c9Wgm4@EKVD(&3ahZO?5Qs7ShOoe$JS!rfBw z(%Mh6|8pd&k+a+5ZeFaa`)yAhc&Yoz13#m^yID(#`!>FO&Pc<`#Dcy zYq3@cTThuFmz4uzN0&>sdq7s*C5`J|m3k3tJ%;uZ6W>=IW+C0DYUu{-T^HdPW`pqt zMYTNM_M#_Q(3Z;COxv?!s^MOTlZfFCX;R@+#1gGmQ#Lh6#L)HYZ*_QovoRvOTw{@4 zYFM8E0g8GfttTGd0%v8BTuI9%rfoJJ`1pI*MUP7?s9x}zm~qtih#yOcHOEm(=a#3H zAl#3zwc)_oBaY*g@M+dLULlkES@{F$w}tg8;?Q*Cmuc*YG};49Aqa+>(-Exa7}+TJ zZ8q?EnmnVihTX^p*w&4%tFG@b`U?kb%LYVUFJH8i*Kh&{h9M>xmFU`j!O@Vt=tl{< z(r{~KP6yYkJx#-`TW>ha)~yD5KBMTU>w}A03XwwJUvd7{x?IX+-LxORS6kn{Di_Pn zbMISH*^~-SVa*$@-&Mx8u;{(&U=czl){N7P6C80HVng6c9t2l^lF^~80m1tIYJub@ z2nOJ~3c|`?+^~W!5E9OCWl;}<=mNg(4Mxlmc}E!6j58(*9fu)^x}G|%4skRB(qbwq zp)08C_BmVuCvCJc8qEy57$Y>reBSq$QE4Gg#kvO6<@gT9g$jwr-RV4C-b)-Tma2j^>jsLd8y*6X-_Hb`wI@uBu}t$yh%% z2JX~eb!g_kyY}p2JXl?hF{X~4ME03M?ecs!?&sGOqW)I5I5tnpP}dVip3|bwJCAT~ z;M5ktZ{v~az`n?RJB&JE=H}(j@UXXX-Bzc&#>T+4pW>!D`M7S95l{sSjT*sJYvFY) zCX5#)>`So~JJmf~3&cYp{BG2Cwwf9;gQ3mroA|c-p)%Q*u--m(2nGROsmguUEwQfc zr?uNs7oGtE7^CPzR1qajgc<`bCu~7?s#@;QAEzz?f}u<%z&> zBmlcL2l1>M+V9*Kw7jLUNnR2QzQxmFShwHJ7hB)Z5tLJ!zB11qyrrW_^{h*(vV@!YgiB=vH7 zhDal75yXC28!g65>}%U?*aPB_^+sd1cF6k*w{aDz;hG7XM{;9@K8*BSdW@tu$)S$T zoiw9GPGw9wjm#A}o!Vs6GGkI%q^`-YG@*-1G|!j}b~hU&aWulqZ5=9eXqE1#W&`Vy zdy*%^#>a~3YLoaT5aC<0L`31W;;I|;7n$%e(#p&$6R!M{Y}&$F)?x236S&zU&D8d6 z7n>EoC0pE5uTC`T2G&PTCL_v>`iXYZi-E+WoR3L@4eJ{3#NH5)kai;_o!R|Rtojoe zdScZHTirVkL=T(H9ohm-&iT!B9=Y_`L>;2eO2yuUhk_f$B-yuaHl!o^h6vMaj?Tdo zg$}dX9%cZ?Z=Wr&d*)>=k#}c`+bFS#Sw%XFU+$o4#imfXGm2OS%SsbUlNG58x&Tzm?$im^AyHS_$)C7|Rj>rqN*DAgB`WdWneYxvMxy>&CnCt-HQYHH?@77g_Y*v2 zc!P%~;ckrMq3IsHL*}{vWU@zMZX1vG#Oc#cSB`j1pqc$-D$l{!dx+*(==RB!D_@$z z?L3TEtx27X_aGhocIR|TJ5C{j=4-Z;UrT(PMGEweHcLvwjz=7R%-M7g|Jeo?#d5dt z?{G1<%~-diY-1Ks+yYC{S=pb0E3yJbm<2pk*2qrc^D3V^qsSSKOSe3WfukCMS;FmE zMu$Zcs59mO!fK0np!B@MvJPIWMv2innwUin#^qp-^fRrk#`fXWwlb$aF_87d(lpOD z_+8ZoCyqRI)}uk7cPmd&xK&oA260zz$g=fs*2052`{ewHj9ryU1$gq5^;q=kX8{Q` z^;u8Q9c4rW`Wh}t5F&9-ky?4OT+)y9V=r+Eh#s&W zVImY$g0nmxx25Q{y8Tg4RF~AGJ$$A3@0@Zpx!~a#cfN-c%2oD>H$h~nd9@937Mj_m z%;95B$Ldjx<|2qs6XHv`*5(`{z-(F8E}E~g-UB-Azhw_(LJBEkS3`Nlvk01^8*Mnb zl&Kt6wr^doIh-pBj<5@c(edbbiW^o#jgZk+_VBaHw8pv1HXM}%Pq{&4gK`g<4byR` zZH&sXNftPm%bjHCZD}N$ zbvL3*TsXbd{bL?k$I3%%$l|2`;>;z4Shvz93ah7=_G}q9EUSmYhrh!ybk=*|ZgW|L zP#e!E%NQAg%`DRk2c50VdZJI+P8W`$xP?H-=ss*mK^mzJOR6|{n=14pllGUPdxO;` z>pcXWos#evQwnTDv(J5KCk^llNK)BnGiuw}Gm>YJ$KJzbi3N{I=h;qk=pHEB^rv=q z^d)|Xm53Ey7L~G=nK)~;4Vx*=Mnc`>npvLvsO-e@P%W*bV{d2Xc+#Pu%w{Ch;me@zG#&Qm zVT2^wiJdgXGzkWz4Qo?bZfB2ltXs*9=l02hW$0n_CCSYOr;(vwoLv+IljnK-T*wp! z&L3Kl97j$Qg-c|gNi&*+-R85M&*)HF+y3$8!^e-!VW0-Tnv9IVf#(n*RzltT`t zXfy_-n*3t$6^snaOL-eWR;4S7WY}Ag919e%*1H)J!(!+zOK=^1?U>H?z^>Y4E4k{y z47OVtK17sQT=kA~8Vg<^oS0)3@7NJgX3xj7A zP`m^^AtM1j73MT3hDwkxW2&eJOqM~bY8kB){!~yHL2+TuJBvF*h`ARakEK?`sYoiI z&pRq%%$==_GnqyxN3S&7V#}2)`$k&+e+#t{oSeTcN;5-rCLQclj(L< zT|spb*+P2WXVDprNbtxHJEm9)t&qi@OvF)~wWtfWO|Z%8-E9**>W~u)p`a{CoA{Lq z!a~GSQIH8O;Hb1;RpW*JO#X_2qp>DF$EwD2i5G1Q=q<#}o2+r+*2oza(9o?-704M` z(@h?SA!mqVBg^`$h+8dmD~-D)){yC{Hrfz zX(3qTUlhpc04X|8;{1AT}#fdGZ?)g!UmT#nxdiax*E+V-pO@VjP05q_ELfJVil`pzFf1N)?n# zYvR;$o5H0=h=MNL{?^3P2%{d9zp0KXXt1pz4#@(cj|F+6RvRaN)^HUde-)`ppTdR9 zr%*jr$fp=n8rdf7zblU8iCDV6Ly&1wY=;WB27;z*##5TVc-)N1pL0U0uxF=KvJzgi8 zdIWI|r=(L|`p)Ec!dVKPG$+zw{Z-B|P+dj6e46#EaM!9$oLgJQlZYsx_g6LNp^NlV zJr1@9CPS8wG~Q-8oa5kyaO}7em{wt`t_T}qza+(6Vptr=&=2*0*fs9G0||!ZOs~^2 zcW>B-B;;xtkwLT}EvG`4z6%*BjM_TghA0zks8+L_ZNhQ)dTXmT;?D9CsmL&rj0tu_ zI{4_4bckG?WlU^qKOr+Ly_rD^FZStb>kr|?rujjh(jOXHqJi1nFtyD&>5XG=6MY`8 zGSkp+(tr*0Sc$G-g1%%1lEkhYzugoPj#rkJgcZ<|I&aj)Gnivs*Zei2Av5u7;yN5R zINmbLNs6wC|88@WnzQgB-p-lQb>VBidAuH<#>#oXv~8i`Xb3a z1>VL4+?k-*T1HPs;2L9R*%_gxka9~zDK&AN4ag`_U?|ntE_Ry}4DzX*ZLHwGs9VC& zB!xJTCr8PtD@pJ}7Umw=?lq!8B1UH;Dsk<+wmv5B!s%O8Qo^%D5=fZMp-{HOmE-7= z;fRD=B?lwK`zRhvZuoI{N@O31TzQHz{N>R!Q7ws6HJp_kkb5GQKYHG~kP?IeTH(EW z1DOrjP0#@^t+{@K@*_S|`|l=V!U%C1gJ^P>H!_D&2@%v-xH#mWY8-@yd3m#du2sdm z7<@snNqW+p2L!5FlCI$jLe#}IcxP$KgWMYDG;vMFrwP=#Zx`<>EPcfwpXSyKi8eGQ z*H*(dkEh9Apdg8mctYD4m7LL&`e#E;dvujdnDr4Rd$gP_neLeI)T=m|(mxn!Ws?}e z+d*90w;ffUMBs*bUq7;dyR0N^=UP4rn#>>#qi%tco5vhU>*QkC6C-?LDuNlfB*=rs zBgeRog!Ewl+ zR)^VKa?Ho=GeZ1q$K7di04&|ZsGuY4jIm}WT&rZFYR=u$NPdvXU%w2>5u2wTE}eI3*0 z7!?Cs#F;DB0Oxz_U_F;iCJsvuaY%-^l!Jo~@EnSttPWa zd}lK}L)evzNwOFv`^&oJic?$H6PJUq6kN6Dn3UeU)y@PD&N_}&j8h|bVSlJ`IDUzb%aRbcNq00;p zcR>OZw^(vG0X`_nQUj|a(80BDGAZle^*fR)apk~gNtGbta3h(yCY79svqzc(8aLj+ z`$9dz7u6ia-?AOZYIX!(GujhB=VekY`AsxRG#%GK!X!@EM1AY^RZblF+;n z8W|_w^PH{@{vBg%-8mT=d1MuIIzldO7FF;I3~BZ=s1+g;PLcQ1aT7|WJy5|wdnYC@ z(J>o@k(Dqe>}J>@X>chyCxpY{x^UZ^HPVLNK%f~qmMjTZ7?+t21tvKK-3`Z#F(aCrA4JLI$roLRW;&%O&hh4(!!z1lF6vgkiPy2Dvgd8Y!H{ z*m{f-UM`cyS~fDEH`sl(fDFbvmN9LdWOTk-Ew1*cY*{HMpV)`xLT@SOgXzUPVfSg@ zbfIs&;)-F+u|p+4)OqYkJMy2k7Cj4k$2mn2)O3913U7w&1opZnO)h|~_sV7*?MNHggF3rI7uE*A2+#(JVyDJI zY-K>xg8j!|j7u+Jhp^%(@VJ764b4&TDe=O+v#%4|>R7L5Xz+cvWLQ(r04E!DUHs0= zXV?}lXsUG^cj903A|4hIR+$$kvXQ!@_+DJ9sCoNF(*)t+IGU}fk-ZlM`GV_e^X53b zT(~f85fYhtgrJjyY!nm5fu&f92Z2by?qp!iae^BHpcbhL)_9mEj2JX697T!^FzCF5w@`4fuqZCkTi#4i+Xm z;k~kz?>us1l&tAFBQ}6!EcJ0KPT9d!`lbQ5gJA2RzVR08RJz$tvxbhrhDblGIwmE= z#OPEfTF00DbAI^7XjYEPG5p52K1&?|q2Ui&mVI}VsKa@sC$Gh0s#2rz-5`!ZaO*f+ zK~lp|XOF~1%$dCpC&W5mUtG}$P7gn#>JTMz9hhYm%fV5JyUSPv9uvu0RpgRc3c-y$ z;}qElX3PM(<+T*+2st?0XQUv5GejLhF``rmo*gnZ^cJh8A&blotwc|72?C45!;Xxs zdW9CTC;E>KtxCNC!vDCPWJ7fnLZR4Wnfo4noe~9>cgKR--s2x!)3Xk33;lf^T)(nr zLmkpZ0Eh>r0)j&{W6TH7lhHGPvJ!5a_zE?%(J(t5Jquh&FLdL()^wuMJ+ACZbV)*k zKme;|Kog{;ODhfhkO?KgIeLxUEygcHbvBCW31SPeK2p)`!x2IMvrC9)F%DJkia{sr z*tQQ(7M;#)^x?BVEUhjJ3L5_{*335JQ^7I#9A3O_`%EQT)SXXD!N52K#;G`ctfeMs z9rx_zr^?zeLH#&R&!7z(R*SO^`G*-0w3-ZRna~j4;a0LHm@!~{{A<*|4tA&-Dt$Sh z%biA&?KzC4Heh1dQ?HZ37p=xj(ugv@Hps_ZAda$>1}D8>Nr*lnLsiL z2OLy>TvUrC#+_t z`Y@lEFn6I-HW(KY7v4oK8|uSw5M<$3#CRnU))9gEwiHS`_XMFOK2bms#->=6{kV;6P%@@ZpIxGzxMd9)z!TYvapNq7qHP?jd+IYkP-g zl_~Xh;MpV%w%aM|FX516htz302nDfw;kX68(Ep~!ObnDv!28&2^stGv+9*s19E2Hz zkT8p;+r8 zHr_rm1!b`eX<3~%?1!7h-eVkV+EmEF@INZ8)=V9@5KNacio6u^4R07=p~msRswM8Q zE}q;|ZV|(fr9%~a{Sa5YxXDY6gtkmnudEaSOpUfNy2@-VGbGoJ5k>$|-QlD;Z7NwF zL}O3gDzae2s|X!lq%OL0n{})LPsY$Lot+UH2>*x3a{=SHW|!g}cbo}S1Ewj2&!-9C z-~`kf`b*+i$KJ86-V%>HL<%HcDw+;H!nq8WvDKmKv5lxDg)bhCch~T>bo>T&qyur2 zi5gm+i4`^*DOhy_Q-`C()xkJB3r#?rhUMa7lWM|eNe|2j-Q0fu8?ODF`xH8i*k66f z5DV(iNT@fwTEv@$@^Cc774RCAO32Ajr^H7(0JaTwu$_@QyaNwo&FbO&XbH6UuAi#K zhmkL|HN7eQRYy<(_oA_&wHt4{aMpPhlulf*Rk+e5dm;vp3|Q2et>Rg86H1hIA>V!u z$DFEMIMd9B>Z7rNh8$-lkrI*zj^pyxuDQpL@Pfw&q*=ob(vDfN6~uHz5&2GnH-&JJ zH76MQ@ShktQq(%fSZ0m9voRiFrMSQ7=wKu(N%+Ikyfu!lQ!P;kmntEeA7U4$Z6*1s zP*ZGwI0W07BJV;JD^$Th*nv5`zS98ZXZ@--=j6eCO79by1wBQHi+m30u>Pjnz^ z>_zMYr`@s39@L=~g5{%5-x&c!41)vQ8#1DXI)u8Rq+`E4-ci4kXb%zMs1#?J-cXIT zG^VFt%ag1+@6JjpbR1y@jv~%{xcJl|JJ1bRBfj6moM&;n9i@asBD@*ETSp7eNHk8Y z!yorsmX#@h5#$d|S=>(bM!Q9x8XY~tlmWX}~X|q2RJ`dw4n8J~K zkN_gVUF3krnK`pRasec1cpSlv-GxWkQ}{vym*zTmC}MRefL&)Rt>Y2whcEr1ICwZJ zxiN^y%8Dq|RtZ~RWiTWBX5w^wTVuO-9z3O&l`p^1xcB9z72YQ=&M+ z!%M{{U}7fT(tL200uMaG2a*;mI?N+HM21?@12B@h#dAG&jvg6{B)+uX&G`?x99rUY zVCx}zR{9|*-Ru0Jwngn`hMGC2B>%sCHPrxSt8#l|To)zI$@;g1rJ5GH1w z`F9TOFv6HUx!#8%3Ly*J3|Ci&YBBhX6<}vm@{N~ZTkQ~|1OHVMXA zH@QELSfP5JlrwVV3=kZ&w0R^(L86Q=@TQq2iw|k^5-+`x0781G&vwYaXIhYw-K%zr zAWENz6)zv_avb_YBSSy!dN3Wn6P!wF6OCZTNHeEw^TT!$O0mnW4vU6bhTj#HYKKw9 zDP+AQRH=+Coq`Ntv?WfKURbzia$&fy<8{fM)AH-ZKta>&61uyP@VWQExhd}xgx zZiK>M9gzWcif8dJwE_o2H|a~237`mnB&CUL=8mI)qwlkxmtlNj3r!v<>Ndo4@un1; z*l~cKG9dzym|Djv($GrsvSgEp6dYLw@*<2j4i$@(1z*r5jWD9PKA29~&tXv6cy=+< zI%VLVlpYQ$1#=Ldl=EQ`sB82^{NyP3x~3uWCv5}sfxR#mNDSIMEOXZ36GWOJ)RFVn zNK0P2NQakcV=@_)KnE7ASrfOy%?Kv$f1dk5F)X~_@q$Ish)FQ&_&1NDUmI<(-Ix{l z80x0$5CmgW)+$T(EA|h6c?jI7^Gwh3Gy05uMa3c+K_pv6f)X($?g({ZooZOKLYUq{6ok`6A1tV%jkUWZ zbN$4ty1Gdvo;HPw2TvqKONZvQLjxgojbT`qw#1;B4!|@<^4uxnIikKMo?WCQQHRX1 zS1==XBohQkxPx*;O!|pAD7jguV{H*-h4s_s>Q2`0J+YS(TolA-C7DA!2wT;!aq}Yy z&#w)|jpzIjqc+>#HI>0cylR6hLB>d1k7?)EL~B?}gER;CtqX+1^Hp#Es%ibcuvP3oqIGWI8_X4~_;7B7BaRM-XW{ zlqabp@;p!@=Y!W|+Q?z0K~bGVBb)1%Ar{ajlVunSxDj{2vxpqoYd-qUP!V<2>JWM& zSojEet{LhP<7T4MnU;(88YwG47JL~UKfD^Ep_~U|6e?pkEQu(Y_r&0+k|9K{8TSU4liOMiy2#<1X$i2Gi3@dkWOdrHABp+hiMTz z1_?Ew#4YG!cn7j&J2MP(_)wQ6jj!!+_>f)#n-Eb~Y#JL|L>+t*%#d{$d=F~S)Y%__ zqz(hDjU64-=|hm)LRV!w6bGsdg==I~?NlbZpRz+b2aJJXgn&9Fam*h|l|^8|<#?E` z9)=6pbNZL2@;Z~YPTdPzr#5jV^o?5*z7LyUv!Mm4My!vS{(Km!!f?1Wh#$UgR?3$2 zuM8kR^)y4^JVI(uo`Ve$M>dYI9n+wV%!jQ*1$lLg_^XH*z6d%IrOrfaQ>2UsoyJA6 z?+}6|<4w9LUV#WY;3D9AF?gYtp z!G&ORi>(Lg9bK^V-E)SV`J6^8%XY0(ZgXF8!sE6HMJ{q$y*sK69b4a2c6Z40Md)xD zq6ovsGhQ~wjm$6*gvoY81tqAf%Sy~WjKeO}PYsWg5otEBrlWD$#8{3ug`^$fC(dP- z$kRs2Hv~0W&e(fot;ZUjmnBeh3Q_(rrRW@{aK#Rz2kG;aq2l~pnRF#>nfX_}Ll&CtlyZ?`wJVwG4ugs=|Q=|~ovYi0P6@p%VM)TEs+ zTl?@%ervR5_gc?)Qho)dKRwhcPYwPmHbOJWql9>Vih$@M91B);x4ge@O8+r&6T!jVp3 z9FJJ>?C>Md&oQ=dSfgZ(`$=ELg(p89LV!zVjBE+<-WnS3g4!NsFa+Tr8jeZ2YB&pr z-J~GLl;IrsY96UH{>ihf9D3v-j)O>Yo2U7FO=MFI>9-{gyoZLEWxh@nX};q4<6?wYR^ z!ED4^9>Vc|ND^CVK8>xx&%-WCJBG&S5l%JTKorE#Y$EysUklfwO$N5YPM}9{BVu6R zmtt>m+=!2eJ?L&h4iet+3YHOSI1g+sr1F*v%z4@OMx^@OxVZk zjQM>Te%A^+Xk=2Jx$w0X*g})Z@6B79+1-xz$LOmhq9u#Ai1%e6<9ObLp@qZH6*5#! zO__H^Il~SR&(QyTg#|J4dAcGWq4@5PfV;iXPh2m~9(`b&nHw|u+nJbgRz68==9bzs zyC-|@@7HvAKc)S*|GL27gD(BI3w(Q;YzGdE^ztnu3jfBt<45+M`0$z2|J^fLo~HWwNSwS zzcl_Yx=Vo{i?Vim&>?nfgh*hvy87s zq{O81Uyy&ZT&-~DG(tP$gIz?7!I~x$$<4KDFVDLTUG)KRcx%3lRd4)bNBhl|`Xg&} z(3}?vNDbkv#su@9_=VV&DC-s2$g@;4-a+R0XJjCDMx!}CkGm4}CSv}3x;+-0O{NF8 zCnxrw{@X1eRwiOFtla$9jwP3_y|Be5R8gkicXjs_zOE1~YW~pYVMU5~s%}b_Ba%4M zU&K^QB$Ml}iEaHCE}IcUww&@WQ*Z5G#MXQLPCnEDq{nWS|04xvsRP1&sL;vV`4>uo z`R=O}FBg+>3FRF-@-K=W=_o6-&En2Dt0eLcaq`>}&zRAw9w+|aE8C@a*=i|U=nC0*Z)S5{IfmySQR-s^1h6ZUFf7OMfcnBby+;LyS$C0Bry{sPF84Q^KpZ%BR{}GLM)S&zAx8G4jIEn~R;3y&-MTGy`RKcNV z`oC>PN6qIbJ#mztI7$kRl7ge8;3z5h-PX&P%eC$1vL?r|!{ zy#S6r+f@MW8hH=iD+*j3FkwR}Zn9<3PZfEVMlG)hdD}Z0kN_qVVUYw%o-T4rf=e0I zme*I?2vg2rqhD@AazVNID;Ccq{TvbJHXCpz?x}dR_2k?l3*(|eG%#Hk7YVE-a~Bs@Y`|)wGm4DcR?bVKF$Wgm z(SG&IHSAghdunndM&s5(O_B>vW&xv?8wSY0ZGs7$=6sI%AUBeUG(N{ zkCXyNf^t>Mjgb^&61Lu?%nrOpS$+8iQ;e|S(2z?_xi@~rDw}eTNB!W}bK{K!SK{jg z)f2C$Cxxixo=6bZRdd~@t(xnoS@f1r)p8n<*D2!Dz}-D74zz3cHz!B@Et(?P^OQqe{Fno`bDfST%rdsiv6%)QXAImeZbC zStz^QdnGHA@JyGqdYdlySiK7f(`%xy?h4yjrTT<9S+g{2g@Wn1FATQ0qfnWVKJYy4gDF zxN=lX!_}oYpQZuV4M(UGNiPGL-zRpj~10u+cFuYN0|9 z!Q(bqC>!7l`IsH#p`K6is%>i;7rnD7x7m^&bii4B8v)wZK5>&U#gvWYlrMH#2H~Pp zEv)qm2XU*eR?ge2whbStG!#=nZxyS+t<6GWQCyj`W!+MO%Ye_~Y-YtivH-`eI$nDWjzyr#eamh1n5z3WoaY1K|e;y=5 z1zxU6LqNa2idnS5%?mox0IO4zM22!#QLZ@WH8VJ*QO7s$s|U^mRU3LG$X-;UDhOqY zo&7{(TRXa>217}!eLp9TEGA_4S_bW zTcxiICPnY-R;?G3b2+~JT$6#{V$YZtjzF!<55Wb&(9YZhuLih2&0E3RrH&#bKu=d& z6n)dlSb}DFxDA{`z&Dtc+CDUL+f?q)dg(!-AohMMf5`>i1RMu6DPQ-?*A0UkWKyALo1>z zT9H?!8X0{vDcf@KrbSD{;Cjx%OI+U0-}6pi3#WO#J>4C6Sb}8(lw9K_L&nA*IEc}} zx5B$%mNVzZl3_X}H5J*wv zyC#NtX#CE5T}|EKnY0o7I%CZdc}iW*2$%(E<4(h(^?SeK!pa=Lms_0xLm`GiCBuuj z0BtQkL(>|j6oSm*hsjlTz$Ly~42GZ+e_nhl#zy@+g4=+HT+btrttr!M+MD~0X`F4! zD`>eRYL#LSUOI2;*|*ngPswjIPM|?tcVk|@l2$8Ya~i=XDD|2y19#2{O1o;~_4*z} z$6^?ZdGmW`=vO0hDBSpNE<`G=DN3>$up!BdjOwcp`513ItMcQIrt*r0l>}4EMS7+F zWePswl1)d*TNKFw@a8}jeK$4wijUxC080bD(iYrI4_xkx+1PKnbTohjK}GTf1O>51 zQW6#9M`+iwacGA&f}cHTb7TrtWXF7vU#?6Gns#&2fUcpfTTj}fj3fX>V5<=YKcXC z%O&ZLIm}(-g(cn_uKnTWf66vreJu#Cp%!Hx*`!stHmp8MZE9WAIJ|O zV~!MwxNBQ|v%Za{ms1lX+t3#nOcxNRw5HA#ABx8pBnL*TK@gUc6lW%C?OG7zBcBior+|)8z z@nNrO06l89@KVbicyeG~ z*w>ZU=AtrVj(XpfQlSIR1Y%sfU8GY_1NJ2Pa)kJTMvTjwVKE!?%ayifS5Y^$U~-|! z7to0WL8B9?^&%;$=x(P7x}$+_B$oX}fRU4!xkavXx(FIzwPOg12x9RCOKXDSrSVn^ zmv#NdS3N>}D&0y4tfyEAXR)!6x1#GQaulhs9E`W^atidHZXLA-^ac)}4nAR_U#Js@gsJ!YO;+OcsIv1TTv}eYVv$e~sDpM*sx95NYoNO}LG`9g$}+lYe-&PJJvAhdLFC{KURkEER8& z_xM|bc?t@(`Lddip{!dEvuTJ={B>8}Tg|74T{G(D)iu@{G^A**zZzgEV_EdY8Aa>| z#c2gPe6RvVR*(5HiE7KvXj)=vtfwu_*D!0ks|pgBE|0Ya1Wm00S)^c7hseF5#0Sb6 z6?lie70Er+dhk*+p+L82x9S#eD)plY()h+lOf26iH>AOdPgXORT4zDja&5a7%**mg zC)>ssjiLwc?zibSed2n!lUu7q{k0-?sBINTnr*?jOGRmtS}E5~z49@PhUyOT`c=eI z64d(19NC#-WjZL87ePzXW-)BMADf~X-=#?*w?T3n4>ecTrp5Ra*(XM|e`1=Lpf7Wl zl#(A~*JCkZPts$dh(QT*U>NwOL~IEr0H%o5MsSixv9$HW{St`=h<}jT&LWV}a`>8m z{@$-ZMz^E@eB;_$Vnn7$t*J8n=GGFGlSMvbkg`p_iHrMD%S*3V_25v}<>xlCD{WuZ z!boZS7^}rLo)^@4Cn?K(p*P}SUQQ0u5ML1`)Et<1a*8o?IVa449jTd-=t| zHlmq9inDST@`$H6kZ`|N&cagAU3qudhYoAJ=2zRGhx77t0shI1aB2KxQ?7?Y;p8hK zPVz}H1hFHQz~6h)8lytUn2EwU%+IN%=PVF&fuG@_f@buvS?b-^S*i%bOgsXD_4 zj7mMN3Jn>SH}HcTW-R0DH3sOUBa11BsoSVzF;X#lD$|hzu50tw5Yz~~S)cr2Vld9% zq!LCiwKwA?D>#^k{t}#FIq0emyrK{s>b#_pE#aSFA4(kl7X>&N$PKk+zNbl3zaLZ$ z{Oc8=UZ~~mu&xIza}7&wthL1psu|#Aq?j^865aKfxzB2V=i1uh$){#zW*j)xK9T~= zSPmkLBFW$)d6lgl9I>Izp+z3kgfSXqs`-+iN&P^w7veMqB460(?5BfWg;EmcPCbn? z7EM)>U7iYhrhlM^&zmJaMUl#Ai_g6g!||3%Bfr=Bnq&8BGK7}tgrT#^3&PBrB_ zT+L|scMGa1-hb1`e54~oZ6uD*hs1g*`t`q@0wz7<3Ti2q{IlhTi?O}k*`{gok`1yE z8W?|%%TP1uY>3<*(b@r`fa52pp%C|Kv_LLM* z?GtBeQbuyj>J)?>B`*-`()9Lc?k#kJa_tn;3~HnEH%y$DOx=|Je)y zUwm_OlpX9qQ&*&>lWW)#{J^3OY}>XB7a6XJEyJ71-S^KCl<;!ft?6FE%j7zAGe_pJ zT#76=`ocuA4?!gjV_kjY+{iCgWxsyVr;W>Ta`gc9TLZscTD)fBDA-wbheTu#M5|4! z`vI7sK32gm?q&mYeOrYe@~H*kY`9=o2{YFe{9t1Jo}65pjmN9iz$;KSE;=r~6*}O1 zF>PEz@*0-|I*pto;MkTF5m~h~wsOpR{XJf34a>@#38JzY?D&>xt_BuO{h(zdP{>-i zHQ9!~xXV+sB@}LEg$o|(WqU`U4q!<``@KGUFmYSY+0&Bg55<^hSHKdp%0W5Tm zAuQJY3K}4@v2@e9bs>q`yrvMHaoH@$KxpnumpL$IC7m4RfS^NkD5ixr2+EVB(c$+z3Z{L|Syfy48wVTW%qvwd^rx6u-^bb`N}lFF{^=z>)K-+ccdz#GyejGbM)vVD?MMT zU|+tdkP|w?vcU`#v0uexDBea=7TIdqw6?2+Hz{GtQpHsah8>7qjdA5dr{LdiC^C_d zt)idntTpKW1Vvd{ek{O;5d5MzhoPC{QCJC)?MvblF;o$kqIdy&(4-EJq=_0XRx-bj z6>%wYt)ax-OH{>UCUvtJk4Uphp?Ra^KXRW}Xzl38sq zv18L}B(vN85!R$_R@aebOOipR=DT?U5hTIRbLI{m^s!l4G^K=x9MWNwA7_PHY5$5) zY%p#KD~na)i=eTCkob&#=G4I`5|vaBxNbQy{gw#$^mfpH^%RUJ6~YC=xy$EqfIEke zhf2w?m{hA65;GjO#iA1<#jv;xcpBALOH{BL60J2Y&g{}Zp#w+|Tg_xqr9}?^EK=2~ zUu%tio-b+{EdP9ib`kqjmBr3sOe3KbrMlORzGFj*J%|>YIFOrY>_KiT)ugvpB3GwU zz@v=*!*Dd&<7;3|ad|pXd^^SsDV8AF*DL_MsEwD$F%h|8bcTv5c|a*N+3NymR3mOz z2{H;Zc?RJ`wqiOcg;AfH_8TpgFK;Rg?a&M`X^dPWDQ3dgl4#UJdc~d-#?>B$o3rK^ zl@ebxDz@j4HYbZQM>p35a7|KWo9y96NAe73l4-d-+9|uE_AZ4>TedU^7C}!+p{yEb z8gebH+MIm6m*hp53brm@9qZ5KXmCWw!Q}E|W{4BMZm|-lB5epPc+y#ay)KHtm*g2~ ztLVWC(8f}W9SHHbs8HfIxVDCYNuP&6$Ajw>0d+>r02|oCJx;|^>lka*odIS*db`@f z3N7^WnqE!ZEOaXpCa~U!*6PgyY1gIY{3v2k6v0ayN3f1!WahE3%H@##A_Ejuq_{3S zZK{{Fnrk36z2Fn8Swv@Lj7KewY%J2`cG)db$bN1v+j1VCykI7s7|Ls{0AfwV2gn`Bo-@y36zsv8fmDu?J;vHI{hmE|Fq+4?I=jqIJbx6bT|@ z20HkqX^1@h%g8>DrpZrFSt6-d`iWvv2LG`ItoX40?J`%RQmP2gD5kp(%#{YaRU5+* zEoNe_EeOGPXt4`4Xz@7*?`c?>Be^No7!!-w$HB0aC7)UjC|&c;$U zah&jKVv&rCS5rlNXj5_9AVM7_K}7O5MMUVP6iXuvf6NuqqhX6_OlJoNnicHw!@hwO zOXMm4x^j}1O9;&gAk1n!jz8Z*YI3^GPvKy!718XOS2VFuA11{lnDVe+)EalonWIN8 z-9^bY5?iyyK!fC9DE2Wc zA!aijICX7SFk(7FSSK!n2E9<{#Ch};dYKzZ*?}*hg>2Kbj;gS3MC`@XCUUANE>TA0 zG{xM<66w{C#b;lb#4hK@o!cOhmXJWw28cOvV(ln?VOy6U{%Vt{WHcji`dj1Ty%UQHHjL51Bz5i5Ckf; z+Wd=(?j!M&WD0`z7b)8nA$Zl>QMq!jwgm0N0vA)lQt61xU3Ia5qJLwvp7O79WD%{_ zTnqG2YF?y;EvdH9Agvo}5mi?dhrcA4LJSdN2}B+!r`TSk5eAPAEOs#!N}y>-zm*@; zRZY~9vC%}`E9Ws14KbMBUeInEgVl?%88XH5)J;2Q5W2PWg}2Z7K=>|n8SGAsi6!FQ>q)2;#qHgctGgBSH z85HNKm_a2LAiZbOHA9?;m;v*KGHu?R9k+#XXS-@~sU0g8&iQ#GZJkL$7()+hkwPv! zMhAF+T&|75sP$9X)c^xq>IDrel~sjxaKl4nS7MheRxrV@Szt*Maa^YM!o^HghgReS zB_@kQi-wC~$sXhD1!+CWs8kLCrtw`)MiHsUIBjVvmMA89jehYyYC3r5xzQ+-m zL#`3jgPGE0_^R*()zC1}jqP!W9yvY26G=>h7K{cPUoYOGyi};!vV!fC_H$ zHdnA(yp4o3t%Zusgg!LzxK=V71QYROk@RP?uw?EtJEM= z@DfMJ7PXZkG|AXGV^FW9qK&EIDI5)?q}I;nG+{S88cH?HpXPs>*V3aalGxz=T0UV#liM~qA$PlDws4LAivYa3hUK(un39qA=iDU7`ASR=t2TYvr9p)4uL9LK< zf9e&w<-k6KhmFKj$N_L9S`p8*#mOkawhPQP%>x~fFMiDdPwS?*2113<#(ca1-v6Y#A8f7P zA1cgdyxX%mvcDxN%*m308%!(aEz@TL|RN3|onSoDpT+lC9w^AvhU5rRVf<$}&Oe}>;yp@eglMoSa z?6QD`>wi-0;?FoZ91%?aJH^A{uuKf6c*dPy+wnI%215k3wC`}Jn}`nGoV1mQ(`MIh z)L!%76_vx5$syRx+C3fCzM~=&`Po5bFfWtb;DUJEN^DmDlT^lFZdM+XJXmlsiLtFL z=O6kcht|(QI{79%*0vSuS>oo+WWF)kTRS=uRl{NYV8TbPe?r+fwh5OZE3ihjQ@m{+47c%H<`chF3FdEyI~bA^nr*Na zXlhHe+}35Q+elLMKh@{n@-K@ITLxL&(4mM1eUF4JUOVZ>K>?_HBJ^>Wu}g#B#v1LX zsK@!y;8B+2vkdHPRg%MJgJbtm=_B#7sQiPHj0IT5Npbg64|}xH|1_2iFDh7apTCY* zqZE76)&mB}Ia1emsD0}+uMFwgz~I+DqG}z=a?DIec8hq~k~<%Rr(2KqXn_EmqW%IXcFBUPVbY<`vAFJq=#>%YoSg8A{y^g;FW6w}$bD~yy=G^~4f>3f{ z9g}ZMvf$RfS*o*O=5DmuxOgO!TK?8U@?zV5sya?txy4=B7YFyAgO6;Q>e4voN&2Z3 zjm>fOKebah7lUa88=~xpulk>24A^4OXABf>$e@xw!wo@Lx*sSmzwlQg2IEjEKXXMq zrUB#gwV!^(ps&&}tgI1<%l2-$m*WsTwc+%&rIC^A=B8W)4L5XpaGx?%BjQ^R9*KSk zH1;L>N8&H^3k$zG3?>(3 z4^!7qP3O>-P;HY4A-);r``dIKk=dcSRq|seh?@Fw7{*CNtSB#Ic7k!VJ42MpbS&Q_Y*=M%u>aag|}SZd{qp;G#Ic|Zg_GfWJ3cs zvCox8D5iP*6H0MZSG7vskU7ve8kp3t}_)DH0IbZW1fS zrs+68_tsCd*6mvg{ZEN3u3cZ3&X^*Uz8WR2Z1x?+HWN6;HxVKx_3Whk39dCJ-6EdV zvTH{{9kP4t}yDa&`ks7uCEw(334}7HZTZCpm~;<+EOP>YGs+iKjThmi6OpI9Z>X!MuW@ z5oyBdjfc}Yu6zeKz6Vnc>gXspAKO%9|8S>x29IRepyEl!*F~Uj`H1T=K}D;!aEH^5 zq@D%%X`nR17Ls1>ht1wHfD4t<+u*I~u>5t-UXwaB^+C+g4}I6o)V?yC#Ii{Yb zFJV4u%Y{Nuc)HBUKS#hWD(+Fr+h|^?vCP}QwiMjNvh|}eBC#k%h`9Q$6t6fFA$CE& z_9HRmejv3`=D1_3mQU~1&T`aSEo|)SsII~q!Unlc>Ut2Jqv-&n#?oZ zjZ)8&hDb`SY^SITny$gapx6oz4tjB;boEdIvBfVZx(%rIi`rlivfZKni<|$yGQI5V z*rVa_!#mA65;ZOA7)|7u>_Qo`S+}}|%{R5;rU@d9wIVUvCG58PiIs!G`-r+oY%q#* zIa(~c(2_1%g_g&uskcxFkh->%j3|a`x6~XlS%%t;`lxryv7a+y&rXqhKGO{%#V?hk zC5~2CzLpo|>tOPru8*4<-Sc9ZuuH?ui`!#WEY5S;Zxl|BnzJ+%L-tjYA?BK3rOu&s zlv7NwqCb*Iq8E$ajM|5aEE35wRHU0#t6$X#4bh@}Z{lgiFA`Nwr6@(mB7P0Jm^`g^ zY@@b$T+^-Y7yBt3l{~awPg7He$5IQkl^QTbRyD=S(H$BzltYnuR0loa6Qs3Yl$^u{ zk;)2~<=NuQsE*2kU3j%$h_=e1)bzQ58DYicbWgH=qQBJ$EyW0pP*gmNDY8-|=1%Ft z8FOTmlS>r%|EENSx|8ipsdqU_gQ+F@XqQu;qFpFuvkoi!BC4wnE4}QP4M=n=hK33; zlzIzsMR(HD1kZm9fsXad@aM?dNw9%4YD@cQ0TZ}^WtJeU-AX0tD@bqwrW^B%d*iD^*3wYVpG3evbWSjr5_Mt zABn}8S$Sg%7Kw2qG?8y)s{QgLi)*s{;35>2L88NN$jh6&$sF&p_*vk1 z5qiC;QZ$uBzCuy|#hB#jf@Y!da)hQR2gTHI#OF+zm-5JIIgv+3>p!aNCGmwio`h(uq1Q2&`vhE8qA>^!R2e$J77L^z?INww%j+`cG737rDtp|E2PNyWxNZY_2fJ0&8RnJbNf87vr;?B+_VU+|!FM$G(0Yex_I=Tc}wFX&a3i7|9(3m-1ArQB;+|K$c} z<8)mh)0D-T21-?oO#ZnG5$58&sEz$v>W`3)NNjC2q^L;ba&s>?02HE-bO3+$(VW^Z zR}s-G61in$6z^$_qu6j~ZRy%F&#FheOl;D%P6X`3s@=L~dJ%Om@{E>I{g(=X#J&t) z-_upQJ{pF!)$n(A?<4i~Us`0*_Ec;8u84FrC`8&crYh2s#%E$SiKmA1EtolrQX{4g#CUOgC}JO; zsr@1sjTKG{Be-EvYvjq@M;kr9rWSIGhA%SCW2V6(tW3gDIAmo{h8V>ZP~@3wP+B(> zRguv-E4n<1rZYn+&bfctuwLXD4S;fYkEsfs>KA{l=7Wa7OtgxspSHChTN+PAQVJ9GOZHHb z4OLTA!~^b?oRTPsPDwedWi8Uho;aP7(#VN2cX49}ddt3~y5g!IDT@)*_6pQi(QylA*3Z&3LoE{(e<*3Erm4kT*#2I0p3Q1nvhgu=^1fAdQ_-Eu zX~a=|zd$mTOSMT?s0jw~>{~vHcVH@BvHtD>@#rL@Y;0;QvZ@R{P*03%_`E~P%+FS& zOL@$sepVHWW<4(cj5hHlXtiIZe;WL<$Wlu)O`s7CD(aat8r9ybTHdw27A#;jCfb~A zRVSk`{d~B{_97}>l$^hYG{-hv`#3g{$3e9*gw?jzy0omeCG#>GRwYu-5iu%MB2fZW zLz!Wez@T(etg4W5e&XU}an}Cq8yjoCXeM+>*P-Pmtrbcp4Rzu`4Lun77%?ifMAi;O zjBL7C7pvWvgVeCG2RxLBJMI6^m59T`ho!8YFWd3jFlq3ws$XdD2pShvrZ6#w@a~U# zX>#B4dW*UYMbkN?QusIqSN*SP;%gXjA-)bSc5$Q(iPjVuhRCYt(gszIcx1o+%O(p- zuP9hF9W~`OcJ*JbEYH^!xs#~eF{z}cKuC(e=E{(mFK$=^uCD3QLPOQnZ(UuEsw)yH zrNbpzXi3ABIx`gr)4RANm$F6eB|TbBBT-;%;RfS7)R?vlEgiN?G=9=uX^B9qs#I;X zfRkgxc9kTA4Jxhl_hYV7r6nDsA}a@fHV$}xy=Z6(rmSNu6}=c$AhB7#;>@y}swhy5 z=43;q7B?_d4%|GXTDIt$BM?SSaQYqpnsAzN{uRByCh z(HPO@noniXt70@f^bq0@=2LNbG;o+t#eH(8U?4?CU07F6L(Tg+!=_?57Qd_+Yx$64 zQJ-vwp&5%yaw1QU)`x9X3?3OR&dmLTmMqSsIn;D$$<$cv9w;)3AsSjTw-BXi{Ii|g zvXvmI%(BO$Et#o!Jyrcjo(@c2=vdD)x<{2!woBB}&~@po(G$*d#Ji$wj>b|UMQwFg zOPyMs>ANXwzbdi8H3|`>z{R$y(l+LrWERGt*DTC3&EB)fPy4T>wAL$)+i*;4CCE!J zqfRV@ASp1M3VW_)kSp@I@E$`d8mOe`;{ zuBkm`RBYBN=jLc0?ZI-STXyY~NzLwym-AUeR1+B-z)C~EE4Db&%3Bw7)>oQ25RT_Y6YwP9k0 z?)3efwI4;bfACqOdZW;Tqfm~e=aUB%c^7g}^?9?^l66IDKBEg+RrLseb>PLM-jL7~C3` z$x-E~lmm6Pl8ka}6thU=rGZ8L^O+69B-&Xcv$P6g%&RApc4WZ#vZ2~9>j_k5QN^6t zwGG<5QOQ7#!2m}}yq)&{%H8G1U zli)_+G1^OqyrI3VhUR9ItrJSKFg?p!X0=$hTg*dVLv^^1I;?Ix@{WyK6|3zMD8+gj z1+NyhlJ?7LISfOK$3fA`Q4tf1w0fwb3X|~1;tsT;#j9JByvU~LB(ih{Vp~LRrItru zV@_*`M&{;5krnre%4=iBI4=);!;(r8by}QHCfWc@S?RB=a}o3ir62DXlS z)n?h!Q4{rD+20|IT?7(CA=cby)*hNmq01d*)Ix0O4XV}bkVmzQiiTCv^+w|ICXqR6 zx^)kWy1R@5#dM*POhJ$?)MblJT6A@^!2hX^3?=7Vd8|akV<&}PEV?u65A8I- z4(sTh(2>REB>IqPdXZXaOHyn|tkU8@F=}}vz{D2&G7=kH>|B?Y(55ww26a~p;mo2` zsrHzi&8-+_XKUgp_QI8RSC*s}!_$sK(?#QO)Vksk9&{--Y2cP`%4qVE9k@6XMSqaH zx&V_h?xP)9idPm8HbWKH&}^X+b1Z!nmLiM8jb%$VWfzHEF7>x0hBox2Pe}=ub8Ma~ zh*37)G5OJ@q*Yg!)d`X8LWRbCc+j%m``pJ;&=kc%U6p#o>oucE8}(1i!~x8o;k@rYvm$c9DA&k+!XU zf*I>C>O#lxMcVqW$|oKhNcyZ4Ozs`G$*&;bh7H?w__O_ik6phvw>FKQZb-8`7*h2+ zr(M0F&x(GFf`@9OxHTmgVG`aNYH32DMO`>*+yUSf=qWvBOO3}I=c&3Htk=}3qp;`d zrOx{qBJ^0Mdb##o7rKj1D!Ox23QcwH3(Xu@<*Fg=kn$$nSllpLLKQfw#TA|6h*~5! zIgjHmEJn@9mX=WIHN{&)tHs3c5o^rR@_Njb6tyTd^+9;d>Ke8*)yq$pTG19gmJ-W5 zR|=>>Okzx+mAZTea}Euz@^ojhgh; zg-M+j=B`n*mJxxh2iZUqIjRvkh>&Huc`ct-J@)8nI)% z_H``Kq=R^UoGEC~oRZ$=Xo?+B4=RQc*t|b5Orz6=o^@SvR7-i^}IjKXO)FpUT-{1gf>tLUpLThKzFI z7)3=s(O6**=2~{?agXBpf>O`q_MnWdjl|n&i^OOTO~xjx$WG%+T~Q*HrG{BeLn^v> zpG6ZyyQnNn@rhE9*bpC%nvvLbJhIfFc`UK;-g={!(44gXSitdxtk$MZ(x=I#s&vPjG=&G*Ne1y#ecl!h3%s=Tt7shZw1A+UNaC~(q# z$)pWqGHyfflw%~>$f3)Mc0rKCC9awDE$bkmuzZ+3CQMwh;+GQ3ma4sy0o_!bh#06c zQt-}<&^^VUE0xjgYbG`0Y}I^ZWs~YD+=b*NhA+vVEqFXuX$8>&xl!=si#z9R8n&cV z+xy~0vY{DjD;2!%zW8Om;Ty3Pu13vS=?z{`U;oAJR1sxjr41TP!{~qQsj_vm+VKU| z^SI3fPoe| zB);Ym%EGTw)_-Z_w*&xG5v>|3@5RgoZ zs*!n7o@^UZfuauiM(FvXkVuW&J#k9wmxs>Qek!l75*v5$+mf19Nok}08Xi>)ktES~ zEr%LyScxB%ax_PjBgKuGIbKhog;c1)(ikKghXP@ks31pOMf_6{Q=}~hF8Z!{amk^{ z6BtF4MK`GXnwl&GG9HdG$8gW%AQ_wtTdg{~dKB;SYOxW*$||~rN+~k&mEF*(4Z)7A z&%53?*!n61t*oYTYj3nXc2U!H)j~p;Q01jr2uiugTQJm;X&B%$HkirL+S*m+fQg1x zBeskLwPQI4BFZ*xeEuS>FEFZWzts2X1Jbq=k%Z!}Az=tkLn7sILgFE(`pB#0S2J>2 zv}f2-A&d4a%L~Od(H{oa$|}YfRMnMDp9dyJNg-v?s(LP^=@5CMn%DwRzf)95FSCo; zl4sBACpsG_q*NouQDvZ+hW*x%mW;O2rpu*7K^8f3@A8=o9LKuG(2X~15_8t+DA{pk zU8@r#R2-LN!yr^x<3!cDTjF`4areVY^791Gphj0 z4#{%d@VG*>2nD#Tr;u*CD$2pHCzOm5QBk_iFAHqs6LMn9!4b|0a z&*Q{$BW_g%)-j4w$GPgMF=WtQ`JqR&Q{$?w z8L8UK2_laa^mNhx(Gp>)7P-eQNo=-MZBi6@3>y`76~g5^RmCrh6pdFeZ`z*`>m_kV zRB-cKh-wN(yZ7a4|nE;=U)Tj^{o$U_^&pJTl1 zb5|-I?>pzyvhUifTf%(~5)!R{n43l8kx!$7#_(*EzPQ-$FnBQ)F8)egwX9L!MQN)O zOYbLyMnztpnA_Gbx72?zf}AEx>o594Rh_EMQFHjgF_3qsXrGqaiQD+s`0`p(5~V!G z46Gh5Oyg?b*}#S`M{uV35M{H5>f~}*#9c5;{ice4ZP{d{BIc_}>92f9rCw#HaW6qT z7tKhbmtZbb8o3&el%VLqtel9<7s43r&ECNVuQjUbhQiVjjC-3{`qtIu4X+BTbX#+f z*1^TPiFLqaYS?ZbiCVp7ff;d4R&UD$tXeG>PpexuSR+{xwOGCC58f9af{nI}FCmy# zZZa(Im?ePlK+*c#F{#z4g37dL-AX>Nc8g1LJ_8!Wnah(hP2np|+$OUn{v7Y9x4YxD znF<3oZXqG$?O)@=0=D=6EsCY|bgc2!`=zof#^5e^5xv$w9)hK&mD>i&7Du%q4ap`O3p1{#M;!HR4qQKmZg<7q=xgYRTpn>p$N^P zO3!RrE~;`!j62Cr2d?WF$k)@^g)yM|QI_5vOh27G z1gsqO>hPPMIk>{vjKraxe7ZaRIJ<3NJ8GQQ`7|8%>cDj8lj#xl>)@-`e721fI6|O( zuSvt9vp9Ov)Z)+&f5)fA+b9EH_K6pNv|AO0q;@cP09`O__Oq^9VKW0J@2b!d-NZ|J*ZjjplACqy@q!3%iXjELZfjrlC;lM?F%S7sMZN zGraYH;=k0#=s~x3Mk2|BI{3CC=MQ4o$9Dia_zY>>+K(=B8~;N1O^1az3YL90W{vnK zUoH1a8_194b{mW&TP*r2P3K6#Ft@IEA3Q8w*}fc0!2$nG{{0lhh6D0X0|=U#*PK^E+QMzJgj0v%t+_2#@|gW!o>;Xn8e zaeN6o{e`c88g=Pq2XncfbFlgOOeb3t_(%8tgXlj0>p&VgVodV>-`KBzCz9&)#>ZM2 z*?jgDZDb;EQAFeM(Pch4t>8u?N0bh!U_gfd5ofZcV-W4<<9G405EFSRD6bJ@7cx)h zhVtn@#2^C2>KQ{fX5(5~-$BFZIGT|+(X-|eZx8A_xZPRX&!Lk)aZOsKFJl1pfn4!+ z`gTlms@=~tK7#2RZFzMeYKGE!B5@bKWKIK;ZM9G3 zxmux)yWmaoflAE=-dLE^7#aAvi~_RErD3xHw?&o*a3=;+l!m84(d$;+=fiWNnRW1p znjs9wK@<_g&9DXg%#yWWX($N;isna@Rgg9g5>5G#8s2HD5cZ?1nJRc-#`m^TAD`-o z6a9ub9wFnVBb~_T=W8Iw>SF*!xYnyFjB5uZb3e8{Q9VqX_CaX}r<&Vu z(jsz$kwqr+xO@nKem{grKM*Ae>Fh**4BOv#sr;}Tz~$7A=2)n z2EF}9?3GFXa9$l6u}%I$eGs6ee>{x>_*78*g*IYKw0*{3D43t5;SbDeEO1+2{$a41 zPtK)(=*jXG>hurvCwnRE2$Y#K94(#-ZE3K6tA8Ly3_nk!aoD2Hw?({Xv}^rYs4w`RJ{Y4MOpT$?{!&QPOdITv!z!3g&Rcvl5;cM^O=u z(7Bd?BPMtA^RMwbT#u?x&?D6jBHI`#^wY~dJ!p44#z)dS^C#bt5!7-t15)XG9nuNB zdBISs=XTl7~2#SOFIT# z9;I`DscTF_c}6?3T#Yqr8a^#5+#^~U&pRFA%El3M z$U|m?_>wv&V2#E{tT`NJEW;BBb?7svL!Bs!&=V^yX$9?KrYv&pK^jZYDNjBI8m2l| z``rhs;+^>Bdx$Z{DON>Twj9#GUaco+qsD;`hx8oOPF)nMHjXf9RNEfey#bKOD5Uy6lD#xa@o?abJV*RKuRcXh=sYNp^VOMF<3@ijO z9MHWO%~si_;UBdh-D~xjQScg>37F7hp+2Pz7+g7?8fKQ7U?@gCHXIp;$Dh+`Cvum_ zkdcD@$!yA0S>436+RyWlRVFqbbZJLDpx|;Evv;j!kOJ?^(4x$USyuK@6I4Yl)R1gG zhA}>02a^LbrNy7>9EsJP!zLn2I-Wqk5z|x^vutn2Y%d!p5}C_+Dg}#UAS+wBtJ-PR zDo2%A2nkam`(p4ft6S@4^WeUrg8>71@;)xsIKtMzUe@!_y^9uOykmS~p>dO{6|s!a zeRLUrqILS%Ef$3S8p0QnxNq26_>fL11MpaK0qxSE*jALBc`jBvqDvVp=+9xueQq2x zbjBc%foh0V6Z-|z7zYfg!ShhRbe%@^uxFVJeBn9;%FV!+8cKN>kA`(hpsqY^s~cmF zQq_7V=LU2M0T&Q6Dm7rViyx}5{i?R2p(8kr@G$a{!AV;63oDhIutADdE$l(+7SElf zwCXhe8;XFA=bUyvPgU#V=y;T3y^NI<6Q;rH)(IVG-^IO2tJPR%#|pM%b%rfIz`o9c z$jjyHzv@Kd5!leGU?#VGVn_K9Z#0=*%JX{&D0!sslt-7=hA0PdqQ+J{Jciiwf-cf} z+M}eUy!qY&os0NUW8SNkyQ6&VeJ&UV3;r9jf#vVgfwf9$S@NT>3}Vb{lmeOq=`zDM zN47S1x*?K}Ch5QxqPNoD8PQd7X{nCEC{ij%%PP~+dZg8wG=>A0@LpqlC~l_o=ks{U zYkkCy95Ie9&p5=Ct%(}ypsp?{Uf7^~;623e_al7rs=wH339AmxpRX? zupI+v&a9UrLqcent~fU+Upp@)`ep%|o=V0$Pec8o;_Ac2yCAZd?PUd{(o~{6FEZ3$ ztq;rGI_-oxs|L^g!b`U5r)3#Hw-j1CUyJV2kK}x4sbl;U>(L>+CNk&MeznBHs;|vo z=$FQFdv*C)gcxch4smI^FJUvHKJ_MvQN>@0HZ?YhSCr2w=B7jW*PFya<+bq^>!=Lc zx|U6v)A+lSM=dqy)9{|9+!BO9YAu_zhK1;?FVtjR&LAunSgMN$*N02(VxE?&-MCWc zO=(F@m#;dlnncIB>VxQLt3tn3U0s!?DJ^Bld&FzM&^T75t3;K1m814~7SN##0t&@6 zQ=5tz)K!*Map<%mDt;m!+S2J-7HzBfIYu;hW~#>7A`s}vsN}Agnrb&5>P&2hvd4+S z^t5}?Bvt2^a+NzD?O5FCbY6}DjkJr|7U99nM3lj`-%^LbdNwew<(+vAOCmZ6g`E#$7kpk`*vKN>8G zm|g~197c-~SE-#@iDy$<>X)YR*JYxb)*VFEt&`lPwAx)LkG26a9U>h^OepozDp-yC zkf>IdiRpgD#)1%jujXN|np{SsL}KkO^@0^sW}au5e;Wt4cj2Y3j2xm#1h^_+j2Kpf z#KfF}HNp&n(P4BT- z_J?3QhINxK#s1xS`|_(a{Fat6z+_wAH%VW) zo0^;G>|(5H59zuRyp1_HY_s}|Xz$rmxPSE=E31(`PetEXXErC=I=YXw+GNQwtwro; zz51egZi=qb@b>Ce%;yo=sBfgp%|nOQH&l%xE$WA=uQy{JK^WhSiBT2ofLc>jCF~*% z!EP`PybG3AU16oDw%Q3>lBiYPrE>JK-oX?}@ExsRjpy=9nR&1v?)YAe16Hz<5yizA z!L<_FSADoO6D!>n?u7oGrNO)`Mr7{3!K_x`!4TRu0$oomOov*cn;r_Y)7Ej+)$g6g z8rq3|W-kR(t~xjFO;Ee0U#fvRm?6Yei#1>OW+JUp26My&g0ntzN?DKu*-KV!Ih)g$!B5l-3{;X$HXEU{^6F2FfT6a})%Vc=gL^ zoP!3$a$v27p`Rv_cx`OtO;6PG4z&_DtV>6A4MnBN;&QHu*5gdx1W;4hwH81VRE3DW z9=5Y@c%bn$b*hL*B-VByq+KEQ98F&vj;MkZ3`?&gN*zm)lGqr?sD70&;P2I1wTj=M zhZ}~9SL>Bj*TxKNBC|x{oo5jtks4!{p^dU68V)R8XIa_QB-Z!l#UN*XM;vOU%obvo zX_)JExygFFDXq;F5hRYRlVFt2Dy0pqqnOf5M1UF z{Uj;Ooo1;ZwHNBA8tzPmwQi3==ZS>{{XeF$)L8pfH)&3D{FI+)t@?`guKi+UhZAk% zpyCJ%I00tCEJk0PsT2(>23nLc5}V3H8Vh0d22X9Ng__oCBQbTk4mmkPaj+PzX2x&Gud6i6 zMA(5z0E5>Tm*%oGrG=0a<|AM^z!kb2AW=@S!&xsule5{53P=2OD9f*yad;gmN*GmB*3JriJ;aDesZ8iKlzA?VRtn4I*l=O4rF#s-R%GW69$OV|VfPFw zgP?g;5hTTV80~@@Yj>kingYlSdlkPjf`Rok13JE$tZIazM9f);W~#F zj4Ju~4Goh*R$ffEw`9mv*EE@NUV7*yF6nX{vpL9@i081b=iwAI#EC5zCbL!~8(E8B zm{Bwz%8f8{uDo%RvO&C9x#O8M`i!lARm?4fv36!2+zbTn?Ls&fOSM1{iIplt&$$kU zIL4YHTQ~3kReo+J7;0>_CwnUJ!Wc67i2jQs^o}EyAwwDYa~l`4`NY|&t&>MSh~pt* zv6IZWM0HSXxEsnwkzo<{YwJIl?N?ZET5C=xC!2 zpIyu$`inUMdra7XQ!dcBv8I=ctk^>ivR>@XBig{G3=+KKA-(7ovRw^hd&Hn0 zHgfnfw%)R0IkCK0L98fN5-W>U#HwO7vAS48tSQzKYm0Tnx?(-CzSux)C^ixsi%rC) zVl%P1*g|Y6wi3g|)?yp6t=LX%FLn?+ik-yHVi&Qi*iGy%_7HoDy~N&PAF;34PwX!a z5C@8b#KGbaai};<94?L!M~b7w(PD%+MjR`S6UU1a#EIf0F;bi?P7$Yy)5PiG3~{D7 zOPnpv5$B5Y#QEX^aiO?KTr4gTmx{~8<>Cr)rMOC5Ev^yQitEJn;s$Y}xJleBZV|VN z+r;hS4soZrOWZB)5%-Gw#Qov{@t}A}JS-j&kBY~{`GML{HHsdWqg* zEHSniM~o}R6MaNq(NByoCJ+;fiNwTW5;3WmOiV7O5L1e&#MELMF|C+ROfO~-Gm4qS z%wiTXtC&s9F6I#Z#hhX;F+jA7fuchU5`#sj7$Sy>VPbAEkC<1?C*~Imhy}$$Vqvj} zSX3+~78gs1CB;%=X|ar0RxBr$7b}Pr#Y$pjv5Ht#tR_|$Ylt<)T4HUnj#yW$C)O7m zhz-R?Vq>w1*i>vLHWyonEyY%1xY$~3BeoUWiS5M>Vn?x)*jel%b``sc-NhbaPqCNS zTkIqD75j<(#R1|#agaDz93l=Chl#_*5#mU3lsH<95XXpP#c|?zae_EeoFqnylf^0G zRB@U(U7R7#6laOE#W~_!ah^C|Tp%tK7m16-CE`+XnYdhBA+8ixiL1pm;#zT?xL({K zZWK3(o5d~SR&krSUECq=6nBZc#XaI)ai6$fJRlwv4~d7xBjQoj5UA!UQ6mN;Q#XEq9H82@*7u;N&{-=Y0ku?m*1>1yx zF1s^3M-G4AOFj@EijTy{;uG5a#Lwav@vHbv z{4V|we~Q1v-{K$fuNZA^FuE8+j48T_?xKh2DcS&LBi5H2t1+5thr`G6Pd@n&+vE7J z+gd!sZTDDn9sJ#vWX~e?_uj;L_rNMyc`29QCp3h!yoI6$qS=Nq-jj1l| z<4ECWvX3F3X_46`XA~3PO;4_WCtLcBG-9U{jKmL(#JJq873}oE2Z`IayMc|R0#+H= z)E;|t`}uGP3kN(z;67lTQw&-X@%LGIR!;FgSOaCpx}C&5OyhwNcO9^KhS(~ekZD-Q zZmz=Db~|f$o}R}>8vH>?yeM5uU$Caaf*-;EP7Gt8W?~J5CBS%mgLq;tF77UyMJOyQ z+U&Q;XX3mQ+axy~=A0$vHeSa9ERhqNC93W3hXM7(gnyTTF=rvdDw~n_GfLV9}Iq9kjF_kGJ;00DTRfIvAS1{2I4r z-ItXVcD1KnpixK!f_CIqw6b2DJ;DxK0;RMgD^IbB(?ph!an}8RC$*(9>;~LQHo3FN z!Dc#rkw_y;7W)lBhqn~uhYkv!b3 zR5>1JBh`mB;z5~|NS1hu1RxkixzMb!5sjqp*ux$>`SG|2GZO{!u`h~4q5DJ{cVLYh zy&F&4>fh-`yBnvSYU|zg^*p}?i!70EY<4!y7SMa+F)^Ce^Lz+v2!muG(drbcH;wf! zw_+fg#2y_iIPLTBgw&z(@!xdH>a7MX@ry**8?eH zN;61@BvERFM~REIF8#RW1?Smb(O|A-QJiLL9bEPv~O#2}$EXNRHqTcC5Z%oA4q}XX4 z&2JhFL2X#QNf)#Kj%5}ko%nKl?3v>+6?7So^-yu51M!hSpItH0I1wF>ZmVw110@Vd z+QS%6)!b}1XH21b(`%jSW%k*|8Ur!)4!f#fP9sa6jpqDVWm6nzdzNk3>_ZTUvEzxR zp*58}qSMig6bE(6sv#RP2=PT_avG<)>dSLP`D%L3g<@oaHHx^}ELm(}4q+_-rC+-Z zJ>@rY_+wQWnx7$R+=W>wcLF<_*k8i+!|3wpenguzbPsJv^eS#bkVBE7tKEOr8P}4A zs4`-a43tKdAO9eC*3;PATBV^06-HJ9$=8Op5eb*FUlOTBP^v~GLxc`3?TUKU1H=k3 zmQbtc;(D4|Gxn9Mvym{Azx!R$4HPkU#8ioHBSO@i2bCNv#s*Fl3nMamCDPDbL~2-@ zjukJ9$aYhwGkTC6lUy8k@hK>_+9Ev&TjWRwAT&cLI`YSYYC4g;eEN#{m!;bz$P7v> zK01$W+BpR5KqZY9aJx&40*mMpzz`M@cqolPW3Dr4j0=@vJR6dA%Mi8=vWGn$LX1m& z8jENu!=DF-a#>u^VwQ6bpaad%iCx)bI(3OJIx3}cQzDs&N+>3W3PZ|026U$ZvNU{{ zAc&MA53DVD6FSshA_mSBg@jeZ!bmZ?ioW)NO0VWjy4@YUM98UVJYy)J82pxfqQ01n=L~U7q1*{RYU%E98W!=X zDnr=@AS0+&mLII37c&BAR-(Fte6S<>g=Tc6)6lc}*fiG5+@Vdl87&ljMJqCBeNU>& zGt5LvjXW?dqv09P8mvhawK$FRvzQu^<7^oF9FaJ>A@{vjNo>Ed!*XMrMuZ+419g|n zM@}q_VCW&?4qVF@X$*Zfm0-Nsf~IL5GV&-;M73>J+Jjk+7%poMq4HA+89odsrxKsS z>ciE{hdkPZM#Q#>LC?I&Moi3e_xW&IE+GmG=|?A_bR6_)T(Go&c4bt>6IyW(${%(o z3cpf_*npT_?es9FL*(a}capI6R6*HxU_3BtDKx_;Rn7^4T>uPPJSfjgHD)^p5{og% znqZ}s+)vAl?Mnd^b`=KAiO9MfhnS>Z!t`OnbAJh&zoVC^u&b@?$YB3Esw&+Bk-#9* zUc@YSKxt8MnI8_ruw>^*64sRHi|&wKRBx6AF7idNXnW+lmd4tb!-U6Aa~kT>2k@|m zsZX}PB8}P1Mb+3sYacWFq0w0EaxKvOQX0Muy^%L<#sCeo*^L&lxS4thcLRBjT|dzZ zT#IH!;CTGhmbG%oG_`fM<6@O$k;tuS8l*q&OtVr~1`cy8L%B#}U2h--VhthHnEs_^ z=w@|VuAOrhu7*kx^D*6oG-RBao&gXqkJKnbbNP7}2X}g8goO-rD8>_}BW;nI9|wYI z2ZxaDA!xR&0+?DXrCO9=*AD#enoe!&vjUZv9_4T1J3tTPo=Ikf|cSh7` z=493IxFG$-h(mK=BgV*%G>ki3O?OMDh9;3w&O}RHnG&K=BMr?+OS`!@--N+B5Gx;J zUvDOr&ouoEv{}4bgYq%%@epZbd|(#qZ3FT{#AzzMFXn)H8k!Z2hCLBt&UrqR!>XTJ z)ARaytvU;7LyfX9%Z(#L*ZeRB3=dQ%VnOR5viL+-CEdf-8h1WL!Ky1Ba=IEti}S!% zVcI$wUbL&`8gnut!%)t*_HhMn?xHqp$|FaNXL+=Ixh;ZNmD(+djClrpG=G%ZH0&h$ zlVKck$)%WKh@8U^1xaDzOl>pX`azj}O)ZHC14Up?MnR!kBGeOIPbu)hHTyc8X+05x z7VU^m<9RFQ5bBo`5keg^Own4MsTF-I2LrOP_dvITiXoG3eGXrocdRTEvZG!@Fv6+5U zAZm$BmV|(uIZ5>DP=?qbNKZCSQer&f$(*dxb(Au>AoYw|TG0W-UC=#fKYEavB4(|W zhMR%GfZ>?5mpy=9McSkH^58Q~Lz>YR&uc~jF&Ws{Lm#6K!pgELw2Y5PF;_6%P?o43 zkr2d5|F%*rK7QhZJL*a57UknzYdlJX<4BLv{Gn{ZaB;Fk#B)Pa1%@5omct;omHQGj zN*H*k_T18h9?&$-gG?T^G^%Q0*z-Y;#61|ECgfN~e1wiw=MXFo2N`_0GAIF)-4LW+2eeWWJC(nCIz#`Vq&O@mhG1@g!> zM*PwI)`lXayP)HY0~k+3JgO7J(njr4YNw9qC1zel#a(c;SuUgQ4Lg*528j7Pw~dK| zsGJWx+SnF{0c#+DP!L8?zSuMxhM1Q2KrSO4&ZAL=$ZFzGFXGMF_tY=9qG^l?EG?8l z)nYUPE)KaewT5m8p&5ok(q5s3DNX7rANcfTD>!SpFwDLbng~YRDVLgAgU}wz&{$kj zk?qW6^e{fQtN2kjQV@LAcuXEKzIIMtvd1cuVWCnirj&ofav_)4fMt?*>7 zq(lTR?2bX+#v$g8Qu;%UR!s{`O;kCYKdrA^9uf`R;%`#*lt#@M>x?hsb-7PWV={L} z!vaX9!DsUU0AJ(6G@8pzMKHK19txj{C7+2WfYVR70;{o_d?*9f2J<@c#A*hiI}QA~ zg$mClbwElZGt_qOJRe^~h6pL*Y*+KQiKH=#XrbKP#!)CTlCDWn6~^uS%&ok{5+fkD z15J(U(wU@6rt$6xVgL>b+9$?TUtSJF(U3XR3d#0qKhn?w1Q&J3al!RiJ<-e&5MRlH zbXI9ZEU}2wFQ?I9PDKQPXri2`9%D7CoP<&h%v^UJ&BfPx@YUMqry9r zM0k$C0%n0Ta}<&8rH{}gTuXHU=8m4A+v1Q>rx2|E5GB@g)=6ld4PHh-A{Bn(rTWSCJKwrJanxFYs zH7fx?w3qv?uv)4NopQp!qa&&e86QloSSy&Al)6u}4F00$;(1s38OWu=m_bNX&X10y zCvhH_JF0u&PGNW{)7W_V9@K!wGJavU`C<~Ofx)_XST$Nk!D2+&n-MRwEHo!kW#(k3 zWilj`f)o({!k6RR&`Ht9#uU&FG^^p(d>73^ip+$EZmOz`&uB1E<1eBB-o^=E`_-1M z%81{EVm3UfDUx#3+D3gLOALF``mmSF5D8A7o7oJ9^vy{uxM1&cB?Gh{TgPZAbO)9V zl1Xc(6R`?#1sN{79#tb6^rIY8qX>0`>7fJ&Qd&=mj-DesuKd0etFn3yHc(#O%mEJ$XIS-RQU(bmYW5q{NIQjosXgunySzO50m;AwaZctS{$%PF~^ zniKoR3*X%R8Y_29{`5Pu2YL_XOxT0@+iH-+0Cp!Tkrda%$d5Gh$MC{(Kwl)Ynb04l zr>aN@j-I9Ay*otg48J%@;QlD=Ec785&QaJvx=2+bv0-LQyagXwwOw6Xr-Dju6j7Z!lJAL0=tJrMb?+T$&AmzP#xSJBnsf)1YBvB!yHF#6T@D;$5xk z<2}%VShngowOiB#DOQIurD51u6Q(*JtwshgYS0}iGDRW-fudk8t4gaAbzm7=s4b?V zoahoBCKz{T3XDW{Fj8dAd`g7SMj4TE9S#}-J1oTy5NXu0F*-F>M7?7)5E0Ow8AfEnvxa2okU^O+|0=Dvgf1r+(FZQ)TSAkF$1vUDqWGj$ zbsl32!=5|Q(RLK}D4V`jp~U$y5xAE9oQ!=G7A_-UPvRr#Ykwr8%CttEXqnKto_G>H z#k7x}qS16u`WjE-Si6(HNOKHB(O0T*7J`r67DI<^uZB0Vm}w(@I4Fs3_k4sz3wi!?lQHMi0fQDO6=M`%S%3Cd!F zd9CjXrCC`I<&7IOSQ|DeMoLH^hc0+BnC)ZiTiV@aP}-8*8DHFyY)qohe1e+cfkIU> zT)sf+i3}nI24_&MWppF)eg;>J&$J@qOWBw{nEafJ z5gDr-i3lL(1YSx`) zKQb<}^JD5Kwj2}QLwdY+Vz z=FqKStvzK(hzN^=v(UJOcSSea9?{tLyTvBK#X*Kod_~+%?1pW%acxDWXeL2T349Hw zREIYM(%$pWcuW{0%vJ_o^WRO(mva@G0CSOvlC;6kxha5{lD8QyQ+*sn#y;U6>DEfL)u_vg)RdX;Pk!S~0mw?^~@+6jHYU_y*?m*Kaf za$+vFQKK6%t~4tRyEucVG)4%)AEtkXQcj~0)abYmoN9H@v&1kEdc9&!q~sw~PQm=! zFtAO5@G)Jwyv86d9A`pM3`F&Kye}%6CtP?8cyv>a^wSc^kggaVL}gMtVq6%5MJAah z!!WdQ(OsB^emNq-;TFb70aiY`7^R;of@Oe&yR4;AN}88ae-t$OiTRFt^ke@Iu0NxK zj&d4y0@6|>FXk;K7Z(TASZX4DO-&QG5@5G@8+Hp~+aNyJ?=Huhrk%-Ix+qw+p`=Y? z6cF2TjhNQ8!L&W82PJXz&^@V)loo@ThQMb@y4N@PI?XbDp$Doo7B-1VFw}fPEX!S3 zWbPcJC1Nz%+TrP-Wf;e_t+h^xn4fw}IzINji8KKfQ=0Og10Q+e#;#J^)edUUql37y zu?n|0R2MUM67pgmqStboCNYsdZJ1EIaj||CvxwHcLnBIq&=?D$l$c;C=7sI6<4Z_%Q2AAB}V#EhQ<+{vYBu&OmZ4U;l2dyH7n9hTw5b^rzFB8`C{7HMSg}d zqDUi*Lus5na0+68^@_KT`cR)6Aa#7O*>i^I9&Nz<^Uf$28k&Vn<&Ge{H!%$xg=vJr zmZGt}NMpK4h4Al4ETV#wfihIZ#WhV^gMDo}^SJ(pZ*eD77KQ2=j#mc_?vqH4G)_o~ zYL{OA+2YhL!!?Ry(&>DUBWDzE?Lx(?Z&Vy7*$@DY7*Ca%hLsxEYXxiLr&F6YE$5~n zl7i;f2Z^P&s1{L$O7$vqk;V-e;i`U=46kX8MATy{HBUR!;~uwB0Cjv6z{6x4M0=nM z(&<*%?OM6=#yaBIHq)1{Ws@o#xkpP;Ib4+L1Y|O4rnnDPrNiP^yEz&xXBK-Ie7?-~ zQO?r=GeJGpWlz}6sbIXBlbOHX`mtb~>XE)RWp7e+ed{>HtKqOOJ&z5AAfwueU1{?6 zR2ndXlU#&$%V+96I4iN{LO-UC=I;)OBq6#1-c%#hx|kJRRb|Bzys3@>CX(dRGd^%M z(O1QFDJaP)Bg*$`Yql-9rZ(l%mJwJW?m_D|d)l{wl+ z0bt7E1mzEt#a8d-ZEbe1vsgIvc$mx#5%)1O_IkTSnyXKtb7Q;4Z)RMDs#M5qVZ9)e zokg*nG(53V@K~%iqQfkN=Mq+)5k7r<>@O?{<_h$62)rk18sJ%=amgLP~B z6mS+e57WUkHe?`VILgjSZc|EWND=cfAt{yvjeq(a0S1)=B`(1j*PYh#Py3C?hPz>d zVE$0JoDKd5&KEiiM=adtxE(G8^A6TDbB~Q|-b{up956*uGVKb}=mV7$t(g{*u{EeO z^A%&4lViW0F(!O$B56cC2n~cR_9c;dfx(WFMlU+M_u(mH&T&-HeuM~VVna-#K*-G@fR|-OL@5FDHER-&xmKmbK-gN0^qS+?2g#%kR%|D>7dwa@ z#ZF>pv5VMM>?U>>dx$;7USe-hdoe-nVE8`%ZC|mU*k2qV4ipE8gT*1@P;r;u3MGxJ+Cwt`Jv>tHjmf8gZ?-PFyc;5I2gO#LeOsajUpZ+%E1AcZ$2j z-Qpf`ueeX#FCGvNiigC*;t}zvcuYJlo)Axpr^M6Z8S$)mPCPGO5HE_C#LMCp@v3-D zye{4lZ;H3X+u|MZu6R$pFFp_-ijTy{;uGwCRP_~h&9DpVr{XGSXZnk))yOy4aG)c zW3h?YRBR?T7h8xe#a3dt*jj8OwiVln?ZpmaN3oOGS?nTq6}ySu#U5f$v6t9e>?8IS z`-%O<0pdV$kT_TzA`TUYiNnPa;z)6nI9iMl$B1LaapHJ!f;dr}Bu0vp#VO)cahfXNj}LIpSP#o;Y7zATAUaiHpT0;!<&$xLjNzt`t{^tHm|qT5+AYUfdvV6gP>R z#Vz7iahteZ+#&81cZs{jJ>p(*pSWKL%^NIPz0%Ae2 zkXTqOA{G^kiN(bdVo9--SXwM2mKDp1<;4nOMX{1tS*#*f6|0HW#TsHwv6fg{tRvPH z>xuQn24X|8k=R&lA~qG9iOt0pVoR}=7%sLJ+lXz&c4B+6gV<5*Bz6|Nh+V~QVt28J z*i-B!_7?kyeZ_uae{p~~P#h!<7KeyK#bM%bafCQh93_qxBg8S{SaF;N#YN&`af!H8TqZ6TSBNXcRpM%Kjks1^ zC$1Mah#SRC;%0G+xK-RHZWnimJH=h%ZgG#eSKKG=7Y~RB#Y5s@@rZa-JSH9&PlzYQ zQ{rjyjCfW&C!QBCh!@36;$`uQcvZY6UKekOH^p1xZSjtHSG*_Q7axcZ#Yf^}@rn3U zd?r2@Ux+WoSK@2&jrdl4C%zXyh#$pI;%D)T_*MKSeiwg;KgD0-Z}E@#SB$nG7+s7Z z#uVK|chN)i6m6oH=q<()V~cUbxMDofNAwl_#Q0(YF`<}9Oe`i5lZwg2aC`SagaZVyGA<<`(ma zdBuEUezAa9P%I=C7K?~Q#bRP{v4mJsEG3o}%ZO#ga$=?kBvuxyh*iaEVs){G zSW~Pe))woCb;WvOeX)VqP;4YN7MqAo#b#o2v4z-DY$b+^t;IHCTd|$kUhE)t6gz=d zM{xMg{%sertJqEKF7^<6ioL|%Vjr=u*iY;)4iE>5gT%q&5OJtDOdKwb5J!rm#L;4e zI7S>RjuXd=6U2$)Br#H)EKU)piqpjD;tX-7I7^%@&JpK|^The$0&$_ZNL(x~5toX~ z#O2}&aizFQTrI8<*NW@J_2LF`qqs@jEN&6Eird8P;tp}AxJ%qE?h*Hj`^5d?0r8-C zNIWba5s!+;#N*-#@uYZ4JT0CP&x+^7^Wp{ZqIgNXEM5_>ir2*J;tlbpcuTx3-VyJL z_r&|+1M#8wNPH|l5ub|B#OLA*@um1md@a5a--_?V_u>cfqxebuEPfHcir>WV;t%ns z_)GjP{t^F*(G~)ui!sEQqMPV0dWfE)P4p7I#aLo&F^(8lj3@etzM`KPUrZn-6cdSw z#Ux@9?`&Y`-=m_f#M)>usB2A5;u!m#I52sal5!f+$ru7cZ++( zz2ZJ`zj#1AC>|0Ii$}zx;xX~KctSiWo)S-sXT-DOIq|%BLA)ql5-*Ea#H->p@w#|J zyeZxiZ;N-tyW&0ZzW6|VC_WM&i%-O-;xqBN_(FUsz7k)HZ^XCaJMq2v0T7Y<(c_=Q z&*B&HtN2a)F8&aIioe9);vey^7;RxNx)?)@DY}X7qKD`y+C(qWTZ|>f7UPI<#dxBR z=qvh(@x=sULNSq;SWF@&6_bg{#S~&nF_oBFOe3Zh(~0TD3}QwxlbBh|B4!n{iP^;* zqQ96^%q0ehb}>+Nh(Tho=oCZ5P%%u*E#?vPiuuI+Vga$BSV$}^77>ez#l+%b39+PD zN-Qmw5zC6@#PVVVv7%T>tSnX$tBTdc>S7JCrdUg?E!Gk1iuJ_$Vgs?E*hp+FHW8bO z&BW$n3$dlxN(>iUi*3ZVVmq_UBs?pH?h0eL+mN`5_^k%#J*xbvA;M# z94HPF2a7|*q2e%cxHv)_DUK3HixJ`&ajZB_94}4~CyJBANO7__MVu;56Q_$a#F^qO zake-|oGZ=~=Zg!(h2kP{vA9HBDlQY3iz~#H;wo{qxJFznt`pab8^n#`CULX4McgWG z6Ss>y#GT?Uakscf+$-)A_lpO_gW@6auy{l~DjpM$izmdB;wka8ct$)co)gcD7sQL= zCGoO&MZ79r6R(Rm#GB$R@wRwJyer-l?~4z_hvFmgvG_!MDn1jRi!a2N;w$mB_(psy zz7yYzAH@0is zqGBB#nxgQv8~unY%g{YJBppe&SDp_tJqEKF7^<6ioL|% zVjr=u*iY;)4iE>5gT%q&5OJtDOdKwb5J!rm#L;4eI7S>RjuXd=6U2$)Br#H)EKU)p ziqpjD;tX-7I7^%@&JpK|^The$0&$_ZNL(x~5toX~#O2}&aizFQTrI8<*NW@J_2LF` zqqs@jEN&6Eird8P;tp}AxJ%qE?h*Hj`^5d?0r8-CNIWba5s!+;#N*-#@uYZ4JT0CP z&x+^7^Wp{ZqIgNXEM5_>ir2*J;tlbpcuTx3-VyJL_r&|+1M#8wNPH|l5ub|B#OLA* z@um1md@a5a--_?V_u>cfqxebuEPfHcir>WV;t%ns_)GjP{t^F*(G~@xi!sEQqMPV0 zdWfE)P4p7I#aLo&F^(8lj3@etzM`KPUrZn-6cdSw#Ux@9?`&Y`-=m_f#M)>usB2A5;u!m#I52sal5!f+$ru7cZ++(z2ZJ`zj#1AC>|0Ii$}zx;xX~K zctSiWo)S-sXT-DOIq|%BLA)ql5-*Ea#H->p@w#|JyeZxiZ;N-tyW&0ZzW6|VC_WM& zi%-O-;xqBN_(FUsz7k)HZ^XCaJMq2vLHsCw5mJ`d16~u~SC9$$tMXV}T z6RV3g#F}C)v9?%8tSix&JKVkMy#Npxyailm(94$tO zW5luIIB~oi;5MzpNqPyrJdWtsDOY|0FiLu2vVq7tv=p*`yeqwwvftXNC zBqkP@0isqGBB z#nxgQv8~unY%g{YJBppe&SDp_tJqEKF7^<6ioL|%Vjr=u*iY;)4iE>5gT%q&5OJtD zOdKwb5J!rm#L;4eI7S>RjuXd=6U2$)Br#H)EKU)piqpjD;tX-7I7^%@&JpK|^The$ z0&$_ZNL(x~5toX~#O2}&aizFQTrI8<*NW@J_2LF`qqs@jEN&6Eird8P;tp}AxJ%qE z?h*Hj`^5d?0r8-CNIWba5s!+;#N*-#@uYZ4JT0CP&x+^7^Wp{ZqIgNXEM5_>ir2*J z;tlbpcuTx3-VyJL_r&|+1M#8wNPH|l5ub|B#OLA*@um1md@a5a--_?V_u>cfqxebu zEPfHcir>WV;t%ns_)GjP{t^F*(Ut(Ci!sEQqMPV0dWfE)P4p7I#aLo&F^(8lj3@et zzM`KPUrZn-6cdSw#Ux@9?`&Y`-=m_ zf#M)>usB2A5;u!m#I52s zal5!f+$ru7cZ++(z2ZJ`zj#1AC>|0Ii$}zx;xX~KctSiWo)S-sXT-DOIq|%BLA)ql z5-*Ea#H->p@w#|JyeZxiZ;N-tyW&0ZzW6|VC_WM&i%-O-;xqBN_(FUsz7k)HZ^XCa zJMq2vLHsCw5mJ`d16~u~SC9$$tMXV}T6RV3g#F}C)v9?%8tSix&J< zhGHYJvDidxDmD|Fi!H>KVkMy#Npxyailm(94$tOW5luIIB~oj3vevJ8 ziRr}*Vn#8Om|4ssW)-uE*~J{9znD|ZB?gH9hrPQDyLQR)!rl*f+Uc15~PO&*Wem=cUPRayN7sw|Fvq>ecyXO@6er#F!^xybv^ae zu3fTf)v9G>PZB&$@GQae1TPZ2OzjZBSd`^OIli=GX_;v}teS*(T@EsC-#{}Og z!FNvZT@rj=g72E(^Amix1m8Wu7bN(?1m7dU_e}7;5`6Cj-zUNMP4N8^eE$SLAi)nz z@PiWk-~>M;!4FOF!xH@P1V19dk4*5R68z`{KPJJCP4MFq{P+YvA;A|V_=yRAQi7kH z;HM<`c!Hmr;HM?{=?Q*Df}fe-XC?UA3I5^)e@TMBG{Ik%;4e?`S0wl=6Z};Peolg) zo8adq`1uKbL4seH;IB^b*ChBw34U>cUy|ULCirU;{B;R_S%P1l;IB{cHzfE(g1<4r z-<05QPVg%d{K^EsD#5Q#@W}*UoZ#0a_*)YEtqFc@f?t>5*C+T534UXO-<04tC-^N1 zertl?mf*K1_#FxUwgkU3!S71&yA%AL1iv@I?@RFe6a0Y$e=xxxO7Mph{E-BIdxF0s z!QYwS?@I7@C-{33{JjbOz65`Nf`1^vKbYVjO7IUS_(u}_qY3`81pl~zC+?p}{GUwl zPbK)L6Z|s?{@DcoT!Mc-!M~8;Urg{XCHR*U{3{9m)dc@qf`2{1zmeeIOz>|d_@fE_ zSb{&E;7=s@lL`J*fYN_^%WEHwpgR1pi%v|31P0kl=qz@INK^pA-Bq3I1$?|24t?mf(L+ z@P8!uKNI|43I6W{ANT^nmr3wt6Z}O9zFdM2CiqZ-cM`mt;KK>tOYj*9J~P3WPw*8I ze8mJGN$}AGA4~9A3BFQ-ubkkkB>1WczFLB>p5SXF_?ij6R)Vjc;Oiv#x(U8sg0G+8 z8zlIK3BFN+Z=B$pB>1KYzFC5Ap5R*~_?8L2Rf0zeK0Cp;PVhLvlLSu_JWKFA!HWbh z6TC|BI>DO+pOfI*B>1)ozFmTEpWt&7e1`)umnFm!H-Dr zBNP0n1V1{#k4f-j6a2UYKR&@vNbp4oeqw^3l;9^P_$diKp5Uh@_-P4#dV-&k;AbZI zSqXl&pzeZp&1~)nudA7Jb9b*(yN!Q!1YL%ffMttq_NB>CfShH>*V>82NWvXhdoE) zxrlly>KuPB>3Kk}?mTv(u^Z6c_p7Shd7Ni8a);`B!1p3V-duR_OKzVIEV88uw+iPA zz*Oe${{G@-W>?6r3U;;+BZ|CrnKuXmjN5|U1e_wd`qibdZm>mszPL!*<=FY*sasyX zgH%1vMXxA%eR-N&z4JDt>sSHfR@V2Pda()U?pp4m-VxG9zMxf4C3qLhmk;~m4V647 z@rn1Ij~+>-+fro5yO{C@GfANVpK$mbIu&LbjuF1z_)`h~bb>!4_{3*Ddg+>7*D1SvICn0){vMU#K$IDrY_AmA6FQH{LI3JbLL_216hzZ@zdKqwW!|;$GRw;~jVc_VA(C z&yY&)?7fTB8+xvJzI!L`_OZ5lLF-d}4D9;wSKWgArS-_y|LX_6>aDC?z5J>PQwe2U`tcYXi)z83rAANoRb;2nWE^xXaL zE*Jmg$3L9J_Y!@Fc<01kVyYPw*na%LK0yyiV{Y!RI9SHVM9Mf^V1L+b8(k1m7XScTDh| z5`5COYq$jd_jUQOz=Gte9r{mE5Y|p@O=_|-vr+;!S_$_0}}ke z1V1Rj4^Hqy68z8vKP?*%iwI?U}|(Y)k<u!0h z>m4`wlaeduT6T?p$P-u|u=wOBKBFR@tI4;I|Du5Zixd2k1iv&L`REf@xD#4llg)EH z_4dHWqE=j-1{+*okUPGx%3Qx6;3a z#Js0_6t9N7C6U|b_Xh?)mN$*a*8}u|xDpHE#7+;3)ZaO<)N-@|~o=_m;$CP%ZK7GSeA>PsQvcQqJdswgRWSl)$K|tr#PEWWOm`QYf z|B*GtbKSj`J>TbP32#Kys8r(VX^m>Vp1sJU(O!kg3mG*Qm6-Pl*Jl+698HVPUe(S6N_pZV=uD!a@Q#J&E@Fukjy+H54G9C{L5X_csW4|+&_leO z@VMqp<;=6u-a$Y^-atS-lbAOkp^mb+sN5@j)JQLDsxgcYLOC4{PO}?$~HG?b6AB zKA+W29?A9KNIlNgkFsezFKW!W^6EJrPgHm+rKhEwN!*_`z%J(Rrb*+e7J6JgV~H}zKEy^rEqZPsmG7SqjlgC(z#Ea>uNt5-bD3Xd!{ zom1^Aap0?*-hIovRe56B`(~bhOZAgDt*$oBT>3oZc>Bc*lMP5GPMs1z3J`AuBaA!- z>3x;z+oVmE#j`R;nNIcgZ{BCwvpEk*&Szsb)4}65H2XDmG6s2$Y(ACKb3&RvsA|=T zMyUV$(_osOdB{5U#^MEetkK(A({{ZZq(9ylIWe+Ds2)|hm1A;xZ`OM*o@O)edjus0 z?BmmjOQJ_vJ)e~pS1+}bw?T2n$nsMn#*rsn@>I+!?nNqo69~v_hYRl}qUUrx9ksbr zV9(=y9y;Vm=tt<&A&d^~)_d!i@v4#ym=|S?UB5E(k;<9Z(_tx3z9ye(>z(e?h|avEJD+MO^X~LMW6vfzJ!!Nd+8jLZgznTTo}6Cw88&p{Bqz;halvRvNAb;w z;-8q09=#iUdMtFR_qfTyhpu1(~u|YrXf>j_pM%d zYd~UKFPQ2*rb;D&ciy3ayr6oYh$rrkMjOzPy?EeBf(%B?>0RW2K5rY&XY=ca63vza zj=>1o9@5S$sve9Q0`-EHCtbb#=G~-01D^?k_g)XDMZGnZ4o8aTkw4EQE^XqiiK){B zqpX+ba7_)5_a@x;Pmbhne8Dv z5Ba@b%+t(HonC*!LEcQF*Q(66Jg`e2sW}s3@c`cOSs=Y8jQ3}9#+$Zt&R{>72$+NH zHrZebGwuh0o<;H?#H(U6z{p}i$}79`sn!|v990KMihuM;67&4*diUC;FqdbtcFsK-4<%ACPM_(}gNdAD`!jX&g7364{E8A`e$|9hFTZ!^ zD89SV87(^FCGj0vqNgKkTqgE04^MHr-b}rR5@VQfPf`fylku&zYOrD_LXxp zx&yK7MZTVaN#vkCK0&p_yjS@$#;qXs>w?aU-myn0h@)khc7z^E%(HTbvOqEOKx(s) z;y$U<8*&k^AV-hW5G$PS=xNBjFu4*vx1RS`POiU{*v=ZsTtf2g$2RmfD> z*AP*#a&p-iY49_zw_?b_SZ~JXVdPfXHRRpR-Ap695>G074I4hkP`7wVH`o@e#5^m$ zKUxnZuu+aGYc5vWN!sf9hcZ@q9=L|w+vdkyQB4Up&ph_eMCBF1`I$kb?su}@#a=qc zGJ3HjH(WD%QLye4jm{mxSi(GkYn;o`$*^nudi42Zz7!dlhnBmKe$Vijb4TKk7B|R| zx^l9^?g{t7#Aw@>Zj@SYoNJ^k%Vx>#%D6J7_~!l$bXM&S8XtS_!9-L30C@->ns${T z{LEyz;-Jp3ik`Tg-&=jiB4lv~9ObBU5eim%t#jo(>4b$vKJkkgwrkJ(<5h-Mb<{ph zTF^Zbt4XLSThyzx6!w1ewG=eIxYR_PMiuaY_e-nSFWyw4N_>Eptau(HQ^buFA56?6 z@%yvM>L#(Mju=?v(2^J#IojUbH)*CTd|a^Q#2#^Y`HBv zb`Zc2)yvn9sTJO^#hTk;496@n-cSlGw^9_h;(U2{9H)QziX&nXFGsCMgJpb;(QFIP zm_3gEM^JgfJ;S0(7CYvZw`%it?n-2wgQz?KwL{<|m6IRnS)BTw9$)#e@Qi9X6@!<8 zCojq>{+dw9vP>LavA;}_7Zxe0oJU$5as;eZn`xN+_7sFx!)seagGers!+9UMpy@=# z*ka^IjMnLl=>F`^n4Oqb-o+K0hR$w|!a3)r6&udzHyGta^~eT# zx}rqcnv{_jhhCzgWYq3sTrzzkNz-ChYgpCNUp+A$+qbn6udovdSPL1-4Y*)WaqkPC zl-(LjiCQ2PI7wLqMF&Yc$ysS1&O$RsY6k1Wk9g|!Jy>|>(JOlu@^rfxcW$0C7PBQJ z5Len04+$&dSGrTwfcGjM|DFmy{OFBMGBGM3>Jfz4uyl!@wRb$#)c48 z;PV~@67MeCQb z-)wl_-m^a94RT&kef!My6U@eCH#w0j5U$_8q;j@KdA50hr7Z{!t~dy+Nb=(ZTk(Q1GEBZv<#2)dR@<$1PFt$@!{#@f(4f@#q;8W1Ri+XT&ST#BslV}T zn{@Nd$^yEYZ}>FV@qEK&STXZ0>?o71Yl%V-g6?lPh4$wg|FyT+=Ue>5(L)w2Wr58% zqigfge6tA04KUxh-yg^K*5&x_vD^8Uy?YrV#HfE!(>EwkX>D(QVuXYuyN*}HUFJ%@ zK{Tct;nCmNm9@g(-zZji=KO|bd8U27K_&}lzM1wVj=NlDW8hkKTKpc2X^)*3dC|YU zBwRx&`Ie{1SqrP@o|VTWqt$j!!%C3MH}q(#boa0ihSTbvN}fJ>96Ae9R6^4_>Nl=~ zJ!~pMf7i$up*Tx3zbhC&|v)J0JM$$Zs zKm85qmG%~d!KG#IT|M36=}|?NthzecAbBd_pF)W9&AL#t;;N3u5hHK4MDq$y%Qx70 zOi9^LyuwdYNplMFW}p)iKhb49cS2d2U38dvc80O)Xt^k0=T7-U9C;O@ZksB zJSn$F+?q%-=|1lYk3;h43ZDvL<0&NjRi&k9x(4_zj*O>Y6kij2n^ zb@=jv{4L~%Z0w9_od*WV>4IF87E%OP^kh|+FS?2o4^-#~)EbFwo>wNF zv}WmGsMrZsivu6585PuCjbisTx4}i6*!%HJZxMsZ?Zo#wv)qn&RP;pJq|5Qw?uu2i2KubhlNZSr=So zaU^Cmp-z8RMD7rcjATz%9Ag*=+raERwP z+p54&G76girN{e=Ib>+;-kCx;G{IC@LMgFa3pTtlPH5SR)DR5M`9c&szxYtA?R3>TnD;bGLU(-V&!+KG_zpRqSE92Dl_nYOszW>^i+Y`?NYx!4R@+oojvGS zcyGmw&?@2Z#iWH}_pf0q6?35JE{y|xrF}^;3$Wo2K#riR0!AqWR~6S}tynP&yv4Y! z-v%dyLX<~U;FI$s)naACXr{mcd01WdAq=Ve5K=7EWzJMmyAZ10OmS&i$giDk>a}TN zC9Sc^*0CNXzKjU?s_j6qT@}+p`61G)QrfHDEZbIrm%C`i&Od@9bX*WwXjlcRjw)JH zwqr483U4z+B;v|XX0F(ijfN+&d8_1T3`i()w%RIISHJSGOj?+3{~Bc)n1n_5A*$gF zs#Vd-7RJ@T(yBtPibiI4vpC!$12Z~ZR9#r(%EpOaNoG!iPC_rLCeSlK3rm@KC5Os4 zk$E4cuOTyijc&-Tn~V+E^%J`3LG@)uD=K9JsYHal2DILgDLTK=c2)~ar-~6md(xCn zrru~gQ^%TlhH_D8sd}pt`o)S-m{$z5TQUCkior|-OLfe?pp{lOr8HO#mLLKy>o>Z? zA~>-yjT)?oj;f*-nJQL4R;>2TcWkkR()U*h#_hsLgj!`|oK{Thn+GuguACE(E6HB; z6k{L<;IiJ_Y~DBi(y;da&FUa?d%k58!|0hMU&`e{z8Gg3h7oBI+KN4(qBuj-GGv}& z9H6EI;U(O3Q3x+zC{6kZf}}@ik)kb{US)OeDNjRJW(N+}MMf`G=d=Rb$G3Cy9sdhw zS2SjqDipAc0|p$8J3mE(C=t>>@ov^iX#Ygihba1|nA#zh{)Sal9aE#lh(b?lj5~f| zBpP3KiB7TS90x&Nioq#&QKm$H<0Ps5UaLyRbL4t|Z8=uPA#?ZIw4$3?z$lC(Z8%OFl&9h*j<6m%QoF_rAr2yAJ?39l}E2$6xN>b5%SrTfRy;0 zU1|N!cvC@33wGR&IbtO~+oZ5)-rN+IXz;-rK4FJr)#+HMy_2ew{|PJEkjP0&@)B|I z*uQ8ev@z>CYYSDjKgQFRz7Vzsq(sBV>Whh!McDcj9^|mM7R*%#k->?YQ?I-g0UWGq)>-!`y7F{lrPknjfGz?3}SNu;9XkS%*$#5VNm~V4Zfg?qQvc z_3mFS@>E84wiP{FN_jLRJGwL`8t;$h*cU6&sb{mpIe_TqHEgLe3!ROj90N07p`A~d zIl77&l*kI+JL{F*<+yU_?mA)L03KaAUt~4PSsiOQwt;8bG$_;*1LLo%s)jg7d9m1H zuWc&aIjyqB*%YUDgj(g~R>)Fvwh+IG%~OdMj_l4N6%oe<$!cbH_u>8)2xe%X@K{=W z=HN8A(~ulmu|5g?8zico-B8?h9A}yTCKl4RT;-fDszF=TIzEuyI>?e+!=P4=l4!Lv zTa}UTB1?%@j?uIuJSI^jpgKvY_?I)5&=H^P$FP1b4cOqZHEISmN3-Ek^Dl5zgqd^t zpigQaIz(V0reet}uf=&g1Vdm8fK+Q`BhKg?0?#5qvUVbk0(-SNAEJ|riI`CtVI*1W zbw_IUn31aG21}|1HYPQyy>>x%C2y zP{>Zr)InEqIA;c@1~}tNqfm03?~WAW=|aqTspcz^&c2F&QzInnMe6e0}^Z`p{tQ4_?1D%@NZT|?+mAJ8rSSx&Un z5ZdJ{rEXy{WYf`_iCkOW=vyZ`k37NsBc2w#h)hSbM*&B455b@zsq_znuE0?*j^G@R ze$%Iq9-CnFpzO|n6&Th?AbkCTVCvxp%;E;;mL)?f-LHs2{<)_v%>MTY{HMK zmhb>Nd>irztj@_9YpX?U1yg0=Hlu@`>pdy@YDO}nV-$=gI>%tT22(1;iN?&q@@X_N zS)@TqW(6AEjU~~_V8lq%&H=PpKuR)Mz(W(~#qgS&^e#Og*=hNqHv&7-}Ta$#ioBYuE&0J1-$dHrR7AXpookqz)V*c|I=D-1+hE*1H`R7t>mX!YHs!!tr)GqsNJXMx{ioJY9lFT|rXXi% z-^k$d_|*w8)D;G8s@F-&;*i@QTMiR%EXx613Q4Hw72c0tp%m@8KmhlkdXM}NEGR?V>a)dN`F}Fxs)yle%L)76a zxoQVJ+KAPFnLk+uuv&{;HewO9?8FV3lfq=UqhYw$v=;PQb~VbzqLvI&L#1Y6n;5eT_!#(Xl{0Kn zY~wUrd3o>xZPt|ISK4zJDPjMBTR2y3e&%D~32$+<vD2jk zI#eP+_#_4fOfCTAU5BCK39fdcEY?{<+CcbsCqe~GW)33SBQdxzbZ|c%%90wf5R;ys zv~o)1rocq7&YlynsUvijOdrw_;Z#F(U@|o3Agyi^c{%hFI}9J2Itii|T#pbEZZ`NJ zdyOQOlwMU;T1_GOpd#01*qpwGGKtt7qQ%2j+sGp4v(qpe?wpu|H#Xk2p8@EUxa>~0 z%P2P8YA1<+La?Fzl}H8T>>~#F4MOoBDVl*YGbShSd(Z-8@NNp2S<(39>qN61>O+F? zla>uF)i_&l;zH|0x(kQ%OaD~75@|ddVL33`qhVCeB$_>VNp6jqMDonmU!+cVn%>0e z@(kGYwA$;|4apMT9Lqk-VV#IF(F%759dKF)XD*|lPW9HZ&MC1F5B64X^vI-$W0-J%;mX>57 z>FlK4f*lP(Be9>)a0H3e3QPjyiYDLa%u&y0*`G)z4(yl&ff&w>=?*>!*=QlTPS3Ba zxJ1I5jluu0Vb_=Vc!_58wR0xXneI3TqPMNVB-(Q7EsD&*Y38FqI<3t_n`9+As~1lu zHZv5@VPrdo(P4$ehA8ri!{!yI8?M-XG;|n?25Ir}Hb3dc@eC7_nM_BVDv4Yy4lyw= zQf1`~uf@(VZp!-1f+Ql^c%3LbE2quWcHD+#(n}_15=}q&i<`J|@}-(PkX9O5OFM8D zi!uFqcqzlHPQ7`oKh#yO%{@dUJ#)lZAi0fW7nX1=(w@R5SMeCCIV_BYvHw>hGn}Cp zUmDGQ5MPN=2F-;~=aP#wO7qVSii7dtS=K%YSC-m<324~VME2tCcG437QO0V2XQ7iu z0Tc`kBiOT5A_bXENhW7WqC{Zy1fl@n#LK5Y)JQ#~repd;oU|OL%Jk6mN|j9sbV3`B znB?U*>Y?OJBb>N?alS6itB6$enc`179ArW)GYbRAap&nIhGw%qIfB_e-D6RSBn(1` z^G!p9Kcg`60^)I4#9;zkkT|%&;5P0!^#&=4yb1b5 zV;z!<%fNVr#>%?|BLsRq5IpGkuq^QSxt>JFSqMHn;^ z6;rB>MrY-8)DXdzGafZYm6dRcOOgoBEb6RrgczrA3X^nF^*dfBnkv?Rw57Zmn~{$! zTWuL$&TI^XAMb!5>LB{yyT+GyUZiB^P}X$JNUa*OtcLp<`&yTl$^4#6v@Ni?pBt?W+ixxk5BP)@mt`UaC&tm043|3N(sYvxyYtutq zH)bm3lrWf7-Vy3*lmq0ns?A~)Rz@!{*(7&fi>~}Z<_rfW94~N_3T5H&aiy&ehi;Hu zt|_q$6S7@hiyHwluE zwZ;r)Tz;&SXba0B(uo!n@x5qz3uDG7TRaIoEQwAz)v{?RIqIb9WdgN(z_0=zBf&xU zP)0M*QJxuUNHO^g8fZz}Iw;h7E5(`b5?-?Arhg4UE^TC#pb)OdcyYp~E33K7H$cw~ ztAp7Te+5b56lf}n+Dg@bR7i3V{F^V3jCdc~%8Y1IN)429^+J)6-{iqzr)QC!6zE+o zsG>38gtcdCHFlGViCSdD1ub*1nc})E7S1~ec7zZEw5GI0G20*lKew2kqKC;zImd!x zB0tXLmoponNLQ9Vr~R9!m6&x^q?Z1hb&!*s5=k^`dC@S8OW|K)uo)}W%r^{Km6u2< z3N_S%FlR+!;G>V8xseh|5dn5nj`@#O8Y|BPl?2-bfNP`8O=$MPZ(H|I>GBuF10pB< zb@3dU$<;HMZMFzhVpLi>4~n8n75s`Pk-8WEC`C5tPn}$!;W8Zixgl&SEjfi+xlvw2 zUja|!$^g)tNUWWaURcbOd3j1i=T;Tsc-H!7J+eXEI7I5xgt#iw&_~idolGBVSrMHU z?7G7GjjPvhlStnS=gz9lT6fLaGSo=J!Q0Z$6i*`FYBeHiHmayZSDGuX-=qnI7UsG* zCXq$b-ruXZttuG^DpvULn!A}g=7HIiRZ5z4dX#B`Ax1IPM>a^$=#aiD*lZLCzSc$M zS<;M=#fxVn-STYLG^rJX>^)hEc~8lxy4DjkS=vh_($mogMadK%2;!bG(BO|uIHks? zi&@6e5foGfF&igBmw#xj*k}j4WDN-)H!k|Rs z#yJ&7Dsf*!Ws*{KVw6PrWFw@`%v=U*EHwbvqE;tDJ`m$J8jCFJkVdYSAtIvbhkKcOlor76lavC^o?6YGJ(VkD9iYVjm|0gMdG@Zd_!A|SJYPJ%!x zXRsKT3F}pd&|M8;R&?orP!%=3&i^5~_}bZ)xkL_$?KO)Km%@C~7$MKzu7SOZSJEdV ztIw%C8W><~g~0VhYjhH8h}aYDq2NlQab>o~a>V#{c|%z%E>w+Kbq#{0lDL?LxJ^PG%8UqRR+HFJ z{I%3V{CAZGrsXiC$VLnLYBuMPHQ@$FG~r2nkwp)R02oT-S58wXmrkh^_KF1UCgNsC z15twFBB?r`nHuTYWD}#lxFd6Jq>9%C%xTIi$0A=kO`rK&u1q+EI!;CD)c{QYhWNT+Di6H=^;Hg zsF7$)v!yGl7^ZScq$Ogg1Y(2YNEY8Vyc(%Us={oxd70caWy?Qn!fV}RHC|yZ)X~;O zpteM`Ib;y2f2+L4jT6Yik!!Szy7>#3CL9)YpUP>&Hy=QzJG;LQ`V@k}M`0smVo0g8 z=0O>kSTkjCQGjlmdGt7=V2W)@jc>sK&=g4NA!%}u!ec(ywr0&_2c*(*C9^DhYJn0f z(2}Vd$6JwvEtlqH77&;cA?nph!X#<{jF=@evM>%JG$yh<#hL7pniws)8#ApsNzv3U z|A1*4eXA1V^TYq*&^E;@F++qDO>pv-<}*1N(n`kgnM6k{Nm|Mu#=vMOyhpLk95LtF z>xeS=kjSTx0&Oefz9|eRBl7`Wp}b|@NrMeenyBxw&C|9-TB~eXZ;vpYMEVfXL)^`J zL7L&o0#f$M)m+j^Gl9I29xI`=f5V&Up@DLdn;SJ~x}#M(6|u`eUC1y3Xo^Z-Yao*d z<5{~PsmlQDX6OnANLv_EBRCj}Cx~i+j`ti8Q-M~ZC{07UYsOk8g_9SjL>^7U5urPE z8n2kvT=uv$bX0#NLY%p3)R2+1>}ls3^9fhzajZ0kfW;0pylBISYr^DX*K$)2ZLkkW zut?p|$MhU8i*^seO!Zpp2!ahDQln@NQ$wNg@lqzaKzo|9g>lKOJcp@ou8K@?qB!GF z$h3`C%U@4ZvvyQ%<2?AT)_DWs{a%TDyL3w|oS~XJYwp4~4g)<@K|H2pWQ_Ib<^6>; zTuM4aNR`Zx{uBf#NnfC7KD|%f6&lpLl*^uPd(;e7zGY{+T}oxM=a-xl$mX3XHKzum zTJY`=uu!m@O9=}X;R8w}kF$0;u{=^9nzLVDD$?vMPO6#Vl;!yp5Op_9Jd{%<>9>GL zVGfh^EzPlLeCtj1no}xqYquPbM?CB>jVHZaN!|14j8k=bi}+U6)%QAQxiL}ArV{vb z$+wL8f|ZkD`-=+06H|!)ic@rcYFPJAQU6YWzYMTPcc&0-@g=|RAdW*}IRjLVvBgZe z;J@}{?0p$UzRiTo_2N&AmAIH>id+Q!x1T6G691B_9>Sw}7}xo#?C4Zh^|= z>~_Kwvbc48qe-30vkC`(q*LdPv-X>|&7P>A4HXebF(}fmO!)Pw78>XYibagZXAq2? zg!4H6zR zOo(;Lt9d}wRS<;fZdYN6Vlu>KP&x40!a-pts}Ku2#vBIHyyFO{7899jm|$mE$r!#2 z`V`hp<-|mqrN{3d-xO2UoL(k!4y`bu;<6?f)>;w0B0DyzAT%p#ej&v)q-OJ4(BJUU z>1Lclu{O<0b0;}zd2yf-x6~xevAUbY>~&`=QceiT$(famXz7`2h5af{GG-Z*EMBq@ z_OrN{t&-&-T*3^P5$ZVbtEG&_jgysJ!$9#Ga$LztsFF5H+>ofhW?$6=J~MuL11RcbM(@vrJ{B^m^?$H=!D zrbh5)Kay#bGZcmG?E0{b!OfCg>#=x05~_<11l`zSY%^2T8+Z(BhC$4gcuG?mwspJ4LNbcmXCgY2`IaN6m^94^FHeVdd13poNqso0S=SM*?|2rq{ z+pN{v9py>f)qSo=3&V3e#=G3Gv3HW*HAfFhl+X(If0uyPT%V?@ra1^U7_`A1uZB9(aeP_SQ9MAi7V4O^l4O!Ntw5F?)60uL_EJ_t$Ds==04T4W^A}c zCQ4Tjfdij)Ft=(o_2as13$(wq$$Z2I_W7@WT}VX{Qud+I9;3KkzkT`n4bzBwYJZP! z%J;8Ozhj>4aG%K_L08iIy9`>6Qdg@~UE7g4ZKDRZVUY6vxA!serA-B`@nNI$bA5+%NO@K)-MaI4}4`3a^sb+KPB_EZZHUk$QNpW z4y53xmy?tVkDY?+E0$&LJj}S3@k*9<0tIhARjN|60~&7z%Y4N}f!W{U@K`@lc4A5I zjO>=;k6rhdN@GD_RsiB=Z~D%+r`ZkN6j8rgnc3{vuk|g2T6wcy#$0&s(F;={?p9s= zaDOQu+x{WWm+KE1F0PFsi2WrZqP~>K`&4p8%8jA6;D-b`l-a5r*LFuT|!51zq^*IHqo}V)bT>r zL&^Jk*d1B4p0%P)>r@|((wQR^foww`(tpd34Hg5AA3JK_+rMXP#Qcsc@R7wiv%1BF zXSdX%X1@0QduYAC(^5C|Un-G;mCA)+X|*+b0$c3N#T?)M#g-aI87gcZ`YC^@mB=Ym zUwZP})?Jrt&o}1N(gJa7e(6u|Tj)_aTg!U3O}uN5A2-Vwoy#y9rgOZ(vx*eI=mTH4 zi?jC9zkI4+vO#T^Ie)Q=Frpfm{bj+=@jj3-t#9Jpd^T+Y|5NzVI(_h>On=En$J)`5 z3Qk|FF!_ZUj1124%EYiFe^!Z`FV>8zlZt22<>4>3omxJbCNE#&Aejp2I&b@8k>SX; zzBHVi#2e=Oc*D=<-Gmz`FJBDH@yq^_O(rp*_1Ww8zHnar1&O|w*6cT{#nAdfO7X7* zb#8vd=xQJ7{~x}@eCGF9eB=1S#P+2;I%rxn$9aka6LPlb*u3`Xe9OGxx*+|#RN~yR zW=3ZAr}XVhh10&@=m$RVf%lQ{J`!NyeI&e(g!fs&`?KKvS@8ZWcz+hWKMUTU1@F&- z|F35OFUIR!=vq4*p^QdFiRd<&88{B%4FTJRAy99RSdKBMf=eIK4u*5ZJ zgU;$TkLL86pFRswvS-IZEx1=fx{U0{+kt(C_cPkdqxel9k# z@H^@DflnU$yxLdiyiFYoS@qk}l9SWbR<5z{`t1|w9bBDm(_O=mvVd6ibGa}0!C*6C zch~y6ZJ3REcdOcpwz4~0l5K6Ow9m^H;{n;`#NFLE?+2W$te3M6dh7y;!=uXPZ0B^* zu7gE$p5?OBxVp5u`#PtGq*4;@I!-lwY4PX0Z6Y+G5_Q9aTe z+C(tfWFo&6!R&IbIQn*mK)h&OOI>{}z30G-?BWJpyt1ggJ5@f+H741&T|0~`d(O5` z(QJ_F9?Fxw-m6L@wZ@GwWV(T)w zA!3qk{gB&>aCYE0zPO^+f4kf9WMUPoK0AsUHF8@GYLZVo4xAr(taMF&T(rl)4piN1 zGJgr#3rl7QX4M!=d~M}HZ@KAU(rv|Cd{$9AO{YpbeijqJBTdIn$7pSsnt0fF4}E4` zwk;PqBaY2FpX3(VI~V2$Z5QuEcWX+069uAI51lrL76-jRhQf`D{O?F{Eq1K_9K(d{9g2IhUB_~ zs=w%bb=>AG*HUci1KPyxjb1RIe;eZ)XX4K?zxBk4ee$Vl%w5cfXu$0j=5wgO_E74T zJSJBYsB5m#|Fpz=yttNhixrJaWgQsl-l7CMW@iL*1IY}VU2++Q8p0gVne?nV%uo@W zxn!d9SaIFrw+@w7Y7SOS4htEJlb|^}95)0nYbT!kNY_5mhCVa1c7s;B<3d}Q+5etZ z@Ji1`pgVsKC9HI7jY}9er|&UD)A9@f+D^Y|+If@Rb9*~C3_5kRYlCNFA-m6PLLC^K zk!W~e)-kBTGLRP^CpfLGcDo*NvA4AQZXa59WL72w1__G3>y+1E4O zg~5e#D9q91s?)9VFjD;1N>HCO0kSAXuDcG)xvyw}VE5@771d;e=&A<0Ule9RNmD&V zQ~iRz)|r+rp-L+B6h&XzxoAe)kBoz^8Xd^(nT4I#5t^hIYd57UPoy4gV#RGBSWwcI zY)fn;P_3M=9Lw`6lPpq<`i9IkBg@4&j(aqvJgBsP_);vQCsSCx@9V&U*FV$g$xj�C0_fN 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

        I3@k~QG{nc_Cg9k9Qxp_(Xl^r33E{Be}&AtLb) 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 LmP+_0%W&} 0) {\n", - " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " if (!reloading) {\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " }\n", - "\n", - " function on_load() {\n", - " root._bokeh_is_loading--;\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", - " run_callbacks()\n", - " }\n", - " }\n", - " window._bokeh_on_load = on_load\n", - "\n", - " function on_error() {\n", - " console.error(\"failed to load \" + url);\n", - " }\n", - "\n", - " var skip = [];\n", - " if (window.requirejs) {\n", - " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", - " require([\"jspanel\"], function(jsPanel) {\n", - "\twindow.jsPanel = jsPanel\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-modal\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-tooltip\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-hint\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-layout\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-contextmenu\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"jspanel-dock\"], function() {\n", - "\ton_load()\n", - " })\n", - " require([\"gridstack\"], function(GridStack) {\n", - "\twindow.GridStack = GridStack\n", - "\ton_load()\n", - " })\n", - " require([\"notyf\"], function() {\n", - "\ton_load()\n", - " })\n", - " root._bokeh_is_loading = css_urls.length + 9;\n", - " } else {\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", - " }\n", - "\n", - " var existing_stylesheets = []\n", - " var links = document.getElementsByTagName('link')\n", - " for (var i = 0; i < links.length; i++) {\n", - " var link = links[i]\n", - " if (link.href != null) {\n", - "\texisting_stylesheets.push(link.href)\n", - " }\n", - " }\n", - " for (var i = 0; i < css_urls.length; i++) {\n", - " var url = css_urls[i];\n", - " if (existing_stylesheets.indexOf(url) !== -1) {\n", - "\ton_load()\n", - "\tcontinue;\n", - " }\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", - " for (var i = 0; i < urls.length; i++) {\n", - " skip.push(urls[i])\n", - " }\n", - " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", - " for (var i = 0; i < urls.length; i++) {\n", - " skip.push(urls[i])\n", - " }\n", - " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", - " for (var i = 0; i < urls.length; i++) {\n", - " skip.push(urls[i])\n", - " }\n", - " } var existing_scripts = []\n", - " var scripts = document.getElementsByTagName('script')\n", - " for (var i = 0; i < scripts.length; i++) {\n", - " var script = scripts[i]\n", - " if (script.src != null) {\n", - "\texisting_scripts.push(script.src)\n", - " }\n", - " }\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", - "\tif (!window.requirejs) {\n", - "\t on_load();\n", - "\t}\n", - "\tcontinue;\n", - " }\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.src = url;\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " for (var i = 0; i < js_modules.length; i++) {\n", - " var url = js_modules[i];\n", - " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", - "\tif (!window.requirejs) {\n", - "\t on_load();\n", - "\t}\n", - "\tcontinue;\n", - " }\n", - " var element = document.createElement('script');\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.src = url;\n", - " element.type = \"module\";\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.head.appendChild(element);\n", - " }\n", - " for (const name in js_exports) {\n", - " var url = js_exports[name];\n", - " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", - "\tif (!window.requirejs) {\n", - "\t on_load();\n", - "\t}\n", - "\tcontinue;\n", - " }\n", - " var element = document.createElement('script');\n", - " element.onerror = on_error;\n", - " element.async = false;\n", - " element.type = \"module\";\n", - " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " element.textContent = `\n", - " import ${name} from \"${url}\"\n", - " window.${name} = ${name}\n", - " window._bokeh_on_load()\n", - " `\n", - " document.head.appendChild(element);\n", - " }\n", - " if (!js_urls.length && !js_modules.length) {\n", - " on_load()\n", - " }\n", - " };\n", - "\n", - " function inject_raw_css(css) {\n", - " const element = document.createElement(\"style\");\n", - " element.appendChild(document.createTextNode(css));\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", - " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n", - " var js_modules = [];\n", - " var js_exports = {};\n", - " var css_urls = [];\n", - " var inline_js = [ function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - "function(Bokeh) {} // ensure no trailing comma for IE\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " if ((root.Bokeh !== undefined) || (force === true)) {\n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i].call(root, root.Bokeh);\n", - " }\n", - " // Cache old bokeh versions\n", - " if (Bokeh != undefined && !reloading) {\n", - "\tvar NewBokeh = root.Bokeh;\n", - "\tif (Bokeh.versions === undefined) {\n", - "\t Bokeh.versions = new Map();\n", - "\t}\n", - "\tif (NewBokeh.version !== Bokeh.version) {\n", - "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", - "\t}\n", - "\troot.Bokeh = Bokeh;\n", - " }} else if (Date.now() < root._bokeh_timeout) {\n", - " setTimeout(run_inline_js, 100);\n", - " } else if (!root._bokeh_failed_load) {\n", - " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", - " root._bokeh_failed_load = true;\n", - " }\n", - " root._bokeh_is_initializing = false\n", - " }\n", - "\n", - " function load_or_wait() {\n", - " // Implement a backoff loop that tries to ensure we do not load multiple\n", - " // versions of Bokeh and its dependencies at the same time.\n", - " // In recent versions we use the root._bokeh_is_initializing flag\n", - " // to determine whether there is an ongoing attempt to initialize\n", - " // bokeh, however for backward compatibility we also try to ensure\n", - " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", - " // before older versions are fully initialized.\n", - " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", - " root._bokeh_is_initializing = false;\n", - " root._bokeh_onload_callbacks = undefined;\n", - " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", - " load_or_wait();\n", - " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", - " setTimeout(load_or_wait, 100);\n", - " } else {\n", - " Bokeh = root.Bokeh;\n", - " bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", - " root._bokeh_is_initializing = true\n", - " root._bokeh_onload_callbacks = []\n", - " if (!reloading && (!bokeh_loaded || is_dev)) {\n", - "\troot.Bokeh = undefined;\n", - " }\n", - " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", - "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", - "\trun_inline_js();\n", - " });\n", - " }\n", - " }\n", - " // Give older versions of the autoload script a head-start to ensure\n", - " // they initialize before we start loading newer version.\n", - " setTimeout(load_or_wait, 100)\n", - "}(window));" - ], - "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n var reloading = false;\n var Bokeh = root.Bokeh;\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n Bokeh = root.Bokeh;\n bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n if (!reloading && (!bokeh_loaded || is_dev)) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/javascript": [ - "\n", - "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n", - " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n", - "}\n", - "\n", - "\n", - " function JupyterCommManager() {\n", - " }\n", - "\n", - " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n", - " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", - " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", - " comm_manager.register_target(comm_id, function(comm) {\n", - " comm.on_msg(msg_handler);\n", - " });\n", - " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", - " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n", - " comm.onMsg = msg_handler;\n", - " });\n", - " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", - " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n", - " var messages = comm.messages[Symbol.asyncIterator]();\n", - " function processIteratorResult(result) {\n", - " var message = result.value;\n", - " console.log(message)\n", - " var content = {data: message.data, comm_id};\n", - " var buffers = []\n", - " for (var buffer of message.buffers || []) {\n", - " buffers.push(new DataView(buffer))\n", - " }\n", - " var metadata = message.metadata || {};\n", - " var msg = {content, buffers, metadata}\n", - " msg_handler(msg);\n", - " return messages.next().then(processIteratorResult);\n", - " }\n", - " return messages.next().then(processIteratorResult);\n", - " })\n", - " }\n", - " }\n", - "\n", - " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n", - " if (comm_id in window.PyViz.comms) {\n", - " return window.PyViz.comms[comm_id];\n", - " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n", - " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n", - " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n", - " if (msg_handler) {\n", - " comm.on_msg(msg_handler);\n", - " }\n", - " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n", - " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n", - " comm.open();\n", - " if (msg_handler) {\n", - " comm.onMsg = msg_handler;\n", - " }\n", - " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n", - " var comm_promise = google.colab.kernel.comms.open(comm_id)\n", - " comm_promise.then((comm) => {\n", - " window.PyViz.comms[comm_id] = comm;\n", - " if (msg_handler) {\n", - " var messages = comm.messages[Symbol.asyncIterator]();\n", - " function processIteratorResult(result) {\n", - " var message = result.value;\n", - " var content = {data: message.data};\n", - " var metadata = message.metadata || {comm_id};\n", - " var msg = {content, metadata}\n", - " msg_handler(msg);\n", - " return messages.next().then(processIteratorResult);\n", - " }\n", - " return messages.next().then(processIteratorResult);\n", - " }\n", - " }) \n", - " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n", - " return comm_promise.then((comm) => {\n", - " comm.send(data, metadata, buffers, disposeOnDone);\n", - " });\n", - " };\n", - " var comm = {\n", - " send: sendClosure\n", - " };\n", - " }\n", - " window.PyViz.comms[comm_id] = comm;\n", - " return comm;\n", - " }\n", - " window.PyViz.comm_manager = new JupyterCommManager();\n", - " \n", - "\n", - "\n", - "var JS_MIME_TYPE = 'application/javascript';\n", - "var HTML_MIME_TYPE = 'text/html';\n", - "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n", - "var CLASS_NAME = 'output';\n", - "\n", - "/**\n", - " * Render data to the DOM node\n", - " */\n", - "function render(props, node) {\n", - " var div = document.createElement(\"div\");\n", - " var script = document.createElement(\"script\");\n", - " node.appendChild(div);\n", - " node.appendChild(script);\n", - "}\n", - "\n", - "/**\n", - " * Handle when a new output is added\n", - " */\n", - "function handle_add_output(event, handle) {\n", - " var output_area = handle.output_area;\n", - " var output = handle.output;\n", - " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n", - " return\n", - " }\n", - " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", - " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", - " if (id !== undefined) {\n", - " var nchildren = toinsert.length;\n", - " var html_node = toinsert[nchildren-1].children[0];\n", - " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var scripts = [];\n", - " var nodelist = html_node.querySelectorAll(\"script\");\n", - " for (var i in nodelist) {\n", - " if (nodelist.hasOwnProperty(i)) {\n", - " scripts.push(nodelist[i])\n", - " }\n", - " }\n", - "\n", - " scripts.forEach( function (oldScript) {\n", - " var newScript = document.createElement(\"script\");\n", - " var attrs = [];\n", - " var nodemap = oldScript.attributes;\n", - " for (var j in nodemap) {\n", - " if (nodemap.hasOwnProperty(j)) {\n", - " attrs.push(nodemap[j])\n", - " }\n", - " }\n", - " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n", - " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n", - " oldScript.parentNode.replaceChild(newScript, oldScript);\n", - " });\n", - " if (JS_MIME_TYPE in output.data) {\n", - " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n", - " }\n", - " output_area._hv_plot_id = id;\n", - " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n", - " window.PyViz.plot_index[id] = Bokeh.index[id];\n", - " } else {\n", - " window.PyViz.plot_index[id] = null;\n", - " }\n", - " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", - " var bk_div = document.createElement(\"div\");\n", - " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", - " var script_attrs = bk_div.children[0].attributes;\n", - " for (var i = 0; i < script_attrs.length; i++) {\n", - " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n", - " }\n", - " // store reference to server id on output_area\n", - " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", - " }\n", - "}\n", - "\n", - "/**\n", - " * Handle when an output is cleared or removed\n", - " */\n", - "function handle_clear_output(event, handle) {\n", - " var id = handle.cell.output_area._hv_plot_id;\n", - " var server_id = handle.cell.output_area._bokeh_server_id;\n", - " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n", - " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n", - " if (server_id !== null) {\n", - " comm.send({event_type: 'server_delete', 'id': server_id});\n", - " return;\n", - " } else if (comm !== null) {\n", - " comm.send({event_type: 'delete', 'id': id});\n", - " }\n", - " delete PyViz.plot_index[id];\n", - " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n", - " var doc = window.Bokeh.index[id].model.document\n", - " doc.clear();\n", - " const i = window.Bokeh.documents.indexOf(doc);\n", - " if (i > -1) {\n", - " window.Bokeh.documents.splice(i, 1);\n", - " }\n", - " }\n", - "}\n", - "\n", - "/**\n", - " * Handle kernel restart event\n", - " */\n", - "function handle_kernel_cleanup(event, handle) {\n", - " delete PyViz.comms[\"hv-extension-comm\"];\n", - " window.PyViz.plot_index = {}\n", - "}\n", - "\n", - "/**\n", - " * Handle update_display_data messages\n", - " */\n", - "function handle_update_output(event, handle) {\n", - " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n", - " handle_add_output(event, handle)\n", - "}\n", - "\n", - "function register_renderer(events, OutputArea) {\n", - " function append_mime(data, metadata, element) {\n", - " // create a DOM node to render to\n", - " var toinsert = this.create_output_subarea(\n", - " metadata,\n", - " CLASS_NAME,\n", - " EXEC_MIME_TYPE\n", - " );\n", - " this.keyboard_manager.register_events(toinsert);\n", - " // Render to node\n", - " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", - " render(props, toinsert[0]);\n", - " element.append(toinsert);\n", - " return toinsert\n", - " }\n", - "\n", - " events.on('output_added.OutputArea', handle_add_output);\n", - " events.on('output_updated.OutputArea', handle_update_output);\n", - " events.on('clear_output.CodeCell', handle_clear_output);\n", - " events.on('delete.Cell', handle_clear_output);\n", - " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n", - "\n", - " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", - " safe: true,\n", - " index: 0\n", - " });\n", - "}\n", - "\n", - "if (window.Jupyter !== undefined) {\n", - " try {\n", - " var events = require('base/js/events');\n", - " var OutputArea = require('notebook/js/outputarea').OutputArea;\n", - " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", - " register_renderer(events, OutputArea);\n", - " }\n", - " } catch(err) {\n", - " }\n", - "}\n" - ], - "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "

        \n", - "\n", - "\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "\n", - "\n", - "
        \n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import icepyx as ipx\n", - "from datetime import datetime, timedelta\n", - "import time\n", - "import os\n", - "import re\n", - "import glob\n", - "import pandas as pd\n", - "import numpy as np\n", - "import logging\n", - "import matplotlib.pyplot as plt\n", - "\n", - "from config import workspace_path, atl03_path,\\\n", - " other_data_path ,shoreline_data ,gebco_path ,\\\n", - " horizontal_res ,vertical_res ,subsurface_thresh ,\\\n", - " ignore_subsurface_height_thres ,output_path \n", - "\n", - "\n", - " \n", - "from kd_utils.data_processing import load_data, \\\n", - " extract_file_params, \\\n", - " Extract_sea_photons, \\\n", - " filter_photon_dataset_by_hull_area, \\\n", - " plot_convex_hulls\n", - " \n", - "from kd_utils.sea_photons_analysis import process_sea_photon_binning,\\\n", - " get_sea_surface_height\n", - " \n", - " \n", - "from kd_utils.bathy_processing import process_subsurface_photon_filtering\n", - "\n", - "from kd_utils.visualization import plot_photon_height, \\\n", - " plot_kd_photons, \\\n", - " plot_filtered_seafloor_photons\n", - " \n", - "from kd_utils.Kd_analysis import process_kd_calculation\n", - "\n", - "from kd_utils.interpolation import geoid_correction, \\\n", - " refraction_correction, \\\n", - " interpolate_labels, \\\n", - " apply_interpolation\n", - "\n", - "\n", - "\n", - "pd.set_option('display.max_columns', None)\n", - "# pd.set_option('display.max_rows', None)\n", - "\n", - "import re\n", - "import os\n", - "import io\n", - "import time\n", - "import math\n", - "import h5py\n", - "import logging\n", - "import netCDF4\n", - "import numpy as np\n", - "import geopandas as gpd\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "3ae97e48-47cb-461e-ac38-1f4ca6df96ec", - "metadata": {}, - "outputs": [], - "source": [ - "def buoy_bound_box(lat,lon,buffer_km):\n", - " # define a buffer distance around the buoy to search for icesat-2 data\n", - " lat_buff = buffer_km/111 # convert buffer distance to frac of 1 deg lat\n", - " lon_buff = buffer_km/(111*np.cos(lat*np.pi/180)) # convert buffer distance to frac of 1 deg lon\n", - " # define bounding box around the buoy (WSEN)\n", - " # example: bbox = [-108.3, 39.2, -107.8, 38.8]\n", - " # bbox = [lon-lon_buff,lat+lat_buff,lon+lon_buff,lat-lat_buff]\n", - " # region = sliderule.toregion(bbox)\n", - " minx = lon - lon_buff\n", - " miny = lat - lat_buff\n", - " maxx = lon + lon_buff\n", - " maxy = lat + lat_buff\n", - "\n", - " # polygon vertices: Given as longitude, latitude coordinate pairs of decimal degrees with the last entry a repeat of the first.\n", - " poly = [(minx, miny), (maxx, miny), (maxx, maxy), (minx, maxy), (minx, miny)]\n", - "\n", - " return poly\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1d72dbef-f954-499f-be76-c1de3233b325", - "metadata": {}, - "outputs": [], - "source": [ - "# load time, lat and lon\n", - "df = pd.read_csv(\"data/Dataset_Kd_Paper_2018.csv\")\n", - "# convert matlab time to datetime objects\n", - "df[\"dt_float\"] = pd.to_datetime(df[\"dt_float\"]-719529,unit='d',utc=True).round('s')\n", - "# remove all rows from before icesat2 launched\n", - "df = df[df[\"dt_float\"]>datetime.fromisoformat('2018-10-01T00:00:00Z')]\n", - "df.reset_index(drop=True, inplace=True)\n", - "# df" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "e84044cf-6251-45ba-b148-b8401309b68e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total number of data order requests is 1 for 1 granules.\n", - "Data request 1 of 1 is submitting to NSIDC\n", - "order ID: 5000005862267\n", - "Initial status of your order request at NSIDC is: processing\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order status is still processing at NSIDC. Please continue waiting... this may take a few moments.\n", - "Your order is: complete\n", - "Beginning download of zipped output...\n", - "Data request 5000005862267 of 1 order(s) is downloaded.\n", - "Download complete\n", - "success\n" - ] - } - ], - "source": [ - "# these values can be adjusted to broaden/narrow the fit btwn icesat-2 and the ground truth\n", - "search_hrs = 12\n", - "search_km = 4\n", - "jj = 3839\n", - "# define a search region around the buoy \n", - "lat = df['lat_float'][jj]\n", - "lon = df['lon_float'][jj]\n", - "\n", - "spatial_extent = buoy_bound_box(lat,lon,search_km)\n", - "t_start = (df['dt_float'][jj]-timedelta(hours=search_hrs))\n", - "t_end = (df['dt_float'][jj]+timedelta(hours=search_hrs))\n", - "short_name = 'ATL03'\n", - "date_range = [t_start,t_end]\n", - "region = ipx.Query(short_name, spatial_extent, date_range)\n", - "try:\n", - " region.download_granules('data/')\n", - " print('success')\n", - "except:\n", - " print('')\n", - "# if data exists and is downloaded - note in the argo csv and then calculate kd using chao's code\n", - "df[\"check_sum\"] = True\n", - "\n", - "\n", - "# code from chao (in Main.ipynb)\n", - "atl03_file_inloop = 'processed_'+ str(region.avail_granules(ids=True)[0])[2:-2]\n", - "ATL03_h5_file_path = os.path.join(workspace_path, atl03_path, atl03_file_inloop)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "c3821bf2-6fe8-4120-8852-d7e82fa88606", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['gt1l', 'gt1r', 'gt2l', 'gt2r', 'gt3l', 'gt3r']" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "IS2_atl03_mds, IS2_atl03_attrs, IS2_atl03_beams = load_data(ATL03_h5_file_path)\n", - "IS2_atl03_beams" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "6ea8b280-7b7e-4d0b-a8ae-7f41c7117510", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "gt1l\n", - "gt1r\n", - "gt2l\n", - "gt2r\n", - "gt3l\n", - "gt3r\n" - ] - } - ], - "source": [ - "FILENAME = ATL03_h5_file_path\n", - "# Open the HDF5 file for reading\n", - "if isinstance(FILENAME, io.IOBase):\n", - " fileID = h5py.File(FILENAME, 'r')\n", - "else:\n", - " fileID = h5py.File(os.path.expanduser(FILENAME), 'r')\n", - "\n", - "# Output HDF5 file information\n", - "logging.info(fileID.filename)\n", - "logging.info(list(fileID.keys()))\n", - "\n", - "# allocate python dictionaries for ICESat-2 ATL03 variables and attributes\n", - "IS2_atl03_mds = {}\n", - "IS2_atl03_attrs = {}\n", - "\n", - "# read each input beam within the file\n", - "IS2_atl03_beams = []\n", - "for gtx in [k for k in fileID.keys() if bool(re.match(r'gt\\d[lr]',k))]:\n", - " print(gtx)\n", - " # check if subsetted beam contains data\n", - " # check in both the geolocation and heights groups\n", - " try:\n", - " fileID[gtx]['geolocation']['segment_id']\n", - " fileID[gtx]['heights']['delta_time']\n", - " except KeyError:\n", - " pass\n", - " else:\n", - " IS2_atl03_beams.append(gtx)\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "c5ce8cd9-2fe9-4552-a578-3a5d75744eb6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fileID['gt3r'].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "fa0da9cf-febb-4759-8a9f-425fe7eed7d1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fileID.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2748e518-37b6-4b65-ad2f-dd997ab0e58f", - "metadata": {}, - "outputs": [], - "source": [ - "# # for each included beam\n", - "# for gtx in IS2_atl03_beams:\n", - "# # get each HDF5 variable\n", - "# IS2_atl03_mds[gtx] = {}\n", - "# IS2_atl03_mds[gtx]['heights'] = {}\n", - "# IS2_atl03_mds[gtx]['geolocation'] = {}\n", - "# IS2_atl03_mds[gtx]['bckgrd_atlas'] = {}\n", - "# IS2_atl03_mds[gtx]['geophys_corr'] = {}\n", - "# # ICESat-2 Measurement Group\n", - "# for key,val in fileID[gtx]['heights'].items():\n", - "# IS2_atl03_mds[gtx]['heights'][key] = val[:]\n", - "# # ICESat-2 Geolocation Group\n", - "# for key,val in fileID[gtx]['geolocation'].items():\n", - "# IS2_atl03_mds[gtx]['geolocation'][key] = val[:]\n", - "# # ICESat-2 Background Photon Rate Group\n", - "# for key,val in fileID[gtx]['bckgrd_atlas'].items():\n", - "# IS2_atl03_mds[gtx]['bckgrd_atlas'][key] = val[:]\n", - "# # ICESat-2 Geophysical Corrections Group: Values for tides (ocean,\n", - "# # solid earth, pole, load, and equilibrium), inverted barometer (IB)\n", - "# # effects, and range corrections for tropospheric delays\n", - "# for key,val in fileID[gtx]['geophys_corr'].items():\n", - "# IS2_atl03_mds[gtx]['geophys_corr'][key] = val[:]\n", - "\n", - "# # Getting attributes of included variables\n", - "# if ATTRIBUTES:\n", - "# # Getting attributes of IS2_atl03_mds beam variables\n", - "# IS2_atl03_attrs[gtx] = {}\n", - "# IS2_atl03_attrs[gtx]['heights'] = {}\n", - "# IS2_atl03_attrs[gtx]['geolocation'] = {}\n", - "# IS2_atl03_attrs[gtx]['bckgrd_atlas'] = {}\n", - "# IS2_atl03_attrs[gtx]['geophys_corr'] = {}\n", - "# # Global Group Attributes\n", - "# for att_name,att_val in fileID[gtx].attrs.items():\n", - "# IS2_atl03_attrs[gtx][att_name] = att_val\n", - "# # ICESat-2 Measurement Group\n", - "# for key,val in fileID[gtx]['heights'].items():\n", - "# IS2_atl03_attrs[gtx]['heights'][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs[gtx]['heights'][key][att_name]=att_val\n", - "# # ICESat-2 Geolocation Group\n", - "# for key,val in fileID[gtx]['geolocation'].items():\n", - "# IS2_atl03_attrs[gtx]['geolocation'][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs[gtx]['geolocation'][key][att_name]=att_val\n", - "# # ICESat-2 Background Photon Rate Group\n", - "# for key,val in fileID[gtx]['bckgrd_atlas'].items():\n", - "# IS2_atl03_attrs[gtx]['bckgrd_atlas'][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs[gtx]['bckgrd_atlas'][key][att_name]=att_val\n", - "# # ICESat-2 Geophysical Corrections Group\n", - "# for key,val in fileID[gtx]['geophys_corr'].items():\n", - "# IS2_atl03_attrs[gtx]['geophys_corr'][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs[gtx]['geophys_corr'][key][att_name]=att_val\n", - "\n", - "# # ICESat-2 spacecraft orientation at time\n", - "# IS2_atl03_mds['orbit_info'] = {}\n", - "# IS2_atl03_attrs['orbit_info'] = {}\n", - "# for key,val in fileID['orbit_info'].items():\n", - "# IS2_atl03_mds['orbit_info'][key] = val[:]\n", - "# # Getting attributes of group and included variables\n", - "# if ATTRIBUTES:\n", - "# # Global Group Attributes\n", - "# for att_name,att_val in fileID['orbit_info'].attrs.items():\n", - "# IS2_atl03_attrs['orbit_info'][att_name] = att_val\n", - "# # Variable Attributes\n", - "# IS2_atl03_attrs['orbit_info'][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs['orbit_info'][key][att_name] = att_val\n", - "\n", - "# # information ancillary to the data product\n", - "# # number of GPS seconds between the GPS epoch (1980-01-06T00:00:00Z UTC)\n", - "# # and ATLAS Standard Data Product (SDP) epoch (2018-01-01T00:00:00Z UTC)\n", - "# # Add this value to delta time parameters to compute full gps_seconds\n", - "# # could alternatively use the Julian day of the ATLAS SDP epoch: 2458119.5\n", - "# # and add leap seconds since 2018-01-01T00:00:00Z UTC (ATLAS SDP epoch)\n", - "# IS2_atl03_mds['ancillary_data'] = {}\n", - "# IS2_atl03_attrs['ancillary_data'] = {}\n", - "# ancillary_keys = ['atlas_sdp_gps_epoch','data_end_utc','data_start_utc',\n", - "# 'end_cycle','end_geoseg','end_gpssow','end_gpsweek','end_orbit',\n", - "# 'end_region','end_rgt','granule_end_utc','granule_start_utc','release',\n", - "# 'start_cycle','start_geoseg','start_gpssow','start_gpsweek',\n", - "# 'start_orbit','start_region','start_rgt','version']\n", - "# for key in ancillary_keys:\n", - "# # get each HDF5 variable\n", - "# IS2_atl03_mds['ancillary_data'][key] = fileID['ancillary_data'][key][:]\n", - "# # Getting attributes of group and included variables\n", - "# if ATTRIBUTES:\n", - "# # Variable Attributes\n", - "# IS2_atl03_attrs['ancillary_data'][key] = {}\n", - "# for att_name,att_val in fileID['ancillary_data'][key].attrs.items():\n", - "# IS2_atl03_attrs['ancillary_data'][key][att_name] = att_val\n", - "\n", - "# # transmit-echo-path (tep) parameters\n", - "# IS2_atl03_mds['ancillary_data']['tep'] = {}\n", - "# IS2_atl03_attrs['ancillary_data']['tep'] = {}\n", - "# for key,val in fileID['ancillary_data']['tep'].items():\n", - "# # get each HDF5 variable\n", - "# IS2_atl03_mds['ancillary_data']['tep'][key] = val[:]\n", - "# # Getting attributes of group and included variables\n", - "# if ATTRIBUTES:\n", - "# # Variable Attributes\n", - "# IS2_atl03_attrs['ancillary_data']['tep'][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs['ancillary_data']['tep'][key][att_name] = att_val\n", - "\n", - "# # channel dead time and first photon bias derived from ATLAS calibration\n", - "# cal1,cal2 = ('ancillary_data','calibrations')\n", - "# for var in ['dead_time','first_photon_bias']:\n", - "# IS2_atl03_mds[cal1][var] = {}\n", - "# IS2_atl03_attrs[cal1][var] = {}\n", - "# for key,val in fileID[cal1][cal2][var].items():\n", - "# # get each HDF5 variable\n", - "# if isinstance(val, h5py.Dataset):\n", - "# IS2_atl03_mds[cal1][var][key] = val[:]\n", - "# elif isinstance(val, h5py.Group):\n", - "# IS2_atl03_mds[cal1][var][key] = {}\n", - "# for k,v in val.items():\n", - "# IS2_atl03_mds[cal1][var][key][k] = v[:]\n", - "# # Getting attributes of group and included variables\n", - "# if ATTRIBUTES:\n", - "# # Variable Attributes\n", - "# IS2_atl03_attrs[cal1][var][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs[cal1][var][key][att_name] = att_val\n", - "# if isinstance(val, h5py.Group):\n", - "# for k,v in val.items():\n", - "# IS2_atl03_attrs[cal1][var][key][k] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs[cal1][var][key][k][att_name]=att_val\n", - "\n", - "# # get ATLAS impulse response variables for the transmitter echo path (TEP)\n", - "# tep1,tep2 = ('atlas_impulse_response','tep_histogram')\n", - "# IS2_atl03_mds[tep1] = {}\n", - "# IS2_atl03_attrs[tep1] = {}\n", - "# for pce in ['pce1_spot1','pce2_spot3']:\n", - "# IS2_atl03_mds[tep1][pce] = {tep2:{}}\n", - "# IS2_atl03_attrs[tep1][pce] = {tep2:{}}\n", - "# # for each TEP variable\n", - "# for key,val in fileID[tep1][pce][tep2].items():\n", - "# IS2_atl03_mds[tep1][pce][tep2][key] = val[:]\n", - "# # Getting attributes of included variables\n", - "# if ATTRIBUTES:\n", - "# # Global Group Attributes\n", - "# for att_name,att_val in fileID[tep1][pce][tep2].attrs.items():\n", - "# IS2_atl03_attrs[tep1][pce][tep2][att_name] = att_val\n", - "# # Variable Attributes\n", - "# IS2_atl03_attrs[tep1][pce][tep2][key] = {}\n", - "# for att_name,att_val in val.attrs.items():\n", - "# IS2_atl03_attrs[tep1][pce][tep2][key][att_name] = att_val\n", - "\n", - "# # Global File Attributes\n", - "# if ATTRIBUTES:\n", - "# for att_name,att_val in fileID.attrs.items():\n", - "# IS2_atl03_attrs[att_name] = att_val\n", - "\n", - "# # Closing the HDF5 file\n", - "# fileID.close()\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "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.11.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}

      q+_ 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 z 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