Version 3.2.0
Highlights
- Parallel CV traversal: All CV values are now evaluated simultaneously instead of sequentially, dramatically reducing total runtime.
- Unified optimal selection: After parallel computation, a unified comparison step selects the tree with the lowest penalty score across all CV values.
- Structured logging overhaul: Each CV value now has its own independent log file; main execution log consolidates the overall workflow and final comparison results.
- Full English localization: All Chinese comments, docstrings, and log messages have been translated to English for better accessibility and maintainability.
What's New
Core Algorithm
- Parallel CV value iteration: The CV threshold search now executes in parallel across all specified values, eliminating sequential wait times.
- Unified post-comparison logic: After all parallel tasks complete, a centralized comparison selects the globally optimal tree based on penalty scores.
Logging & Output
- Independent CV logs: Each CV value's tree-building process writes to a separate log file (e.g.,
cv_0.3.log,cv_0.5.log) for easier debugging. - Main execution log: Comprehensive workflow tracking with final comparison results and optimal tree selection details.
- All log messages in English: Improved readability for international collaborators and easier integration with CI/CD pipelines.
Code Quality
- Full codebase localization: All comments, function docstrings, and log outputs translated from Chinese to English.
- Code cleanup: Removed redundant intermediate outputs and streamlined execution flow.
- Improved maintainability: Better separation of concerns between parallel execution and result aggregation.
Performance
| CV Values | Before (Sequential) | After (Parallel) | Speedup |
|---|---|---|---|
| 5 | ~50s | ~10s | ~5x |
| 10 | ~100s | ~12s | ~8x |
| 20 | ~200s | ~15s | ~13x |
Benchmarks based on typical dataset with 100 candidate positions. Actual speedup depends on available CPU cores and CV value count.
Bug Fixes
- None in this release (performance optimization and code quality improvements only).
Notes
- Parallel execution uses Python's
multiprocessingmodule; number of workers defaults to available CPU cores. - For usage details, see the docs site: https://github.com/douymLab/PhyloSOLID/