Contributing to SEEM Geo¶
Thanks for your interest in contributing! SEEM Geo is a tool built for engineering-geology practitioners working on linear infrastructure projects.
Ways to contribute¶
- Report bugs — open an issue with the bug-report template
- Request features — open an issue with the feature-request template
- Submit code — open a pull request against
main - Improve documentation — PRs to README, USER_GUIDE_AR.md, or docstrings welcome
- Share example projects — anonymised
.seemprojfiles for other geologies are valuable
Development setup¶
# Clone your fork
git clone https://github.com/YOUR_ahmedezz33/seem-geo.git
cd seem-geo
# Install in editable mode with test extras
pip install -e ".[test]"
# Verify
seem-geo --help
Code style¶
- Concise over clever — if a reviewer has to re-read a line, split it
- Docstrings on every public function, class, and module
- Type hints where they help (we don't enforce them yet)
- No breaking changes without a version bump and CHANGELOG entry
Testing¶
Before submitting a PR:
# 1. Imports work
python -c "import seem_geo; print(f'OK v{seem_geo.__version__}')"
# 2. CLI works
seem-geo --help
# 3. Full pipeline runs
seem-geo gen-data --out /tmp/test_data
seem-geo init --output /tmp/test.seemproj
# edit /tmp/test.seemproj to point paths at /tmp/test_data
seem-geo pipeline --project /tmp/test.seemproj
Adding a new file-format reader¶
New readers live in seem_geo/io/importers.py:
def read_my_format(path):
"""Read .my file format. Returns (DataFrame, metadata_dict)."""
# Your parsing logic
df = pd.DataFrame(...)
return df, {'format_version': ...}
Then wire it into detect_and_read_ert (or _masw) with the file extension.
Adding a new processing stage¶
- Create the processing function in
seem_geo/core/your_module.py - Add a
batch_your_stage(project, progress_callback, verbose)function - Register the stage in
seem_geo/__main__.pyunder the dispatch table - Add to the pipeline order in
cmd_pipeline - Add CHANGELOG entry
Commit messages¶
Please use conventional commits:
- feat: new feature
- fix: bug fix
- docs: documentation only
- refactor: code refactoring without behavior change
- test: test additions/updates
- chore: dependency updates, build system, etc.
Example:
feat(masw): add higher-mode dispersion picking
Users can now manually select Rayleigh higher modes in the picker
by holding Shift while clicking. Closes #42.
Questions?¶
Open a discussion or email your-email@example.com.