Thank you for your interest in contributing to OmixBench! This document provides guidelines for contributing to the project.
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to liuzaoqu@163.com.
If you discover a security vulnerability, please follow the guidelines in our Security Policy. Do not report security vulnerabilities through public GitHub issues.
- How to Contribute
- Development Setup
- Coding Standards
- Package Structure
- Testing
- Types of Contributions
- Benchmark Tasks
- Code Review Process
- Communication
- Recognition
If you encounter bugs or have feature requests:
- Search existing issues to avoid duplicates
- Create a new issue with a descriptive title
- Provide details:
- Clear description of the issue/feature
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- R version and package versions
- Operating system
- Error messages and logs
-
Fork the repository
git clone https://github.com/SolvingLab/OmixBench.git cd OmixBench -
Create a feature branch
git checkout -b feature/your-feature-name # Or for bug fixes: # git checkout -b fix/bug-description # Or for documentation: # git checkout -b docs/documentation-improvement
Branch Naming Conventions:
feature/: New features or enhancementsfix/: Bug fixesdocs/: Documentation improvementsrefactor/: Code refactoringtest/: Adding or updating testschore/: Maintenance tasks
-
Make your changes
- Follow R coding style conventions
- Add documentation for new functions
- Include examples in documentation
- Add tests if applicable
-
Test your changes
# Test package installation devtools::install_local("llmhelper") devtools::install_local("OmixBenchR") devtools::install_local("llmflow") # Run checks (this checks for errors, warnings, and notes) devtools::check("llmhelper") devtools::check("OmixBenchR") devtools::check("llmflow") # Run tests if available devtools::test("llmhelper") devtools::test("OmixBenchR") devtools::test("llmflow") # Build documentation devtools::document("llmhelper") devtools::document("OmixBenchR") devtools::document("llmflow")
-
Commit your changes
git add . git commit -m "Add: brief description of changes"
-
Push to your fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Provide a clear title and description
- Reference related issues (e.g., "Fixes #123" or "Closes #456")
- Explain the rationale for changes
- Include examples if relevant
- Ensure all checks pass
- Be responsive to feedback during review
- R: Version 4.0.0 or higher
- RStudio: Recommended but not required
- Git: For version control
- devtools: R package for development
# Install required development packages
install.packages(c("devtools", "roxygen2", "testthat", "usethis"))-
Clone the repository
git clone https://github.com/SolvingLab/OmixBench.git cd OmixBench -
Install dependencies
# Install dependencies for each package devtools::install_deps("llmhelper") devtools::install_deps("OmixBenchR") devtools::install_deps("llmflow")
-
Set up API keys (for testing)
# Create a .Renviron file in your home directory usethis::edit_r_environ() # Add your API keys (never commit these!) # OPENAI_API_KEY="your-key-here" # ANTHROPIC_API_KEY="your-key-here" # DEEPSEEK_API_KEY="your-key-here"
-
Load packages for development
# Load a package for interactive development devtools::load_all("llmhelper")
Follow standard R conventions:
- Use
snake_casefor function names and variables - Use
<-for assignment (not=) - Indent with 2 spaces (no tabs)
- Line length should not exceed 80 characters
- Add roxygen2 documentation for all exported functions
Example:
#' Execute a bioinformatics task using LLM
#'
#' @param task A list containing task description and metadata
#' @param llm_client An LLM client object
#' @param max_iterations Maximum number of retry attempts
#' @param verbose Logical; print progress messages
#' @return A list with execution results
#' @export
#' @examples
#' \dontrun{
#' result <- Execute_Task(task, llm_client, max_iterations = 10)
#' }
Execute_Task <- function(task, llm_client, max_iterations = 10, verbose = FALSE) {
# Function implementation
}- All exported functions must have roxygen2 documentation
- Include
@param,@return,@export, and@examples - Provide clear, concise descriptions
- Add examples that users can run
- Update vignettes when adding major features
- Keep README.md files up to date
While the core framework is in R, we provide Python examples for broader accessibility:
- Follow PEP 8 style guidelines
- Use type hints where appropriate
- Add docstrings to functions
- Keep notebooks well-documented with markdown cells
- Test notebooks before committing
- Clear output before committing (to reduce file size)
# Example: Clear notebook output before committing
jupyter nbconvert --clear-output --inplace *.ipynb- Use roxygen2 for all function documentation
- Include clear descriptions, parameters, return values, and examples
- Use markdown formatting in roxygen comments
- Link related functions with
@seealso
- Each package should have a clear README
- Include installation instructions
- Provide basic usage examples
- Link to full documentation
- Use clear, descriptive titles
- Include code examples that run without errors
- Explain both what and why
- Consider adding diagrams for complex workflows
When adding new features:
- Consider edge cases
- Test with different LLM providers
- Verify error handling
- Check compatibility with existing code
- Add unit tests using testthat when applicable
# Example test structure
testthat::test_that("function handles edge cases", {
expect_error(my_function(NULL), "Input cannot be NULL")
expect_equal(my_function("test"), expected_result)
})Test Coverage Areas:
- Input validation
- Error handling
- Edge cases (empty inputs, NULL values, etc.)
- Integration with LLM providers
- Output format validation
R/: R source codeman/: Auto-generated documentationDESCRIPTION: Package metadataNAMESPACE: Exported functions
R/: R source codeinst/: Additional files (prompts, templates)man/: DocumentationDESCRIPTION: Package metadata
R/: R source codeman/: DocumentationDESCRIPTION: Package metadataAutoFlow_Tasks.R: Example workflows
- Fix errors in existing code
- Improve error messages
- Handle edge cases
- Add new LLM provider integrations
- Implement additional evaluation metrics
- Extend RAG/ReAct capabilities
- Add visualization tools
- Improve README files
- Add tutorials and examples
- Clarify function documentation
- Create vignettes
- Optimize slow functions
- Reduce memory usage
- Improve API efficiency
- Add unit tests
- Create integration tests
- Improve test coverage
If contributing new benchmark tasks:
-
Task Specification
- Clear description
- Omics domain classification
- Complexity level (1-3)
- Required data files
- Expected output format
-
Task Metadata
- Domain (e.g., transcriptomics, genomics)
- Complexity dimensions (see Task Complexity Classification.md)
- Keywords/tags
- Difficulty level
-
Validation
- Ensure task is solvable
- Verify data availability
- Test with multiple LLMs
- Document expected results
- Clarity: Unambiguous description
- Relevance: Real-world bioinformatics problem
- Feasibility: Solvable within reasonable time/resources
- Diversity: Covers different aspects of omics analysis
- Validation: Clear success criteria
All contributions undergo review:
- Automated checks (if available)
- Code review by maintainers
- Testing on different platforms
- Documentation review
- Merge approval
- Code quality and style
- Documentation completeness
- Test coverage
- Backward compatibility
- Performance impact
- Issues: For bug reports and feature requests
- Pull Requests: For code contributions
- Discussions: For questions and ideas (use GitHub Discussions if enabled)
- Email: liuzaoqu@163.com for private inquiries or security concerns
- Search existing issues before creating new ones
- Use clear, descriptive titles
- Provide context and examples
- Be respectful and constructive
- Follow up on your issues and PRs
Contributors will be:
- Listed in package documentation
- Acknowledged in release notes
- Invited to co-author future publications (for significant contributions)
By contributing, you agree that your contributions will be licensed under the GNU General Public License v3.0, the same license as the project.
If you have questions about contributing:
- Open a GitHub issue
- Check existing documentation
- Contact the maintainers
Thank you for helping improve OmixBench! Your contributions make bioinformatics AI tools more accessible and reliable for the research community.
If you need help with your contribution:
- Check the documentation
- Review existing issues
- Ask questions in your pull request or issue
- Contact the maintainers at liuzaoqu@163.com
- R Packages Book by Hadley Wickham
- Git and GitHub Guide
- Bioconductor Contribution Guidelines
- R Style Guide
Maintainer: Zaoqu Liu (liuzaoqu@163.com)
Last Updated: October 2024