The Carpentries’ Good Enough Practices for Scientific Computing Lesson may be a useful starting point to learn good practices end-to-end.
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. Plan for robust and thorough sensitivity and data analyses!
- Structure your model into coherent modules where possible with well-defined inputs and outputs that use established community standard data formats.
Additional ABM Guides
Code management
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.
- License your models with an appropriate Open Source license. Note that Creative Commons licenses are not recommended for software and will likely be deprecated and removed from comses.net in the near future.
- Use a version control system diligently, and strive for small, focused changes with meaningful and descriptive commit messages.
- Clearly document all software and data dependencies with explicitly pinned versions. Useful tools include: Docker or Apptainer, as well as language-specific package managers like pip/poetry for Python, packrat for R, Maven/Ivy/Gradle for JVM based languages, npm/yarn for JavaScript, etc.
- 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 also hews to the FAIR Principles for Research Software and the software citation principles.
- An excellent article from the UK’s Software Sustainability Institute on guidance for depositing software for a publication
- Provide clear example test cases, with well documented sample inputs and expected outputs
- Use relative paths instead of absolute paths when referring to input or output data files
- Structure your code with clarity, reuse and future comprehension in mind and adopt your modeling language and platform’s conventions and idioms for writing easily comprehensible, as concise as possible, well-encapsulated code
- Common Software Quality Assurance Baseline Criteria for Research Projects group.
Data management
The Digital Research Alliance of Canada has exemplar Data Management Plans available on Zenodo and a Data Management Plan Assistant that can walk you through the creation of a high quality research data management plan.
Other principles to keep in mind: