EOVSA Data products

From EOVSA Wiki
Revision as of 14:48, 13 April 2020 by Sjyu (Talk | contribs)

Jump to: navigation, search

Welcome to the EOVSA data products documentation. EOVSA observes the full disk of the Sun at all times when the Sun is >10 degrees above the local horizon, which is season dependent and ranges from 7-12 hours duration centered on 20 UT. During January, coverage will be 16-24 UT daily, 7 days/week. Like any radio interferometer, the fundamental measurement for imaging is the correlated amplitude and phase between each pair of antennas, which is called a “complex visibility.” EOVSA’s 13 antennas form 78 such visibilities at any frequency and instant of time, i.e. 78 measurements of the spatial Fourier transform of the solar brightness distribution. EOVSA records these visibilities at 451 science frequency channels each second, in four polarization products, as well as additional total flux measurements from each individual antenna. These data are then processed through a pipeline processing system (the block diagram in Figure 1 shows the data flow in the pipeline). One of the outputs of the pipeline is a visibility database in a widely used open-standard format called a CASA measurement set (or “ms”; CASA is the Common Astronomy Software Applications package used by many modern interferometer arrays). Many different CASA ms’s can be created from the raw visibility data by selecting time ranges, frequencies, integration times, polarizations, and so on.

EOVSA pipeline block diagram/flow chart

We deliver the radio interferometry data on the following three levels:

Level 0 - Raw visibility data from the instrument

As outlined in Figure 1, the real-time pipeline creates raw data products in the left-hand column (labeled Level 0). This includes observations of cosmic sources for phase calibration, and gain and pointing observations required for total power calibration.

raw full resolution visibility database

EOVSA full resolution visibility database can be retrieved from the following page:


raw 1-min averaged visibility database

EOVSA 1-min averaged visibility database can be retrieved from the following page:


Level 1 - calibrated visibility data

After applying calibration and other preliminary processing to level 0 data, we create the CASA ms’s in the second column in Figure 1 ( labeled Level 1). These visibility data have all of the required content to produce Level 2 images and spectrogram data in standard FITS format. We provide a set of standard ms’s for each day (red boxes in Figure 1), for use by researchers who wish to start with visibility data.

CASA Event ms

EOVSA event data products in boxes with dashed outlines in Figure 1 will typically be available within 30 days after they are taken.

Link: TBD.

CASA 1-min averaged ms

EOVSA 1-min averaged visibility data in CASA ms format can be retrieved from the following page:


Level 2 - Images and spectrogram data in standard FITS format

Most users, however, will prefer to work with spectrogram (frequency-time) and image data, which are also outputs of the pipeline system shown in Figure 1 (orange boxes). Spectrograms are provided as standard FITS tables containing the frequency list, list of times, and data in both total power and a sum of amplitudes over intermediate-length baselines (cross power). Likewise, image data products are in FITS format with standard keywords and are converted into the Helioprojective Cartesian coordinate system compatible with the World Coordinate System (WCS) convention, along with correct registration for the spatial, spectral, and temporal coordinates. Both the spectrogram and image data products are calibrated properly and have physical radio intensity units (sfu for spectrograms and brightness temperature for radio images).

List of Level 2 data products

category data product name
Dynamic Spectrum All-day TP spectrum EOVSA_TPall_yyyymmdd.fts
All-day XP spectrum EOVSA_XPall_yyyymmdd.fts
Synoptic 1.4 GHz image eovsa_yyyymmdd.spw00-01.tb.disk.fits
Synoptic 3.0 GHz image eovsa_yyyymmdd.spw02-05.tb.disk.fits
Synoptic 4.5 GHz image eovsa_yyyymmdd.spw06-10.tb.disk.fits
Synoptic 6.8 GHz image eovsa_yyyymmdd.spw11-20.tb.disk.fits
Synoptic 10.2 GHz image eovsa_yyyymmdd.spw21-30.tb.disk.fits
Synoptic 13.9 GHz image eovsa_yyyymmdd.spw31-43.tb.disk.fits

Getting level 2 data

Eovsa browser.jpg

EOVSA Level 2 data products can be retrieved with the following steps:

  • Browse to the date of interest.
  • Click "synoptic fits" button next to the calendar tool.
  • Select the data product based on the names listed in the table above.

Reading level 2 data


SunCASA Installation

All-day TP spectrum

Daily total power full-Sun-integrated spectrogram calibrated in solar flux units are provided at 451 frequencies (134 frequencies prior to 2019 Feb 22) and 1 s time resolution.

To read a spectrogram file in Python using the suncasa library:

from astropy.io import fits
import astropy.table
from astropy.time import Time
import matplotlib.pyplot as plt
import matplotlib.colors as colors
from matplotlib.dates import DateFormatter
import numpy as np
from mpl_toolkits.axes_grid1 import make_axes_locatable

