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 your model’s outputs
  • 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 artifacts (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 provided by the Software Sustainability Institute:
  • Provide example test cases and expected outputs
  • Structure your code in ways that are amenable to reuse and comprehension (modular and well-encapsulated)

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.