Skip to content

Frequently Asked Questions (FAQ)

This section addresses common questions and issues users encounter when working with Rompy.

Installation

Q: I'm getting dependency conflicts during installation. How can I resolve this?

A: This often happens when your environment has conflicting package versions. The best solution is to create a clean virtual environment:

python -m venv fresh_rompy_env
source fresh_rompy_env/bin/activate  # On Windows: fresh_rompy_env\Scripts\activate
pip install rompy

Q: I'm getting compilation errors during installation. What should I do?

A: Make sure you have the required system dependencies: - Linux: gcc, g++, make, python3-dev - macOS: Xcode command line tools - Windows: Visual Studio Build Tools

Configuration

Q: How do I create a custom model configuration?

A: Create a class that inherits from BaseConfig or an existing model configuration. You'll need to define the required fields using Pydantic and implement any necessary methods for your specific model:

from pydantic import Field
from rompy.core.config import BaseConfig

class MyModelConfig(BaseConfig):
    model_type: str = Field("mymodel", description="Type of model")

    # Add your model-specific parameters here
    custom_param: str = Field("default", description="A custom parameter")

Q: How can I validate my configuration before running a model?

A: Rompy configurations are automatically validated using Pydantic. If your configuration is invalid, an exception will be raised on creation. You can also run:

from pydantic import ValidationError

try:
    config = MyModelConfig(param1="value1", param2="value2")
except ValidationError as e:
    print(f"Configuration error: {e}")

Grids

Q: Which grid types are supported?

A: Rompy supports several grid types: - RegularGrid: For regular rectangular grids - CurvilinearGrid: For curvilinear grids - Custom grid types can be created by extending BaseGrid

Q: How do I create a custom grid type?

A: Create a class that extends BaseGrid and implement the required methods for your specific grid type:

from rompy.core.grid import BaseGrid

class MyCustomGrid(BaseGrid):
    # Your grid implementation here
    pass

Data Sources

Q: What data formats are supported?

A: Rompy can handle various data formats through its source system: - NetCDF files via xarray - Intake catalogs for data discovery - Custom formats through fsspec

Q: How do I add a custom data source?

A: Create a class that extends SourceBase or one of the existing source types and implement the required methods:

from rompy.core.source import SourceBase

class MyCustomSource(SourceBase):
    # Your data source implementation here
    pass

Execution Backends

Q: What execution backends are available?

A: Rompy provides several execution backends: - LocalConfig: Run models on your local system - DockerConfig: Run models in Docker containers - Additional backends can be added via Rompy's plugin system

Q: How do I run models in Docker containers?

A: Create a DockerConfig with the required parameters:

from rompy.backends import DockerConfig

docker_config = DockerConfig(
    image="your-model-image:tag",
    cpu=4,
    memory="8g",
    volumes=["./data:/data:rw"]
)
success = model_run.run(backend=docker_config)

Q: How can I create a custom backend?

A: Implement the backend interface by creating a class that implements the run method:

class CustomRunBackend:
    def run(self, model_run, config, **kwargs):
        # Your custom execution logic here
        pass
Register your backend using entry points in your package's pyproject.toml:
[project.entry-points."rompy.run"]
custom = "mypackage.backends:CustomRunBackend"

Common Issues

Q: I'm getting an error about missing template files. How do I fix this?

A: Make sure your configuration's template path is correct and that the template files exist. You can check by printing the path:

print(f"Template path: {config.template}")

Q: The model execution is failing. How do I debug this?

A: Try these steps: 1. Check the error message and logs 2. Verify that your model executable is available in the path 3. Test your model executable directly outside of Rompy 4. Check that all required input files are generated 5. Ensure your timeout settings are adequate for the model runtime

Performance

Q: How can I optimize model run performance?

A: Consider these approaches: - Use appropriate resolution for your problem (not finer than needed) - Optimize resource allocation in backend configurations - Consider parallel execution options if your model supports it - Use Docker for consistent, optimized execution environments

Q: How do I manage memory usage during large model runs?

A: - Increase memory allocation in Docker configurations: memory="16g" - Use appropriate grid resolution for your use case - Consider breaking large simulations into smaller time segments

Extensions

Q: How do I extend Rompy with new functionality?

A: Rompy uses a plugin architecture: - Use entry points to register new model configurations - Implement custom backends that follow the run interface - Extend existing components like grids, data sources, etc.

For detailed information on extension, see the Extending Models documentation.

Getting Help

Q: Where can I get help with Rompy?

A: You can: - Check the documentation - Report issues on the GitHub repository - Contact the community through the GitHub discussions or issue tracker

If your question isn't answered here, feel free to open an issue in the Rompy repository with details about your question or problem.