{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Conjunctions (TOLEOS)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:46:58.739550Z", "iopub.status.busy": "2025-06-21T21:46:58.739139Z", "iopub.status.idle": "2025-06-21T21:46:58.744791Z", "shell.execute_reply": "2025-06-21T21:46:58.744240Z" } }, "outputs": [], "source": [ "SERVER_URL = \"https://vires.services/ows\"" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:46:58.746812Z", "iopub.status.busy": "2025-06-21T21:46:58.746417Z", "iopub.status.idle": "2025-06-21T21:46:59.556834Z", "shell.execute_reply": "2025-06-21T21:46:59.556234Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python implementation: CPython\n", "Python version : 3.11.6\n", "IPython version : 8.18.0\n", "\n", "viresclient: 0.12.3\n", "pandas : 2.1.3\n", "xarray : 2023.12.0\n", "matplotlib : 3.8.2\n", "cartopy : 0.22.0\n", "\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -i -v -p viresclient,pandas,xarray,matplotlib,cartopy" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:46:59.559282Z", "iopub.status.busy": "2025-06-21T21:46:59.558786Z", "iopub.status.idle": "2025-06-21T21:46:59.747351Z", "shell.execute_reply": "2025-06-21T21:46:59.746690Z" } }, "outputs": [], "source": [ "import datetime as dt\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from viresclient import SwarmRequest" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Product information" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [`MM_OPER_CON_EPH_2_`](https://swarmhandbook.earth.esa.int/catalogue/MM_CON_EPH_2_) product contains conjunction information between Swarm (A, B, C), CHAMP, GOCE, GRACE (1, 2), and GRACE-FO (1, 2).\n", "\n", "The product is implemented in VirES as two collections, each available as a single flat time series.\n", "\n", "`MM_OPER_CON_EPH_2_:crossover` contains the list of times where satellite ground-tracks overlap within a ~7 hour window.\n", "\n", "`MM_OPER_CON_EPH_2_:plane_alignment` contains much rarer events, where the planes of different spacecraft are aligned" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:46:59.749767Z", "iopub.status.busy": "2025-06-21T21:46:59.749456Z", "iopub.status.idle": "2025-06-21T21:47:00.215167Z", "shell.execute_reply": "2025-06-21T21:47:00.214591Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "MM_OPER_CON_EPH_2_:crossover:\n", "['time_1', 'time_2', 'time_difference', 'satellite_1', 'satellite_2', 'latitude', 'longitude', 'altitude_1', 'altitude_2', 'magnetic_latitude', 'magnetic_longitude', 'local_solar_time_1', 'local_solar_time_2']\n", "\n", "MM_OPER_CON_EPH_2_:plane_alignment:\n", "['time', 'altitude_1', 'altitude_2', 'ltan_1', 'ltan_2', 'ltan_rate_1', 'ltan_rate_2', 'satellite_1', 'satellite_2']\n", "\n" ] } ], "source": [ "request = SwarmRequest(SERVER_URL)\n", "for collection in (\"MM_OPER_CON_EPH_2_:crossover\", \"MM_OPER_CON_EPH_2_:plane_alignment\"):\n", " print(f\"{collection}:\\n{request.available_measurements(collection)}\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fetching data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Crossovers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's fetch all the available conjunctions for a given day.\n", "\n", "Note that the `start_time` and `end_time` specified are used for a full interval query over both `time_1` and `time_2` given in the outputs." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:47:00.217412Z", "iopub.status.busy": "2025-06-21T21:47:00.217080Z", "iopub.status.idle": "2025-06-21T21:47:04.262365Z", "shell.execute_reply": "2025-06-21T21:47:04.261783Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0ee08642067a414da22f58ad3fee3935", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | [ Elapsed: 00:00, Remaining: ? ] [1/1] " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "55d435ea363742148eb349de5943471b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Downloading: 0%| | [ Elapsed: 00:00, Remaining: ? ] (0.525MB)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Spacecraft</th>\n", " <th>satellite_2</th>\n", " <th>satellite_1</th>\n", " <th>local_solar_time_2</th>\n", " <th>latitude</th>\n", " <th>longitude</th>\n", " <th>altitude_1</th>\n", " <th>time_difference</th>\n", " <th>magnetic_latitude</th>\n", " <th>magnetic_longitude</th>\n", " <th>time_2</th>\n", " <th>altitude_2</th>\n", " <th>local_solar_time_1</th>\n", " </tr>\n", " <tr>\n", " <th>time_1</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2019-12-31 16:45:34.507031296</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>GF1</td>\n", " <td>5.517517</td>\n", " <td>87.321728</td>\n", " <td>-168.631028</td>\n", " <td>508386.037694</td>\n", " <td>26266.358365</td>\n", " <td>79.949318</td>\n", " <td>-164.456295</td>\n", " <td>2020-01-01 00:03:20.865398528</td>\n", " <td>445802.184339</td>\n", " <td>12.813727</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 16:45:34.666273280</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>GF1</td>\n", " <td>5.523574</td>\n", " <td>87.330964</td>\n", " <td>-168.540829</td>\n", " <td>508384.174138</td>\n", " <td>26275.311505</td>\n", " <td>79.956628</td>\n", " <td>-164.497178</td>\n", " <td>2020-01-01 00:03:29.977781248</td>\n", " <td>445817.275119</td>\n", " <td>12.822272</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 16:45:58.498234368</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>GF2</td>\n", " <td>5.518642</td>\n", " <td>87.322763</td>\n", " <td>-168.714116</td>\n", " <td>508285.501449</td>\n", " <td>26242.302943</td>\n", " <td>79.946058</td>\n", " <td>-164.469981</td>\n", " <td>2020-01-01 00:03:20.801171712</td>\n", " <td>445802.184832</td>\n", " <td>12.808170</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 16:45:58.642820352</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>GF2</td>\n", " <td>5.523248</td>\n", " <td>87.331274</td>\n", " <td>-168.645621</td>\n", " <td>508283.850034</td>\n", " <td>26251.259161</td>\n", " <td>79.952162</td>\n", " <td>-164.509020</td>\n", " <td>2020-01-01 00:03:29.901976576</td>\n", " <td>445817.254541</td>\n", " <td>12.815265</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 17:32:44.852499968</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>GF1</td>\n", " <td>17.518367</td>\n", " <td>-87.324172</td>\n", " <td>-0.411375</td>\n", " <td>522002.918063</td>\n", " <td>26235.665210</td>\n", " <td>-79.455668</td>\n", " <td>14.152966</td>\n", " <td>2020-01-01 00:50:00.517710848</td>\n", " <td>464173.845073</td>\n", " <td>0.806052</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:42:29.863429888</th>\n", " <td>-</td>\n", " <td>GF1</td>\n", " <td>SWB</td>\n", " <td>2.264293</td>\n", " <td>81.399341</td>\n", " <td>38.339964</td>\n", " <td>511607.216872</td>\n", " <td>7630.688001</td>\n", " <td>75.124965</td>\n", " <td>146.831766</td>\n", " <td>2020-01-02 01:49:40.551429632</td>\n", " <td>508318.284479</td>\n", " <td>4.383929</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:43:26.628039168</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>SWB</td>\n", " <td>2.561690</td>\n", " <td>77.902092</td>\n", " <td>42.564400</td>\n", " <td>511293.312109</td>\n", " <td>15391.897473</td>\n", " <td>71.743591</td>\n", " <td>142.500846</td>\n", " <td>2020-01-02 03:59:58.525515520</td>\n", " <td>445127.722214</td>\n", " <td>6.837217</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:43:39.701632768</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>SWB</td>\n", " <td>2.607960</td>\n", " <td>77.089844</td>\n", " <td>43.203973</td>\n", " <td>511208.234498</td>\n", " <td>15357.778578</td>\n", " <td>70.954621</td>\n", " <td>141.708566</td>\n", " <td>2020-01-02 03:59:37.480210944</td>\n", " <td>445042.331540</td>\n", " <td>6.874009</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:59:39.406749952</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>GF2</td>\n", " <td>3.974184</td>\n", " <td>21.148917</td>\n", " <td>59.698567</td>\n", " <td>507422.300094</td>\n", " <td>7926.374931</td>\n", " <td>14.544932</td>\n", " <td>134.574062</td>\n", " <td>2020-01-02 02:11:45.781679616</td>\n", " <td>435473.994296</td>\n", " <td>6.175955</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:59:59.915086080</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>GF1</td>\n", " <td>3.977859</td>\n", " <td>23.980608</td>\n", " <td>59.668240</td>\n", " <td>507614.183522</td>\n", " <td>7949.709113</td>\n", " <td>17.345313</td>\n", " <td>134.913629</td>\n", " <td>2020-01-02 02:12:29.624203264</td>\n", " <td>435703.475318</td>\n", " <td>6.186112</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>5408 rows × 13 columns</p>\n", "</div>" ], "text/plain": [ " Spacecraft satellite_2 satellite_1 \\\n", "time_1 \n", "2019-12-31 16:45:34.507031296 - SWC GF1 \n", "2019-12-31 16:45:34.666273280 - SWA GF1 \n", "2019-12-31 16:45:58.498234368 - SWC GF2 \n", "2019-12-31 16:45:58.642820352 - SWA GF2 \n", "2019-12-31 17:32:44.852499968 - SWC GF1 \n", "... ... ... ... \n", "2020-01-01 23:42:29.863429888 - GF1 SWB \n", "2020-01-01 23:43:26.628039168 - SWA SWB \n", "2020-01-01 23:43:39.701632768 - SWC SWB \n", "2020-01-01 23:59:39.406749952 - SWC GF2 \n", "2020-01-01 23:59:59.915086080 - SWC GF1 \n", "\n", " local_solar_time_2 latitude longitude \\\n", "time_1 \n", "2019-12-31 16:45:34.507031296 5.517517 87.321728 -168.631028 \n", "2019-12-31 16:45:34.666273280 5.523574 87.330964 -168.540829 \n", "2019-12-31 16:45:58.498234368 5.518642 87.322763 -168.714116 \n", "2019-12-31 16:45:58.642820352 5.523248 87.331274 -168.645621 \n", "2019-12-31 17:32:44.852499968 17.518367 -87.324172 -0.411375 \n", "... ... ... ... \n", "2020-01-01 23:42:29.863429888 2.264293 81.399341 38.339964 \n", "2020-01-01 23:43:26.628039168 2.561690 77.902092 42.564400 \n", "2020-01-01 23:43:39.701632768 2.607960 77.089844 43.203973 \n", "2020-01-01 23:59:39.406749952 3.974184 21.148917 59.698567 \n", "2020-01-01 23:59:59.915086080 3.977859 23.980608 59.668240 \n", "\n", " altitude_1 time_difference \\\n", "time_1 \n", "2019-12-31 16:45:34.507031296 508386.037694 26266.358365 \n", "2019-12-31 16:45:34.666273280 508384.174138 26275.311505 \n", "2019-12-31 16:45:58.498234368 508285.501449 26242.302943 \n", "2019-12-31 16:45:58.642820352 508283.850034 26251.259161 \n", "2019-12-31 17:32:44.852499968 522002.918063 26235.665210 \n", "... ... ... \n", "2020-01-01 23:42:29.863429888 511607.216872 7630.688001 \n", "2020-01-01 23:43:26.628039168 511293.312109 15391.897473 \n", "2020-01-01 23:43:39.701632768 511208.234498 15357.778578 \n", "2020-01-01 23:59:39.406749952 507422.300094 7926.374931 \n", "2020-01-01 23:59:59.915086080 507614.183522 7949.709113 \n", "\n", " magnetic_latitude magnetic_longitude \\\n", "time_1 \n", "2019-12-31 16:45:34.507031296 79.949318 -164.456295 \n", "2019-12-31 16:45:34.666273280 79.956628 -164.497178 \n", "2019-12-31 16:45:58.498234368 79.946058 -164.469981 \n", "2019-12-31 16:45:58.642820352 79.952162 -164.509020 \n", "2019-12-31 17:32:44.852499968 -79.455668 14.152966 \n", "... ... ... \n", "2020-01-01 23:42:29.863429888 75.124965 146.831766 \n", "2020-01-01 23:43:26.628039168 71.743591 142.500846 \n", "2020-01-01 23:43:39.701632768 70.954621 141.708566 \n", "2020-01-01 23:59:39.406749952 14.544932 134.574062 \n", "2020-01-01 23:59:59.915086080 17.345313 134.913629 \n", "\n", " time_2 altitude_2 \\\n", "time_1 \n", "2019-12-31 16:45:34.507031296 2020-01-01 00:03:20.865398528 445802.184339 \n", "2019-12-31 16:45:34.666273280 2020-01-01 00:03:29.977781248 445817.275119 \n", "2019-12-31 16:45:58.498234368 2020-01-01 00:03:20.801171712 445802.184832 \n", "2019-12-31 16:45:58.642820352 2020-01-01 00:03:29.901976576 445817.254541 \n", "2019-12-31 17:32:44.852499968 2020-01-01 00:50:00.517710848 464173.845073 \n", "... ... ... \n", "2020-01-01 23:42:29.863429888 2020-01-02 01:49:40.551429632 508318.284479 \n", "2020-01-01 23:43:26.628039168 2020-01-02 03:59:58.525515520 445127.722214 \n", "2020-01-01 23:43:39.701632768 2020-01-02 03:59:37.480210944 445042.331540 \n", "2020-01-01 23:59:39.406749952 2020-01-02 02:11:45.781679616 435473.994296 \n", "2020-01-01 23:59:59.915086080 2020-01-02 02:12:29.624203264 435703.475318 \n", "\n", " local_solar_time_1 \n", "time_1 \n", "2019-12-31 16:45:34.507031296 12.813727 \n", "2019-12-31 16:45:34.666273280 12.822272 \n", "2019-12-31 16:45:58.498234368 12.808170 \n", "2019-12-31 16:45:58.642820352 12.815265 \n", "2019-12-31 17:32:44.852499968 0.806052 \n", "... ... \n", "2020-01-01 23:42:29.863429888 4.383929 \n", "2020-01-01 23:43:26.628039168 6.837217 \n", "2020-01-01 23:43:39.701632768 6.874009 \n", "2020-01-01 23:59:39.406749952 6.175955 \n", "2020-01-01 23:59:59.915086080 6.186112 \n", "\n", "[5408 rows x 13 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "request = SwarmRequest(SERVER_URL)\n", "request.set_collection(\"MM_OPER_CON_EPH_2_:crossover\")\n", "request.set_products(\n", " request.available_measurements(\"MM_OPER_CON_EPH_2_:crossover\")\n", ")\n", "data = request.get_between(\n", " dt.datetime(2020, 1, 1),\n", " dt.datetime(2020, 1, 2),\n", ")\n", "df = data.as_dataframe()\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pairs of conjunctioning spacecraft are defined with short designations in the `satellite_1` and `satellite_2` variables:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:47:04.264233Z", "iopub.status.busy": "2025-06-21T21:47:04.264056Z", "iopub.status.idle": "2025-06-21T21:47:04.268510Z", "shell.execute_reply": "2025-06-21T21:47:04.268027Z" } }, "outputs": [ { "data": { "text/plain": [ "array(['GF1', 'GF2', 'SWB', 'SWC', 'SWA'], dtype=object)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"satellite_1\"].unique()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:47:04.270777Z", "iopub.status.busy": "2025-06-21T21:47:04.270465Z", "iopub.status.idle": "2025-06-21T21:47:04.275193Z", "shell.execute_reply": "2025-06-21T21:47:04.274682Z" } }, "outputs": [ { "data": { "text/plain": [ "array(['SWC', 'SWA', 'SWB', 'GF2', 'GF1'], dtype=object)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"satellite_2\"].unique()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each conjunction has a start and end time defined with the `time_1` and `time_2` variables:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:47:04.277201Z", "iopub.status.busy": "2025-06-21T21:47:04.276909Z", "iopub.status.idle": "2025-06-21T21:47:04.284434Z", "shell.execute_reply": "2025-06-21T21:47:04.283870Z" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>time_2</th>\n", " <th>satellite_1</th>\n", " <th>satellite_2</th>\n", " </tr>\n", " <tr>\n", " <th>time_1</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2019-12-31 16:45:34.507031296</th>\n", " <td>2020-01-01 00:03:20.865398528</td>\n", " <td>GF1</td>\n", " <td>SWC</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 16:45:34.666273280</th>\n", " <td>2020-01-01 00:03:29.977781248</td>\n", " <td>GF1</td>\n", " <td>SWA</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 16:45:58.498234368</th>\n", " <td>2020-01-01 00:03:20.801171712</td>\n", " <td>GF2</td>\n", " <td>SWC</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 16:45:58.642820352</th>\n", " <td>2020-01-01 00:03:29.901976576</td>\n", " <td>GF2</td>\n", " <td>SWA</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 17:32:44.852499968</th>\n", " <td>2020-01-01 00:50:00.517710848</td>\n", " <td>GF1</td>\n", " <td>SWC</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " time_2 satellite_1 \\\n", "time_1 \n", "2019-12-31 16:45:34.507031296 2020-01-01 00:03:20.865398528 GF1 \n", "2019-12-31 16:45:34.666273280 2020-01-01 00:03:29.977781248 GF1 \n", "2019-12-31 16:45:58.498234368 2020-01-01 00:03:20.801171712 GF2 \n", "2019-12-31 16:45:58.642820352 2020-01-01 00:03:29.901976576 GF2 \n", "2019-12-31 17:32:44.852499968 2020-01-01 00:50:00.517710848 GF1 \n", "\n", " satellite_2 \n", "time_1 \n", "2019-12-31 16:45:34.507031296 SWC \n", "2019-12-31 16:45:34.666273280 SWA \n", "2019-12-31 16:45:58.498234368 SWC \n", "2019-12-31 16:45:58.642820352 SWA \n", "2019-12-31 17:32:44.852499968 SWC " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[0:5][[\"time_2\", \"satellite_1\", \"satellite_2\"]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can select all the conjunctions containing a given satellite:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:47:04.286593Z", "iopub.status.busy": "2025-06-21T21:47:04.286169Z", "iopub.status.idle": "2025-06-21T21:47:04.306367Z", "shell.execute_reply": "2025-06-21T21:47:04.305793Z" } }, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Spacecraft</th>\n", " <th>satellite_2</th>\n", " <th>satellite_1</th>\n", " <th>local_solar_time_2</th>\n", " <th>latitude</th>\n", " <th>longitude</th>\n", " <th>altitude_1</th>\n", " <th>time_difference</th>\n", " <th>magnetic_latitude</th>\n", " <th>magnetic_longitude</th>\n", " <th>time_2</th>\n", " <th>altitude_2</th>\n", " <th>local_solar_time_1</th>\n", " </tr>\n", " <tr>\n", " <th>time_1</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2019-12-31 16:45:34.666273280</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>GF1</td>\n", " <td>5.523574</td>\n", " <td>87.330964</td>\n", " <td>-168.540829</td>\n", " <td>508384.174138</td>\n", " <td>26275.311505</td>\n", " <td>79.956628</td>\n", " <td>-164.497178</td>\n", " <td>2020-01-01 00:03:29.977781248</td>\n", " <td>445817.275119</td>\n", " <td>12.822272</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 16:45:58.642820352</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>GF2</td>\n", " <td>5.523248</td>\n", " <td>87.331274</td>\n", " <td>-168.645621</td>\n", " <td>508283.850034</td>\n", " <td>26251.259161</td>\n", " <td>79.952162</td>\n", " <td>-164.509020</td>\n", " <td>2020-01-01 00:03:29.901976576</td>\n", " <td>445817.254541</td>\n", " <td>12.815265</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 17:32:44.934890496</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>GF1</td>\n", " <td>17.521446</td>\n", " <td>-87.328937</td>\n", " <td>-0.365544</td>\n", " <td>522004.159533</td>\n", " <td>26244.692912</td>\n", " <td>-79.460015</td>\n", " <td>14.136825</td>\n", " <td>2020-01-01 00:50:09.627804672</td>\n", " <td>464161.845406</td>\n", " <td>0.811638</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 17:33:08.975226624</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>GF2</td>\n", " <td>17.519267</td>\n", " <td>-87.329375</td>\n", " <td>-0.498389</td>\n", " <td>522106.188666</td>\n", " <td>26220.555867</td>\n", " <td>-79.454945</td>\n", " <td>14.116901</td>\n", " <td>2020-01-01 00:50:09.531093760</td>\n", " <td>464161.901037</td>\n", " <td>0.802755</td>\n", " </tr>\n", " <tr>\n", " <th>2019-12-31 17:42:18.655843840</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>SWB</td>\n", " <td>1.733630</td>\n", " <td>84.623616</td>\n", " <td>120.426718</td>\n", " <td>511774.213962</td>\n", " <td>22790.428566</td>\n", " <td>75.269785</td>\n", " <td>-175.176848</td>\n", " <td>2020-01-01 00:02:09.084413952</td>\n", " <td>445697.680298</td>\n", " <td>8.064305</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:31:37.199038976</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>GF2</td>\n", " <td>3.136647</td>\n", " <td>-85.252281</td>\n", " <td>54.144711</td>\n", " <td>524464.926293</td>\n", " <td>2350.649018</td>\n", " <td>-82.426605</td>\n", " <td>30.386096</td>\n", " <td>2020-01-02 00:10:47.848054528</td>\n", " <td>463967.092769</td>\n", " <td>3.789605</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:36:50.826312448</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>SWB</td>\n", " <td>15.897388</td>\n", " <td>76.710613</td>\n", " <td>-115.750956</td>\n", " <td>511401.685124</td>\n", " <td>4977.687203</td>\n", " <td>80.903810</td>\n", " <td>-87.255342</td>\n", " <td>2020-01-02 00:59:48.513515776</td>\n", " <td>445355.973591</td>\n", " <td>17.280079</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:41:14.676492288</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>SWB</td>\n", " <td>1.111731</td>\n", " <td>85.793936</td>\n", " <td>21.364816</td>\n", " <td>511872.512023</td>\n", " <td>26854.660897</td>\n", " <td>79.420521</td>\n", " <td>156.361396</td>\n", " <td>2020-01-02 07:08:49.337390592</td>\n", " <td>445591.642678</td>\n", " <td>8.571359</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:41:47.813570304</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>SWB</td>\n", " <td>1.824534</td>\n", " <td>83.922645</td>\n", " <td>31.918781</td>\n", " <td>511777.132307</td>\n", " <td>21188.410732</td>\n", " <td>77.564465</td>\n", " <td>151.398185</td>\n", " <td>2020-01-02 05:34:56.224296704</td>\n", " <td>445578.775959</td>\n", " <td>7.710203</td>\n", " </tr>\n", " <tr>\n", " <th>2020-01-01 23:43:26.628039168</th>\n", " <td>-</td>\n", " <td>SWA</td>\n", " <td>SWB</td>\n", " <td>2.561690</td>\n", " <td>77.902092</td>\n", " <td>42.564400</td>\n", " <td>511293.312109</td>\n", " <td>15391.897473</td>\n", " <td>71.743591</td>\n", " <td>142.500846</td>\n", " <td>2020-01-02 03:59:58.525515520</td>\n", " <td>445127.722214</td>\n", " <td>6.837217</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>1657 rows × 13 columns</p>\n", "</div>" ], "text/plain": [ " Spacecraft satellite_2 satellite_1 \\\n", "time_1 \n", "2019-12-31 16:45:34.666273280 - SWA GF1 \n", "2019-12-31 16:45:58.642820352 - SWA GF2 \n", "2019-12-31 17:32:44.934890496 - SWA GF1 \n", "2019-12-31 17:33:08.975226624 - SWA GF2 \n", "2019-12-31 17:42:18.655843840 - SWA SWB \n", "... ... ... ... \n", "2020-01-01 23:31:37.199038976 - SWA GF2 \n", "2020-01-01 23:36:50.826312448 - SWA SWB \n", "2020-01-01 23:41:14.676492288 - SWA SWB \n", "2020-01-01 23:41:47.813570304 - SWA SWB \n", "2020-01-01 23:43:26.628039168 - SWA SWB \n", "\n", " local_solar_time_2 latitude longitude \\\n", "time_1 \n", "2019-12-31 16:45:34.666273280 5.523574 87.330964 -168.540829 \n", "2019-12-31 16:45:58.642820352 5.523248 87.331274 -168.645621 \n", "2019-12-31 17:32:44.934890496 17.521446 -87.328937 -0.365544 \n", "2019-12-31 17:33:08.975226624 17.519267 -87.329375 -0.498389 \n", "2019-12-31 17:42:18.655843840 1.733630 84.623616 120.426718 \n", "... ... ... ... \n", "2020-01-01 23:31:37.199038976 3.136647 -85.252281 54.144711 \n", "2020-01-01 23:36:50.826312448 15.897388 76.710613 -115.750956 \n", "2020-01-01 23:41:14.676492288 1.111731 85.793936 21.364816 \n", "2020-01-01 23:41:47.813570304 1.824534 83.922645 31.918781 \n", "2020-01-01 23:43:26.628039168 2.561690 77.902092 42.564400 \n", "\n", " altitude_1 time_difference \\\n", "time_1 \n", "2019-12-31 16:45:34.666273280 508384.174138 26275.311505 \n", "2019-12-31 16:45:58.642820352 508283.850034 26251.259161 \n", "2019-12-31 17:32:44.934890496 522004.159533 26244.692912 \n", "2019-12-31 17:33:08.975226624 522106.188666 26220.555867 \n", "2019-12-31 17:42:18.655843840 511774.213962 22790.428566 \n", "... ... ... \n", "2020-01-01 23:31:37.199038976 524464.926293 2350.649018 \n", "2020-01-01 23:36:50.826312448 511401.685124 4977.687203 \n", "2020-01-01 23:41:14.676492288 511872.512023 26854.660897 \n", "2020-01-01 23:41:47.813570304 511777.132307 21188.410732 \n", "2020-01-01 23:43:26.628039168 511293.312109 15391.897473 \n", "\n", " magnetic_latitude magnetic_longitude \\\n", "time_1 \n", "2019-12-31 16:45:34.666273280 79.956628 -164.497178 \n", "2019-12-31 16:45:58.642820352 79.952162 -164.509020 \n", "2019-12-31 17:32:44.934890496 -79.460015 14.136825 \n", "2019-12-31 17:33:08.975226624 -79.454945 14.116901 \n", "2019-12-31 17:42:18.655843840 75.269785 -175.176848 \n", "... ... ... \n", "2020-01-01 23:31:37.199038976 -82.426605 30.386096 \n", "2020-01-01 23:36:50.826312448 80.903810 -87.255342 \n", "2020-01-01 23:41:14.676492288 79.420521 156.361396 \n", "2020-01-01 23:41:47.813570304 77.564465 151.398185 \n", "2020-01-01 23:43:26.628039168 71.743591 142.500846 \n", "\n", " time_2 altitude_2 \\\n", "time_1 \n", "2019-12-31 16:45:34.666273280 2020-01-01 00:03:29.977781248 445817.275119 \n", "2019-12-31 16:45:58.642820352 2020-01-01 00:03:29.901976576 445817.254541 \n", "2019-12-31 17:32:44.934890496 2020-01-01 00:50:09.627804672 464161.845406 \n", "2019-12-31 17:33:08.975226624 2020-01-01 00:50:09.531093760 464161.901037 \n", "2019-12-31 17:42:18.655843840 2020-01-01 00:02:09.084413952 445697.680298 \n", "... ... ... \n", "2020-01-01 23:31:37.199038976 2020-01-02 00:10:47.848054528 463967.092769 \n", "2020-01-01 23:36:50.826312448 2020-01-02 00:59:48.513515776 445355.973591 \n", "2020-01-01 23:41:14.676492288 2020-01-02 07:08:49.337390592 445591.642678 \n", "2020-01-01 23:41:47.813570304 2020-01-02 05:34:56.224296704 445578.775959 \n", "2020-01-01 23:43:26.628039168 2020-01-02 03:59:58.525515520 445127.722214 \n", "\n", " local_solar_time_1 \n", "time_1 \n", "2019-12-31 16:45:34.666273280 12.822272 \n", "2019-12-31 16:45:58.642820352 12.815265 \n", "2019-12-31 17:32:44.934890496 0.811638 \n", "2019-12-31 17:33:08.975226624 0.802755 \n", "2019-12-31 17:42:18.655843840 8.064305 \n", "... ... \n", "2020-01-01 23:31:37.199038976 3.789605 \n", "2020-01-01 23:36:50.826312448 17.280079 \n", "2020-01-01 23:41:14.676492288 8.571359 \n", "2020-01-01 23:41:47.813570304 7.710203 \n", "2020-01-01 23:43:26.628039168 6.837217 \n", "\n", "[1657 rows x 13 columns]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_SWA = df.where((df[\"satellite_1\"] == \"SWA\")|(df[\"satellite_2\"] == \"SWA\")).dropna()\n", "df_SWA" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plane alignments" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:47:04.308677Z", "iopub.status.busy": "2025-06-21T21:47:04.308321Z", "iopub.status.idle": "2025-06-21T21:47:10.733735Z", "shell.execute_reply": "2025-06-21T21:47:10.733185Z" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5c4d2db4082a4beab0a7a1192457e755", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Processing: 0%| | [ Elapsed: 00:00, Remaining: ? ] [1/1] " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f07adf02b4194142a10e54066a19a2c4", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Downloading: 0%| | [ Elapsed: 00:00, Remaining: ? ] (0.09MB)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>Spacecraft</th>\n", " <th>satellite_2</th>\n", " <th>ltan_2</th>\n", " <th>satellite_1</th>\n", " <th>ltan_rate_1</th>\n", " <th>ltan_rate_2</th>\n", " <th>ltan_1</th>\n", " <th>altitude_1</th>\n", " <th>altitude_2</th>\n", " </tr>\n", " <tr>\n", " <th>time</th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " <th></th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>2003-05-11 10:10:03.145992192</th>\n", " <td>-</td>\n", " <td>GR2</td>\n", " <td>4.684153</td>\n", " <td>CH</td>\n", " <td>-0.091268</td>\n", " <td>-0.074543</td>\n", " <td>16.684153</td>\n", " <td>400547.265815</td>\n", " <td>488291.762308</td>\n", " </tr>\n", " <tr>\n", " <th>2003-05-11 10:21:36.896242176</th>\n", " <td>-</td>\n", " <td>GR1</td>\n", " <td>4.683406</td>\n", " <td>CH</td>\n", " <td>-0.091268</td>\n", " <td>-0.074549</td>\n", " <td>16.683406</td>\n", " <td>400527.975912</td>\n", " <td>487617.059444</td>\n", " </tr>\n", " <tr>\n", " <th>2005-04-08 16:07:15.667320192</th>\n", " <td>-</td>\n", " <td>GR2</td>\n", " <td>0.629215</td>\n", " <td>CH</td>\n", " <td>-0.091834</td>\n", " <td>-0.074332</td>\n", " <td>0.629215</td>\n", " <td>361914.544690</td>\n", " <td>469993.893995</td>\n", " </tr>\n", " <tr>\n", " <th>2005-04-08 16:12:54.103234304</th>\n", " <td>-</td>\n", " <td>GR1</td>\n", " <td>0.628855</td>\n", " <td>CH</td>\n", " <td>-0.091834</td>\n", " <td>-0.074331</td>\n", " <td>0.628855</td>\n", " <td>361913.083670</td>\n", " <td>470666.606845</td>\n", " </tr>\n", " <tr>\n", " <th>2007-02-14 05:07:14.704273408</th>\n", " <td>-</td>\n", " <td>GR2</td>\n", " <td>22.255276</td>\n", " <td>CH</td>\n", " <td>-0.092207</td>\n", " <td>-0.074526</td>\n", " <td>10.255276</td>\n", " <td>350444.851771</td>\n", " <td>481552.511743</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " <td>...</td>\n", " </tr>\n", " <tr>\n", " <th>2020-05-21 19:46:01.686648320</th>\n", " <td>-</td>\n", " <td>GF2</td>\n", " <td>17.434235</td>\n", " <td>SWC</td>\n", " <td>-0.089979</td>\n", " <td>-0.074638</td>\n", " <td>17.434235</td>\n", " <td>436300.307971</td>\n", " <td>485113.048217</td>\n", " </tr>\n", " <tr>\n", " <th>2020-05-21 20:03:47.512773632</th>\n", " <td>-</td>\n", " <td>GF1</td>\n", " <td>17.433122</td>\n", " <td>SWC</td>\n", " <td>-0.089979</td>\n", " <td>-0.074633</td>\n", " <td>17.433122</td>\n", " <td>436330.337154</td>\n", " <td>485000.585092</td>\n", " </tr>\n", " <tr>\n", " <th>2021-09-30 18:39:55.482117120</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>20.642289</td>\n", " <td>SWA</td>\n", " <td>-0.089902</td>\n", " <td>-0.090034</td>\n", " <td>20.642289</td>\n", " <td>430877.890053</td>\n", " <td>430878.908792</td>\n", " </tr>\n", " <tr>\n", " <th>2021-10-03 13:41:11.625304576</th>\n", " <td>-</td>\n", " <td>SWC</td>\n", " <td>20.390555</td>\n", " <td>SWB</td>\n", " <td>-0.085605</td>\n", " <td>-0.090089</td>\n", " <td>8.390555</td>\n", " <td>503359.670523</td>\n", " <td>431177.812782</td>\n", " </tr>\n", " <tr>\n", " <th>2021-10-03 15:03:35.963726592</th>\n", " <td>-</td>\n", " <td>SWB</td>\n", " <td>8.385697</td>\n", " <td>SWA</td>\n", " <td>-0.089954</td>\n", " <td>-0.085605</td>\n", " <td>20.385697</td>\n", " <td>431054.450419</td>\n", " <td>503289.814384</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>82 rows × 9 columns</p>\n", "</div>" ], "text/plain": [ " Spacecraft satellite_2 ltan_2 satellite_1 \\\n", "time \n", "2003-05-11 10:10:03.145992192 - GR2 4.684153 CH \n", "2003-05-11 10:21:36.896242176 - GR1 4.683406 CH \n", "2005-04-08 16:07:15.667320192 - GR2 0.629215 CH \n", "2005-04-08 16:12:54.103234304 - GR1 0.628855 CH \n", "2007-02-14 05:07:14.704273408 - GR2 22.255276 CH \n", "... ... ... ... ... \n", "2020-05-21 19:46:01.686648320 - GF2 17.434235 SWC \n", "2020-05-21 20:03:47.512773632 - GF1 17.433122 SWC \n", "2021-09-30 18:39:55.482117120 - SWC 20.642289 SWA \n", "2021-10-03 13:41:11.625304576 - SWC 20.390555 SWB \n", "2021-10-03 15:03:35.963726592 - SWB 8.385697 SWA \n", "\n", " ltan_rate_1 ltan_rate_2 ltan_1 \\\n", "time \n", "2003-05-11 10:10:03.145992192 -0.091268 -0.074543 16.684153 \n", "2003-05-11 10:21:36.896242176 -0.091268 -0.074549 16.683406 \n", "2005-04-08 16:07:15.667320192 -0.091834 -0.074332 0.629215 \n", "2005-04-08 16:12:54.103234304 -0.091834 -0.074331 0.628855 \n", "2007-02-14 05:07:14.704273408 -0.092207 -0.074526 10.255276 \n", "... ... ... ... \n", "2020-05-21 19:46:01.686648320 -0.089979 -0.074638 17.434235 \n", "2020-05-21 20:03:47.512773632 -0.089979 -0.074633 17.433122 \n", "2021-09-30 18:39:55.482117120 -0.089902 -0.090034 20.642289 \n", "2021-10-03 13:41:11.625304576 -0.085605 -0.090089 8.390555 \n", "2021-10-03 15:03:35.963726592 -0.089954 -0.085605 20.385697 \n", "\n", " altitude_1 altitude_2 \n", "time \n", "2003-05-11 10:10:03.145992192 400547.265815 488291.762308 \n", "2003-05-11 10:21:36.896242176 400527.975912 487617.059444 \n", "2005-04-08 16:07:15.667320192 361914.544690 469993.893995 \n", "2005-04-08 16:12:54.103234304 361913.083670 470666.606845 \n", "2007-02-14 05:07:14.704273408 350444.851771 481552.511743 \n", "... ... ... \n", "2020-05-21 19:46:01.686648320 436300.307971 485113.048217 \n", "2020-05-21 20:03:47.512773632 436330.337154 485000.585092 \n", "2021-09-30 18:39:55.482117120 430877.890053 430878.908792 \n", "2021-10-03 13:41:11.625304576 503359.670523 431177.812782 \n", "2021-10-03 15:03:35.963726592 431054.450419 503289.814384 \n", "\n", "[82 rows x 9 columns]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "request = SwarmRequest(SERVER_URL)\n", "request.set_collection(\"MM_OPER_CON_EPH_2_:plane_alignment\")\n", "request.set_products(\n", " request.available_measurements(\"MM_OPER_CON_EPH_2_:plane_alignment\")\n", ")\n", "data = request.get_between(\n", " dt.datetime(2000, 1, 1),\n", " dt.datetime(2022, 1, 1),\n", ")\n", "df = data.as_dataframe()\n", "df" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2025-06-21T21:47:10.735908Z", "iopub.status.busy": "2025-06-21T21:47:10.735436Z", "iopub.status.idle": "2025-06-21T21:47:12.564167Z", "shell.execute_reply": "2025-06-21T21:47:12.563459Z" } }, "outputs": [ { "data": { "image/png": "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iFBYWFildSEhIYqNjT1vzpCQEBUXF3uWv//+e33yyScKDg6+YN0//YjepdZ0IZ07d9aHH36oF198Ub/73e9UUlKi5ORkjR49Wvfee+9FHw8A+HkEFwCogquuuspzV7FLUVhYqMWLFysrK0sjRozwrC8pKfFca2JW/fr1JUmLFi1Ss2bNTD/+f//3f9WlSxe98sorldYXFRWZnqviDX9FmDrX4cOHTc9nlfr166tDhw6aMGHCBccbN25s6fPdfvvtuv3221VSUqKNGzdq4sSJGjhwoJo3b65OnTpZ+lwA4G8ILgBQAxwOhwzD8PwPfoWZM2eqrKysSnPeeuutCgoK0nfffac777yzSjX9tJ5t27Zpw4YNSkxMNDVXmzZtFB8frwULFmj48OGe9fv379f69estDwiXqk+fPlqyZImuuOIKxcTEWDLnuWdhwsPDvW6TlpamunXratmyZfryyy8JLgBQTQQXAKgBTqdTnTt31pQpU1S/fn01b95ca9as0RtvvKG6detWac7mzZtr3LhxGj16tP7973+rV69eiomJ0ffff69NmzapTp06P/tFiX369NH48eOVlZWltLQ0ffvttxo3bpySkpJM3wkrICBAY8eO1aBBg3TXXXcpIyNDx48f19ixY9WoUaOLfmzNV8aNG6fly5frhhtu0LBhw9SmTRsVFxdr7969WrJkiV599VUlJCSYmrN9+/aSpGeeeUa33XabAgMD1aFDBz311FPKzc1V9+7dlZCQoOPHj+uFF15QcHCw0tLSfLF7AOBXCC4AUEPmz5+vRx99VH/5y1/kdrt14403avny5erdu3eV5xw5cqTatm2rF154QW+//bZKSkoUHx+vlJQUDR48+GcfO3r0aJ06dUpvvPGGJk+erLZt2+rVV1/VBx98UKXbIT/00ENyOByaPHmy+vbtq+bNm2vEiBH66KOPtH///iruYfU0atRIn3/+ucaPH68pU6YoNzdXUVFRSkpK8gQ9swYOHKh169Zp+vTpGjdunAzD0J49e9SxY0d9/vnnevzxx3XkyBHVrVtX1113nVatWqXk5GQf7B0A+BeHYRhGbRcBAPhlOn78uFq3bq077rhDr7/+em2XAwC4jHHGBQBgicOHD2vChAnq2rWr6tWrp3379mnq1KkqKirSo48+WtvlAQAucwQXAIAlQkNDtXfvXj388MPKz89X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", "text/plain": [ "<Figure size 1000x500 with 9 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def alignments(df, sat=\"SWA\"):\n", " return df.where((df[\"satellite_1\"] == sat)|(df[\"satellite_2\"] == sat)).dropna()\n", "\n", "sats = ('CH', 'GO', 'GR1', 'GR2', 'GF1', 'GF2', 'SWA', 'SWB', 'SWC')\n", "fig, axes = plt.subplots(len(sats), 1, figsize=(10, 5), sharex=True)\n", "empty = np.empty(df.index.shape)\n", "empty[:] = np.nan\n", "axes[0].plot(df.index, empty)\n", "for sat, ax in zip(sats, axes):\n", " _df = alignments(df, sat=sat)\n", " for date in _df.index:\n", " ax.axvline(date)\n", " ax.set_yticks([])\n", " ax.set_ylabel(sat)\n", "fig.subplots_adjust(hspace=0)\n", "fig.suptitle(\"Plane alignments\");" ] } ], "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.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "03a6609b7f8e4fb08ee044ea9dcf071c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "06daa70d86574b058b7333caaf3c4e7c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0ee08642067a414da22f58ad3fee3935": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_260a678f371f4a1a98b20702c1f19c7d", "IPY_MODEL_1a8aa0c4e801408e9504d3c6bc97edff", "IPY_MODEL_bd498c6de0a848e28b65fd550f055446" ], "layout": "IPY_MODEL_6f874838b1924e7daca0c7537cc012a9", "tabbable": null, "tooltip": null } }, "15a6bcef87764832a79d8dcdcf6f586f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1a83d2bf10d84c9d92c143cb10899187": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "1a8aa0c4e801408e9504d3c6bc97edff": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_4f7280e232334b1692bd814fb26b98a4", "max": 100.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_cc435ef42393413eb2f7b652ba8675f3", "tabbable": null, "tooltip": null, "value": 100.0 } }, "260a678f371f4a1a98b20702c1f19c7d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_4fa646c007a24b01adc68f263b42baa4", "placeholder": "", "style": "IPY_MODEL_30a2dbdc02a143cd8a429f6356ee48be", "tabbable": null, "tooltip": null, "value": "Processing: 100%" } }, "30a2dbdc02a143cd8a429f6356ee48be": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "3161d8948c7a4d9a89422119c643fa14": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "33c5bfa124884b95b5390af4a806c72f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_3161d8948c7a4d9a89422119c643fa14", "placeholder": "", "style": "IPY_MODEL_c6003cbd4e644bb09427e73b7f3be0bb", "tabbable": null, "tooltip": null, "value": " [ Elapsed: 00:04, Remaining: 00:00 ] [1/1] " } }, "355ce2d3ba354dbc94043c16259bd004": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_7d2b62b5aec948f48854fedbb3ab2ebe", "placeholder": "", "style": "IPY_MODEL_44ed4063c7e044dc8f61973be8409daf", "tabbable": null, "tooltip": null, "value": "Downloading: 100%" } }, "4011f6b17cfa4e9aae643937a513711e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_fa26250f2d8a41569f5f7d2be272adc0", "placeholder": "", "style": "IPY_MODEL_03a6609b7f8e4fb08ee044ea9dcf071c", "tabbable": null, "tooltip": null, "value": "Processing: 100%" } }, "44ed4063c7e044dc8f61973be8409daf": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "483b95de5ce34a32bfae6461d723042e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4c1a3cd4dd924ecbb9407c465edac280": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_483b95de5ce34a32bfae6461d723042e", "max": 100.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_78f717d59c934ed2a8e87d9a185b2925", "tabbable": null, "tooltip": null, "value": 100.0 } }, "4cf1c3fb190445778fe77c14bb94d21f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_06daa70d86574b058b7333caaf3c4e7c", "placeholder": "", "style": "IPY_MODEL_ecef78145470422cb917bb46e638193d", "tabbable": null, "tooltip": null, "value": "Downloading: 100%" } }, "4f7280e232334b1692bd814fb26b98a4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "4fa646c007a24b01adc68f263b42baa4": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "55d435ea363742148eb349de5943471b": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_355ce2d3ba354dbc94043c16259bd004", "IPY_MODEL_4c1a3cd4dd924ecbb9407c465edac280", "IPY_MODEL_b5056f3b54ef4bb7bccceaedf738b6f0" ], "layout": "IPY_MODEL_8280e45cb7704436aad328fd72bf847d", "tabbable": null, "tooltip": null } }, "5c4d2db4082a4beab0a7a1192457e755": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_4011f6b17cfa4e9aae643937a513711e", "IPY_MODEL_880cad3f77e24d66b98521355ff0aa11", "IPY_MODEL_33c5bfa124884b95b5390af4a806c72f" ], "layout": "IPY_MODEL_fb3f8365978e4fd9bfbf45b3d7126dcf", "tabbable": null, "tooltip": null } }, "5f3190bb0dc3473cb59ea96f804ddcd2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "6f874838b1924e7daca0c7537cc012a9": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "74b5d431cf804f17a0c460e0c71a76d9": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "78f717d59c934ed2a8e87d9a185b2925": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "7d2b62b5aec948f48854fedbb3ab2ebe": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8280e45cb7704436aad328fd72bf847d": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "880cad3f77e24d66b98521355ff0aa11": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_9d734a515050448c8dd2d96ae1e0ec62", "max": 100.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_5f3190bb0dc3473cb59ea96f804ddcd2", "tabbable": null, "tooltip": null, "value": 100.0 } }, "8cb083dd43f14095af95dba899e4c33d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "9d734a515050448c8dd2d96ae1e0ec62": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ad67d88ecd1f4bf38a775f71428a8e33": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b0deb6421b6c4cdf863c3be861fe7d81": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b5056f3b54ef4bb7bccceaedf738b6f0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_74b5d431cf804f17a0c460e0c71a76d9", "placeholder": "", "style": "IPY_MODEL_1a83d2bf10d84c9d92c143cb10899187", "tabbable": null, "tooltip": null, "value": " [ Elapsed: 00:00, Remaining: 00:00 ] (0.525MB)" } }, "b508f51840904642a4a0eb7b407cf39e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "bd498c6de0a848e28b65fd550f055446": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_d4e13c11a89742658d6ddc4d2f2a833c", "placeholder": "", "style": "IPY_MODEL_b508f51840904642a4a0eb7b407cf39e", "tabbable": null, "tooltip": null, "value": " [ Elapsed: 00:01, Remaining: 00:00 ] [1/1] " } }, "c6003cbd4e644bb09427e73b7f3be0bb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "c9424b0e201943fcb347d364ad83bfb3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "cc435ef42393413eb2f7b652ba8675f3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "d4e13c11a89742658d6ddc4d2f2a833c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e5271001438040ab80e5433decfa1d55": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_15a6bcef87764832a79d8dcdcf6f586f", "max": 100.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_8cb083dd43f14095af95dba899e4c33d", "tabbable": null, "tooltip": null, "value": 100.0 } }, "ecef78145470422cb917bb46e638193d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "f07adf02b4194142a10e54066a19a2c4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_4cf1c3fb190445778fe77c14bb94d21f", "IPY_MODEL_e5271001438040ab80e5433decfa1d55", "IPY_MODEL_f72b75b1c21f4a2599c1bd791dc9308a" ], "layout": "IPY_MODEL_b0deb6421b6c4cdf863c3be861fe7d81", "tabbable": null, "tooltip": null } }, "f72b75b1c21f4a2599c1bd791dc9308a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_ad67d88ecd1f4bf38a775f71428a8e33", "placeholder": "", "style": "IPY_MODEL_c9424b0e201943fcb347d364ad83bfb3", "tabbable": null, "tooltip": null, "value": " [ Elapsed: 00:00, Remaining: 00:00 ] (0.09MB)" } }, "fa26250f2d8a41569f5f7d2be272adc0": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fb3f8365978e4fd9bfbf45b3d7126dcf": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }