Thank you for considering contributing to our lab's fMRI preprocessing pipeline. We created this template to be community-driven, as we believe the best preprocessing practices emerge from collective expertise and rigorous discussion.
- Identify potential issues in preprocessing steps
- Suggest improvements based on recent literature
- Share knowledge about best practices
- Question assumptions in our implementation
- Propose new validation checks
- Bug fixes
- Code optimization
- Documentation improvements
- Example additions
- Test cases
-
Start with an Issue
- Search existing issues first
- Create a new issue to discuss your proposed changes
- Wait for maintainer feedback before significant work
-
Fork & Create Branch
- Fork the repository
- Create a branch for your changes
- Use clear branch names (e.g.,
fix-fieldmap-volumes,improve-distortion-correction)
-
Make Changes
- Follow existing code style
- Add comments explaining preprocessing decisions
- Update documentation as needed
- Add tests if applicable
- Use conventional commit messages (see below)
-
Submit Pull Request
- Provide clear description of changes
- Link related issues
- Include scientific rationale for preprocessing changes
- Add before/after examples if possible
-
Scientific Validity
- Explain the scientific rationale for changes
- Cite relevant literature
- Describe impact on preprocessing quality
-
Code Quality
- Follow Python (PEP 8) and Shell script conventions
- Include comments explaining preprocessing decisions
- Maintain existing error checking patterns
- Add appropriate logging
-
Documentation
- Update README (only if needed)
- Add inline documentation
- Update parameter descriptions
- Include clear and generalizable examples
-
Testing
- Add validation checks
- Test with different data types
- Verify BIDS compliance
- Check edge cases
This project uses Conventional Commits for automated changelog generation and semantic versioning.
<type>(<scope>): <subject>
feat: New feature (MINOR version bump)fix: Bug fix (PATCH version bump)docs: Documentation only changesstyle: Formatting changes (no code change)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testsbuild: Build system changesci: CI configuration changeschore: Other changes (no src/test changes)
Add ! after type or BREAKING CHANGE: in footer for MAJOR version bump:
feat!: remove deprecated API
BREAKING CHANGE: The old API endpoint has been removed.
Feature:
feat(preprocessing): add multi-echo support
Bug Fix:
fix(fieldmap): correct IntendedFor mapping
Fixes #123
Documentation:
docs: update configuration guide
Releases are automated via GitHub Actions:
- Commits are analyzed on push to main
- Version is determined from commit messages
- Changelog is generated automatically
- GitHub release is created
See Semantic Versioning for version numbering details.
Feel free to:
- Open an issue for discussion
- Ask for clarification on existing issues
- Request more detailed contribution guidelines
We appreciate your help in maintaining high-quality preprocessing standards!
cheers, shawn