Exercise 2: Scripting interface

This exercise has three parts, and an optional addition for those familiar with python jupyter-notebooks:

  1. Installing the Madrigal API of your choice (python, Matlab, or IDL)

  2. Running the globalDownload script

  3. Generate and run the globalIsprint script

  4. Optional: Run python Jupyter notebook

Links and scripts to download

Madrigal site


Step 1: Download Python, Matlab, and/or IDL Remote APIs

To install the python version:

  1. Make sure you have python installed. If not, install it from python.org.

  2. The easiest way to install is: pip install madrigalWeb (you may need to be sudo on unix)
  3. If that doesn't work, install the remote python madrigal api from www.openmadrigal.org, and you will need to uncompress the file. Then you will need to run python setupMadrigalWeb.py install. If you are installing on Windows, you will need to open a command prompt, and then change directory to where you uncompressed the file. From windows the python command may be something like c:\python25\python.exe setupMadrigalWeb.py install. All the command line scripts (globalIsprint.py, madrigalPColor.py, and madrigalScatter.py) will be put into your PATH and so can be called directly from the command line.

For Matlab or IDL, go to the OpenMadrigal download page, and download one or more version. Available as *.tar.gz or *zip files. The Matlab and IDL installations assumes you have these commercial products already installed.

Matlab installation: The Matlab version is simply *.m files, so they need to be put in a standard Matlab directory.

IDL installation: The IDL version is simply *.pro files, so they need to to put in a standard IDL directory.


Step 2: Create and run a globalDownload script

globalDownload is a simple script that will allow you to download a whole series of files, in any format - ascii, Hdf5, or netCDF4. Generate the script using the CEDAR Madrigal archive web site at http://cedar.openmadrigal.org and choose Access Data, then Create a command to download multiple exps, then Download a group of files as is. You specify the time range, the instruments, the format, the programming language, and, optionally, the kinds of data and other filters.

Create a script to download all Millstone Hill ISR data (kinst=30) of data type "Gridded data fitted to a uniform spatial and temporal grid - useful for modellers" (kindat=13300) for the entire year 2010 in Hdf5 format.  Note that the script by default downloads files to the /tmp directory - change this to something else if you wish.

Step 3: Create and run a globalIsprint script

  • Go to the CEDAR Madrigal archive site, and choose Access Data, then Create a command to download multiple exps, then Download data with selected parms/filters.

  • Choose Instrument type Distributed Ground Based Satellite Receivers, then instrument World-wide GPS Receiver Network.

  • Choose any date range that covers two days between 2001 and three days in the past.
  • Choose and file format you wish (Hdf5, ascii, or netCDF4), along with programming language.
  • If you are saving the output as ascii, you can choose whether to save all data to one file, or to a directory with one file for each file analyzed.
  • Expand the Select parameters section.

  • Choose the parameters year,month,day,hour,min,sec,gdlat,glon,tec,dtec.

  • Expand the Optional filters section.

  • Choose Minimum Scallop TEC Processing as the data type.  The line of sight data is too large to analyze dynamically.

  • Add three filters:



Lower limit

Upper limit


leave blank







  • Hit the Select parameters button.

  • Choose the parameters year,month,day,hour,min,sec,gdalt,gdlat,glon,tec,dtec and hit Done.

  • Choose Continue at the bottom.

  • Select the language you are using, and hit OK.

  • Verify the script runs successfully as is. If there is a problem, compare to the scripts at the top.

Optional: Run python Jupyter notebook

For those familiar with python Jupyter notebooks, download the following notebook:


This notebook will walk you though all the calls available as part of the Madrigal API.

  • No labels