Skip to content

Automated Command Line Plotting Tool : GSoC 2022

Sreelakshmi Jayarajan edited this page Nov 24, 2022 · 3 revisions

Student : Sreelakshmi Jayarajan

Organisation : Python Software Foundation

Sub-Organisation : Mission Support System (MSS)

Mentors : Reimar Bauer, Jörn Ungermann, Christian Rolf, Sonja Gisinger

You can checkout my weekly blogs on python-gsoc website and my complete proposal !

Project Overview


Mission Support System (MSS) is a software that simplifies the process for planning a scientific flight in which parameters of the atmosphere are measured. The research aircrafts typically carry a comprehensive scientific payload composed of data acquisition instruments by different companies and research institutions. The measurement of relevant parameters, for example the chemical composition of trace gases, temperature or aerosol particle characteristics, are needed to improve the scientific understanding of the processes in the atmosphere. This is of significant importance for the understanding for example of climate change or the recovery of the ozone hole.

In atmospheric research flight planning, one task that users have to perform is retrieving a set of plots for several flights or hundreds of time-steps during post-campaign analysis or when compiling an overview over flights of a campaign during hindcasting. Another task is retrieving similar plots of the same parameters such as map section, level etc., on a daily basis. Both of these tasks cannot be accomplished in an efficient manner using the current MSS UI.

In this project, a feature would be built to let users download a number of plots in Jupyter notebooks and user scripts in an automated fashion according to the given settings. A CLI tool would also be provided for the same.

Features Implemented


  • Created an automated plotting module (plot.py)
    • Refactoring of existing plotting related modules to separate functionality from the QT-based GUI
    • Create a plotting module which accesses the non-qt classes and non-interactor classes and does the plotting
  • Built a CLI tool which uses the automated plotting module. It satisfies 3 use cases
    • Creating a daily "standard set" of plots with/without an actual flight track, e.g., for daily morning briefings
    • Creating a "standard set" of plots for all actual flights of a campaign
    • Creating a "standard set" of plots with/without an actual flight track from a start time to end time with a particular interval.
  • Wrote tests and documentation for the CLI tool

Development Work


The following is a table for all the Pull Requests that I have requested into the branch GSOC2022-SreelakshmiJayarajan.

   Code Contributions   Link to the relevant PR
Creating Plot module and refactoring QT based Classes https://github.com/Open-MSS/MSS/pull/1550
Refactoring of interactor classes, updating Plot module, https://github.com/Open-MSS/MSS/pull/1570
CLI tool, documentation and testing https://github.com/Open-MSS/MSS/pull/1598

Final Outcomes


The final outcomes of my project is as follows:

  • Users can retrieve a set of plots for several flights or hundreds of time-steps during post-campaign analysis or when compiling an overview over flights of a campaign during hindcasting.
  • Allows users to retrieve similar plots of the same parameters such as map section, level etc., on a daily basis.
  • A refactored set of classes which can be used for plotting purposes without involving QT-based GUI and Interactive functionalities.
  • A Plot module which accesses the necessary functions and does the plotting in top, side and linear view.

Future Scopes


This project has the following future scopes:

  • GUI enhancement and integrating with MSS UI

After building the CLI tool, a GUI will be built and integrated with it. The user can enter the path to the config file and optionally enter custom parameters to overwrite default parameters, instead of passing arguments in the CLI tool. The GUI would contain a section to configure the set of layers, a dropdown to set time steps and text fields for the rest of the parameters. The GUI would reuse the parts of the refactored MSS GUI, which would lead into the next package. The GUI will be accessed as follows:

msui autoplot --gui

This feature would also be integrated with MSS UI, where it would be added as a menu entry in the main menu to let the users access the GUI tool for automated plotting.

  • Add support for multilayering from different WMS servers

The autoplot module would be extended to include the multi layering feature from different WMS servers in which the user can specify a number of layers in the config file along with the server urls and other parameters to download a multilayered set of plots according to the given settings.

  • Add tutorials and extend documentation

Tutorials would be added for the users to quickly understand how to use the feature along with extending the documentation.

Acknowledgements


Taking part in Google Summer of Code 2022 was an amazing experience for me. I got to build and learn so much throughout the journey. I learnt best coding practices, debugging skills, learnt to think and communicate well. Looking back I feel overwhelmed and happy that I was able to do it. It has been challenging and fun at the same time. Moreover It's really exciting to know that the CLI tool would be used by the people using MSS! All this wouldn't have been able to do this without the help and support of my mentors. So, I am really thankful to all my mentors - Reimar Bauer, Jörn Ungermann, Christian Rolf and Sonja Gisinger. I would like to appreciate and admire them for patiently reviewing my code, giving me constructive suggestions, and guiding me throughout the program. They were always there for me whenever I came across any blockers or got stuck somewhere and I really enjoyed the weekly meetings! It was a wonderful experience working with Python Software Foundation and building things for the Mission Support System. Lastly, I want to thank Google for providing me and many others this wonderful opportunity. This program has strengthened my love towards Open Source much more. I would always try to be an indelible part of the MSS community.