This notebook outlines the target active region in this study, which is the "nose" of the "Halloween Smile", which went viral online during the 2022 Halloween. The active region is the decayed remnant of NOAA AR 13110 and 13113 identified in the previous Carrington Rotation. Link to Figure 1.

Note: The internal hyperlink only works on GitHub Pages or nbviewer. Do not click when viewing the notebook on GitHub.

In [1]:
import sunpy
import sunpy.map
import matplotlib.pyplot as plt
from matplotlib import rcParams
import matplotlib.patheffects as path_effects
from astropy.visualization import (ImageNormalize, AsinhStretch)
import numpy as np
from astropy.coordinates import SkyCoord
import astropy.units as u
In [2]:
ms_style_dict = {'text.usetex': True, 'font.family': 'serif', 'axes.linewidth': 1.2,
                 'xtick.major.width': 1.2, 'xtick.major.size': 4,
                 'ytick.major.width': 1.2, 'ytick.major.size': 4,
                 'xtick.minor.width': 1.2, 'xtick.minor.size': 2,
                 'ytick.minor.width': 1.2, 'ytick.minor.size': 2,
                 'xtick.direction': 'in', 'ytick.direction': 'in',
                 'text.latex.preamble': r'\usepackage[T1]{fontenc}'
                 r'\usepackage{amsmath}' r'\usepackage{siunitx}'
                 r'\sisetup{detect-all=True}'}
rcParams.update(ms_style_dict)
In [3]:
aia_1019_map = sunpy.map.Map("../../src/AIA/20221019/193/lvl15/aia.lev1_euv_12s.2022-10-19T192027Z.193.image.fits")
aia_1019_map = aia_1019_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1019_map.coordinate_frame),
                                   top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1019_map.coordinate_frame))
aia_1021_map = sunpy.map.Map("../../src/AIA/20221021/193/lvl15/aia_lev15_193a_2022_10_21t19_20_28_84z_image_lev15.fits")
aia_1021_map = aia_1021_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1021_map.coordinate_frame),
                                   top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1021_map.coordinate_frame))
aia_1023_map = sunpy.map.Map("../../src/AIA/20221023/193/lvl15/aia.lev1_euv_12s.2022-10-23T192003Z.193.image.fits")
aia_1023_map = aia_1023_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1023_map.coordinate_frame),
                                   top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1023_map.coordinate_frame))
aia_1025_map = sunpy.map.Map("../../src/AIA/20221025/193/lvl15/aia.lev1_euv_12s.2022-10-25T192003Z.193.image.fits")
aia_1025_map = aia_1025_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1025_map.coordinate_frame),
                                   top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1025_map.coordinate_frame))
aia_1026_map = sunpy.map.Map("../../src/AIA/20221026/193/lvl15/aia.lev1_euv_12s.2022-10-26T192003Z.193.image.fits")
aia_1026_map = aia_1026_map.submap(SkyCoord(-1000*u.arcsec, -1000*u.arcsec, frame=aia_1026_map.coordinate_frame),
                                   top_right=SkyCoord(1000*u.arcsec, 1000*u.arcsec, frame=aia_1026_map.coordinate_frame))

Figure 1¶

(You may have to pull down to see the notebook preview of the figure)

back to top

In [4]:
fig = plt.figure(figsize=(6,7),layout='constrained')

gs = fig.add_gridspec(5,4, figure=fig,
                        hspace=0.0)

ax_1026 = fig.add_subplot(gs[0:4,:], projection=aia_1026_map)
ax_1019 = fig.add_subplot(gs[4,0], projection=aia_1019_map)
ax_1021 = fig.add_subplot(gs[4,1], projection=aia_1021_map)
ax_1023 = fig.add_subplot(gs[4,2], projection=aia_1023_map)
ax_1025 = fig.add_subplot(gs[4,3], projection=aia_1025_map)

aia_1026_map.plot(axes=ax_1026, title=None,
                  norm=ImageNormalize(vmin=np.nanpercentile(aia_1026_map.data, 8),
                                                    vmax=np.nanpercentile(aia_1026_map.data, 99.5),
                                                    stretch=AsinhStretch(0.05)))

aia_1019_map.plot(axes=ax_1019, title=None,
                  norm=ImageNormalize(vmin=np.nanpercentile(aia_1019_map.data, 8),
                                                    vmax=np.nanpercentile(aia_1019_map.data, 99.5),
                                                    stretch=AsinhStretch(0.05)))

aia_1021_map.plot(axes=ax_1021, title=None,
                    norm=ImageNormalize(vmin=np.nanpercentile(aia_1021_map.data, 8),
                                                        vmax=np.nanpercentile(aia_1021_map.data, 99.5),
                                                        stretch=AsinhStretch(0.05)))

aia_1023_map.plot(axes=ax_1023, title=None,
                    norm=ImageNormalize(vmin=np.nanpercentile(aia_1023_map.data, 8),
                                                        vmax=np.nanpercentile(aia_1023_map.data, 99.5),
                                                        stretch=AsinhStretch(0.05)))

aia_1025_map.plot(axes=ax_1025, title=None,
                    norm=ImageNormalize(vmin=np.nanpercentile(aia_1025_map.data, 8),
                                                        vmax=np.nanpercentile(aia_1025_map.data, 99.5),
                                                        stretch=AsinhStretch(0.05)))

ax_1026.text(1.,0.98,
            r'\textbf{' + \
            r'SDO/AIA 19.3\,nm\quad ' + \
            r'}' + \
            '\n' + \
            r'\textbf{' + \
            r'{}'.format(aia_1026_map.date.isot[:-4]) + \
            r'}',
            fontsize=15, color='white', transform=ax_1026.transAxes,
            ha='right', va='top', 
            path_effects=[path_effects.Stroke(linewidth=1.2, foreground='black'),
                                    path_effects.Normal()])

