In this section you can find some resources and information for external users who are using the publicly available data on the ESA Planetary Science Archive.

 

ESA Planetary Science Archive

How to access the data

Calibrated NOMAD data is now available via the ESA Planetary Science Archive.

 

Access the ESA Planetary Science Archive

 

Type in ExoMars 2016 and click the search icon. 

Then in the menus on the left select:

  • Missions -> ExoMars 2016 -> Orbiter
  • Instruments -> NOMAD -> SO/LNO/UVIS as desired
  • Processing Level -> Level 3 || Calibrated

Any file in the list with an unlocked padlock can be downloaded. Note that you do not need a PSA account.

 

Product naming convention

PSA files are known as products. Typically each product consists of two files: an xml file, which gives a description and the format of the data, and the data file itself. Each product has a unique name, known as the product identifier.

The product identifier has a defined format for each observation type:

 SO solar occultation  nmd_cal_sc_<channel>_<start_time>-<end_time>-<altitude_type>-<observation_type>-<diffraction_order>
 UVIS solar occultation / limb / nadir  nmd_cal_sc_<channel>_<start_time>-<end_time>-<observation_type>
 LNO nadir  nmd_cal_sc_<channel>_<start_time>-<end_time>-<observation_type><pass/fail>-<diffraction_order>
 SO / LNO solar occultation fullscan  nmd_cal_sc_<channel>_<start_time>-<end_time>-<observation_type>-S
 SO / LNO solar calibration*  nmd_cal_sc_<channel>_<start_time>-<end_time>-<observation_number>-<observation_type>
 UVIS solar calibration*  nmd_cal_sc_<channel>_<start_time>-<end_time>-<observation_type>
   

 

More information on the <altitude_type> and <observation_type> letters can be found here.

*To search for solar calibration observations, you must select Processing Level -> Partially Processed

 

 

A NOMAD calibrated data product consists of 4 files, conforming to the NASA PDS4 format. An example of the four filenames for an SO channel product is given here:

  • nmd_cal_sc_so_20180421T202111-20180421T203543-a-e-134.tab (tabulated data product)
  • nmd_cal_sc_so_20180421T202111-20180421T203543-a-e-134.xml (tabulated data xml label)
  • nmd_cal_sc_browse_20180421T202111-20180421T203543-a-e-134-so.png (png browse product)
  • nmd_cal_sc_browse_20180421T202111-20180421T203543-a-e-134-so.xml (browse xml label).

 

By looking at the filename we can see that the product above contains data taken by the SO channel, measuring diffraction order 134 during an egress occultation, starting at 20:21:11 UTC on 21st April 2018 (the first solar occultation of the science phase). The <altitude_type> letter "a" tells us that this diffraction order was measured for the complete solar occultation (i.e. from above the atmosphere to the surface).

 

The browse product shows a quick summary of the data, displaying the transmittances of all recorded spectra throughout the entire occultation. Notable features include a small H2O absorption band around 3026cm-1. Most bad pixels have been successfully corrected; however some datasets still include the occasional bad pixel. The SO channel consists of 320 pixels in the spectral dimension, ranging here from 3011 to 3035cm-1 for diffraction order 134 and this specific instrument temperature. To run a simple test of your PDS reader, follow the instructions below to plot the transmittances in the data product and check that the figure matches the browse product:

  • Wavenumber data, to be plotted on the x axis, can be found in the xml group field Pixel wavenumbers (for SO) or Pixel wavelengths (for UVIS)
  • Transmittances, to be ploted on the y axis, can be found in the xml group field Pixel transmittances (for occultation data) or Pixel radiances (for UVIS nadir data).
  • The tangent altitude corresponding to the centre of the field of view is found in the fields TangentAltStart0 and TangentAltEnd0, where Start and End correspond to the acqusition start and end times respectively, and the 0 refers to the field of view point (where 0 = centre, and 1-4 define the corners of the SO channel). 

 

How to read the data

A list of available tools to read PDS4 tools can be found here: https://s2e2.cosmos.esa.int/confluence/display/PSAPUB1/Tools+for+using+PDS4+data

For Python users, the Small Bodies Node of NASA has developed a reader and a viewer for extracting and plotting the data from PDS4 products. The offical repository can be found here: https://pypi.org/project/pds4-tools/ and can be installed simply using the command pip install pds4-tools

 

