Coronavirus (Covid-19): Latest updates and information
Skip to main content Skip to navigation

A tutorial to SolarSoftware

(still in preparation....)

This guide provides the basic knowledge in the process, visualisation and analysis of solar image data in SolarSoftware (SSW), a package of libraries written in IDL. Solarsoft is free and can be downloaded from the following link: Instructions of how to install, configure and run SSW in different operative systems are also provided.

SSW in IDL is not the only option to analyse solar data. More recently, a free and open-source solar data analysis environment in Python has been developed, SunPy.

This tutorial is written on purpose for the RadioSun-4 "Summer School" in Irktusk, 8-12 June, 2015 and it is an integrative part of the lecture:"The Sun observed from space: an overview of data analysis techniques"(click here for the pptx or pdf version of the presentation).

Part of this tutorial is mainly inspired by the "SSW practical" given by Erwin Verwichte at the "Advanced Summer School in Solar Physics 2012" in Warwick, which I personally attended, as well as by the many other guides, tutorials and examples provided in internet. Each of these is given as a reference.

Let's start!

Installing and running SSW

The instructions given here are for LINUX or Mac OSX systems.

Installing SSW requires an installation script which can be generate here: you have to specify the type of installation ("New installation" or "Upgrade existing"), the source (generally "Internet"), the path of installation, and (the most important), the missions and related instruments (for example SDO (AIA, HMI), SOHO (EIT, LASCO), STEREO (SECCHI, SCC) ), and the packages (BINARIES, CHIANTI, PFSS, FESTIVAL, MJASTEREO are suggested).

At the end, you will download the installation script, which filename is like "ssw_install[date]_[time].csh". Open a terminal and execute the script using the C-shell %csh -f scriptfile (for an example see here).

Now, we move to the configuration of SSW. First, open your terminal and create an IDL folder from your home

mkdir IDL
cd IDL
Save here (or in any other place) the sswstartup.csh file, containg the main setting commands to configure your SSW on your system.
In your terminal, return to your home, open the .bashrc file

cd ..
gedit bashrc
Add the following lines to your .bashrc file (please change path according to your preference and replace user with the correct name)
alias ssw='csh /home/user/IDL/sswstartup.csh'
The command ssw defined by alias allows to load the SSW settigs and execute the command sswidl
Before to start, let's define an file, which contains the main preference of your SSW/IDL environment. You can save it into your IDL folder.
Now, we can run SSW.
Simply, move to your IDL folder and type the command ssw in your terminal.

Note: the instructions given here refer to IDL running directly from the terminal, without any interface. Some users would like to use SSW using the GUI, usually obtained by typing in the terminal the command idlde. Simply, it is necessary to apply few modifications:

If you have an existing SSW installation and you would like to upgrade and add new instrument, you can type into an IDL session of SSW:

IDL> ssw_upgrade, /aia, /hmi, /eve/, spawn, /loud, /passive_ftp ; upgrading SDO package

Downloading data

Several space missions are included in the SSW package. In our we mainly refer to data provided the SDO/AIA mission and STEREO/SECCHI/EUVI. For a guide to analysis od SDO/AIA data, the reader is invited to refer to the official guide [1]

Looking for data. The user can search and download data several sites [2]:

I prefer to use the VSO directly from SSW to download solar data: we need to define the intial and ending start of our data, as well as the instruments and the wavelengths. Here just an example

IDL> t_start='2012-05-30 09:02:00'
IDL> t_end='2012-05-30 09:02:22'
IDL> ; we could add the keyword wave='171', for example if we like to download only 171 A data
IDL> ; or sample='60' if we would like to download data with a cadence of 60 seconds.
IDL> ; to check the vso_search syntax type
IDL> ; doc_library, 'vso_search' ; or used the interface format with the following command
IDL> ; xdoc
IDL> a=vso_search(t_start,t_end, instr='aia',space='SDO',/urls)
Records Returned : JSOC : 16/16
Records Returned : SDAC_AIA : 0/0

Let's check what is a

IDL> help, a

a is structure of 16 elements (that means 16 images are found). A structure is composed of different tagnames that define some observals

IDL> help, a, /st
** Structure VSORECORD, 17 tags, length=272, data length=268:
INFO STRING 'AIA level 1, 4096x4096 [2.000 exposure] [100.00 percentd]'
PHYSOBS STRING 'intensity'
FILEID STRING 'aia__lev1:171:1117443755'
SIZE FLOAT 66200.0
URL STRING ';record=171_1117443755-111'...

The info about the wavelength is stored in the wave variable. Let's have a look:

