Want to do more?#

Welcome to the CrocoDash developer documentation! This section contains everything you need to understand, develop, and contribute to CrocoDash.

Getting Started#

If you’re new to CrocoDash development, start here:

  1. Development Information - Read how to get started

  2. Project Architecture - Understand how CrocoDash is organized

Development Guides#

Detailed Topics#

Implementation and Extension#

Key Concepts#

Validation#

Configure Forcings is where all validation of forcings should be done. For example:

  • Chlorophyll cannot be provided if BGC is not in the compset

  • River nutrients cannot be implemented if runoff or BGC is not in the compset

See case.configure_forcings() for implementation patterns.

Modular Forcing Extraction#

The extract_forcings module is designed to divorce computationally heavy processes from the main Case workflow because the process is complex and computationally intensive.

Common Workflows#

Adding a New Feature#

  1. Create a feature branch: git checkout -b feature/my-feature

  2. Set up development environment

  3. Make your code changes with proper docstrings and type hints

  4. Write tests for your changes

  5. Build and test documentation: cd docs && make html

  6. Submit a pull request with description

  7. Respond to code review feedback

Adding a New Data Source#

  1. Follow the guide in Adding Data Sources

  2. Create a class inheriting from ForcingProduct

  3. Update registries in raw_data_access/registry.py

  4. Write comprehensive tests

  5. Update data access documentation if relevant

Fixing a Bug#

  1. Open or find the relevant issue

  2. Create a fix branch: git checkout -b fix/issue-description

  3. Write a test that reproduces the bug

  4. Fix the bug (now your test should pass)

  5. Submit a pull request referencing the issue

Questions?#