Giter Club home page Giter Club logo

midas's Introduction

Build Status

DESCRIPTION

MIDAS (MIDAS Midas is Data Analysis Software) is a Python package primarily for processing gridded data stored in CF-compliant NetCDF/HDF5 format (http://cfconventions.org).

  • spatial interpolation between quadrilateral meshes
  • temporal interpolation between calendar dates (datetime)
  • conservative re-mapping in the vertical dimension (MOM6/ALE)
  • spatial integration/averaging with generalized horizontal/vertical coordinates
  • temporal averaging (Datetime).

MIDAS was first developed by Matt Harrison as an employee of NOAA/GFDL and has been used for the generation of realistic global model configurations and post-run analysis scripts (https://github.com/NOAA-GFDL/MOM6-examples.git)

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

SIMPLE INSTALL (reduced functionality)

If you just want the basics, and are not planning to use the remapping features, then simply type (bash)

INSTALL_PATH='/your/python/module/path'
python setup_nofort.py install --prefix=$INSTALL_PATH

If you have root access and want to use default installation paths, then omit the prefix option. If you are using conda, then the default location is specific to your current environment.

CONDA INSTALLATION

  1. Download and install Anaconda
(wget https://repo.anaconda.com/archive/Anaconda3-5.1.0-Linux-x86_64.sh;./Anaconda3-5.1.0-Linux-x86_64.sh)
  1. Update your existing shell to add conda to your path
source ~/.bashrc
  1. Now update conda
conda update conda
conda install conda-build
  1. Install gfortran development libraries (if needed)
sudo apt-get install libgfortran-6-dev

optionally install mpich2 and associated libraries

(sudo apt-get install libmpich2-dev)

Or else if you do not have root privileges

(. activate;wget http://www.mpich.org/static/downloads/3.2.1/mpich-3.2.1.tar.gz;cd Downloads;tar xvf mpich-3.2.1.tar.gz;cd mpich-?3.2.1;./configure --enable-sha\
red --prefix=$CONDA_PREFIX;make; make install)

MIDAS INSTALLATION

On linux platforms, simply type

make

This will take some time, since the Makefile will be downloading and compiling several large packages, like hdf5 and netcdf. Why are we compiling everything when there are pre-compiled binaries avaialble from the Anaconda cloud? Problems arise when linking c and c++ libraries to fortran APIs. There are often strict requirements for matching versions and glibc compatability which make using pre-compiled code unfeasible.

For platforms with multiple users, it is recommended that the compiled libraries and Python packages be made available through a local channel.

MIDAS STEP-BY-STEP INSTALLATION

For best results, build the following libraries yourself - conda does not handle dependencies for linking c and c++ libraries to fortran APIs - consider yourself lucky if you can work with pre-compiled packages and associated libraries

(conda create --name MIDAS)
git clone [email protected]:MJHarrison-GFDL/conda-recipes.git
(. activate MIDAS; cd conda-recipes/zlib;conda build .;conda install --use-local zlib)
(. activate MIDAS; cd conda-recipes/hdf5;conda build .;conda install --use-local hdf5)
(. activate MIDAS; cd conda-recipes/libnetcdf;conda build .;conda install --use-local libnetcdf)
(. activate MIDAS; cd conda-recipes/libnetcdff;conda build .;conda install --use-local libnetcdff)

Install the netCDF4 python API

(. activate MIDAS;pip install netCDF4)

Install MIDAS

git clone [email protected]:mjharriso/MIDAS.git
(. activate MIDAS; cd MIDAS;git checkout master;. build.sh)

TROUBLESHOOTING

if you have a problem with libmkl missing:

(. activate MIDAS; conda install nomkl numpy scipy scikit-learn numexpr)
(. activate MIDAS; conda remove mkl mkl-service)

missing libcomm_err.so.3 at runtime?

(ln -s $CONDA_PREFIX/pkgs/krb5-1.14.6-0/lib/libcom_err.so.3 $CONDA_PREFIX/lib/.)

EXAMPLES

cd examples
source activate MIDAS
python contour_example.py # Fetches OpenDAP URL from NODC and plots with Matplotlib
python hinterp_example.py # fms/horiz_interp does bi-linear interpolation from the original
                 	  # 1-deg to a 5-deg grid with masking
python hist.py            # volume-weighted histogram of salinity in the Indian Ocean
python subtile.py         # use subtiling algorithm to calculate un-weighted
 	       		  # cell average bathymetry and roughness. Example along the Eastern US
source deactivate

HOW TO OBTAIN DOCUMENTATION

ipython
import midas.rectgrid as rectgrid
rectgrid.[Tab]   # complete listing of methods
rectgrid.quadmesh       # a generic rectangular grid description
				    # Can be read from a file or provided as
				    # 2-d lat/lon position arrays.
rectgrid.state?  # Description of state instance
rectgrid.state.state.[Tab] # available methods for state objects
rectgrid.state.volume_integral?  # integrate scalars over the domain
				     # in 'X','Y','Z','XY' or 'XYZ'
rectgrid.state?? # View the code

MORE INFORMATION

type

(. activate MIDAS;conda list)

this returns your current environment which should look something like this:

# Name                    Version                   Build  Channel
ca-certificates           2018.4.16                     0    conda-forge
curl                      7.60.0                        0    conda-forge
hdf5                      1.8.20                        0    local
krb5                      1.14.6                        0    conda-forge
libnetcdf                 4.4.1                         0    local
libnetcdff                4.4.4                         0    local
libssh2                   1.8.0                         2    conda-forge
openssl                   1.0.2o                        0    conda-forge
zlib                      1.2.11                        1    local

midas's People

Contributors

adcroft avatar mjharriso avatar mjharrison-gfdl avatar

Watchers

 avatar

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.