Installing Solarsoft on a Mac

This guide is for an installation of Solarsoft IDL on a Mac. However, the steps are valid for any Linux/Unix machine except for the final one about Launch Daemons.

Before starting

Note that I use the C shell (actually tcsh) for my Mac. If you use bash, some of the commands will be different. For example, replace 'setenv' with 'export'. If you want to change your shell, start up 'Terminal' and go to 'Preferences...'. Under 'General' you should see 'Shells open with:'. To specify tcsh you would put '/bin/tcsh' in the 'Command' box.

NEW: make sure you have 'wget' installed. Please see the instructions at the Stereo Science Center website.

In order to display graphics windows from IDL you will need a X Window System for the Mac. The standard one is XQuartz (, which was initiated by Apple but is not distributed with Macs.

Once XQuartz is installed it should automatically start when the IDL session begins (you should a new X icon appear on your taskbar). If it doesn't, Harris provides a webpage with help information.

Step 1 - basic installation

Go to the Solarsoft Installation form at LMSAL. For the drop down list 'SSW Path Suggestions' select '$HOME/ssw'.

Do not click on any of the options boxes for instruments. Instead go straight to the 'Generate installation script' button and click on it. Download the script to your computer and run it with:

> csh -f [script_name]

This will download the files for the basic SSW installation, and you should see the folder 'ssw' appear in your home directory.

Step 2 - run SSW IDL

Go to your .cshrc or equivalent file in your home directory and add the following lines to it:

setenv SSW $HOME/ssw
setenv SSW_INSTR  "chianti eis sot xrt cds sumer aia hmi eve secchi hessi xray spex iris eit trace"
setenv SSW_SITE_SETUP $SSW/site/setup
alias sidl ~/scripts/sidl

The environment variable $SSW_INSTR is the one that determines which instrument paths will be added to your SSW.

Noting the alias that you have defined, now create a new file called simply 'sidl' and put it in the directory 'scripts'. This file should contain the following lines:

source $SSW/gen/setup/setup.ssw

If you now source your .cshrc file and do:

> sidl

your Solarsoft IDL session should start up.

Step 3 - perform first update of SSW

Now we want to update SSW for the first time, which will download all the instrument paths defined by $SSW_INSTR. Go to your ~/scripts folder and create a new file called 'update_ssw'. Put the following lines in this file:

$SSW/gen/bin/ssw_batch go_update_ssw $SSW_SITE_SETUP/update_ssw.log

Now execute this script with:

> csh -f ~/scripts/update_ssw

which will download all the files for your instrument list. This should take a long time (perhaps a few hours), and you can check progress by taking a look at the file ~/ssw/site/setup/update_ssw.log.

Step 4 - setting up an automatic SSW update

The easiest way to do this is with a cron job, however Apple recommend to implement these sorts of jobs through Launch Agents and Daemons. It's possible that cron may be disabled in the future, but it still works with MacOS 10.12 (Sierra). I suggest trying the Launch Daemon first, and then using cron if it fails.

Cron job

Open the cron file by doing:

> crontab -e

and insert the line:

30 12 * * * ~/scripts/update_ssw

which tells the computer to run the script at 12:30 every day.

Launch Daemon

It's first necessary to create a property list (plist) file. The one I use for updating SSW is available here. Copy it to the directory $HOME/Library/LaunchAgents on your Mac, and rename it 'com.ssw.plist'.

Now open this file with an editor, and you should see the line:


This is pointing to the location of the script that updates SSW (see Step 3 above), and should be edited to your own upgrade script.

Further down the file you should see a tag for 'Minute' with a value of 15, and another tag for 'Hour' with a value of 12. These mean that the script will be called at 12:15. Since no other time information is specified then the script will be run every day at this time.

Further information about Launch agents and plists are available from an Apple webpage.

The script should start automatically, but you may need to restart your computer. I suggest setting the update time to shortly after your current time and then you should see the script start, e.g., by checking the ~/ssw/site/setup/update_ssw.log file.

Note: I was able to get this working on my MacBook, but it failed on my iMac. I don't have admin privileges on my iMac, so this may be the problem.

Additional information

IDL Startup file

This file is usually used to set additional environment variables associated with instruments or your personal work.

To use it, first create an file. I put mine in ~/idl_lib/ Then set the environment variable $IDL_STARTUP to point to this file in your .cshrc file:

setenv IDL_STARTUP ~/idl_lib/

After sourcing your .cshrc file IDL will now execute the startup file when it starts up. Note this is independent of Solarsoft.

Please check my example startup file to see the sorts of things it can include.

Solarsoft Database directory (SSWDB)

A number of missions have sets of auxilliary files that are not stored in the main SSW directory but instead in the Solarsoft Database directory (usually referred to as SSWDB or SDB). You may find that if you try to prep a mission data file the software will complain that some calibration file is missing. Typically this file will be in a SSWDB directory. An example of this behavior is for the SOHO/EIT instrument. Here I describe how to set up SSWDB.

Firstly, go to your .cshrc or equivalent file and add

setenv SDB $HOME/sswdb

which will tell the software where you want your SSWDB files to be located.

Now, go to the directory $SSW/site/setup and you should see a file called 'setup.sswdb_upgrade'. Open this file with a text editor and you should see a list of entries that are commented out with "#". Hopefully, amongst these entries you should see the instrument you are interested in. I've attached my sswdb_upgrade file here and you'll see that I've uncommented soho/eit, soho/cds and some hinode directories.

When you upgrade SSW (see Step 3 or Step 4 above) then you should find that your $SDB directory becomes populated with the directories you specified.

The reason SSWDB is kept separately from SSW is that the directory sizes can be very large, so you should be careful with which directories you bring over. Also note that you may not need an entire directory. For example, I bring over soho/eit/response rather than soho/eit since I only need this for prepping EIT data. Check the instrument analysis guides for details.

NOTE: I couldn't get the hinode/xrt/xrt_msu_coalign directory to download. It turns out a sub-directory can only be downloaded if it's listed in the file $SSW/gen/setup/sswdb_descriptions.dat.

Page maintained by Dr Peter R Young.