Contributing to Further Development

Nemo is hosted on github and is available under a free software license. Help is appreciated in its development.

Reporting Issues

Found a bug? Please tell us, either on the issues page in the Simons Observatory #sz Slack channel (if you are an SO member), or by email.

Contributing Code

Want to add a feature or fix something? There are some tasks that need attention listed on the issues page.

The preferred method of contributing code is to clone the repository and work on your new feature in your own branch:

git clone https://github.com/simonsobs/nemo.git
git checkout -b the-name-of-your-branch

When the time comes to commit your changes, please contact Matt Hilton with your github username, in order to be granted write access to the repository. You only need to do this once.

The main branch itself is protected. When you are ready for your changes to be added to it, please issue a Pull Request for your changes to be reviewed.

Style

When adding code, please adhere to the style used throughout Nemo where possible (see below).

  • As you may notice, Nemo uses camelCase throughout - please keep it that way.

  • Indent with 4 spaces.

  • The maximum line length is 110 characters (sometimes it makes sense to break this).

  • Docstrings should follow the Google style. This has only been partially done (so far) in the existing code. At the very least, every function should have a docstring of some kind that describes what it does, even if it is re-formatted later.

Testing

Nemo uses the Robot framework for tests (see Testing). These are integration tests, rather than unit tests (at least at the moment), and can take a while to run. While more work (and more tests) need to be added, you should check that these tests still pass (or at least, don’t crash) before committing your changes.

Checking Memory Usage

If you need to check the memory usage of Nemo, we recommend the use of the memory-profiler package. For example, to use it on Nemo:

mprof run /usr/local/bin/nemo test_MFMF_S16_auto.yml

This will log memory usage over time, which can be plotted using other tools in the memory-profiler package.