DockingAtHOME / CONTRIBUTING.md
Mentors4EDU's picture
Upload 42 files
35aaa09 verified

Contributing to Docking@HOME

Thank you for your interest in contributing to Docking@HOME! This document provides guidelines for contributing to the project.

Code of Conduct

We are committed to providing a welcoming and inclusive environment. Please be respectful and constructive in all interactions.

How to Contribute

Reporting Bugs

  1. Check if the bug has already been reported in HuggingFace Discussions
  2. If not, create a new discussion with:
    • Clear title and description
    • Steps to reproduce
    • Expected vs actual behavior
    • System information (OS, GPU, CUDA version, etc.)
    • Relevant logs or error messages

Suggesting Features

  1. Check existing feature requests in Issues
  2. Create a new issue with:
    • Clear description of the feature
    • Use case and motivation
    • Proposed implementation (if applicable)

Contributing Code

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/your-feature-name
    
  3. Make your changes
    • Follow the coding style (see below)
    • Add tests for new functionality
    • Update documentation as needed
  4. Commit your changes
    git commit -m "Add feature: description"
    
  5. Push to your fork
    git push origin feature/your-feature-name
    
  6. Create a Pull Request

Development Setup

# Clone the repository
git clone https://huggingface.co/OpenPeerAI/DockingAtHOME
cd DockingAtHOME

# Install dependencies
pip install -r requirements.txt
npm install

# Build C++/CUDA components
mkdir build && cd build
cmake .. && make -j$(nproc)

# Run tests
ctest
pytest

Coding Standards

C++

  • Follow C++17 standard
  • Use meaningful variable and function names
  • Add Doxygen comments for public APIs
  • Use RAII for resource management
  • Prefer smart pointers over raw pointers

Python

  • Follow PEP 8 style guide
  • Use type hints
  • Add docstrings for all functions and classes
  • Use Black for formatting
  • Maximum line length: 100 characters

JavaScript

  • Follow ES6+ standards
  • Use meaningful variable names
  • Add JSDoc comments
  • Use async/await for asynchronous code

Testing

  • Write unit tests for new functionality
  • Ensure all tests pass before submitting PR
  • Aim for >80% code coverage
# C++ tests
cd build
ctest -V

# Python tests
pytest tests/ -v --cov

# JavaScript tests
npm test

Documentation

  • Update README.md if adding user-facing features
  • Update API documentation for new functions
  • Add examples for new functionality
  • Update MODEL_CARD.md if changing capabilities

Pull Request Process

  1. Ensure CI/CD checks pass
  2. Update CHANGELOG.md
  3. Request review from maintainers
  4. Address review feedback
  5. Squash commits if requested
  6. Wait for approval and merge

Recognition

Contributors will be:

  • Listed in CONTRIBUTORS.md
  • Acknowledged in release notes
  • Credited in publications (for significant contributions)

Questions?

License

By contributing, you agree that your contributions will be licensed under the GPL-3.0 License.


Thank you for helping make computational drug discovery more accessible!