{
 "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
}