Thank you for your interest in contributing to BOND! This document provides guidelines and instructions for contributing.
- Be respectful and inclusive
- Welcome newcomers and help them learn
- Focus on constructive feedback
- Respect different viewpoints and experiences
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Python version, etc.)
- Relevant error messages or logs
- Check if the feature has already been suggested
- Open an issue with:
- Clear description of the feature
- Use case and motivation
- Potential implementation approach (if you have ideas)
-
Fork the repository and create a feature branch:
git checkout -b feature/your-feature-name
-
Make your changes:
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Keep commits focused and atomic
-
Run tests and linting:
make test make lint -
Commit your changes:
git commit -m "Add: descriptive commit message"Follow conventional commit format when possible:
Add:for new featuresFix:for bug fixesUpdate:for improvementsDocs:for documentationRefactor:for code refactoring
-
Push and create a PR:
git push origin feature/your-feature-name
Then create a pull request on GitHub with:
- Clear description of changes
- Reference to related issues
- Screenshots/examples if applicable
-
Clone and setup:
git clone https://github.com/pankajrajdeo/BOND.git cd BOND python3.11 -m venv bond_venv source bond_venv/bin/activate pip install -e ".[dev]"
-
Install pre-commit hooks (optional):
pip install pre-commit pre-commit install
- Follow PEP 8 style guide
- Use type hints where possible
- Keep functions focused and small
- Add docstrings for public functions/classes
- Maximum line length: 100 characters (flexible for readability)
- Write tests for new functionality
- Aim for high test coverage
- Run tests before submitting PR:
pytest
- Update README.md for user-facing changes
- Add docstrings to new functions/classes
- Update API documentation if endpoints change
- Keep examples in code current
BOND/
├── bond/ # Main package
│ ├── pipeline.py # Core BondMatcher class
│ ├── retrieval/ # Retrieval modules
│ ├── server.py # FastAPI service
│ └── ...
├── scripts/ # Utility scripts
├── benchmark-metrics/ # Benchmark evaluation results and scripts
├── assets/ # Data files (gitignored)
- Performance improvements: Optimization of retrieval or fusion
- New ontology support: Adding support for additional ontologies
- Better error handling: More informative error messages
- Documentation: Improving guides and examples
- Benchmarking: Evaluation on new datasets
Feel free to open an issue with the question label or reach out to the maintainers.
Thank you for contributing to BOND! 🎉