{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5227f550-ed14-42d5-87b1-d6ce2047f307",
   "metadata": {},
   "source": [
    "# Qick view and study signal from UHF/VHF [50-3000] MHz SRSP \"Ra\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "adb5a69f-b1c4-4d00-892e-b2c5dc888e0a",
   "metadata": {},
   "source": [
    "## Libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "373c6651-ea40-4eb1-9647-6d4ddbd98d52",
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.simplefilter('ignore')\n",
    "warnings.filterwarnings(\"ignore\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "ff4a1151-13bf-4823-a119-3f85c179da4d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import gc\n",
    "import requests\n",
    "import fnmatch\n",
    "from bs4 import BeautifulSoup\n",
    "\n",
    "import numpy as np\n",
    "from matplotlib import pyplot as plt\n",
    "import matplotlib.dates as mdates\n",
    "from matplotlib.ticker import StrMethodFormatter, NullFormatter\n",
    "\n",
    "from datetime import date\n",
    "from datetime import datetime, timezone, timedelta\n",
    "from astropy.io import fits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "371406e4-3409-48ac-94b3-103aae594134",
   "metadata": {},
   "outputs": [],
   "source": [
    "gc.enable()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "01805dda-0bd7-4ab4-b07d-9a73d4279fd7",
   "metadata": {},
   "source": [
    "## Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d22dd6e9-14d7-4922-8746-55d2230a6e03",
   "metadata": {},
   "outputs": [],
   "source": [
    "def listFD(url, ext=''):\n",
    "    page = requests.get(url).text\n",
    "    soup = BeautifulSoup(page, 'html.parser')\n",
    "    return [url + '/' + node.get('href') for node in soup.find_all('a') if node.get('href').endswith(ext)]\n",
    "\n",
    "def download(url: str, dest_folder: str):\n",
    "    if not os.path.exists(dest_folder):\n",
    "        os.makedirs(dest_folder)  # create folder if it does not exist\n",
    "\n",
    "    filename = url.split('/')[-1].replace(\" \", \"_\")  # be careful with file names\n",
    "    file_path = os.path.join(dest_folder, filename)\n",
    "\n",
    "    r = requests.get(url, stream=True)\n",
    "    if r.ok:\n",
    "        print(\"saving to\", os.path.abspath(file_path))\n",
    "        with open(file_path, 'wb') as f:\n",
    "            for chunk in r.iter_content(chunk_size=1024 * 8):\n",
    "                if chunk:\n",
    "                    f.write(chunk)\n",
    "                    f.flush()\n",
    "                    os.fsync(f.fileno())\n",
    "    else:  # HTTP status code 4XX/5XX\n",
    "        print(\"Download failed: status code {}\\n{}\".format(r.status_code, r.text))\n",
    "\n",
    "def hhmm_format(t, pos=0):\n",
    "    hh = (int)(t / 3600.)\n",
    "    t -= hh*3600.\n",
    "    mm = (int)(t / 60.)\n",
    "    ss = (int)(t % 60)\n",
    "    return '%02d:%02d:%02d' % (hh,mm,ss)\n",
    "\n",
    "def to_ticks(hhmmstr, hhmmend):\n",
    "    try:\n",
    "        hhs, mms = hhmmstr.split(':')\n",
    "        hhe, mme = hhmmend.split(':')\n",
    "        startobs = int(hhs) * 3600 + int(mms) * 60 + 3600 * 3\n",
    "        endobs = int(hhe) * 3600 + int(mme) * 60 + 3600 * 3\n",
    "    except:\n",
    "        try:\n",
    "            hhs, mms, sss = hhmmstr.split(':')\n",
    "            hhe, mme, sse = hhmmend.split(':')\n",
    "            startobs = int(hhs) * 3600 + int(mms) * 60 + int(sse) * 60 + 3600 * 3\n",
    "            endobs = int(hhe) * 3600 + int(mme) * 60 + int(sse) * 60 + 3600 * 3\n",
    "        except:\n",
    "            print(\"Time's format undefined\")\n",
    "        \n",
    "    \n",
    "    return (startobs, endobs)\n",
    "\n",
    "def tics_coff_dt(t_1, t_2):\n",
    "    if (t_2 - t_1) // 4 == 0:\n",
    "        coff_dt = (t_2 - t_1) / 4\n",
    "    else:\n",
    "        coff_dt = (t_2 - t_1) // 4\n",
    "    return coff_dt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a7653675-1bde-4719-9725-059eb51057f9",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plotSpectra(radiodata, freqrange=[0,-1], pol=0, yscalelog=False, \n",
    "                 vmin=-21, vmax=-11,\n",
    "                 dateview = datetime.now(),\n",
    "                 t1 = \"03:00\", t2 = \"16:00\",\n",
    "                 cmap=\"rainbow\", improve=False, saveplot=False):\n",
    "    \n",
    "    frequencies = []\n",
    "    common_times = None\n",
    "    intensities = []\n",
    "    \n",
    "    for row in radiodata[freqrange[0]:freqrange[1]]:\n",
    "        freq = row[0]\n",
    "        time_lcp = np.array(row[1])\n",
    "        time_rcp = np.array(row[3])\n",
    "        \n",
    "        if improve == True:\n",
    "            flux_lcp = np.array(row[2]) / 10 ** int(np.log10(np.min(np.array(row[2][4000:-4000]))))\n",
    "            flux_rcp = np.array(row[4]) / 10 ** int(np.log10(np.min(np.array(row[4][4000:-4000]))))\n",
    "\n",
    "        else:\n",
    "            flux_lcp = np.array(row[2])\n",
    "            flux_rcp = np.array(row[4])\n",
    "    \n",
    "        fluxI = flux_lcp + flux_rcp\n",
    "\n",
    "        fluxV = flux_lcp - flux_rcp\n",
    "        flux = [fluxI, fluxV]\n",
    "        stokes = [\"I\", \"V\"]\n",
    "    \n",
    "        if common_times is None:\n",
    "            common_times = time_lcp\n",
    "    \n",
    "        frequencies.append(freq)\n",
    "        intensities.append(flux[pol])\n",
    "        # intensities.append(flux_V)\n",
    "    \n",
    "    frequencies = np.array(frequencies)\n",
    "    intensities = np.array(intensities)  # shape: (N_freq, N_time)\n",
    "\n",
    "    time_dt = np.array([\n",
    "        datetime.utcfromtimestamp(ts / 1000) + timedelta(hours=-3)\n",
    "        for ts in common_times\n",
    "    ])\n",
    "\n",
    "    fig, ax = plt.subplots(figsize=(13.5,7.25/2))\n",
    "    fig.subplots_adjust(wspace=0, hspace=0,left = 0.08, right = 0.98, top = 0.9, bottom = 0.08)\n",
    "\n",
    "    im = ax.pcolormesh(\n",
    "        time_dt, \n",
    "        frequencies,\n",
    "        intensities,\n",
    "        # np.log(intensities),\n",
    "        cmap=cmap,\n",
    "        shading=None,\n",
    "        vmin = vmin,\n",
    "        vmax = vmax,\n",
    "    )\n",
    "    \n",
    "    yearfits = dateview.year\n",
    "    monthfits = dateview.month\n",
    "    dayfits = dateview.day\n",
    "\n",
    "    t1 = datetime(yearfits, monthfits, dayfits, int(t1[0:2]), int(t1[3:5]), 0, tzinfo=timezone(timedelta(hours=0)))\n",
    "    t2 = datetime(yearfits, monthfits, dayfits, int(t2[0:2]), int(t2[3:5]), 0, tzinfo=timezone(timedelta(hours=0)))\n",
    "    \n",
    "    ax.set_xlim(mdates.date2num(t1), mdates.date2num(t2))\n",
    "    ax.xaxis.set_major_locator(mdates.HourLocator(interval=1))\n",
    "    ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))\n",
    "    ax.xaxis.set_minor_locator(mdates.MinuteLocator(interval=10))\n",
    "    \n",
    "    plt.xlabel(\"UTC Time, hours\",fontsize=12)\n",
    "    plt.ylabel(\"Frequency, GHz\",fontsize=12)\n",
    "    \n",
    "    if yscalelog == True:\n",
    "        plt.yscale('log')\n",
    "    \n",
    "        ax.yaxis.set_major_formatter(StrMethodFormatter('{x:.0f}'))\n",
    "        ax.yaxis.set_minor_formatter(StrMethodFormatter('{x:.0f}'))\n",
    "\n",
    "    ax.invert_yaxis()\n",
    "    ax = plt.gca()\n",
    "\n",
    "    plt.title(str(dateview)[:10] + \"           Stokes \" + stokes[pol] + \"           Spectropolarimeter SRSP \" + str(frequencies[0]) + \"-\" + str(frequencies[-1]) + \" GHz\", fontsize=13, y = 1.02)\n",
    "    cbar = fig.colorbar(im)\n",
    "    if saveplot == True:\n",
    "        plt.savefig(f'img/Stokes_{stokes[pol]}_SHF_daily_{int(frequencies[0])}_{int(frequencies[-1])}_GHz.png', format='png', dpi=1200)\n",
    "    plt.show()\n",
    "    gc.collect()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2de49b28-a3f7-40f2-a717-99810cce99e5",
   "metadata": {},
   "source": [
    "## Observation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96396303-b58e-4db3-9d97-d69804d6d011",
   "metadata": {},
   "source": [
    "input data observation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "56711e5c-bed0-412c-8abe-971101149b9c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "('2025/05/19/', '20250519')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# dateview = datetime.now().strftime(\"%Y/%m/%d/\") # Today\n",
    "dateview = date(2025, 5, 19).strftime(\"%Y/%m/%d/\") # Choos day for observe\n",
    "filenamedate = dateview.replace(\"/\", \"\")\n",
    "\n",
    "dateview, filenamedate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "41e6dca7-07de-4596-aef0-4bcd83152181",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "https://srsp.cosmos.ru/fits/3_24_GHz/2025/05/19/\n"
     ]
    }
   ],
   "source": [
    "url = \"https://srsp.cosmos.ru/fits/3_24_GHz/\" + dateview\n",
    "ext = 'fits'\n",
    "\n",
    "print(url)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "222ce16d-4df9-4eb7-9b43-9a3bfcf8d4ea",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "saving to /home/greg/SDRepo/Data/fits/3_24_GHz/2025/05/19/3_24_GHz_20250519.fits\n"
     ]
    }
   ],
   "source": [
    "for file in listFD(url, ext):\n",
    "    download(file, './Data/fits/3_24_GHz/' + dateview)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cbe79ceb-d336-4158-8c45-e1859889629a",
   "metadata": {},
   "outputs": [],
   "source": [
    "fits_filename = \"./Data/fits/3_24_GHz/\" + dateview + \"3_24_GHz_\" + filenamedate + \".fits\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "d48bde3e-02b9-4879-b546-092fa48c597f",
   "metadata": {},
   "outputs": [],
   "source": [
    "hdulist = fits.open(fits_filename)\n",
    "radiodata = hdulist[1].data\n",
    "dateview = hdulist[0].header['DATE-OBS']\n",
    "dateview[:-4]\n",
    "date_format = '%Y-%m-%dT%H:%M:%S'\n",
    "dateviewfits = datetime.strptime(dateview[:-4], date_format)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "91e72e68-d6f5-4f9f-97c2-9ea636035884",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABHEAAAGICAYAAADGTXw3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAfGhJREFUeJzt3Xd8FMX/x/H3XUIKCQklQIiELr0oRaQjnS8iTVCkimKLInZFaRawoGCJCEoTC4JfwI4CUr4qSlcQUZpSpCsJPZCb3x/53ZFLLsntpXHJ6/l47ANud3Zmdnbvbu+T2RmbMcYIAAAAAAAAlzV7flcAAAAAAAAAWSOIAwAAAAAA4AcI4gAAAAAAAPgBgjgAAAAAAAB+gCAOAAAAAACAHyCIAwAAAAAA4AcI4gAAAAAAAPgBgjgAAAAAAAB+gCAOAAAAAACAHyCIAwDId7Nnz5bNZtPKlSvzuypAvlu5cqVsNptmz56dK/mPGzdONptNf/75Z67kDwAAcg9BHCAf/PHHHxozZoyuvfZalS5dWsWKFdNVV12l5557TqdPn/a4z++//66ePXuqRIkSCgsLU6tWrfTtt9+mS7dq1SrFxcWpXr16ioiIUOnSpdWiRQt9+OGHMsakS9+2bVvZbDaPy/r16y0d15dffqnmzZsrLCxMJUuWVN++fbVnz5506Zw/IDwtkyZN8rq8tWvXasSIEWrRooXCw8Oz/NGza9cuDRgwQGXLllVwcLCqVaumsWPH6ty5c5aOszD47LPP1LFjR5UvX17BwcEqV66cmjdvrkcffVTHjh1zpdu8ebPGjRtX4H4MOn9EW7keC7rk5GTNnTtXLVu2VHR0tEJCQlS+fHldd911GjNmjM6fP5/fVXQzbtw4LV68OL+rgUxMmTIl1wJV3vj555/Vv39/VatWTSEhIYqKilL9+vV15513atOmTW5p035XOb9DRo4cqePHj3vMf/Xq1brhhhtUqVIlBQcHq0yZMmrcuLFGjBih3bt3u9L9+eef6fIvWrSo6tatq/Hjx+vs2bNZHssXX3zhKqto0aIqUaKEGjZsqClTplj6jnM4HJo8ebJq1qypkJAQxcbG6qGHHsrw3sQTq/chad10002y2WyqW7eu12VK3t8nZeXnn3/W8OHDVb16dYWFhSkkJEQVK1ZU7969NXfuXF24cMEtfaVKlTKt69ChQ2Wz2dy+OwEgOwLzuwJAYTRz5kzFx8frhhtu0IABA1SkSBGtWLFCTz31lObPn68ff/xRoaGhrvS7du1S8+bNFRgYqEcffVSRkZF6++231blzZ3311Vfq0KGDK+1jjz2m/fv3q1evXqpXr55Onz6tjz76SLfccou+/fZbvf322+nqExUVpcmTJ6dbX6VKFa+PaeHChbrxxhvVoEEDvfTSS0pISNCUKVPUokULrV+/XjExMen2mTx5sqKiotzWNWrUyOsyv/zyS8XHx6tmzZpq0KCBfvjhhwzTbt++Xc2aNdPFixcVFxenypUra82aNXrmmWf0008/6auvvpLNZvO67ILsscce04svvqj69evrnnvuUdmyZfX3339ry5Yteuutt9SvXz/Xedu8ebPGjx+vtm3bqlKlSvlbceSqW265RfPnz1eLFi300EMPqUSJEtq3b582btyoF198USNGjFBwcHB+V9Nl/PjxGjJkiHr27JnfVbnsPPXUU3r88cfz/XxNmTJFlSpV0tChQ/O87M8//1w9e/ZU6dKlNXjwYFWrVk0nTpzQH3/8oS+++EJXXnmlrr76ard9rrrqKj300EOSpH///VfffPONXn31VS1btkwbN25UUFCQK+3UqVN1zz33qEqVKhoyZIhiY2N19OhR/fbbb/rwww/VunXrdN+xHTt21ODBgyVJR48e1UcffaRx48bphx9+0Ndff53p8WzZskUBAQG67bbbVK5cOZ09e1b/+9//9MADD+iLL77QN99849V33AMPPKDXXntNvXr10kMPPaTffvtNr732mjZt2qRly5bJbs/677++3Ic4ff755/r444/d7oG8YeU+KTMTJkzQ6NGjVaJECd10002qW7eugoKCtH//fi1btkyDBw/Wd999p2nTplmqHwDkKAMgz61bt86cOHEi3fonn3zSSDKvv/662/q+ffsau91uNm3a5Fp38uRJU6FCBVO9enXjcDhc61euXGkuXrzotn9ycrJp3bq1kWS2bNnitq1NmzamYsWK2TqepKQkExMTYypUqGBOnjzpWr9p0yZjt9vN8OHD3dKPHTvWSDJ79uzJVrmHDh0yp06dMsYYs2DBAiPJzJo1y2PaHj16GJvNZr7//nu39RMmTDCSzNy5c7NVl4Li8OHDxm63myZNmpikpKR020+ePOl2jmfNmmUkmRUrVmSr3JzKJ6esWLHCSDIvvfRSflflsrB+/XojyfTq1cvj9mPHjnm8XvKTJDNkyBCv0ycmJuZeZSxyXn8ZfZ756nI6RmOMqVixomnTpk2u5J3VsdatW9eEh4ebffv2pduWnJxsjhw54rZOkunWrVu6tD179jSSzMcff+xad+HCBVO8eHFToUIFk5CQkG6f8+fPm+PHj7te79mzx0gycXFxbukuXLhgrrrqKiPJrF27NtPjycg999xjJJmffvopy7Rbt241NpvN9O7d2239a6+9ZiSZ999/36syrd6HOJ08edLExsaa++67z1SsWNHUqVPHq/KMsXaflBHn91D79u093qMZk3Jf88Ybb7ity6quQ4YMMZLM0aNHvTsYAMgCj1MB+aBx48aKjIxMt/6mm26SJG3dutW17vTp0/r000/Vtm1bXXXVVa714eHhuv322/XHH39o3bp1rvVt2rRRQECAW752u1033nhjurxTczgcSkxM9Kqrc1qrVq3S33//rdtvv13h4eGu9VdddZXatm2rjz76KF33Y6fExERdvHjRcpmSVLZsWYWFhXmVdsWKFapevbqaN2/utt75F+BZs2b5VIeCZvfu3XI4HGrdurWKFCmSbnt4eLjrHI8bN0633nqrJOm6665zPQaQ+q/qx44dU1xcnGJjYxUUFKTY2FjFxcVl+PhBWs8995xsNpvuu+8+ORwOSdLBgwd19913q0KFCgoKClJMTIzuuOMOHTlyxG3ff/75Rw888ICqVq2qkJAQlSpVSo0aNdJLL73kS9MUajt27JAktWvXzuP2UqVKuV0vzkcmf/31V40YMULR0dEKDQ1V06ZNtXz5co95LFu2TJ06dVLx4sUVEhKi+vXr66233vKYdtOmTerbt6/r0cjY2Fj1799fu3btcj2aIklz5sxxe0TFyXmdLl++XC1btlR4eLi6d+/u2r548WK1aNFCYWFhCg8PV4sWLfTJJ5+kq0elSpXUtm1bbdy4Ue3atVN4eLhKliypIUOGpLsepey9HxwOh5577jm1bt1a0dHRCgoKUoUKFXT33Xen29/ZBuPGjdNHH32kRo0aKTQ0VPfdd58kz2PiONdt27ZNI0eOVLly5VS0aFG1b99ev//+u6SUHpcNGzZUaGioKlWqpOnTp3usqzfn0maz6a+//tKqVavczlHqOq1fv169evVSVFSUgoODVaNGDT333HPpvjOcPQF3796tG2+8USVLllRERESm7bljxw7VqFFD5cuXT7fNbrerdOnSme7v5Ozh4XyPSCnn+cSJE2rSpInHegQFBalkyZJZ5h0YGKj27dtLknbu3OlVfdKqWLGipJSeQ1lxPu40cuRIt/XDhw9X0aJF9d5773lVpq/3IU8++aSSk5P17LPPelWOk9X7JE+SkpI0atQoFStWTPPnz/d4jyal3NfExcVZql9anh6fS72MGzcuW/kDKPh4nAq4jOzfv19SSnDC6ZdfftH58+fVrFmzdOmvvfZaSdK6det0zTXXWM7b6cCBAwoPD9fZs2dVtGhRde7cWRMmTFDNmjW9qrfz5iijOn777bf6448/VKdOHbdt9evX18mTJxUQEKBrrrlGo0ePVteuXb0q06rz58+raNGi6dY7161du1bGmEL/SJWze//nn3+uBx980ONjcE69e/fWwYMHNX36dI0aNUq1atWSJFWtWlWSlJCQoObNm2vnzp0aNmyYGjZsqE2bNmnq1Kn69ttvtXbtWhUrVsxj3snJybr33nv11ltvaeLEiXr88cclSXv37lWzZs2UlJSk2267TVWrVtXOnTs1depUrVixQuvXr3fdfPft21erV6/WXXfdpfr16+vs2bP67bfftHLlSj3yyCM51maFgfOcLliwQAMGDFCJEiW82m/w4MEKCAjQY489ppMnT2ratGnq0qVLuscbpk+frrvuukvXXnutnnzySYWFhWnp0qW6++67tWvXLrfA2+eff64+ffooLCxMt99+u6pVq6ZDhw7p66+/1tatW9WhQwfNnTtXgwYNUqtWrXTHHXd4rNv69ev13//+V8OHD9eQIUNc6998803FxcWpZs2aGjNmjKSUgbd79uypadOmpctv//79at++vfr06aMbb7xRGzdu1MyZM7V+/XqtW7fO9RmTnfeDlPIj86WXXlKfPn3Uo0cPhYWFad26dZoxY4a+++47bdiwwe1xHiklGPXaa6/p7rvv1l133ZVlYEOShgwZovDwcI0aNUpHjx7Vyy+/rM6dO+uZZ57Ro48+qrvvvlvDhg3TjBkzdOedd6p27dpq2bKl5XM5d+5cPfDAA4qKitKTTz7p2t8ZPPniiy/Uu3dvVatWTQ899JBKliypNWvWaMyYMdq8ebMWLFjgVu9Tp06pTZs2atGihZ577jmPQbTUqlatql9/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2WwaNGiQBg0apKSkJP3yyy/65ptvNGXKFL344osqXrx4uuvUkz179qhx48YKDHT/qgkMDFT16tW1cePGdPsMHTpUp06d0urVq90e0ZBSpo91OByaMWOGZsyY4bFM5+NgQUFBmjJliu6//35VrlxZtWvXVrt27dSzZ0/XGBOwpkiRIrr33nt177336uzZs9qwYYO+/PJLvf7663r44YcVExOj/v37u+3jfMQutdq1a0tKGX+pVq1a+u233yQp09ljDh8+LOnSoyVpZw3yRfXq1dOt27NnjySle/Qz9brUU0NLKddc2seYgoODVaVKFbe0vrwf0po/f75efvllbdq0Kd04Y57GPPF0jFlJO2OS89G5ypUrp0tbokQJ/fXXX67XVs5lZpz5DBs2zOt8SpcureLFi2eZd2otW7ZUy5YtZYzRjh07tGLFCr355pv69NNPNXDgwHQzQjVt2lTPPvusjDHau3evXnnlFe3fvz/d+Xfq3r27unfvruTkZG3btk3Lly/Xq6++qpkzZyowMDDdDEc9evTQvffeK5vNppCQEFWrVs3yozX16tVTvXr1JEn9+/fXtGnT1LVrV61evVotWrTIdN+iRYtm+Bha2u/yo0ePKjk52bU9ICDA4zhCWd2H7Ny5U08//bSeeuopSzNipq23lL17EOf3f2JiYrptY8eO1V133SVJeuihh1yP0KUWFhaW4XWf2VhCBw4c0PXXX6/ixYvrs88+y7KeACAxJg6Q78aNG6dnn31Wt956q8dBPJ1jkhw4cCDdNue6K664It02543TsmXLNGPGDA0cONBSvSpVqqSVK1fq33//VWhoqD766CPXILZOs2bN0tChQ93qmPZHW2Z19FSmJNdz5fv27Uv3w2HIkCGaPXu2pWNxuu+++3THHXdoy5YtOn/+vOrUqaPixYsrPj5e5cqVI4jjQVBQkBo3bqzGjRurT58+qlWrlmbMmOFVEMcXN910k2bNmqVnnnlGixcvdptm1vz/oNsDBw50G8MktdTp77rrLvXo0UNffPGFVq1apY8//lhvvPGGbrrpJs2bNy9X6l9YhIaGun4AX3fdderUqZNmzJiRLojjDed5fffdd1WuXDmPaXz9cZcZf/uxtHDhQt1000265ppr9Oqrryo2NlYhISFKTk5Wly5dXAN/p+bLMaYdkDar9c7zl/r/2T2Xznxeeukl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U6dqzpw5qlOnjtavX69bb71VkZGRGjFiRH5XDwAAAAAA+IncnmI8p/gUNnrttdfUuXPnDLd37dpVU6dO9blS3vjhhx/Uo0cPdevWTZUqVdKNN96oTp06ae3atblaLgAAAAAAKFicQRyrS17zKYgzY8YM1a5dO8PttWvX1vTp032ulDeaN2+u5cuX648//pCUMtjyd999p65du3pMHx8fr9q1a6tJkya5Wi8AAAAAAOBfCnQQZ9euXapVq1aG22vWrKldu3b5XClvPP7447r55ptVs2ZNFSlSRFdffbVGjhypAQMGeEwfFxenbdu2ad26dblaLwAAAAAA4F+SbTaflrzm05g4QUFBOnToUIbbDx48mOVgx9k1f/58vf/++/rggw9Up04dbd68WSNHjlRMTIyGDBmSq2UDAAAAAICCo0CPiXPttddq9uzZOnnyZLptCQkJmjVrlq699tpsVy4zjzzyiKs3Tr169TRo0CA98MADmjhxYq6WCwAAAAAAkB986okzduxYtWnTRldddZVGjhypOnXqSJK2bt2qKVOm6ODBg/rggw9ytKJpnTlzJl1vn4CAADkcjlwtFwAAAAAAFCwO2eWw2M/Favqc4FMQp2nTpvrss89055136v7775ft/58DM8aocuXK+vTTT9WsWbMcrWha3bt313PPPacKFSqoTp062rRpk1555RUNGzYsV8sFAAAAAAAFi5FNxuLjUVbT5wSfgjiS1LFjR+3cuVObNm1yDWJctWpVNWzY0BXUyU2vv/66Ro8erXvuuUdHjhxRTEyM7rzzTo0ZMybXywYAAAAAAAWHv4yJ43MQR5LsdrsaNWqkRo0a5VR9vFasWDFNmTJFU6ZMyfOyAQAAAABAwWF8COL4VU8cSdq2bZt2796tf//9V8aYdNsHDx6cnewBAAAAAAByXYHuibNr1y4NHDhQa9eu9Ri8kSSbzUYQBwAAAAAAXPaSJSVbDMok505VMuVTEOfOO+/Uli1bNGXKFLVq1UolSpTI6XoBAAAAAAAgFZ+CON9//71GjRql++67L6frAwAAAAAAkKcK9OxUUVFRioyMzOm6AAAAAAAA5Dl/GRPH7stOd911l9577z0lJ+fHE2ApTp48qZEjR6pixYoKDQ1V8+bNtW7dunyrDwAAAAAA8E/JxubTktd86olTvXp1JScnq0GDBho2bJhiY2MVEBCQLl3v3r2zXcGM3H777dq6davmzp2rmJgYvffee+rQoYO2bdumK664ItfKBQAAAAAABYu/9MSxmYyml8qE3Z51Bx6bzZZrPXXOnj2rYsWK6ZNPPlG3bt1c6xs1aqSuXbvq2WefzXDfxMRERUZGKiEhQREREem2j8/7cwAAAAAAQI4Za/lXfoqsfi8XRM5jvufEJwqOCLO07/nE03qzeI88bS+feuKsWLEip+thycWLF5WcnKyQkBC39aGhofruu+/yqVYAAAAAAMAfOWSXw+KIM1bT5wSfgjht2rTJ6XpYUqxYMTVr1kzPPPOMatWqpbJly+rDDz/UmjVrVK1aNY/7xMfHKz4+Pl/H8QEAAAAAAPBVtsJG58+f15o1a/TJJ5/o2LFjOVUnr8ydO1fGGF1xxRUKDg7Wa6+9pv79+2f4qFdcXJy2bdvG4McAAAAAAMCNMTY5LC4mHwY29jmI89prr6lcuXJq2bKlevfurV9++UWSdOzYMUVFRWnmzJk5VklPqlatqlWrVunUqVPat2+f1q5dqwsXLqhKlSq5Wi4AAAAAAChYkmXzafHV888/L5vNppEjR1raz6cgzqxZszRy5Eh16dJFM2bMUOqxkaOiotSuXTvNmzfPl6wtCwsLU7ly5fTvv//q66+/Vo8ePfKkXAAAAAAAUDCY/+9ZY3Xxxbp16zRt2jTVr1/f8r4+BXFefvll9ejRQx988IG6d++ebnujRo3066+/+pK1177++mstWbJEe/bs0dKlS3XdddepZs2auvXWW3O1XAAAAAAAULA4pxi3ulh16tQpDRgwQG+//bZKlChheX+fgjg7d+5U165dM9xesmRJHT9+3JesvZaQkKC4uDjVrFlTgwcPVsuWLfX111+rSJEiuVouAAAAAAAoWJKNzadFSpmmPPVy/vz5DMuJi4tTt27d1KFDB5/q6dPsVMWLF890IONt27YpOjrapwp5q1+/furXr1+ulgEAAAAAAAo+X3rWONPHxsa6rR87dqzGjRuXLv28efO0cePGbE245FMQ5z//+Y+mT5+ue+65J922X3/9VW+//baGDRvmc6UAAAAAAAD8wb59+xQREeF6HRwc7DHN/fffr6VLlyokJMTnsnwK4jz77LNq2rSp6tatq+7du8tms2nOnDmaOXOm/vvf/6pcuXIaM2aMz5UCAAAAAADIK74MVOxMHxER4RbE8WTDhg06cuSIGjZs6FqXnJys1atX64033tD58+cVEBCQZZk+BXFiYmK0YcMGjRo1Sh999JGMMZo7d66KFSum/v376/nnn1dUVJQvWQMAAAAAAOSp7DxO5Y327dtry5YtbutuvfVW1axZU4899phXARzJxyCOJJUpU0bvvPOO3nnnHR09elQOh0OlS5eW3e7TWMkAAAAAAAD5wmFscljsiWMlfbFixVS3bl23dWFhYSpVqlS69ZnJkYhL6dKlVbZs2WwHcFavXq3u3bsrJiZGNptNixcvdttujNGYMWNUrlw5hYaGqkOHDtqxY0e2ygQAAAAAAIWbw4eZqawGfXKCTz1xnn766SzT2Gw2jR492lK+p0+fVoMGDTRs2DD17t073fYXX3xRr732mubMmaPKlStr9OjR6ty5s7Zt25atgYEAAAAAAEDhZSQZi49TmWyWuXLlSsv7+BTE8TRVlpPNZpMxxqcgTteuXdW1a1eP24wxmjJlip566in16NFDkvTuu++qbNmyWrx4sW6++WaP+50/f95tjvbExERLdQIAAAAAAAVbbj9OlVN8ev7J4XCkWy5evKhdu3bpgQceUOPGjXXkyJEcreiePXt06NAhdejQwbUuMjJSTZs21Zo1azLcb+LEiYqMjHQtaedvBwAAAAAAhZvVR6mcS17LsVGI7Xa7KleurEmTJunKK6/Ufffdl1NZS5IOHTokSSpbtqzb+rJly7q2efLEE08oISHBtezbty9H6wUAAAAAAJAXfJ6dKjOtW7fWY489lhtZWxYcHKzg4OD8rgYAAAAAALhMOUzKYnWfvJYr84GvX78+x6caj46OliQdPnzYbf3hw4dd2wAAAAAAAKwyxubTktd86onz7rvvelx/4sQJrV69WgsXLtTtt9+erYqlVblyZUVHR2v58uW66qqrJKUMUvzTTz/p7rvvztGyAAAAAABA4eEvAxv7FMQZOnRohtuioqL0+OOPa8yYMZbzPXXqlHbu3Ol6vWfPHm3evFklS5ZUhQoVNHLkSD377LO68sorXVOMx8TEqGfPnj4cBQAAAAAAgOSQTQ6LU4xbTZ8TfAri7NmzJ906m82mEiVKqFixYj5XZv369bruuutcrx988EFJ0pAhQzR79mw9+uijOn36tO644w6dOHFCLVu21JIlSxQSEuJzmQAAAAAAoHBLNjbZ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QoIpW7asGTBggNm6dav58MMPTWhoqJk2bZorjTefKXkts7Y4ceKE6dChg/noo4/M9u3bzZo1a8w111xjGjVqlGmeBfW6eP/9983SpUvNrl27zNatW81tt91mIiIizJEjRzLMs6C2hdPChQtNgwYNTExMjJk8eXKmeRbUthgyZIjp0qWL2z3GP//8k2meBbUtdu7caUqWLGkeeeQRs3HjRrNz507zySefZFpnf/3sRO7zqyDONddcY+Li4lyvk5OTTUxMjJk4caLH9PPnzzdBQUHmwoULGebZr18/061bN7d1TZs2NXfeeacxxhiHw2Gio6PNSy+95Np+4sQJExwcbD788MPsHE62WG2Ln3/+2UgyO3fuzDDPgtwWmzZtMldccYU5ePCgV0GcgtoWbdq0Mffff7+lPAtqWzRt2tQ89dRTlvJ89NFHTZ06ddzW3XTTTaZz585el5sfrNbpqquuMsOGDcs0z4J6XYSFhZl3333XbZ+SJUuat99+O8M8C+J18fXXXxu73e4W5D1x4oSx2Wxm6dKlGebpr22RWtrvCF+v5YLYFqnt2bPH6yDOm2++aUqUKGHOnz/vWvfYY4+ZGjVquF5n9ZmS37y5d1i7dq2RZP76668M0xT068IpISHBSDLLli3LME1Bbov9+/ebK664wmzdutVUrFgxyyBOQW2LIUOGmB49eljKp6C2xU033WQGDhxoKZ+C8NmJ3OE3j1MlJSVpw4YN6tChg2ud3W5Xhw4dtGbNGo/7JCQkKCIiQoGBga51lSpV0rhx41yv16xZ45anJHXu3NmV5549e3To0CG3NJGRkWratGmG5eY2q21x+vRpzZo1S5UrV1ZsbKxrfWFpizNnzuiWW25RfHy8oqOjPeZTWNpCkt5//31FRUWpbt26euKJJ3TmzBm3fApDWxw5ckQ//fSTypQpo+bNm6ts2bJq06aNvvvuO7d82rZtq6FDh7peZ9UWvnxO5TarddqwYYM2b96s2267zW19YbguJKl58+b66KOP9M8//8jhcGjevHk6d+6c2rZt69qnMFwX58+fl81mU3BwsGt7SEiI7Ha72/ukILRFVry9lgtDW3hr6NChbu+ZNWvWqHXr1goKCnKt69y5s37//Xf9+++/rjSZtZc/SEhIkM1mU/HixV3rCuN1kZSUpOnTpysyMlINGjRwrS8sbeFwODRo0CA98sgjqlOnjsc0haUtpJRHo8qUKaMaNWro7rvv1vHjx922F4a2cDgc+uKLL1S9enV17txZZcqUUdOmTT0+flYYPzthnd8EcY4dO6bk5GSVLVvWbX3ZsmV16NAhj+mfeeYZ3XHHHW7rq1atqqioKNfrQ4cOZZqn819vy80L3rbFm2++qfDwcIWHh+urr77S0qVL3T4ECktbPPDAA2revLl69OiRYT6FpS1uueUWvffee1qxYoWeeOIJzZ07VwMHDnRLXxjaYvfu3ZJSnuEfPny4lixZooYNG6p9+/Zu41xUqFBB5cqVc73OqC0SExN19uxZy59TecFqnWbMmKFatWqpefPmbusLw3UhSfPnz9eFCxdUqlQpBQcH684779SiRYtUrVo1V/rCcF1ce+21CgsL02OPPaYzZ87o9OnTevjhh5WcnKyDBw+60heEtsiKt9dyYWgLb5UrV04VKlRwvc6oLZzbMkvjL21x7tw5PfbYY+rfv78iIiJc6wvTdfH5558rPDxcISEhmjx5spYuXer2vVFY2uKFF15QYGCgRowYkWGawtIWXbp00bvvvqvly5frhRde0KpVq9S1a1clJye70hSGtjhy5IhOnTql559/Xl26dNE333yjXr16qXfv3lq1apUrXWH87IRvArNO4n8SExPVrVs31a5d2+0vx5K0fPny/KlUPhgwYIA6duyogwcPatKkSerXr5++//57hYSESCocbfHpp5/q22+/1aZNmzJNVxjaQpJbULNevXoqV66c2rdvr127dqlq1aqSCkdbOBwOSSkDgN96662SpKuvvlrLly/XzJkzNXHiREnSu+++m291zA9nz57VBx98oNGjR6fbVhiuC0kaPXq0Tpw4oWXLlikqKkqLFy9Wv3799L///U/16tWTVDiui9KlS2vBggW6++679dprr8lut6t///5q2LCh7PZLf/8pDG3hLdriEudnaGFx4cIF9evXT8YYTZ061W1bYbourrvuOm3evFnHjh3T22+/rX79+rl6vUqFoy02bNigV199VRs3bpTNZsswXWFoC0m6+eabXf+vV6+e6tevr6pVq2rlypVq3769pMLRFs77zh49euiBBx6QJF111VX64Ycf9NZbb6lNmzaSCt9nJ3znNz1xoqKiFBAQkG5mjMOHD7s9InPy5El16dJFxYoV06JFi1SkSJFM842Ojs40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AAAAAAAAP0AQBwAAWDZ79mzZbDb9+eef+V2VTLVt21Z169bN72oAAADkCII4AADkg3Hjxslms+nYsWMet9etW1dt27aVlBKIsNlsWS7jxo2TJCUnJ2vWrFlq27atSpYsqeDgYFWqVEm33nqr1q9fn2GdrJYDAACAvBWY3xUAAACZe/LJJ3X77be7Xq9bt06vvfaaRo0apVq1arnW169fX2fPnlXv3r21ZMkStW7dWqNGjVLJkiX1559/av78+ZozZ4727t2r8uXLZ6ucOnXq6Oabb1ZwcHAuHTUAAADSIogDAMBlrmPHjm6vQ0JC9Nprr6ljx46u3jpO9957r5YsWaLJkydr5MiRbtvGjh2ryZMn50g5khQQEGDpOCCdPn1aYWFh+V0NAADgp3icCgCAAmL//v2aNm2aOnbsmC6AI6UEXR5++GGPvXCs8jQmTqVKlXT99ddr5cqVaty4sUJDQ1WvXj2tXLlSkrRw4ULVq1dPISEhatSokTZt2pQu3+3bt+vGG29UyZIlFRISosaNG+vTTz/Ndn23bdum6667TkWLFtUVV1yhF198MV2aI0eO6LbbblPZsmUVEhKiBg0aaM6cOW5pVq5cKZvN5jompz///FM2m02zZ892rRs6dKjCw8O1a9cu/ec//1GxYsU0YMAASdKOHTvUp08fRUdHKyQkROXLl9fNN9+shISEbB8rAAAouAjiAABQQHz11Ve6ePGiBg0alG912Llzp2655RZ1795dEydO1L///qvu3bvr/fff1wMPPKCBAwdq/Pjx2rVrl/r16yeHw+Ha99dff9W1116r3377TY8//rhefvllhYWFqWfPnlq0aJHPdfr333/VpUsXNWjQQC+//LJq1qypxx57TF999ZUrzdmzZ9W2bVvNnTtXAwYM0EsvvaTIyEgNHTpUr776qs9lX7x4UZ07d1aZMmU0adIk9enTR0lJSercubN+/PFH3XfffYqPj9cdd9yh3bt368SJEz6XBQAACj4epwIAoID47bffJEn16tXLtzr8/vvv+uGHH9SsWTNJUu3atdW5c2cNHz5c27dvV4UKFSRJJUqU0J133qnVq1e7HtW6//77VaFCBa1bt8411s4999yjli1b6rHHHlOvXr18qtPff/+td9991xXcuu2221SxYkXNmDFDXbt2lSRNnz5dv/32m9577z1Xb5m77rpLbdq00VNPPaVhw4apWLFilss+f/68+vbtq4kTJ7rWbd68WXv27NGCBQt04403utaPGTPGp+MDAACFBz1xAAAoIBITEyXJp2BDTqldu7YrgCNJTZs2lSS1a9fOFcBJvX737t2SpH/++Ufffvut+vXrp5MnT+rYsWM6duyYjh8/rs6dO2vHjh06cOCAT3UKDw/XwIEDXa+DgoJ0zTXXuMqWpC+//FLR0dHq37+/a12RIkU0YsQInTp1SqtWrfKpbEm6++673V5HRkZKkr7++mudOXPG53wBAEDhQxAHAIDLlM1ms5Q+IiJCknTy5MncqI5XUgdqpEsBi9jYWI/r//33X0kpj2EZYzR69GiVLl3abRk7dqyklDFrfFG+fPl0bVmiRAlX2ZL0119/6corr5Td7n5r5JyV66+//vKp7MDAwHRjEFWuXFkPPvig3nnnHUVFRalz586Kj49nPBwAAJAlHqcCACAfhISESEoZi8WTM2fOuNJ4q2bNmpKkLVu26KqrrspW/XyV0YxVGa03xkiSa2ychx9+WJ07d/aYtlq1ajlaJ2fZVmQUWEtOTva4Pjg4OF1gSJJefvllDR06VJ988om++eYbjRgxQhMnTtSPP/6YIwNPAwCAgokgDgAA+aBixYqSUsaQSdtL5cyZM9q3b586depkKc+uXbsqICBA7733Xr4ObuyLKlWqSEp5hKlDhw55Xn7FihX1yy+/yOFwuAVdtm/f7toupfTgkZRuAGJfeurUq1dP9erV01NPPaUffvhBLVq00FtvvaVnn33Wx6MAAAAFHY9TAQCQD9q3b6+goCBNnTrVbYYmKWWQ3YsXL7oG3fVWbGyshg8frm+++Uavv/56uu0Oh0Mvv/yy9u/fn62654YyZcqobdu2mjZtmg4ePJhu+9GjR3O1/P/85z86dOiQPvroI9e6ixcv6vXXX1d4eLjatGkjKSWYExAQoNWrV7vt/+abb3pdVmJioi5evOi2rl69erLb7Tp//nw2jgIAABR09MQBACAflClTRmPGjNFTTz2l1q1b64YbblDRokX1ww8/6MMPP1SnTp3UvXt3y/m+/PLL2rVrl0aMGKGFCxfq+uuvV4kSJbR3714tWLBA27dv180335wLR5R98fHxatmyperVq6fhw4erSpUqOnz4sNasWaP9+/fr559/dqWtVKmSJOnPP//MkbLvuOMOTZs2TUOHDtWGDRtUqVIlffzxx/r+++81ZcoU12DRkZGR6tu3r15//XXZbDZVrVpVn3/+uaXxer799lvde++96tu3r6pXr66LFy9q7ty5CggIUJ8+fXLkeAAAQMFEEAcAgHzy5JNPqlKlSnrjjTf09NNP6+LFi6pcubLGjx+vxx57zONYKlkpWrSovvrqK82ePVtz5szRM888ozNnzigmJkbt2rXT+++/ryuuuCIXjib7ateurfXr12v8+PGaPXu2jh8/rjJlyujqq69ON/326dOnfR4jx5PQ0FCtXLlSjz/+uObMmaPExETVqFFDs2bN0tChQ93Svv7667pw4YLeeustBQcHq1+/fnrppZdUt25dr8pq0KCBOnfurM8++0wHDhxQ0aJF1aBBA3311Ve69tprc+yYAABAwWMzvozqBwAAkE+2bdumOnXq6PPPP1e3bt3yuzoAAAB5hjFxAACAX1mxYoWaNWtGAAcAABQ69MQBAAAAAADwA/TEAQAAAAAA8AMEcQAAAAAAAPwAQRwAAAAAAAA/QBAHAAAAAADADxDEAQAAAAAA8AMEcQAAAAAAAPwAQRwAAAAAAAA/QBAHAAAAAADADxDEAQAAAAAA8AMEcQAAAAAAAPzA/wGAeabePiBE9AAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1350x362.5 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plotSpectra(radiodata, freqrange=[0, 39], pol=0, yscalelog=True,\n",
    "             vmin=5.3e-8, vmax=8.3e-7, # 3-24 GHz\n",
    "             dateview=dateviewfits,\n",
    "             t1 = \"02:00\", t2 = \"16:30\",\n",
    "             # cmap='hot',\n",
    "             cmap='rainbow',\n",
    "             # improve= True, \n",
    "             # saveplot=True\n",
    "            )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
