Resources

Guides to Good Practice

We strive to foster and support good practices for developing and disseminating open and reproducible computational models. Computational modeling is not a primary skill for most practitioners but rather a tool used to better understand emergent or complex phenomena.

The Software and Data Carpentries are also dedicated to improving foundational computational and data science skills and offer hands-on workshops among other resources.

Agent-based model development

  • Keep your models simple
  • Document your models using ODD or equivalent documentation protocol
  • Consider carefully how to evaluate and validate your model’s outputs. Make sure you do a proper sensitivity analysis!
  • Structure your model into coherent modules where possible with well-defined inputs and outputs between modules.

Further reading

Some of the code and data management practices listed below are also described in greater detail in Good Enough Practices in Scientific Computing by Wilson et al.

Code management

  • Use a version control system diligently, and strive for small, focused changes with meaningful and descriptive commit messages.
  • Document all external dependencies (e.g., Docker, pip, packrat)
  • Strive for simple, well-commented, self-documenting code with meaningful variable names
  • Adopt or develop community documentation standards to describe your computational models (e.g., ODD)
  • Adopt a consistent, self-describing directory structure for your code, data, documentation, and results
  • Archive your codebase in a DOI-issuing repository that provides citable URLs for specific versions of your codebase (Force11 software citation principles)
  • Software deposit guidance from the Software Sustainability Institute: https://softwaresaved.github.io/software-deposit-guidance/
  • Provide example test cases + sample inputs and expected outputs
  • Use relative paths, not absolute paths for any input or output data files
  • Structure your code for reuse and comprehension - adopt your modeling language’s idioms for creating modular and well-encapsulated code

Data management

This website uses cookies and Google Analytics to help us track user engagement and improve our site. If you'd like to know more information about what data we collect and why, please see our data privacy policy. If you continue to use this site, you consent to our use of cookies.