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 our practitioners but rather a tool used to better understand emergent phenomena in complex adaptive systems.

Other organizations focused on improving computational modeling praxis:

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.
  • Clearly document external software and data dependencies with pinned versions (e.g., Docker, pip/poetry, packrat, Maven/Ivy, npm)
  • 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 software in a DOI-issuing repository that provides citable URLs for specific versions of your codebase (for more details, see the Force11 software citation principles)
  • An excellent collection of software deposit guidance from the UK’s Software Sustainability Institute: https://softwaresaved.github.io/software-deposit-guidance/
  • Provide clear example test cases, sample inputs and expected outputs
  • Use relative paths, not absolute paths when referring to input or output data files
  • Try to structure your code with clarity, reuse and future comprehension in mind - adopt your modeling language’s idioms for writing 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.