{ "cells": [ { "cell_type": "code", "execution_count": 177, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#Импортируем библиотеки, если не хватает чего-то, надо доустановить (pip install или conda )\n", "import numpy as np \n", "import os\n", "import pandas as pd \n", "import datetime\n", "import drms\n", "import urllib\n", "from astropy.time import Time\n", "import astropy.units as u\n", "from astropy.coordinates import SkyCoord\n", "from astropy.io import fits\n", "import urllib, requests\n", "import matplotlib.pyplot as plt\n", "from sunpy.coordinates import frames\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "import sunpy.wcs\n", "import sunpy.map\n", "import pickle\n", "import re\n", "import matplotlib.patches as patches\n", "import logging\n", "from tg_tqdm import tg_tqdm\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'MDIdataset'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "EMAIL = 'iknyazeva@gmail.com'\n", "SAVE_PATH = 'MDIdataset'\n", "tg_token = '831964163:AAH7SoaoqWzWIcHaS3yfdmMu-H46hhtUaXw'\n", "tg_chat_id = 1147194\n", "ik_chat_id = 94616973\n", "sun_group_id = -321681009\n", "\n", "\n", "def check_dataset_directory():\n", " if not os.path.exists('MDIdataset/fragments'):\n", " os.makedirs('MDIdataset/fragments')\n", " \n", " return 'MDIdataset'\n", "check_dataset_directory()" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sunspots = pickle.load(urllib.request.urlopen('https://raw.githubusercontent.com/iknyazeva/FitsProcessing/master/sunspot_1996_2017.pkl'))\n", "sunspots.tail(5)\n", "len(sunspots[(sunspots.index.get_level_values(0) >= '2018-01-01')].groupby(level=0))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def request_mfits_by_date_MDI(moment, email=EMAIL, path_to_save='MDIdataset', verbose=False):\n", " \"\"\"\n", " Function for request fits from JSOC database\n", " moment: pd.datetime object\n", " return: filepath to the magnetogram\n", " \"\"\"\n", "\n", " filename = 'mdi.fd_m_96m_lev182.' + moment.strftime('%Y%m%d_%H%M%S_TAI.data.fits')\n", " filepath = os.path.join(path_to_save, filename)\n", " \n", " if os.path.exists(filepath):\n", " pass\n", " else:\n", " c = drms.Client(email=email, verbose=verbose)\n", " str_for_query = 'mdi.fd_M_96m_lev182' + moment.strftime('[%Y.%m.%d_%H:%M:%S_TAI]')\n", " logger.info('Magnetogram:', str_for_query, ' will be downloaded .. ')\n", " r = c.export(str_for_query, method='url', protocol='fits')\n", " logger.debug(r)\n", " r.wait()\n", " print(r.request_url)\n", " print(\"Download data and save to path\", filepath)\n", " r.download(path_to_save)\n", "\n", " return filepath\n", "\n", "def read_fits_to_map(filepath, plot_show=False):\n", " \"\"\"\n", " read fits to sunpy object and plot in logariphmic scale\n", " return \n", " mymap: sunpy object\n", " \n", " \"\"\"\n", " \n", " mymap = sunpy.map.Map(filepath)\n", " if plot_show:\n", " plt.figure(figsize = (12,12))\n", "\n", "# data = np.sign(mymap.data)*np.log1p(np.abs(mymap.data))\n", " plt.imshow(mymap.data)\n", "# plt.imshow(data, cmap = 'gray' )\n", " \n", " return mymap\n", "\n", "def region_coord_list(datestr, sunspots_df, limit_deg=45):\n", " \"\"\"\n", " Function for working with sunspot_1996_2017.pkl dataframe,\n", " return list of tuples: (datestr, NOAA number, location)\n", " used in cropping\n", "\n", " args:\n", " datestr: string for date in the format used in dataframe '2001-04-30'\n", " sunspots_df: dataframe from file sunspot_1996_2017.pkl\n", "\n", " return: list of tuples\n", " \"\"\"\n", "\n", " date_df = sunspots_df.loc[datestr]\n", " date_df.index = date_df.index.droplevel()\n", " rc_list = []\n", " for index, row in date_df.iterrows():\n", " if (abs(float(row.location[1:3]) <= limit_deg)) and (abs(float(row.location[4:])) <= limit_deg):\n", " rc_list.append((pd.to_datetime(datestr, format='%Y-%m-%d'), index, row.location))\n", "\n", " return rc_list\n", "\n", "def return_pixel_from_map(mag_map, record, limit_deg=45):\n", " '''\n", " convert lon lat coordinate to coordinate in pixel in sun map and return it\n", " '''\n", "\n", " pattern = re.compile(\"[NS]\\d{2}[EW]\\d{2}\")\n", " assert bool(pattern.match(record)), 'Pattern should be in the same format as N20E18'\n", " assert (abs(float(record[1:3]) <= limit_deg)) and (abs(float(record[4:])) <= limit_deg), 'Consider only regions between -{}, +{} degree'.format(limit_deg)\n", " if record[0] == 'N':\n", " lat = float(record[1:3])\n", " else:\n", " lat = -float(record[1:3])\n", " if record[3] == 'W':\n", " lon = float(record[4:])\n", " else:\n", " lon = -float(record[4:])\n", "\n", " hpc_coord = sunpy.wcs.convert_hg_hpc(lon, lat, b0_deg=mag_map.meta['crlt_obs'])\n", " coord = SkyCoord(hpc_coord[0] * u.arcsec, hpc_coord[1] * u.arcsec, frame=mag_map.coordinate_frame)\n", " pixel_pos = mag_map.world_to_pixel(coord) * u.pixel\n", "# pixel_pos = pixel_pos.to_value()\n", " return pixel_pos\n", "\n", "def crop_regions(mag_map, rc_list, delta=100, type_mag=None, plot_rec=False, plot_crop=False, limit_deg=45):\n", " '''\n", " Crop region by size delta and save it to disk,\n", " if plot_rec, plot rectangle of regions on disk,\n", " if plot_crop, plot only crop regions\n", " '''\n", "\n", " # data = np.sign(mag_map.data)*np.log1p(np.abs(mag_map.data))\n", " data = mag_map.data\n", "\n", " if type_mag == 'MDI':\n", " delta = 100\n", " if type_mag == 'HMI':\n", " delta = 200\n", "\n", " if plot_rec:\n", " fig, ax = plt.subplots(1, figsize=(12, 12))\n", " ax.matshow(data)\n", " plt.gray()\n", " ax.set_title('{} magnetogram at '.format(type_mag) + rc_list[0][0].strftime('%Y-%m-%d %H:%M'))\n", "\n", " for record in rc_list:\n", " pxs = return_pixel_from_map(mag_map, record[2], limit_deg).to_value()\n", " rect = patches.Rectangle((pxs[0] - 1.25 * delta, pxs[1] - delta), 2.5 * delta, 2 * delta, linewidth=3, edgecolor='r', facecolor='none')\n", " ax.add_patch(rect)\n", " ax.annotate('{}.AR'.format(type_mag) + str(record[1]), xy=(pxs[0], pxs[1]), xytext=(pxs[0], pxs[1] - 50), color='yellow', fontsize='xx-large')\n", "\n", " plt.show()\n", "\n", " submaps = []\n", " for record in rc_list:\n", " \n", " filename = '{}.AR{}.{}.fits'.format(type_mag, record[1], record[0].strftime('%Y-%m-%d_%H%M%S'))\n", " print(filename)\n", " filepath = os.path.join('{}dataset'.format(type_mag),'fragments', filename)\n", " print(filepath)\n", " print(os.path.exists(os.path.join('MDIdataset','fragments')))\n", " \n", " pxs = return_pixel_from_map(mag_map, record[2], limit_deg)\n", " bot_l = [pxs[0] - 100*1.25*u.pixel, pxs[1] - 100*u.pixel]\n", " top_r = [pxs[0] + 100*1.25*u.pixel, pxs[1] + 100*u.pixel]\n", "\n", " submap = mag_map.submap(bot_l * u.pixel, top_r * u.pixel)\n", "\n", " if plot_crop:\n", " submap.peek()\n", "\n", " try:\n", " submap.save(filepath)\n", " except:\n", " print('OUCH')\n", " \n", " submaps.append(submap)\n", "\n", " return submaps\n", "\n", "\n", "def request_batch_mfits_by_date(moment,\n", " period_of_days=30, email=EMAIL,\n", " path_to_save='dataset',\n", " verbose=False,\n", " type_mag=None,\n", " token=tg_token,\n", " chat_id=tg_chat_id):\n", " '''Request batch fits for a period of days and return:\n", " request url\n", " period of days that was apply\n", " first date of butch\n", " last date of batch\n", " '''\n", "\n", " c = drms.Client(email=email, verbose=verbose)\n", "\n", " def set_str_for_query(period_of_days=period_of_days):\n", " if type_mag == 'MDI':\n", " str_for_query = 'mdi.fd_M_96m_lev182' + moment.strftime('[%Y.%m.%d_%H:%M:%S_TAI/{}d@24h]'.format(period_of_days))\n", " filename_to_check = 'mdi.fd_m_96m_lev182.' + moment.strftime('%Y%m%d_%H%M%S_TAI.data.fits')\n", " path_to_save = 'MDIdataset'\n", " if type_mag == 'HMI':\n", " str_for_query = 'hmi.m_720s.' + moment.strftime('[%Y.%m.%d_%H:%M:%S_TAI/{}d@24h]'.format(period_of_days))\n", " path_to_save = 'HMIdataset'\n", " filename_to_check = 'hmi.m_720s.' + moment.strftime('%Y%m%d_%H%M%S_TAI.magnetogram.fits')\n", "\n", " return str_for_query, path_to_save, filename_to_check\n", "\n", " str_for_query, path_to_save, filename_to_check = set_str_for_query()\n", " print(str_for_query, path_to_save, filename_to_check)\n", " if os.path.exists(os.path.join(path_to_save, filename_to_check)):\n", " logger.warning('Files already exists. Skip downloads.')\n", " return None, period_of_days, moment, moment + datetime.timedelta(days=period_of_days), period_of_days\n", "\n", " print('Magnetogram: {} will be downloaded ... '.format(str_for_query))\n", "\n", " r = c.export(str_for_query, protocol='fits')\n", " print(r)\n", " multiplier = 1\n", " print(r.has_failed())\n", " \n", " while r.has_failed():\n", " period_of_days -= int(10 * multiplier)\n", " str_for_query, _, _ = set_str_for_query(period_of_days=period_of_days)\n", " print(str_for_query)\n", " if period_of_days < 10:\n", " break\n", " multiplier *= 1.5\n", " print('Export request has failed. Reduce number of days in it')\n", " time.sleep(2)\n", " r = c.export(str_for_query, protocol='fits')\n", "\n", " print(r)\n", " print(len(r.data))\n", "\n", " try:\n", " r.wait(retries_notfound=10)\n", " except Exception as e:\n", " print('Can not wait anymore, skip this. Get Exception: {}'.format(e))\n", "\n", " print(\"Download data and save to path {}\".format(path_to_save))\n", "\n", " with tg_tqdm(r.urls.index, token=token, chat_id=chat_id, desc='DOWNLOAD BATCH') as batch_d:\n", " for ind in batch_d:\n", " try:\n", " urllib.request.urlretrieve(r.urls.loc[ind][2], os.path.join(path_to_save, r.urls.loc[ind][1]))\n", " except Exception as e:\n", " print('Get error while trying download {}: {}'.format(r.urls.loc[ind][1], repr(e)))\n", " print('Skip this file')\n", "\n", " first_date_batch = r.urls[0:]['record'].values[0].replace('[', ' ').split()[1].split('_')[0].replace('.', '-')\n", " last_date_batch = r.urls[-1:]['record'].values[0].replace('[', ' ').split()[1].split('_')[0].replace('.', '-')\n", " len_batch = len(r.urls)\n", "\n", " return r.request_url, period_of_days, first_date_batch, last_date_batch, len_batch" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "request_batch_mfits_by_date(new_start_moment, email=EMAIL, type_mag='MDI', path_to_save=SAVE_PATH, period_of_days=40, verbose=True)" ] }, { "cell_type": "code", "execution_count": 230, "metadata": {}, "outputs": [], "source": [ "t = drms.Client(email='metya.tm@gmail.com', verbose=True)" ] }, { "cell_type": "code", "execution_count": 235, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "( T_REC CAMERA\n", " 0 2017.07.01_00:00:00_TAI 3\n", " 1 2017.07.02_00:00:00_TAI 3\n", " 2 2017.07.03_00:00:00_TAI 3\n", " 3 2017.07.04_00:00:00_TAI 3\n", " 4 2017.07.05_00:00:00_TAI 3\n", " 5 2017.07.06_00:00:00_TAI 3\n", " 6 2017.07.07_00:00:00_TAI 3\n", " 7 2017.07.08_00:00:00_TAI 3\n", " 8 2017.07.09_00:00:00_TAI 3\n", " 9 2017.07.10_00:00:00_TAI 3\n", " 10 2017.07.11_00:00:00_TAI 3\n", " 11 2017.07.12_00:00:00_TAI 3\n", " 12 2017.07.13_00:00:00_TAI 3\n", " 13 2017.07.14_00:00:00_TAI 3\n", " 14 2017.07.15_00:00:00_TAI 3\n", " 15 2017.07.16_00:00:00_TAI 3\n", " 16 2017.07.17_00:00:00_TAI 3\n", " 17 2017.07.18_00:00:00_TAI 3\n", " 18 2017.07.19_00:00:00_TAI 3\n", " 19 2017.07.20_00:00:00_TAI 3\n", " 20 2017.07.21_00:00:00_TAI 3\n", " 21 2017.07.22_00:00:00_TAI 3\n", " 22 2017.07.23_00:00:00_TAI 1\n", " 23 2017.07.24_00:00:00_TAI 3\n", " 24 2017.07.25_00:00:00_TAI 3\n", " 25 2017.07.26_00:00:00_TAI 3\n", " 26 2017.07.27_00:00:00_TAI 3\n", " 27 2017.07.28_00:00:00_TAI 3\n", " 28 2017.07.29_00:00:00_TAI 3\n", " 29 2017.07.30_00:00:00_TAI 3\n", " 30 2017.07.31_00:00:00_TAI 3\n", " 31 2017.08.01_00:00:00_TAI 3\n", " 32 2017.08.02_00:00:00_TAI 3\n", " 33 2017.08.03_00:00:00_TAI 3\n", " 34 2017.08.04_00:00:00_TAI 3\n", " 35 2017.08.05_00:00:00_TAI 3\n", " 36 2017.08.06_00:00:00_TAI 3\n", " 37 2017.08.07_00:00:00_TAI 3\n", " 38 2017.08.08_00:00:00_TAI 3\n", " 39 2017.08.09_00:00:00_TAI 3,\n", " magnetogram\n", " 0 /SUM95/D993328765/S00000/magnetogram.fits\n", " 1 /SUM94/D993330972/S00000/magnetogram.fits\n", " 2 /SUM95/D993334611/S00000/magnetogram.fits\n", " 3 /SUM92/D993340526/S00000/magnetogram.fits\n", " 4 /SUM86/D993347311/S00000/magnetogram.fits\n", " 5 /SUM89/D993353060/S00000/magnetogram.fits\n", " 6 /SUM85/D993358897/S00000/magnetogram.fits\n", " 7 /SUM87/D993364721/S00000/magnetogram.fits\n", " 8 /SUM91/D993370522/S00000/magnetogram.fits\n", " 9 /SUM90/D993376382/S00000/magnetogram.fits\n", " 10 /SUM92/D993382237/S00000/magnetogram.fits\n", " 11 /SUM99/D993388207/S00000/magnetogram.fits\n", " 12 /SUM99/D993394237/S00000/magnetogram.fits\n", " 13 /SUM85/D993396875/S00000/magnetogram.fits\n", " 14 /SUM88/D993401105/S00000/magnetogram.fits\n", " 15 /SUM93/D993403292/S00000/magnetogram.fits\n", " 16 /SUM87/D993405560/S00000/magnetogram.fits\n", " 17 /SUM84/D993407885/S00000/magnetogram.fits\n", " 18 /SUM87/D993410117/S00000/magnetogram.fits\n", " 19 /SUM96/D993414609/S00000/magnetogram.fits\n", " 20 /SUM87/D993416886/S00000/magnetogram.fits\n", " 21 /SUM84/D993419197/S00000/magnetogram.fits\n", " 22 /SUM97/D993421386/S00000/\n", " 23 /SUM88/D993424630/S00000/magnetogram.fits\n", " 24 /SUM91/D993426960/S00000/magnetogram.fits\n", " 25 /SUM84/D993927975/S00000/magnetogram.fits\n", " 26 /SUM92/D993930279/S00000/magnetogram.fits\n", " 27 /SUM85/D993932578/S00000/magnetogram.fits\n", " 28 /SUM97/D993934956/S00000/magnetogram.fits\n", " 29 /SUM85/D993937269/S00000/magnetogram.fits\n", " 30 /SUM97/D993939721/S00000/magnetogram.fits\n", " 31 /SUM97/D979843046/S00000/magnetogram.fits\n", " 32 /SUM88/D979856508/S00000/magnetogram.fits\n", " 33 /SUM87/D982548821/S00000/magnetogram.fits\n", " 34 /SUM90/D982546370/S00000/magnetogram.fits\n", " 35 /SUM92/D982548964/S00000/magnetogram.fits\n", " 36 /SUM91/D982548765/S00000/magnetogram.fits\n", " 37 /SUM86/D982548719/S00000/magnetogram.fits\n", " 38 /SUM95/D982547153/S00000/magnetogram.fits\n", " 39 /SUM84/D982549491/S00000/magnetogram.fits)" ] }, "execution_count": 235, "metadata": {}, "output_type": "execute_result" } ], "source": [ "str_for_queryHMI40d = 'hmi.m_720s[2017.07.01_00:00:00_TAI/40d@24h]'\n", "str_for_queryHMI = 'hmi.m_720s[2011.04.04_00:00:00_TAI]'\n", "# t.info('hmi.m_720s')\n", "t.query(str_for_queryHMI40d, pkeys=1, seg='magnetogram')" ] }, { "cell_type": "code", "execution_count": 236, "metadata": {}, "outputs": [], "source": [ "str_for_query = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI]'\n", "str_for_query2d = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/2d@24h]'\n", "str_for_query30d = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/30d@24h]'\n", "str_for_query100d = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/100d@24h]'\n", "str_for_query300d = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/300d@24h]'\n", "str_for_query330d = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/330d@24h]'\n", "str_for_query365d = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/365d@24h]'\n", "str_for_query400d = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/400d@24h]'\n", "# str_for_queryHMI30d = 'hmi.M_720s[2005.04.04_00:00:00_TAI/400d@24h]'\n", "# trurl = t.export(str_for_query2d, method='url')\n", "# trquick = t.export(str_for_query30d)\n", "# trfits = t.export(str_for_query30d, protocol='fits')\n", "# trquickfits = t.export(str_for_query2d, method='url_quick', protocol='fits')\n", "# trurlfits = t.export(str_for_query300d, protocol='fits')\n", "trhmi = t.export(str_for_queryHMI40d, protocol='fits')" ] }, { "cell_type": "code", "execution_count": 293, "metadata": {}, "outputs": [], "source": [ "# import urllib\n", "trhmi.wait(sleep=10, retries_notfound=10)\n", "trhmi.request_url\n", "# urllib.request.urlretrieve(trurlfits.urls.url[5], trurlfits.urls.filename[5])\n", "trhmi.has_failed()\n", "'.'.join(trhmi.urls.filename[2].split('.')[:3] + trhmi.urls.filename[2].split('.')[4:])\n", "trhmi.urls.loc[2][1]\n", "# trhmi.urls.url[4]\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with fits.open(trurlfits.urls.filename[5]) as fit_file:\n", " print(fit_file[1].header)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tm = sunpy.map.Map(trurlfits.urls.filename[5])\n", "tm.fits_header" ] }, { "cell_type": "code", "execution_count": 1270, "metadata": {}, "outputs": [], "source": [ "str_for_query1m = 'mdi.fd_M_96m_lev182[2005.04.04_00:00:00_TAI/3y]'\n", "# t.query('mdi.fd_M_96m_lev182[1998.06.25_00:00:00_TAI/300d@24h]', pkeys=1)\n", "# str_for_query\n", "r = t.export('mdi.fd_M_96m_lev182[1998.01.27_00:00:00_TAI/10d@24h]')" ] }, { "cell_type": "code", "execution_count": 1271, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 1271, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r.status" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "rc_list = region_coord_list('1996-06-04', sunspots, limit_deg=45)\n", "rc_list" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "filepath = request_mfits_by_date_MDI(rc_list[0][0], email = EMAIL, path_to_save = 'MDIdataset', verbose=True)\n", "filepath" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mymap = read_fits_to_map(filepath, plot_show=False)\n", "crop_regions(mymap, rc_list, plot_rec=False, limit_deg=45, type_mag='MDI', plot_crop=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def pr(value):\n", " import inspect\n", " callers_local_vars = inspect.currentframe().f_back.f_locals.items()\n", " print([var_name for var_name, var_val in callers_local_vars if var_val is value][0], value)\n", "\n", "rec = rc_list[0]\n", "\n", "plt.figure(figsize=(20,20))\n", " \n", "lon, lat = lonlat(mymap, rec[2], limit_deg=45)\n", "print('lon, lat', lon, lat)\n", "\n", "hpc_coord = sunpy.wcs.convert_hg_hpc(lon, lat, b0_deg=mymap.meta['crlt_obs'])\n", "print('hpc_coord', hpc_coord)\n", "coord = SkyCoord(hpc_coord[0] * u.arcsec, hpc_coord[1] * u.arcsec, frame=mymap.coordinate_frame)\n", "print('coord', coord)\n", "pixel_pos_u = mymap.world_to_pixel(coord) * u.pixel\n", "print('pixel_pos_u', pixel_pos_u)\n", "pixel_pos_u_q = mymap.world_to_pixel(coord)\n", "pr(pixel_pos_u_q)\n", "pop1 = [pixel_pos_u_q[0] - 100*1.25*u.pixel, pixel_pos_u_q[1] - 100*u.pixel]\n", "pop2 = [pixel_pos_u_q[0] + 100*1.25*u.pixel, pixel_pos_u_q[1] + 100*u.pixel]\n", "pr(pop1)\n", "pr(pop2)\n", "pixel_pos = pixel_pos_u.to_value()\n", "print('pixel_pos', pixel_pos)\n", "bot_l = [pixel_pos[0] - 100 * 1.25, pixel_pos[1] - 100]\n", "print('bot_l', bot_l)\n", "top_r = [pixel_pos[0] + 100 * 1.25, pixel_pos[1] + 100]\n", "print('top_r', top_r)\n", "\n", "\n", "pxl_wrd = mymap.pixel_to_world(pixel_pos[0]*u.pixel, pixel_pos[1]*u.pixel)\n", "print('\\npxl_wrd', pxl_wrd)\n", "\n", "bot_l_w = mymap.pixel_to_world(bot_l[0]*u.pixel, bot_l[1]*u.pixel)\n", "pr(bot_l_w)\n", "top_r_w = mymap.pixel_to_world(top_r[0]*u.pixel, top_r[1]*u.pixel)\n", "pr(top_r_w)\n", "\n", "pr(rec)\n", "mymap.submap(pop1*u.pixel, pop2*u.pixel).peek()\n", "# mymap.submap(pop1*u.pixel, pop2*u.pixel).save('MDIdataset/fragments/pidor2.fits')\n", "mymap.submap(pop1*u.pixel, pop2*u.pixel)\n", "\n", "# mymap.save()\n", "# mymap.submap(bot_l*u.pixel, top_r*u.pixel).plot()\n", "# mymap.submap(bot_l*u.pixel, top_r*u.pixel)\n", "\n", "# mymap.submap(bot_l_w, top_r_w).peek()\n", "# mymap.submap(bot_l_w, top_r_w)\n", "# hg_coord = sunpy.wcs.convert_hpc_hg(pixel_pos[0]*u, pixel_pos[1], b0_deg=mymap.meta['crlt_obs']\n", "# )\n", "# print(hg_coord)\n", "# revert_coord = SkyCoord(hg_coord[0], pixel_pos[1]*u.pixel)\n", "\n", "\n", "# pxl = return_pixel_from_map(mymap, rc_list[0][2])\n", "# (pxl[0] - 1.25 * 100, pxl[1] - 100)\n", "# # (, 2.5 * delta, 2 * delta,)\n", "# mymap.pixel_to_world(pxl[0]*u.pixel, pxl[1]*u.pixel)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def lonlat(mag_map, record, limit_deg=45):\n", " pattern = re.compile(\"[NS]\\d{2}[EW]\\d{2}\")\n", " assert bool(pattern.match(record)), 'Pattern should be in the same format as N20E18'\n", " assert (abs(float(record[1:3]) <= limit_deg)) and (abs(float(record[4:])) <= limit_deg), 'Consider only regions between -{45}, +{45} degree'.format(limit_deg)\n", " if record[0] == 'N':\n", " lat = float(record[1:3])\n", " else:\n", " lat = -float(record[1:3])\n", " if record[3] == 'W':\n", " lon = float(record[4:])\n", " else:\n", " lon = -float(record[4:])\n", " \n", " return lon, lat" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "datestr = '2003-04-10'\n", "moment = pd.to_datetime(datestr, format='%Y-%m-%d')\n", "filepath=os.path.join(SAVE_PATH, 'mdi.fd_m_96m_lev182.' + moment.strftime('%Y%m%d_%H%M%S_TAI.data.fits'))\n", "mymap = read_fits_to_map(filepath, plot_show=False)\n", "rc_list = region_coord_list(datestr, limit_deg=60)\n", "crop_regions(mymap, rc_list)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "rec[0]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with fits.open('MDIdataset/fragments/pidor.fits') as gon:\n", " plt.imshow(gon[0].data)\n", "\n", "gon2 = sunpy.map.Map('MDIdataset/fragments/pidor2.fits')\n", "gon2.peek()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import time\n", "import tqdm\n", "def date_compare(date):\n", " return date < datetime.datetime.fromtimestamp(time.mktime(time.strptime('2010-05-01', '%Y-%m-%d')))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for date, df in tqdm.tqdm_notebook(sunspots['1996-06-04':'1996-06-08'].groupby(level=0), desc=\"TTTTT\", postfix='RRRRR'):\n", " rc = region_coord_list(str(date), df)\n", " if not rc:\n", " continue\n", " if date_compare(date):\n", " filepath = request_mfits_by_date_MDI(rc[0][0], email = EMAIL, path_to_save = 'MDIdataset', verbose=True)\n", " print('\\n\\n', filepath)\n", " sun_map = read_fits_to_map(filepath, plot_show=True)\n", " crop_regions(sun_map, rc, plot_rec=True, plot_crop=True, type_mag='MDI')\n", " else:\n", " filepath = request_mfits_by_date_HMI(rc[0][0], email = EMAIL, path_to_save = 'HMIdataset', verbose=True)\n", " sun_map = read_fits_to_map(filepath, plot_show=True)\n", " crop_regions(sun_map, rc, plot_rec=True, plot_crop=True, type_mag='HMI')\n", " \n", "# os.remove(filepath)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sunspots['1996-06-04':'1996-06-20']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for row in tqdm.tqdm_notebook(sunspots.loc['1996-06-04':'1996-06-08'].iterrows(), total=len(sunspots.loc['1996-06-04':'1996-06-08'])):\n", " print(row)\n", " time.sleep(1)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "33751\n" ] }, { "data": { "text/plain": [ "2507" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# first_date_batch = trurlfits.urls[0:]['record'].values[0].replace('[', ' ').split()[1].split('_')[0].replace('.', '-')\n", "# last_date_batch = trurlfits.urls[-1:]['record'].values[0].replace('[', ' ').split()[1].split('_')[0].replace('.', '-')\n", "# print(first_date_batch)\n", "# print(last_date_batch)\n", "\n", "# sunspots[sunspots.index[0]>'2011']\n", "# sunspots[date>lastrecord]\n", "# for date, df in sunspots.loc['2011'].groupby(level=0):\n", "# date, df\n", "# sunspots.loc['2006-01-30':'2010-01-01']\n", "# sunspots[(sunspots.index.get_level_values(0) >= firstrecorddate) & (sunspots.index.get_level_values(0) <= lastrecorddate)]\n", "start_moment = sunspots.index.get_level_values(0)[0]\n", "is_end = len(sunspots[(sunspots.index.get_level_values(0) >= start_moment)])\n", "print(is_end)\n", "new_start_moment = start_moment + datetime.timedelta(days=5230)\n", "moment = sunspots[(sunspots.index.get_level_values(0) > new_start_moment)].index.get_level_values(0)[0]\n", "moment\n", "sunspots[(sunspots.index.get_level_values(0) >= moment)].groupby(level = 0)\n", "# len(sunspots.groupby(level = 0))" ] }, { "cell_type": "code", "execution_count": 1025, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1996-06-04 00:00:00\n" ] } ], "source": [ "moment = sunspots.index.get_level_values(0)[0]\n", "period_of_days = 300\n", "str_for_query = 'hmi.m_720s.' + moment.strftime('[%Y.%m.%d_%H:%M:%S_TAI/{}d@24h]'.format(period_of_days))\n", "str_for_query\n", "\n", " " ] }, { "cell_type": "code", "execution_count": 960, "metadata": {}, "outputs": [], "source": [ "def determine_type_str_query(period_of_days=period_of_days):\n", " str_for_query = 'mdi.fd_M_96m_lev182' + moment.strftime('[%Y.%m.%d_%H:%M:%S_TAI/{}d@24h]'.format(period_of_days))\n", " return str_for_query" ] }, { "cell_type": "code", "execution_count": 966, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Export request has failed. Reduce number of days in it\n" ] } ], "source": [ "period_of_days = 365\n", "str_for_query = determine_type_str_query(period_of_days)\n", "multiplier = 1\n", "while tr.has_failed():\n", " print('Export request has failed. Reduce number of days in it')\n", " period_of_days -= 10 * multiplier\n", " multiplier *= 2\n", " str_for_query = determine_type_str_query(period_of_days=period_of_days)\n", " tr = t.export(str_for_query, protocol='fits')" ] }, { "cell_type": "code", "execution_count": 1017, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'mdi.fd_m_96m_lev182.19960614_000000_TAI.data.fits'" ] }, "execution_count": 1017, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tr.urls.loc[10][1]" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 1116, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "00:10 in total: 100%|0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000| 10/10 [00:10<00:00, 1.01s/it]\n" ] } ], "source": [] }, { "cell_type": "code", "execution_count": 410, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
number_of_sssizeclasslocationmagn_class
dateregion
2010-07-04110841150HSXS19W19A
2010-07-05110841110HSXS19W32A
2010-07-06110841100HSXS19W46A
11086210BXON18W53B
2010-07-07110841110HSXS19W59A
\n", "
" ], "text/plain": [ " number_of_ss size class location magn_class\n", "date region \n", "2010-07-04 11084 1 150 HSX S19W19 A\n", "2010-07-05 11084 1 110 HSX S19W32 A\n", "2010-07-06 11084 1 100 HSX S19W46 A\n", " 11086 2 10 BXO N18W53 B\n", "2010-07-07 11084 1 110 HSX S19W59 A" ] }, "execution_count": 410, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "test_map = sunpy.map.Map('HMIdataset/fragments/HMI.2010-07-04_000000.AR11084.fits')\n", "test_map.peek()\n", "sunspots.loc['2010-07-04':'2013-01-01'].head()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "jupytext": { "text_representation": { "extension": ".md", "format_name": "markdown", "format_version": "1.0", "jupytext_version": "0.8.6" } }, "kernelspec": { "display_name": "Python 3", "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }