GithubHelp home page GithubHelp logo

open-mss / mss Goto Github PK

View Code? Open in Web Editor NEW
55.0 3.0 68.0 11.91 MB

A QT application, a OGC web map server, a collaboration server to plan atmospheric research flights.

Home Page: https://open-mss.github.io

License: Apache License 2.0

Batchfile 0.01% Shell 0.20% Python 99.29% HTML 0.45% Mako 0.05%
mission-support-system flight-planning python conda-forge

mss's Introduction

Mission Support System Usage Guidelines

Welcome to the Mission Support System software for planning atmospheric research flights. This document is intended to point you into the right direction in order to get the software working on your computer.

Installing MSS

Automatically

  • For Windows, go here
    • Right click on the webpage and select "Save as..." to download the file
    • Double click the downloaded file and follow further instructions
      • For fully automatic installation, open cmd and execute it with /Path/To/Windows.bat -a
  • For Linux/Mac, go here
    • Right click on the webpage and select "Save as..." to download the file
    • Make it executable via chmod +x LinuxMac.sh
    • Execute it and follow further instructions ./LinuxMac.sh
      • For fully automatic installation, run it with the -a parameter ./LinuxMac.sh -a

Manually

As Beginner start with an installation of Miniforge Get miniforge for your Operation System

You must install mss into a new environment to ensure the most recent versions for dependencies (On the Anaconda Prompt on Windows, you have to leave out the 'source' here and below).

  $ mamba create -n mssenv
  $ mamba activate mssenv
  (mssenv) $ mamba install mss python

For updating an existing MSS installation to the current version, it is best to install it into a new environment. If an existing environment shall be updated, it is important to update all packages in this environment.

  $ mamba activate mssenv
  (mssenv) $ msui --update

It is possible to list all versions of mss available on your platform with:

    $ mamba search mss --channel conda-forge

For a simple test you can setup a demodata wms server and start a msolab server with default settings

  (mssenv) $ mswms_demodata --seed
  (mssenv) $ export PYTHONPATH=~/mss
  (mssenv) $ mswms &
  (mssenv) $ mscolab start &
  (mssenv) $ msui

Current release info

Conda Version DOI JuRSE Code Pick Conda Platforms DOCS Conda Recipe Conda Downloads Coverage Status

Publications

Please read the reference documentation

Bauer, R., Grooß, J.-U., Ungermann, J., Bär, M., Geldenhuys, M., and Hoffmann, L.: The Mission Support System (MSS v7.0.4) and its use in planning for the SouthTRAC aircraft campaign, Geosci. Model Dev., 15, 8983–8997, https://doi.org/10.5194/gmd-15-8983-2022, 2022.

Rautenhaus, M., Bauer, G., and Doernbrack, A.: A web service based tool to plan atmospheric research flights, Geosci. Model Dev., 5, 55-71, https://doi.org/10.5194/gmd-5-55-2012, 2012.

and the paper's Supplement (which includes a tutorial) before using the application. The documents are available at:

For copyright information, please see the files NOTICE and LICENSE, located in the same directory as this README file.

When using this software, please be so kind and acknowledge its use by citing the above mentioned reference documentation in publications, presentations, reports, etc. that you create. Thank you very much.

mss's People

Contributors

ahelii16 avatar ambiguousphoton avatar andreas-h avatar aravindm711 avatar crolf avatar debajyotidasgupta avatar dependabot[bot] avatar funnelferry avatar gisi90 avatar jatin2020-24 avatar jgrooss avatar joernu76 avatar marilyth avatar matrss avatar myrausman avatar nilupulmanodya avatar plant99 avatar prayasj avatar preetam-das26 avatar reimarbauer avatar risehr avatar rohit2p avatar rootxrishabh avatar sergeleon avatar sratslla avatar swsrkty avatar tanish0019 avatar veb7vmehra avatar withoutwaxaryan avatar workaryangupta avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

mss's Issues

Simplification for adding or removing CLaMS parameters

Original report by Jens-Uwe Grooß (Bitbucket: grooss, GitHub: grooss).


As it is written now, the chemical species or parameters in the CLaMS
output are repeated seven times for

  • defining the data_organisation table in class CLAMSDataAccess
  • define the Netcdf variables used in CFVariableIdentifier
  • define the default value range in horizontal and vertical plots
  • create the classes "HS_ChemStyle_PL_xxx" and "VS_ChemStyle_PL_xxx"

It would be easier to read these from one location with the syntax like

#!python


clams_config = {
 u'CO': {'levels': {50: (0., 20),
                    500: (0, 200.0)},
         'limits': (0., 200.),
         'units': u'ppbv',
         'cfidentifier': 'CO_volume_mixing_ratio',
         'long_name': 'CO_volume_mixing_ratio',
	}
...
}

This construct should be known everywhere the loops over the CLaMS
species are needed. It should rather be a configuration file than a
python programme. With this it should be very easy to add or remove
chemical parameters.

Potentially the information besides the limits/levels could be also
derived from the NetCDF files this would make it even easier to
add/remove parameters.

Current locations where CLaMS chemical species are incorporated:

mslib/mss_config.py, line 456ff

#!python

    for ent in [u'CH4', u'CO', u'F11', u'F12', u'H2O', u'N2O',
        _data_organisation_table[ent + "_volume_mixing_ratio"] = {"pl": "PRESSURE_LEVELS"}



mslib/netCDF4tools.py, line 348ff

#!python


for ent in [u'CH4', u'CO', u'F11', u'F12', u'H2O', u'N2O',
            u'O3', u'SEA', u'ECH', u'NIN', u'SIN', u'ICH']:
     CFVariableIdentifier[ent + "_volume_mixing_ratio"] = [
        ("var_name", ent),
        ("standard_name", ent),
        ("long_name", ent + "_volume_mixing_ratio")
     ]


mswms/mpl_hsec_styles.py: line 525 ff

#!python

CLAMS_CONFIG = {
[...]
u'CO': {'levels': {50: (0., 20),
                    500: (0, 200.0)},
          'units': u'ppbv'},
[...]
}

line 790ff:

#!python

for ent in [u'CH4', u'CO', u'F11', u'F12', u'H2O', u'N2O',
            u'O3', u'SEA', u'ECH', u'NIN', u'SIN', u'ICH']:
        globals()["HS_ChemStyle_PL_" + ent] = make_clams_chem_class(ent)
 

mswms/mpl_vsec_styles.py: line 124ff:

#!python

CLAMS_CONFIG = {
[...]
u'CO': {'limits': (0., 150.), 'units': u'ppbv'},
[...]
}


mswms/mss_wms_settings.py, line 58ff:

#!python

for ent in [u'CH4', u'CO', u'F11', u'F12', u'H2O', u'N2O',
            u'O3', u'SEA', u'ECH', u'NIN', u'SIN', u'ICH']:
    register_horizontal_layers.append(
        (getattr(mpl_hsec_styles, "HS_ChemStyle_PL_" + ent), ["clams_INDIA"])
    )

line 87ff:

#!python


for ent in [u'CH4', u'CO', u'F11', u'F12', u'H2O', u'N2O',
            u'O3', u'SEA', u'ECH', u'NIN', u'SIN', u'ICH']:
    register_vertical_layers.append(
        (getattr(mpl_vsec_styles, "VS_ChemStyle_PL_" + ent), ["clams_INDIA"])
    )



Better structure of names displayed in the choice panel "Layer"

Original report by Jens-Uwe Grooß (Bitbucket: grooss, GitHub: grooss).


The string displayed in the choice panel "Layer" of the horizontal view is currently
rather long an contains the netCDF standard name, a label for the map section, pl/tl for pressure/theta levels.
With the availability of CLaMS and CAMS the choice list is rather long and not well structured, such it is difficult to find the desired parameter.
Shorten and structure the displayed name such that the parameter can be found quickly,
e.g.
CLaMS_thetalevels_<standard_name>
CAMS_pressurelevels_<standard_name>

geopy dependency

Original report by Joern Ungermann (Bitbucket: joernu76, GitHub: joernu76).


The geopy package has mad the conda installation rather difficult and seems to be a rather superfluous dependency.

Calculating the distance can be done to the same accuracy with either pyproj (included in required current basemap or required as separate package in future basemap releases) or with the Haversine or similar formula approximately without any dependency.

Proposal: Replace geopy dependency (geopy.distance) by pyproj dependency (pyproj.Geod(ellps='WGS84'))

pyproj is available in conda (not conda-forge!)

Additional support for remote sensing instruments

Original report by Joern Ungermann (Bitbucket: joernu76, GitHub: joernu76).


Remote sensing instruments measure air masses away from the flight path, which should be marked in the horizontal cross-sections. Different kind of instruments depend also on the angle between sun and aircraft, which may be added as colour code on the aircraft path to flag dangerous or desirable states.

set execute bit only on executables

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


currently all files in the development repostiory seems to have execute bit

on a linux System we should may be remove first all ritghts and set them afterwards to

#!shell


cd mss
chmod -R a-rwx
chmod -R a+rwX
chmod a+x mslib/msui/mss_pyui.py
chmod a+x mslib/mswms/mss_wms_cl.py
chmod a+x mslib/mswms/mss_wms_wsgi.standalone_paste.py

The last one will be replaced by e.g. mswms.py

sphinx documentation

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


move the various Readme into a sphinx documentation, make it available on read the docs.

proposed table of contents

  • Installation
  • Quickstart
  • Usage (client mss)
  • Deployment (Server Setup)
  • Changelog
  • Development
  • mslib contributors
  • license

Support for displaying model data from CLaMS

Original report by Jens-Uwe Grooß (Bitbucket: grooss, GitHub: grooss).


The Chemical Lagrangian Model of the Stratosphere (CLaMS) is a Lagrangian
Chemistry Transport Model that was developed in Jülich, Germany.
It is frequently used for flight planning in aircraft measurement campaigns.
CLaMS data are saved on the server as gridded NetCDF files.
The plot routines and the use of the GUI should be enhanced such
that horizontal and vertical data plots can be provided by the MSS server.

The Model CLaMS is described in the following publications and references therein:

McKenna et al., A new Chemical Lagrangian Model of the Stratosphere (CLaMS): Part I Formulation of advection and mixing, J. Geophys. Res., 107 (D16), 4309, doi:10.1029/2000JD000114, 2002.

McKenna et al., A new Chemical Lagrangian Model of the Stratosphere (CLaMS): Part II Formulation of chemistry-scheme and initialisation, J. Geophys. Res., 107 (D15), 4256, doi:10.1029/2000JD000113, 2002.

Konopka et al., Mixing and ozone loss in the 1999-2000 Arctic vortex: Simulations with the 3-dimensional Chemical Lagrangian Model of the Stratosphere (CLaMS), J. Geophys. Res., 109 (D2), doi:10.1029/2003JD003792, 2004.

Grooß et al., Nitric acid trihydrate nucleation and denitrification in the Arctic stratosphere, Atmos. Chem. Phys., 14, 1055-1073, 2014.

Optimize time selection in the User Interface

Original report by Jens-Uwe Grooß (Bitbucket: grooss, GitHub: grooss).


The time selection in the user interface could be optimized:
(1)
If one timestep in the top selection box "Initialisation" is chosen, it would be desirable, that
only those timesteps could be chosen in the bottom selection box "Valid", for which data are available.
If this information would not be present, at least the choice could be masked to the times
t_valid >= t_initialisation
(2)
If one timestep has been chosen and displayed in the "Top View" (horizontal section), and then a "Side View" window (vertical section) is opened, the time choice could be transferred to the side view panel as the default time choice.

MSS_SETTING env var

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


Since mss starts now without adding a startup file with configuration data
we should have a possibility to acknowledge the prefered settings file by a environment variable a user points to.

refactor namespace

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


currently after we install mss we use several namespaces. This makes maintaining in a not dedicated environment difficult.

  • mslib
  • msui
  • mswms
  • thirdparty

We should move all dpependencies below mslib so that we have

  • mslib
  • mslib.msui
  • mslib.mswms
  • mslib.thirdparty
    etc

non existing default config path fails on windows

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


On a fresh installation without a common .config directory the start of mss fails
on windows

#!text

C:\Users\user\mss\staged-recipes\recipes\mss>mss
Traceback (most recent call last):
  File "C:\Users\user\Miniconda2\Scripts\mss-script.py", line 3, in <module>
    import mslib.msui.mss_pyui
  File "C:\Users\user\Miniconda2\lib\site-packages\mslib\msui\mss_pyui.py", li
ne 57, in <module>
    from mslib.msui import flighttrack as ft
  File "C:\Users\user\Miniconda2\lib\site-packages\mslib\msui\flighttrack.py",
 line 46, in <module>
    from mslib.mss_util import config_loader
  File "C:\Users\user\Miniconda2\lib\site-packages\mslib\mss_util.py", line 46
, in <module>
    from mslib.msui import wms_login_cache
  File "C:\Users\user\Miniconda2\lib\site-packages\mslib\msui\wms_login_cache.
py", line 36, in <module>
    os.mkdir(DEFAULT_CONFIG_PATH)
WindowsError: [Error 3] Das System kann den angegebenen Pfad nicht finden: 'C:\\
Users\\user\\.config\\mss'

C:\Users\user\mss\staged-recipes\recipes\mss>

replace mss_settings

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


Calling the mss UI with beforehand defining a mss_settings.py script added to PYTHONPATH is far to complicated for an easy going installation.

We should have a default configuration and offer a loader by the UI to add different config files.

The defaults should be storeable to a file the user could alter by his prefered editor.

Format of a config file may be yaml or json.

Add more complex tools for manipulating the flighttrack

Original report by Joern Ungermann (Bitbucket: joernu76, GitHub: joernu76).


The GLORIA limb sounder is capable of evaluating tomographic measurements, which requires dedicated flight patterns, which are typically of polygonal, in effect hexagonal, shape.

Adding such shapes should be supported in table view using a dedicated docked widget.

Modifying the polygonal path later on is also required, but a simple removal of a polygon would work almost as well, if the control remembers the last parameters for simple, slightly changed, re-adding.

Suggest standard name for saving plots

Original report by Joern Ungermann (Bitbucket: joernu76, GitHub: joernu76).


Repeatedly saving many plots, e.g. for preparing a flight information PDF (which due to unforeseen changes may occur astonishingly frequently even for a single planned flight), would be simpler if the tool would suggest unique sensible names for the figure to be saved. Such a plot name should be composed of the plot type, style type, and level, and also the flightpath name. Further steps could be taken to flesh out existing facilities to fully automate plotting of a set of "standard plots".

server could fill in url into template, no need for hard coding

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


We should make a review how much server requests are needed to get an image.

Currently the get_capabilities.pt template needs lines of having an xlink definition to the servers Url.

#!xml

<OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="h
ttp://www.your.server"/>

 <OnlineResource xmlns:xlink="http://www.w3.org/1999/
xlink" xlink:href="http://www.your.server/?"/>

Because the UI does read this for building its base_url when we request a map.
by wms_control.py (getmap)

#!python

base_url = self.getOperationByName('GetMap').methods[method]['url']

getCapabilities does it by reading the user input

#!python

base_url = str(self.cbURL.currentText())

In wms_control.get_map we have the Url already on self.url
on some other places as self.wms.url

I would prefer if we could abstain to add the Url to the server configuration template files.

Informations about Service should become configurable

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


We should introduce to set this text used in Service in mss_wms_settings and fill into the template

#!text

<Service>
        <Name>OGC:WMS</Name>
        <Title>Mission Support System Web Map Service</Title>
        <Abstract>Your Abstract.</Abstract>
        <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="$(server_url)"/>
        <ContactInformation>
            <ContactPersonPrimary>
                <ContactPerson>Your Name</ContactPerson>
                <ContactOrganization>Your Organization</ContactOrganization>
            </ContactPersonPrimary>
            <ContactAddress>
                <AddressType>postal</AddressType>
                <Address>Your Street</Address>
                <City>Your City</City>
                <StateOrProvince></StateOrProvince>
                <PostCode>12345</PostCode>
                <Country>Germany</Country>
            </ContactAddress>
        </ContactInformation>
        <Fees>none</Fees>
        <AccessConstraints>This service is intended for research purposes only.</AccessConstraints>
    </Service>

Integrate prefetch functionality into msui client to speed up map loading

Original report by Marc R. (Bitbucket: wxmetvis, ).


Idea: While the user views the current map, do a background-prefetch of those maps that the user is most likely to view next.

  • probably requires one "prefetch thread" per WMS control that controls a "prefetch queue"
  • if the user issues a new WMS request, all prefetch-tasks need to be removed from the "prefetch queue"; new tasks could be added according to a prefetch_config, e.g.:
#!python
prefetch_config =
    { ["validtime_fwd", 3],
       ["validtime_bwd", 3],
       ["lvl_up", 2],
       ["lvl_up", 2],
       ["inittime_fwd", 2] } 

Integrate support for multiple simultaneous WMS layers into msui client

Original report by Marc R. (Bitbucket: wxmetvis, ).


Currently the msui can only display one WMS image at a time. Similar to other WMS clients, an overlay of multiple (transparent) maps should be possible.

This could be realized by implementing:

  • support for multiple WMSControlWidgets
  • these WMSControlWidgets should (optionally) synchronise level, init time, valid time with a "master" control
  • multiple images may need to be combined into one image for display with matplotlib -- maybe this has changed, otherwise PIL (Python Imaging Library) should provide functions

mss_wms_cl not working

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


We don't have MSS_WMSResponse also nothing with a parameter address="COMMAND_LINE"

#!python

Traceback (most recent call last):
  File "./mss_wms_cl.py", line 302, in <module>
    main()
  File "./mss_wms_cl.py", line 193, in main
    wsgi = wms.MSS_WMSResponse(mss_wms_settings.nwpaccess, address="COMMAND_LINE")
AttributeError: 'module' object has no attribute 'MSS_WMSResponse'

refactor mss_wms_wsgi.standalone_paste.py

Original report by Reimar Bauer (Bitbucket: ReimarBauer, GitHub: ReimarBauer).


After we have copied the wsgi apache2 example to a python module wms.py in mslib.mswms we also can run it standalone by a very short script.

The wsgi script mainly needs only this call

#!python

from mslib.mswms.wms import application

The following example illustrates the call of the same code as on the apache2 server running but executed on localhost.

#!python

import sys

sys.path.extend(["$HOME.config/mss"])
from mslib.mswms.wms import application
import paste.httpserver
paste.httpserver.serve(application)

@wxmetvis I think about a deprecated warning for 1.1 in mss_wms_wsgi.standalone_paste.py and think about removing this in 1.2

As there may be more work on this, e.g. package dependencies I think we do that refactoring after the release of 1.1.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.