User Tools

Site Tools


data:data_analysis_manual:sunraster

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
data:data_analysis_manual:sunraster [2021/06/25 16:51]
eric buchlin created
data:data_analysis_manual:sunraster [2023/02/04 15:59] (current)
eric buchlin [Reading and plotting data in Python with sunraster]
Line 1: Line 1:
 ====== Reading and plotting data in Python with sunraster ====== ====== Reading and plotting data in Python with sunraster ======
  
-[[https://​docs.sunpy.org/​projects/​sunraster/​|sunraster]] is a [[https://​sunpy.org/​|sunpy]]-affiliated package designed for reading, manipulating and visualizing data taken with slit spectrograph instruments. This pages explains how sunraster can be used with SPICE data.+[[https://​docs.sunpy.org/​projects/​sunraster/​|sunraster]] is a [[https://​sunpy.org/​|sunpy]]-affiliated package designed for reading, manipulating and visualizing data taken with slit spectrograph instruments. This page explains how sunraster can be used with SPICE data.
  
 +To install sunraster, please follow the [[https://​docs.sunpy.org/​projects/​sunraster/​en/​latest/​installation.html|install instructions on the sunraster web page]]. Current SPICE files require sunraster version at least 0.4.3.
  
 +===== Read a SPICE file =====
  
 +<file python read_spice.py>​
 +from sunraster.instr.spice import read_spice_l2_fits
 +
 +# example SPICE raster file (from STP122)
 +data_path = "/​archive/​SOLAR-ORBITER/​SPICE" ​  # to be changed to your SPICE mirror
 +file_name = "​fits/​level2/​2020/​11/​20/​solo_L2_spice-n-ras_20201120T190711_V09_33554610-000.fits"​
 +file_name = f"​{data_path}/​{file_name}"​
 +
 +raster = read_spice_l2_fits(file_name)
 +# raster is a NDCollection,​ containing a data cube per window:
 +# NDCollection
 +# ------------
 +# Cube keys: ('​[STP122] O III 703 / Mg IX 706 - SH', '​[STP122] O III 703 / Mg IX 706 - LH', '​[STP122] S IV 750 - Peak', '​[STP122] Ne VIII 770 / Mg VIII 772 - SH', '​[STP122] Ne VIII 770 / Mg VIII 772 - LH', '​[STP122] Ne VIII 780 / Mg VIII 782 - SH', '​[STP122] Ne VIII 780 / Mg VIII 782 - LH', '​[STP122] S V 786 / O IV 787 - Peak')
 +# Number of Cubes: 8
 +# Aligned dimensions: [1.0 784.0 160.0] pix
 +# Aligned world physical axis types: ('​time',​ '​custom:​pos.helioprojective.lat',​ '​custom:​pos.helioprojective.lon'​)
 +
 +# Select a window
 +window = raster["​[STP122] S IV 750 - Peak"]
 +print(window)
 +# SpectrogramCube
 +# ---------------
 +# Time Period: ('​2020-11-20T19:​08:​11.469',​ '​2020-11-21T00:​26:​51.219'​)
 +# Instrument axes: ['​raster scan' '​spectral'​ '​slit'​ 'slit step']
 +# Pixel dimensions: [  1  50 784 160] pix
 +# Longitude range: [-3.59999999e+02 -1.52684942e-06] deg
 +# Latitude range: [-0.14409652 ​ 0.10439698] deg
 +# Spectral range: [7.48328253e-08 7.53106586e-08] m
 +# Data unit: adu
 +
 +print(window.wcs)
 +# WCS Keywords
 +
 +# Number of WCS axes: 4
 +# CTYPE : '​HPLN-TAN' ​ '​HPLT-TAN' ​ '​WAVE' ​ '​TIME'  ​
 +# CRVAL : -0.020917762180222222 ​ -0.019849788266444443 ​ 7.507174190000001e-08 ​ 9619.875  ​
 +# CRPIX : 80.5  392.5  25.5  1.0  ​
 +# PC1_1 PC1_2 PC1_3 PC1_4  : 0.998375086225 ​ -0.0156421343739 ​ 0.0  0.0  ​
 +# PC2_1 PC2_2 PC2_3 PC2_4  : 0.207592335445 ​ 0.998375086225 ​ 0.0  0.0  ​
 +# PC3_1 PC3_2 PC3_3 PC3_4  : 0.0  0.0  1.0  0.0  ​
 +# PC4_1 PC4_2 PC4_3 PC4_4  : -120.25 ​ 0.0  0.0  1.0  ​
 +# CDELT : 0.0011111111111111111 ​ 0.00030500000000000004 ​ 9.751700000000001e-12 ​ 1.0  ​
 +# NAXIS : 160  784  50  1
 +
 +print(window.array_axis_physical_types)
 +# [('​time',​),​ ('​em.wl',​),​ ('​custom:​pos.helioprojective.lon',​ '​custom:​pos.helioprojective.lat'​),​ ('​custom:​pos.helioprojective.lon',​ '​custom:​pos.helioprojective.lat',​ '​time'​)]
 +
 +# Data can be accessed as a numpy array:
 +print(window.data.shape)
 +# (1, 50, 784, 160)
 +</​file>​
 +
 +
 +===== Plot a SPICE file =====
 +
 +(to be run following the previous script)
 +
 +<file python plot_spice1.py>​
 +import matplotlib.pyplot as plt
 +
 +plt.figure()
 +window[0, 24, :, :​].plot() ​ # window central wavelength
 +plt.show()
 +</​file>​
 +
 +{{:​data:​data_analysis_manual:​sunraster:​raster_plot1.png|}}
 +
 +Some adjustments are still needed:
 +  * for the 4" slit and no Y-rebin, the aspect ratio is about 4
 +  * color scale
 +
 +<file python plot_spice2.py>​
 +plt.figure()
 +window[0, 24, :, :​].plot(aspect=1/​4,​ vmin=0, vmax=.3)
 +plt.show()
 +</​file>​
 +
 +{{:​data:​data_analysis_manual:​sunraster:​raster_plot2.png|}}
 +
 +Adding a color bar:
 +
 +<file python plot_spice3.py>​
 +plt.figure(figsize=(9,​6))
 +ax = window[0, 24, :, :​].plot(aspect=1/​4,​ vmin=0, vmax=.3)
 +plt.colorbar(ax.get_images()[0])
 +plt.show()
 +</​file>​
 +
 +{{:​data:​data_analysis_manual:​sunraster:​raster_plot3.png|}}
data/data_analysis_manual/sunraster.1624632716.txt.gz · Last modified: 2021/06/25 16:51 by eric buchlin