Developer documentation# Contributing & Guidelines: How to Contribute to PANORAMA π€ Quick overview π Development Setup Our Development Workflow Coding Standards π Writing Tests π§ͺ Updating Documentation π Pull Request Process π Tips and Tricks Getting Help π Recognition π Ready to Contribute? π Development Methods and Best Practices π» Setting Up Your Development Environment Code Style and Formatting Writing Clean, Maintainable Code Error Handling and Validation Performance and Optimization Code Organization Git Version Control Guidelines ποΈ Understanding Our Branch Structure πΏ Versioning and Releases π·οΈ Creating a Pull Request π Keeping Your Branch Updated Getting Help π For Contributors π Testing Guidelines for PANORAMA π§ͺ What Weβre Testing π General Testing Philosophy π Setting Up Your Test Environment π οΈ Running Tests βΆοΈ Test Quality and Coverage π Working with CI Getting Help with Testing π For New Contributors π Building the Documentation π Installing Documentation Dependencies π¦ Building and Previewing Documentation π¨ Modifying Existing Documentation βοΈ Adding to Existing Documentation β Creating Documentation from Scratch ποΈ Getting Help π Tips and Tricks for PANORAMA Developers Table of Contents Code Quality Fundamentals Testing Strategy Debugging and Profiling Git Workflow Common Pitfalls π§ Codebase Internals: Class Architecture Inheritance overview Pangenome layer Gene family layer Region layer Systems layer How the layers connect Key PPanGGOLiN touchpoints Detection Workflow Prerequisites Step-by-step pipeline Data-flow summary Key parameters and their effect Compare Workflow Shared infrastructure (panorama.compare.utils) Spots comparison (panorama.compare.spots) Systems comparison (panorama.compare.systems) Parallel execution I/O Layer Module overview HDF5 structure Reading HDF5 files Writing HDF5 files Flat file outputs Adding a Subcommand 1. Implement the module 2. Register common arguments 3. Wire into main.py 4. Logging convention Checklist