ESA Earth Home Missions Data Products Resources Applications
EO Data Access
How to Apply
How to Access
  Acknowledgements and contact
List of figures and tables
List of tables
 Additional information on the GOMOS measurements
Periods of data unavailabilities
Evolution of the IPF
List of abbreviations and acronyms
Product types and structure
Other sources of information
GOMOS-related ESA web pages
Publications (peer-reviewed publications and proceedings of conferences)
Secondary products
Scintillation and turbulence
Aerosols and PSC
Product validation
NO2 and NO3 measurements
O3 measurements
CAL/VAL activities
Retrieval and processing issues
Assimilation of GOMOS products
Specific events
GOMOS-related theses
Other technical reports by members of GOMOS SAG, ESL and QWG
Level2 processing
How to
Access tools
GOMOS products toolbox
Data selection
PCD summary in the Level2 products
Star properties
Data availability
Presentation of the GOMOS products
Description of the products
Product content
Product structure
Time availability
Data size
Presentation of the instrument and the measurements
Scientific achievements
Validation results
Measurement characteristics
Occultation obliquity
Geographical and time coverage
Star characteristics
Mission planning
Modified mission scenario since August 2005
Instrument description and measurement principle
Calibration phase and monitoring activities
Measurement technique
GOMOS Product Handbook
Content of the products
Site Map
Frequently asked questions
Terms of use
Contact us


3.4 Access tools

We present here 3 different tools allowing to read and to handle the GOMOS products.

3.4.1 The BASIC Envisat Atmospheric Toolbox (BEAT)

The Basic Envisat Atmospheric Toolbox project (BEAT) provides a set of tools for ingesting, processing, analysing and plotting data from GOMOS, MIPAS and SCIAMACHY products (and from other atmospheric instruments). It consists of several software packages, with the main packages being BEAT and VISAN. The BEAT package contains a set of libraries, command line tools, and interfaces to IDL, MATLAB, Fortran, and Python that allow to access data, to select product files according to time and/or geolocation, to select co-located data, to import and export data to and from ASCII, binary, HDF-4, HDF-EOS, HDF5, HDF5-EOS, to perform operations on spectral and spatial data (interpolation, resampling, gridding, binning, …). Command line tools (namely beatcheck, beatdump, beatfind) are also provided, for checking, viewing or exporting the content of a product, or searching for specific products within a set of files. The VISAN package contains an application that can be used to visualise and analyse the data that have been retrieved using the BEAT interface.

Its platform-independent design makes it portable on major operating systems (e.g. SunOS, Solaris, Linux, MS Windows and MacOS). It is provided as Open Source Software, under the terms and conditions of the GNU General Public License. The most recent version of BEAT (4.2.0) was released in February 2007. More information is available from the ENVISAT web site at
and from the Science & Technology web site: and

The BEAT modules can be separated into two chief layers. The first layer, called BEAT-I, consists of all modules that deal with direct access to product data. With the BEAT-I software it is possible to access each and every piece of data inside a product. The BEAT-I interface provides functions to dynamically retrieve structural information of a product, but the Data Dictionary documentation
also provides an overview of the structure descriptions for the BEAT supported products. The second layer, called BEAT-II, provides a common data structure for each of the basic classes of data: spectral readout data (for Level 1b products), vertical profile and ground-pixel data (for Level 2 products) and world map data (for Level 3 and Level 4 products). BEAT-II provides a single ingestion function that allows to easily extract data from a product file into one of the basic data classes. Unlike BEAT-I, it is not possible with BEAT-II to access all information from a product file. However, it provides other powerful functionalities such as the ingestion of multiple files at once and the ingestion of only data that match certain time, geolocation, or wavelength criteria. The overview of products supported by BEAT-II is given at:
For each product type there is a description of the kind of data that will be returned from an ingestion. Each ingestion will return a record with data, but depending on the product file and the filter options the type of the record may differ.

In the description of the product content (see 2.2.3 of this document) and in the IODD reference document, the unit and the possible conversion factor used to store the Data Sets are detailed. It is important to note that BEAT tools handle those conversion factors and thus return "decoded" data set values. For instance, all standard deviation data set records are stored in (1.e-1)% in the products. The data values returned after ingestion by BEAT tools are given in %.

A tutorial package is made available on the BEAT web site. Examples are also provided with the downloadable package. The IDL examples reported below illustrate how to get the MPH, SPH, and DSD arrays as obtained from the headers of a given product file ( Table 3.4) and how to plot the transmission data versus the nominal wavelength assignment ( Table 3.5 ) stored in a Level 1b transmission product. In Table 3.6 , we provide an IDL example of the use of BEAT-II tools, illustrating how to plot the vertical profile of O3 local density stored in a Level 2 T atmospheric and constituent product. We also provide the corresponding Matlab example for extracting and plotting the vertical profile of O3 local density ( Table 3.7).