def get_dspec(filename, doplot=False, vmax=None, vmin=None, norm=None, cmap=None):
    Read EOVSA Dynamic Spectrum FITS file <filename> and return a spectrogram dictionary.
    Optionally show an overview plot if doplot switch is set.

    >>> from suncasa.eovsa import eovsa_dspec as ds
    >>> from astropy.time import Time
    >>> filename='EOVSA_TPall_20170713.fts'
    >>> s = ds.dspec(filename,doplot=True,vmax=200)
    ## To access the data in the spectrogram object, use
    >>> filename='EOVSA_TPall_20170713.fts'
    >>> s = ds.dspec(filename,doplot=True,vmax=200)
    >>> spec = s['spectrogram']                    ## (Array of amplitudes in SFU, of size nfreq,ntimes)
    >>> fghz = s['spectrum_axis']                  ## (Array of frequencies in GHz, of size nfreq)
    >>> tim = Time(s['time_axis'], format='mjd')   ## (Array of UT times in astropy.time object, of size ntimes)

    filename :   filename of the spectrogram fits file

    doplot : Boolean, optional

    vmin, vmax : scalar, optional
    When using scalar data and no explicit norm, vmin and vmax
    define the data range that the colormap covers. By default,
    the colormap covers the complete value range of the supplied data.
    vmin, vmax are ignored if the norm parameter is used.

    norm : `matplotib.colors.Normalize` or str, optional
    The Normalize instance used to scale scalar data to the [0, 1]
    range before mapping to colors using cmap. By default, a linear
    scaling mapping the lowest value to 0 and the highest to 1 is used.
    This parameter is ignored for RGB(A) data.

    cmap : `matplotib.colors.Colormap` or str
    A colormap instance or the name of a registered colormap.

    spectrogram : dictionary

    hdulist = fits.open(filename)
    spec = hdulist[0].data
    fghz = np.array(astropy.table.Table(hdulist[1].data)['sfreq'])
    tim = astropy.table.Table(hdulist[2].data)
    tim = Time(np.array(tim['mjd']) + np.array(tim['time']) / 24. / 3600 / 1000, format='mjd')
    timplt = tim.plot_date
    ntim = len(timplt)
    nfreq = len(fghz)
    if doplot:
        fig, ax = plt.subplots(figsize=(9, 4))
        # if vmax is None:
        #     vmax = np.nanmax(spec)
        # if vmin is None:
        #     vmin = 0.1
        # if norm is None:
        #     norm = colors.Normalize(vmax=vmax, vmin=vmin)
        pcm = ax.pcolormesh(timplt, fghz, spec, norm=norm, vmax=vmax, vmin=vmin, cmap=cmap)
        ax.set_ylim(fghz[0], fghz[-1])
        ax.set_xlim(tim[0].plot_date, tim[-1].plot_date)
        ax.set_xlabel('Time [UT]')
        ax.set_ylabel('Frequency [GHz]')
        ax.set_title('EOVSA Dynamic Spectrum for ' + tim[0].datetime.strftime('%Y-%m-%d'))
        divider = make_axes_locatable(ax)
        cax_spec = divider.append_axes('right', size='1.5%', pad=0.05)
        clb_spec = plt.colorbar(pcm, ax=ax, cax=cax_spec, label='Flux density [sfu]')

        def format_coord(x, y):
            col = np.argmin(np.absolute(timplt - x))
            row = np.argmin(np.absolute(fghz - y))
            if col >= 0 and col < ntim and row >= 0 and row < nfreq:
                timstr = tim[col].isot
                flux = spec[row, col]
                return 'time {0}, freq = {1:.3f} GHz, flux = {2:.2f} sfu'.format(timstr, y, flux)
                return 'x = {0}, y = {1:.3f}'.format(x, y)

        ax.format_coord = format_coord
    return {'spectrogram': spec, 'spectrum_axis': fghz, 'time_axis': tim.mjd}

The code is available in suncasa.


TODO: change the example in py section to 13-jul-17. add software installation from zero. add return in the eovsa_dspec. add sunpy/radiospectra after that.

The following code will read the spectrogram file in IDL:

function dspec,filename,doplot=doplot
  ; Read EOVSA Dynamic Spectrum FITS file <filename> and return a spectrogram object.
  ; Optionally show an overview plot if doplot switch is set
  ; Usage:
  ;    s = dspec(<filename>)            ; Returns spectrogram object
  ;    s = dspec(<filename>,/doplot)    ; Plots spectrum and returns spectrogram object
  ; To access the data in the spectrogram object, use
  ;    spec = s.get(/spectrogram)    (Array of amplitudes in SFU, of size ntimes, nfreq)
  ;    fghz = s.get(/spectrum_axis)  (Array of frequencies in GHz, of size nfreq)
  ;    ut = s.set(/time_axis)        (Array of UT times in anytim format, of size ntimes)
  spec = mrdfits(filename,0)
  freq = mrdfits(filename,1)
  time = mrdfits(filename,2)
  fghz = freq.sfreq
  ut = anytim(time)
  s = spectrogram(spec,ut,fghz)
  if doplot then begin
    ; Find min and max of data from 5% to 95% of sorted array (eliminates outliers)
    sarr = sort(spec)
    dlim = minmax(spec[sarr[n_elements(sarr)*0.05:n_elements(sarr)*0.95]])
    ; Set drange with margin factor of 2 on low end and 5 on high end
    s.plot,/log,/xsty,/ysty,ytitle='Frequency [GHz]',charsize=1.5

Synoptic 6-band Images

Full disk images at 6 selected frequency bands centered at 1.4, 3.0, 4.5, 6.8, 10.2, and 13.9 GHz are provided once per day, calibrated in brightness temperature.
Synoptic image.jpg

10-min 6-band Images

Event images