ax_1026.annotate(' ', (1850,2400),(2100,2750),
                 arrowprops=dict(width=13, headwidth=25,
                                 headlength=17,
                                 facecolor='#DA291C',
                                 linewidth=2.5, edgecolor='#FFFFFF'),
                )

ax_1019.set_title('2022-10-19', fontsize=12)     
ax_1021.set_title('2022-10-21', fontsize=12)
ax_1023.set_title('2022-10-23', fontsize=12)
ax_1025.set_title('2022-10-25', fontsize=12)

ax_1019.annotate(' ', (0.1,0.7), (0.3, 0.9), 
                 arrowprops=dict(width=8, headwidth=13,
                                 headlength=10,
                                 facecolor='#DA291C',
                                 linewidth=1.5, edgecolor='#FFFFFF'),
                xycoords=ax_1019.transAxes)

ax_1021.annotate(' ', (0.15,0.7), (0.35, 0.9), 
                 arrowprops=dict(width=8, headwidth=13,
                                 headlength=10,
                                 facecolor='#DA291C',
                                 linewidth=1.5, edgecolor='#FFFFFF'),
                xycoords=ax_1021.transAxes)

ax_1023.annotate(' ', (0.28,0.7), (0.48, 0.9), 
                 arrowprops=dict(width=8, headwidth=13,
                                 headlength=10,
                                 facecolor='#DA291C',
                                 linewidth=1.5, edgecolor='#FFFFFF'),
                xycoords=ax_1023.transAxes)

ax_1025.annotate(' ', (0.45,0.7), (0.65, 0.9), 
                 arrowprops=dict(width=8, headwidth=13,
                                 headlength=10,
                                 facecolor='#DA291C',
                                 linewidth=1.5, edgecolor='#FFFFFF'),
                xycoords=ax_1025.transAxes)

for ax_ in (ax_1019, ax_1021, ax_1023, ax_1025):
    ax_.axis('off')

ax_1026.set_xlabel(ax_1026.get_xlabel(), fontsize=12)
ax_1026.set_ylabel(ax_1026.get_ylabel(), fontsize=12)
ax_1026.tick_params(axis='both', labelsize=12)

plt.savefig("../../figs/ms_eis_eui_upflow/halloween_smile.pdf",dpi=300,bbox_inches='tight',pad_inches=0.1)
No description has been provided for this image
In [5]:
fig = plt.figure(figsize=(6,6),layout='constrained')
ax = fig.add_subplot(projection=aia_1026_map)

aia_1026_map.plot(axes=ax, title=None,
                    norm=ImageNormalize(vmin=np.nanpercentile(aia_1026_map.data, 8),
                                                        vmax=np.nanpercentile(aia_1026_map.data, 99.5),
                                                        stretch=AsinhStretch(0.05)))

ax.text(1.,0.98,r'\textbf{' + \
                        r"``Halloween Smiling Sun''" + \
                        r'}' + \
                        '\n' + \
                        r'\textbf{' + \
                        r'SDO/AIA 19.3\,nm\quad ' + \
                        r'}' + \
                        '\n' + \
                        r'\textbf{' + \
                        r'{}'.format(aia_1026_map.date.isot[:-4]) + \
                        r'}',
                        fontsize=20, color='white', transform=ax.transAxes,
                        ha='right', va='top', 
                        path_effects=[path_effects.Stroke(linewidth=3, foreground='black'),
                                                path_effects.Normal()])

ax.annotate(' ', (1850,2400),(2050,2700),
                    arrowprops=dict(width=10, headwidth=20,
                                    facecolor='white',
                                    linewidth=.6),
                    )

ax.set_xlabel(ax.get_xlabel(), fontsize=12)
ax.set_ylabel(ax.get_ylabel(), fontsize=12)
ax.axis('off')  

fig.savefig("../../figs/test_figs/halloween_smile_karbacher.pdf",dpi=300,bbox_inches='tight',pad_inches=0.1)
No description has been provided for this image
In [6]:
fig = plt.figure(figsize=(6,6),layout='constrained')
ax = fig.add_subplot(projection=aia_1026_map)

aia_1026_map.plot(axes=ax, title=None,
                    norm=ImageNormalize(vmin=np.nanpercentile(aia_1026_map.data, 8),
                                                        vmax=np.nanpercentile(aia_1026_map.data, 99.5),
                                                        stretch=AsinhStretch(0.05)))

# ax.text(1.,0.98,r'\textbf{' + \
#                         r"``Halloween Smiling Sun''" + \
#                         r'}' + \
#                         '\n' + \
#                         r'\textbf{' + \
#                         r'SDO/AIA 19.3\,nm\quad ' + \
#                         r'}' + \
#                         '\n' + \
#                         r'\textbf{' + \
#                         r'{}'.format(aia_1026_map.date.isot[:-4]) + \
#                         r'}',
#                         fontsize=20, color='white', transform=ax.transAxes,
#                         ha='right', va='top', 
#                         path_effects=[path_effects.Stroke(linewidth=3, foreground='black'),
#                                                 path_effects.Normal()])

# ax.annotate(' ', (1850,2400),(2050,2700),
#                     arrowprops=dict(width=10, headwidth=20,
#                                     facecolor='white',
#                                     linewidth=.6),
#                     )

ax.set_xlabel(ax.get_xlabel(), fontsize=12)
ax.set_ylabel(ax.get_ylabel(), fontsize=12)
ax.axis('off')  

fig.savefig("../../figs/test_figs/halloween_smile_karbacher_frontpage.png",dpi=300,bbox_inches='tight',pad_inches=0)
No description has been provided for this image