PRO show_headers, filename

  ; open the product file. If an error occurred, report it.

  pf  = beat_open(filename)

  IF beat_is_error(pf) THEN BEGIN

    print, 'Error while opening the product: ', pf.message



  ; show the MPH and SPH.

  help, beat_fetch(pf, 'MPH'), /struct

  help, beat_fetch(pf, 'SPH'), /struct

  ; get the array of DSDs, and show info of every DSD.

  dsdarray = beat_fetch(pf, 'DSD')

  FOR i=0,n_elements(dsdarray)-1 DO BEGIN

    help, beat_fetch(dsdarray[i]), /struct


  ; close the product file.

  dummy = beat_close(pf)


Table 3.4: Example of use of the BEAT-I tools in IDL: getting the MPH, SPH and DSD arrays.

PRO gomos_level_1b, filename

  device, decomposed=0

  loadct, 27

  tvlct, [0],[0],[0], 255  ; map color #255 to black

  ; open the product file. If an error occurred, report it.

  pf = beat_open(filename)

  IF beat_is_error(pf) THEN BEGIN

    print, 'Error while opening the product: ', pf.message



  bright_limb = beat_fetch(pf, 'sph', 'bright_limb')

  star_mag    = beat_fetch(pf, 'sph', 'star_mag')

  ; fetch the data: star name, pixel-to-wavelength map, TRANSMISSION MDS.

  starname   = beat_fetch(pf, 'sph', 'star')

  lambda_map = beat_fetch(pf, 'tra_nom_wav_assignment', 0, 'nom_wl')

  trans_mds  = beat_fetch(pf, 'tra_transmission')

  ; determine start-time. This is useful for providing display of

  ; time since start-of-occultation.

  Tstart = beat_fetch(trans_mds[0], 'dsr_time')

  ; traverse the TRANSMISSION records.

  FOR i=0, n_elements(trans_mds)-1 DO BEGIN

    ; fetch time and spectrum contained in this MDSR.

    T        = beat_fetch(trans_mds[i], 'dsr_time')

    spectrum = beat_fetch(trans_mds[i], 'trans_spectra')

    ; plot the spectrum and some annotation info.

    plot, lambda_map, spectrum, xstyle = 1, ystyle = 1, yrange = [-0.2, 1.2],                $

          title  = STRING(format='(%"star: %s magnitude: %6.3f time: %s (%6.3f s)")', $

                 starname, star_mag, beat_time_to_string(T), (T-Tstart)),                            $

          xtitle = 'wavelength [nm]', ytitle = 'transmission [-]', color=255

    ; small pause for animation

    wait, 0.1


  ; close the product file.

  dummy = beat_close(pf)


Table 3.5: Example of use of the BEAT-I tools in IDL: extraction of the transmission data and the nominal wavelength assignment.

PRO plot_one_GOMOS_profile, filename


beatl2_ingestion_string       = 'species=O3'

beatl2_data = BEATL2_INGEST(filename, beatl2_ingestion_string)


; Plot height vs O3.

plot, beatl2_data.value, beatl2_data.altitude, title = 'GOMOS Level-2: Ozone Profile',   $

      xtitle = 'Local O!I3!N Density at tangent height ['+beatl2_data.value_unit+' ]',        $

      yrange=[0,75], y>


; Note that altitude is already converted to KM by the BEAT_L2_INGEST routine.

Table 3.6: Example of use of the BEAT-II tools in IDL: extraction of the O3local density profile and corresponding plot.

%Plots GOMOS local ozone profile(s) using a file dialog

[name2,path2]=uigetfile({'*.*','All files (*.*)'},'Select GOM_NL-file(s)','MultiSelect','on');



for occ=1:nofiles


    pf  = beat_open(filename2);

    o3 = beat_fetch(pf, 'NL_LOCAL_SPECIES_DENSITY', -1, 'o3');

    alt = beat_fetch(pf, 'nl_geolocation', -1, 'tangent_alt')/1000;



    hold on


title('Ozone local density','FontSize',14)

xlabel('Local density (cm^{-3})','FontSize',14)

ylabel('Altitude (km)','FontSize',14)

hold off

Table 3.7: Example of use of the BEAT-I tools in Matlab: extraction of the O3local density profile and corresponding plot.