nanalogue 0.1.6

BAM/Mod BAM parsing and analysis tool with a single-molecule focus
Documentation
# Contributing to nanalogue

Thank you for your interest in contributing to `nanalogue`! This project is largely maintained by one developer, so your contributions are especially valuable.

## Getting Started

1. Fork the repository
2. Clone your fork: `git clone https://github.com/DNAReplicationLab/nanalogue.git`
3. Create a branch for your changes: `git checkout -b feature/your-feature-name`

## Development Setup

### Prerequisites

- Rust toolchain (rustc, cargo) - Install from [rustup.rs]https://rustup.rs/
- Git for version control

### Building the Project

```bash
cargo build
```

### Running Tests

```bash
cargo test
```

## Code Quality Standards

This project maintains high code quality standards. Before submitting a PR, ensure:

1. **All tests pass**: Run `cargo test`
2. **Clippy lints pass**: Run `cargo clippy --all-features --all-targets -- -D warnings`
3. **Code is formatted**: Run `cargo fmt`
4. **Code coverage is maintained**: We aim for >92% test coverage

The project uses extensive clippy lints (see `Cargo.toml` for the full list). Your code must pass all linting checks.

## Contribution Guidelines

### Code Style

- Follow Rust naming conventions and idioms
- Add documentation comments (`///`) for public APIs
- Include inline comments for complex logic
- All code files should start with a brief 2-line comment explaining what the file does
- Match the style and formatting of surrounding code for consistency

### Testing

- Write tests for new functionality
- Update existing tests if behavior changes
- Include both unit tests and integration tests where appropriate
- Test edge cases and error conditions

### Documentation

- Update README.md if adding new commands or features
- Add docstrings to new public functions, structs, and modules
- Update CHANGELOG.md with your changes

### Commit Messages

- Write clear, descriptive commit messages
- Use present tense ("adds feature" not "added feature")
- Reference issue numbers when applicable

## Pull Request Process

1. **Before submitting**:
   - Ensure all tests pass
   - Run clippy and fix all warnings
   - Run `cargo fmt` to format your code
   - Update documentation as needed

2. **Submit your PR**:
   - Provide a clear description of the changes
   - Reference any related issues
   - Explain why the change is needed

3. **Review process**:
   - The maintainer will review your PR when available
   - Be patient - this is a solo-maintained project
   - Be open to feedback and suggested changes
   - Once approved, your PR will be merged

## Types of Contributions

We welcome various types of contributions:

- **Bug fixes**: Found a bug? Fix it and submit a PR!
- **New features**: Have an idea? Open an issue first to discuss
- **Documentation**: Improvements to docs, examples, or comments
- **Tests**: Additional test coverage is always appreciated
- **Performance improvements**: Optimizations with benchmarks
- **Code quality**: Refactoring to improve maintainability

## Reporting Bugs

When reporting bugs, please include:

- A clear description of the issue
- Steps to reproduce the problem
- Expected vs actual behavior
- Your environment (OS, Rust version, etc.)
- Sample BAM files or data (if applicable and not sensitive)

**Note**: For security vulnerabilities, see SECURITY.md

## Feature Requests

For feature requests:

- Open an issue describing the feature
- Explain the use case and why it's valuable
- Discuss implementation approach if you have ideas
- Wait for maintainer feedback before starting work

## Questions?

- Open an issue for questions about the codebase
- Check existing issues and documentation first
- Be respectful and patient

## Code of Conduct

- Be respectful and inclusive
- Focus on constructive feedback
- Help create a welcoming environment for all contributors

## License

By contributing to nanalogue, you agree that your contributions will be licensed under the MIT License.

## Contact

Maintainer: Sathish Thiyagarajan (mail AT unintegrable dot com)

## Acknowledgments

All contributors will be acknowledged in the project. Thank you for helping make `nanalogue` better!