IDL> for i=0, 15 do print, i, '-->', a[i].time, '-->',a[i].wave
0-->{ 2012-05-30T09:02:00 2012-05-30T09:02:01}-->{ 171.000 171.000 NARROW Angstrom}
1-->{ 2012-05-30T09:02:00 2012-05-30T09:02:01}-->{ 211.000 211.000 NARROW Angstrom}
2-->{ 2012-05-30T09:02:02 2012-05-30T09:02:03}-->{ 94.0000 94.0000 NARROW Angstrom}
3-->{ 2012-05-30T09:02:03 2012-05-30T09:02:04}-->{ 335.000 335.000 NARROW Angstrom}
4-->{ 2012-05-30T09:02:07 2012-05-30T09:02:08}-->{ 1700.00 1700.00 NARROW Angstrom}
5-->{ 2012-05-30T09:02:07 2012-05-30T09:02:08}-->{ 193.000 193.000 NARROW Angstrom}
6-->{ 2012-05-30T09:02:08 2012-05-30T09:02:09}-->{ 304.000 304.000 NARROW Angstrom}
7-->{ 2012-05-30T09:02:09 2012-05-30T09:02:10}-->{ 131.000 131.000 NARROW Angstrom}
8-->{ 2012-05-30T09:02:12 2012-05-30T09:02:13}-->{ 171.000 171.000 NARROW Angstrom}
9-->{ 2012-05-30T09:02:12 2012-05-30T09:02:13}-->{ 211.000 211.000 NARROW Angstrom}
10-->{ 2012-05-30T09:02:14 2012-05-30T09:02:15}-->{ 94.0000 94.0000 NARROW Angstrom}
11-->{ 2012-05-30T09:02:15 2012-05-30T09:02:16}-->{ 335.000 335.000 NARROW Angstrom}
12-->{ 2012-05-30T09:02:17 2012-05-30T09:02:18}-->{ 1600.00 1600.00 NARROW Angstrom}
13-->{ 2012-05-30T09:02:19 2012-05-30T09:02:20}-->{ 193.000 193.000 NARROW Angstrom}
14-->{ 2012-05-30T09:02:20 2012-05-30T09:02:21}-->{ 304.000 304.000 NARROW Angstrom}
15-->{ 2012-05-30T09:02:21 2012-05-30T09:02:22}-->{ 131.000 131.000 NARROW Angstrom}

Remember that IDL counts from 0 and not 1. We are intersting to download all the available AIA wavebands. Let's download the data ranging between index 4 and 12.

IDL> sock_copy, a[4:12].url, out_dir='/Users/giuseppe/data/rainbow/', /verb

the out_dir keyword specifies the directory to store your data. Please change it according your system and preferences.

Processing AIA data

Solar images data are in FITS file format. Every mission has its own procedure to read, calibrate, process data. For example, for the SOHO/EIT data we need to call the procedure eit_prep, for STEREO/SECCHI AIA use, we can be called after read_sdo procedure.

IDL> f=file_search('/Users/giuseppe/data/radiosun/*.fits') ; find the FITS data in the given directory
IDL> help, f
F STRING = Array[9]
IDL> read_sdo, f, hdri, imgi
IDL> aia_prep, hdri, imgi, hdr, img, /normalize

aia_prep can be called directly without sdo with input the list of fits files

IDL> aia_prep, f, -1, hdr, img, /normalize

The main purpose of the aia_prep is to reading the content of the FITS file and calibrate the data, correcting the rotation axis, and rescale the AIA images to the nominal plate scale of 0.6"/pix. However, a mismatch in the AIA images is noted. aia_prep returns the header and the image array.

IDL> help, hdr, img
HDR STRUCT = -> <Anonymous> Array[9]
IMG DOUBLE = Array[4096, 4096, 9]

hdr is a structure containg several tags associated with different information, such as the number and size of axes, the wavelength, the oserving and exposure time, information related to the coordinate system, the position of the satellite, the size of the Sun. To check all, just type

IDL> help, hdr[0], /st

Plotting solar images

Coordinate system for the Sun

Creating a movie

Filtering solar images

Dynamical features of the Sun needs to be highlighted by applying some filter, in order to remove the effectof the background and foreground coronal emission. There are different ways to do that, and eeach of that depends upond the feature that we like to study: global wave, loop, CMEs, etc.

Running difference

Laplacian filter

Time distance maps

Time series analysis

3D reconctruction



[2] "Working with data from the Solar Dynamics Observatory", Daniel Brown, Stephane regnier, Mike Marsh, and Danielle Bewsher, STFC Advanced Summer School 2010 (