MADS: Model Analysis & Decision Support


MADS (Model Analysis & Decision Support)


travis-ci appveyor coveralls.io codecov.io

MADS is an integrated open-source high-performance computational (HPC) framework in Julia. MADS can execute a wide range of data- and model-based analyses:

  • Sensitivity Analysis
  • Parameter Estimation
  • Model Inversion and Calibration
  • Uncertainty Quantification
  • Model Selection and Model Averaging
  • Model Reduction and Surrogate Modeling
  • Machine Learning (e.g. Blind Source Separation, Source Identification, Feature Extraction, Matrix / Tensor Factorization, etc.)
  • Decision Analysis and Support

MADS has been tested to perform HPC simulations on a wide-range multi-processor clusters and parallel environments (Moab, Slurm, etc.). MADS utilizes adaptive rules and techniques which allows the analyses to be performed with minimum user input. The code provides a series of alternative algorithms to execute each type of data- and model-based analyses.


Detailed documentation including description of all MADS modules and functions is available at GitHub, ReadtheDocs and LANL sites.

See also mads.gitlab.io and madsjulia.github.io


After starting Julia, execute:

import Pkg; Pkg.add("Mads")

to access the latest released version. To utilize the latest updates (commits) use:

import Pkg; Pkg.add(Pkg.PackageSpec(name="Mads", rev="master"))


docker run --interactive --tty montyvesselinov/madsjulia


import Mads; Mads.test()


To explore getting-started instructions, execute:

import Mads; Mads.help()

There are various examples located in the examples directory of the Mads repository.

For example, execute

include(Mads.madsdir * "/../examples/contamination/contamination.jl")

to perform various example analyses related to groundwater contaminant transport, or execute

include(Mads.madsdir * "/../examples/bigdt/bigdt.jl")

to perform Bayesian Information Gap Decision Theory (BIG-DT) analysis.

Installation of MADS behind a firewall

Julia uses git for package management. Add in the .gitconfig file in your home directory to support git behind a firewall:

[url "git@github.com:"]
    insteadOf = https://github.com/
[url "git@gitlab.com:"]
    insteadOf = https://gitlab.com/
[url "https://"]
    insteadOf = git://
[url "http://"]
    insteadOf = git://

or execute:

git config --global url."https://".insteadOf git://
git config --global url."http://".insteadOf git://
git config --global url."git@gitlab.com:".insteadOf https://gitlab.com/
git config --global url."git@github.com:".insteadOf https://github.com/

Set proxies executing the following lines in the bash command-line environment:

export ftp_proxy=http://proxyout.:8080
export rsync_proxy=http://proxyout.:8080
export http_proxy=http://proxyout.:8080
export https_proxy=http://proxyout.:8080
export no_proxy=.

For example, at LANL, you will need to execute the following lines in the bash command-line environment:

export ftp_proxy=http://proxyout.lanl.gov:8080
export rsync_proxy=http://proxyout.lanl.gov:8080
export http_proxy=http://proxyout.lanl.gov:8080
export https_proxy=http://proxyout.lanl.gov:8080
export no_proxy=.lanl.gov

Proxies can be also set up directly in the Julia REPL as well:

ENV["ftp_proxy"] =  "http://proxyout.lanl.gov:8080"
ENV["rsync_proxy"] = "http://proxyout.lanl.gov:8080"
ENV["http_proxy"] = "http://proxyout.lanl.gov:8080"
ENV["https_proxy"] = "http://proxyout.lanl.gov:8080"
ENV["no_proxy"] = ".lanl.gov"

Related Julia Packages

Publications, Presentations, Projects

First Commit


Last Touched

13 days ago


2004 commits

Used By: