In one of the university courses I was introduced to a Waf framework for reproducible research by Hans-Martin von Gaudecker which is amazingly useful to manage your research project.

The basic idea is that a project is structured as a DAG, a directed-acyclic graph. A DAG is a graph with a finite amount of node and edges where the edges have a specific direction leading from input to output files. Furthermore, starting at node $$\nu$$ and following the directed edges, it is not possible to find a way back to $$\nu$$. Here is the DAG for the sample project:

DAG of sample project

As you can see everything starts off at get_simulation_draws.py which serves as the source of initial_locations.csv which is the input of ... You get it.

You get the sample project by installing cookiecutter first with

$pip install -U cookiecutter  Then, go to the directory which should contain the folder with the project and type $ cookiecutter https://github.com/tobiasraabe/cookiecutter-research-template.git


Answer the following prompts so the project will be customized to your needs.

In the end, go into the project folder and set up the conda environment.

$conda env create -n <project-name> -f environment.yml  At last, run the following command to make sure that the sample project works. $ python waf.py distclean configure build