Prerequisite knowledge & skills
Modeling using MESSAGEix requires domain knowledge, understanding of certain research methods, and scientific computing skills. This page lists these prerequisite items, grouped by different use cases.
Where possible, suggested learning materials are linked. In some cases, there are multiple options. Keep in mind that the right choice of learning materials and the time required depends on the context (e.g. formal classroom learning with an instructor vs. self-guided learning), level of prior knowledge, and learning goals.
What is my use case?
There are many different use cases for MESSAGEix. This page currently distinguishes between “basic” and “advanced”:
Basic usage |
Advanced usage |
---|---|
Install the released version of |
Install the development version (source code). |
Use a laptop/desktop computer. |
Use cloud computing/HPC servers. |
Store data on your local machine. |
Store data in a shared database. |
Run/modify the tutorial notebooks. |
Build large models from scratch. |
Collaborate on MESSAGEix-GLOBIOM. |
|
Use the mathematical formulation as-is. |
Modify the MESSAGE equations. |
Use the |
Basic usage
Domain knowledge
You should be able to:
Understand mathematical optimization, linear programming, and/or the calculus underlying these.
Understand concepts including:
Energy systems, including their components: resources, supply-side technologies, demand and end-use.
Levels (such as primary or secondary energy) in an energy system.
Efficiency of energy use or transformation.
Costs, including the distinction between fixed costs, variable costs, and investment costs.
Scientific computing skills
You should be able to:
Install and uninstall software on your operating system (OS): one of Linux, Windows, or macOS.
Use a command line (terminal, command prompt) on your OS to navigate directories and files, run commands, and view their output.
Modify environment variables on your OS.
Write simple programs in Python or R, including:
Understand concepts including: variables, functions, and arguments.
Use control flow structures such as
if
statements and various types of loops.Access and read the documentation for the core language.
Use a search engine to find code examples and to diagnose error messages.
For Python, Dive Into Python is one beginner resource. Many free and paid online courses are available.
Understand the concepts of a software package, software release, version number (in particular the concept of semantic versioning), and deprecation. See Versions and releases for specific practices used for
message_ix
.
Understand the concept of virtual environments for Python, using either the built-in
venv
module (docs, usage with pip), or Anaconda environments to create, activate, switch, and remove environments.The Quick install and install-adv give instructions for the above two systems, but several others are in common use including virtualenv and virtualfish.
Manage Python packages—that is, install, uninstall, upgrade, and check installed versions—using at least one of:
The Anaconda Navigator graphical interface,
the conda command-line interface (documentation), or
pip.
Understand or learn the basic concepts functionality of widely-used Python data science packages:
Introductory tutorials for pandas, including the concept of a series and data frame.
Use a Jupyter notebook to run Python or R code, including: start the notebook server; open, restart, and close notebooks; create and edit cells.
Jupyter notebook official documentation.
Video introductions to the notebook. Example 1 by Michael Fudge (English, 7 minutes) Example 2 by Corey Schafer (English, 30 minutes), both on YouTube. Many are available on other platforms.
An in-depth tutorial by Karlijn Williams on DataCamp.
Advanced usage
The following items may be more or less.
Domain knowledge
You should be able to:
Understand concepts including:
Capacity factor of a power-generating technology.
Deprecation.
Scientific computing skills
You should be able to:
Interact with a server or ‘headless’ computer, i.e. one without a graphical interface, over the command line, using SSH.
Use the
pip
command-line interface (documentation) to install, uninstall, upgrade, and check the versions of Python packages.Use the Git version control system and the
git
command-line tool to clone repositories, pull, fetch, create branches, and push. For contributing to development, you should know how to:git merge, i.e. bring all updates from the
main
branch into your PR branch, giving you a chance to fix conflicts and make a new commit.git rebase, i.e. replay your PR branch commits one-by-one, starting from the tip of the
main
branch (rather than the original starting commit).
Optionally, do these things via a graphical program such as GitHub Desktop.
The free Pro Git book.
Interactive learning tools on try.github.io.
Understand and interact with repositories and issues on GitHub, including:
Find and read the list of issues for a repository.
Search within one repository or across all of GitHub.
Use GitHub’s formatting to produce legible descriptions of code and code errors.
Understand concepts including: pull request, merge, merge conflict, assign, review.
See:
Short introduction to the Github ‘flow’, which describes a pull request and how it is used.
Interactive tools in the Learning Lab.
Provide a complete and explicit description of a software error message and how to reproduce it.
Read and understand GAMS code.