GRAS PPF

Position: Senior Software Developer
Schedule: Nov. 2015 - Apr. 2016
Client: EUMETSAT
Team size: 3 people

Project description

The GRAS instrument in METOP
The GNSS (Global Navigation Satellite System) Receiver for Atmospheric Sounding (GRAS) is one of the key payloads onboard the METOP satellites responsible for providing stratospheric and tropospheric temperature and humidity profiles. The GRAS PPF is the software responsible for processing the raw data received from the satellites at the control center. The main target of this project was to help completing the port of the Full Spectrum Inversion (FSI) algorithm from Python to C++ and integrate it with the default “wave optics” processing pipeline already in place.

Check the Official EUMETSAT GRAS page for more details on the satellite payload.
The GRAS principle

Responsibilities & Achievements

  • I implemented some of the core methods in the existing classes skeletons using the models available in python.
  • I generated unit tests in Boost Test framework to validate the isolated behavior of the methods mentioned above.
  • I generated bindings in python for the classes mentioned above and used them in acceptance tests written in nosetest to compare the C++ code with Python.
  • I updated the python test procedure to allow more granularity in the validation of the C++ code base: with this improvement, instead of comparing the C++/python results only after a complex and long computation cycle, this cycle could be broken into smaller steps and the python inputs for each step could be injected into the C++ system before moving to the next comparison.

⇒ With the improvements on the test process, the acceptance tests could be used efficiently to detect mismatches in the C++ re-implementation and thus reduce the time needed for debugging cycle. During the project schedule, we provided about 80% of the implementation required for the FSI support, which matched the expectation of EUMETSAT and thus, this project was closed successfully.

Skills & Techs

  • C++
  • AIX (eg. xlC/xlf compilers)
  • Python
  • nosetest
  • Boost Test Framework
  • Gitlab
  • Boost Python framework
  • Scrum methodology

Images