To read in a NOMAD PDS4 data product, you need to place the .tab file and the related .xml file in the same directory. Then, after installing pds4_tools you can access the data (here SO data) using the following code:



import os
import pds4_tools
import matplotlib.pyplot as plt
import numpy as np

xml_path = "<path_to_xml>"


#plot so occultation
channel = "so"

#read PDS4 product (.tab and .xml) and extract the data
structures = pds4_tools.read(xml_path) #path to the .xml file
data = structures["CAL_NOMAD_SO"].data

#get a list of available data fields
available_fields = list(data.meta_data.keys())

#extract altitudes, wavenumbers and transmittances from product
tangent_altitudes = data["TangentAltAreoidStart0"]
x = data["Wavenumber, Pixel wavenumber"]
transmittances = data["Transmittance, Pixel transmittance"]


#plot x (spectral calibration of each pixel) vs transmittance for all the spectra in the file
#add a legend with the tangent altitude of each spectrum
plt.figure()
plt.title("NOMAD data: %s" %os.path.basename(xml_path))
plt.xlabel("Wavenumber (cm-1)")
plt.ylabel("Transmittance")

for tangent_altitude, pixel_x, transmittance in zip(tangent_altitudes, x, transmittances):
plt.plot(pixel_x, transmittance, label="%0.1fkm" %tangent_altitude)

plt.grid()
plt.legend()



#plot uvis nadir
channel = "uvis"

#read PDS4 product (.tab and .xml) and extract the data
structures = pds4_tools.read(xml_path) #path to the .xml file
data = structures["CAL_NOMAD_UVIS"].data

#get a list of available data fields
available_fields = list(data.meta_data.keys())

#extract altitudes, wavenumbers and transmittances from product
latitudes = data["LatStart0"]
x = data["Wavelength, Pixel wavelength"]
radiances = data["Radiance, Pixel radiance"]

radiances[radiances == -999] = np.nan #invalid values (e.g. saturated pixels) are set to -999. Change to NaN to plot correctly


#plot x (spectral calibration of each pixel) vs transmittance for all the spectra in the file
#add a legend with the tangent altitude of each spectrum
plt.figure()
plt.title("NOMAD data: %s" %os.path.basename(xml_path))
plt.xlabel("Wavelength (nm)")
plt.ylabel("Radiance")


for latitude, pixel_x, radiance in zip(latitudes, x, radiances):
plt.plot(pixel_x, radiance, label="%0.1f latitude" %latitude)

plt.grid()
plt.legend()

 

 

To run the code, set xml_path="nmd_cal_sc_so_20180421T202111-20180421T203543-l-e-149.xml" and place the files nmd_cal_sc_so_20180421T202111-20180421T203543-l-e-149.xml and nmd_cal_sc_so_20180421T202111-20180421T203543-l-e-149.tab in your working directory. The code should then generate this plot:

nomad so psa example

 

 

 

 

Experiment-To-Archive Interface Document (EAICD)

The EAICD describes the steps taken to process and calibrate the data, and a detailed description of all the fields available in the data.

 

The NOMAD EAICD is available in two formats:

 

 

Analysing the data

How to use the data

To use the SO and LNO data, firstly we suggest that you read both Neefs et al. 2015 and Liuzzi et al. 2019 to understand how the AOTF and diffraction grating work to select the desired spectral region (diffraction order). For calibration of the SO channel, we suggest you additionally read Villanueva et al. 2022 (particularly the appendix); for LNO you should read Thomas et al. 2022; for UVIS you should read Willame et al. 2022.

For those unaccustomed to the PDS4 standard, we suggest you take a look at the NASA PDS Atmospheres Node.

 

SO

To run retrievals on the SO data, it is essential that the Instrument Line Shape, AOTF shape, blaze function and temperature-dependent spectral calibration are correctly accounted for within the retrieval code. The latest model presented in the appendix in Villanueva et al. 2022; for more information on the AOTF and blaze, please see Liuzzi et al. 2019. As calibration progresses, this page will be updated with more information.

 

Known issues

This page contains a list of known issues that have been found in the data. If you find anything unusual, please check these pages first to see if the reason is already known.