Contributing

Check out the projects page for information on the active projects. Before starting work on a PR please comment on the relevant issue or create a new one. Once you begin work link the PR to the proper issue. For information on documentation contributions please go to our documents contribution page.

We have created a series of Live Coding Sessions on YouTube that can help give you an idea of how to contribute to projects.

Contributions Accepted

  • New time series models

  • New time series loss functions

  • Bug fixes

  • Meta data embedding models.

  • Documentation updates and fixes

  • Increasing test coverage

  • Benchmarking models on new datasets

Code Style

We use Flake8 and mypy. Currently, we are a PyTorch only repository in terms of model frameworks.

Unit tests

All functions and newly added code require unit tests. Existing unit tests must pass.

Peer review

All PRs require at least one approving review. Generally this review should be either from @Isaac Godfried @kriti mahajan or another core contributor. Please feel free to request to a review.

Getting setup locally

To get setup local you can install our repository in development mode from the master branch (or whatever branch you are using). To do this first clone the repository. Then run:

cd flow-forecast python setup.py develop

Adding models

Models generally require four things:

  1. Creating the model as a PyTorch module.

  2. Adding the new model to the dict by importing and mapping it to class.

  3. Adding an example model JSON config file in the tests directory.

  4. Adding a unit test

  5. Adding an end-to-end integration test

Complicating factors involve:

  • Models that take parameters other than X and metadata in forward_params.

  • Models that return a tensor not in the shape (batch_size, forecast_length, n_targets)

Please plan with @Isaac Godfried before undertaking these more complicated models.

Adding Loss Functions/Optimizers

Loss functions generally follow the same procedure as new models.

  1. Create the loss function

  2. Add the loss function