diff --git a/backlog/features/2025-08-15_design-modern-lfm-kernel.md b/backlog/features/2025-08-15_design-modern-lfm-kernel.md new file mode 100644 index 00000000..5630bd72 --- /dev/null +++ b/backlog/features/2025-08-15_design-modern-lfm-kernel.md @@ -0,0 +1,58 @@ +--- +id: "design-modern-lfm-kernel" +title: "Design modern LFM kernel architecture" +status: "Proposed" +priority: "High" +created: "2025-08-15" +last_updated: "2025-08-15" +owner: "Neil Lawrence" +dependencies: ["lfm-kernel-code-review"] +tags: +- lfm +- kernel +- design +- architecture +--- + +# Design modern LFM kernel architecture + +## Description +Design a modern LFM kernel implementation that follows GPy's current architectural patterns and uses the multioutput kernel approach with output index as input. + +## Background +- Current GPy LFM implementations don't use the modern multioutput kernel approach +- Need to design a unified LFM kernel that integrates well with GPy's current framework +- Should maintain backward compatibility while providing improved functionality + +## Design Requirements +- [ ] Use GPy's multioutput kernel approach with output index as input +- [ ] Follow consistent API design with other GPy kernels +- [ ] Implement proper parameter handling and constraints +- [ ] Support different base kernels for latent functions +- [ ] Enable efficient gradient computation +- [ ] Maintain backward compatibility with existing implementations + +## Design Tasks +- [ ] Define kernel class structure and inheritance hierarchy +- [ ] Design parameter handling for mass, damper, spring, sensitivity, delay +- [ ] Plan integration with GPy's multioutput framework +- [ ] Design cross-kernel computation methods +- [ ] Plan parameter tying and constraint handling +- [ ] Design efficient computation methods for large datasets + +## Acceptance Criteria +- [ ] Complete design specification document +- [ ] API design that follows GPy patterns +- [ ] Integration plan with existing GPy infrastructure +- [ ] Performance considerations documented +- [ ] Backward compatibility strategy defined + +## Implementation Notes +- Study how other multioutput kernels in GPy handle output indices +- Consider parameter tying approaches from MATLAB implementation +- Design for extensibility to different differential equation types +- Plan for efficient computation of cross-kernel terms + +## Related +- CIP: 0001 (LFM kernel implementation) +- Backlog: lfm-kernel-code-review diff --git a/backlog/features/2025-08-15_implement-lfm-kernel-core.md b/backlog/features/2025-08-15_implement-lfm-kernel-core.md new file mode 100644 index 00000000..ba995de6 --- /dev/null +++ b/backlog/features/2025-08-15_implement-lfm-kernel-core.md @@ -0,0 +1,62 @@ +--- +id: "implement-lfm-kernel-core" +title: "Implement core LFM kernel functionality" +status: "Proposed" +priority: "High" +created: "2025-08-15" +last_updated: "2025-08-15" +owner: "Neil Lawrence" +dependencies: ["design-modern-lfm-kernel"] +tags: +- lfm +- kernel +- implementation +- core +--- + +# Implement core LFM kernel functionality + +## Description +Implement the core LFM kernel class with basic functionality including kernel computation, parameter handling, and gradient computation. + +## Background +- Design phase completed with modern LFM kernel architecture +- Need to implement the core kernel computation methods +- Should follow the mathematical foundations from the papers and MATLAB implementation + +## Implementation Tasks +- [ ] Create `GPy.kern.LFM` class inheriting from appropriate base class +- [ ] Implement parameter handling for mass, damper, spring, sensitivity, delay +- [ ] Implement `K()` method for kernel matrix computation +- [ ] Implement `Kdiag()` method for diagonal computation +- [ ] Add parameter constraints and transformations +- [ ] Implement basic gradient computation +- [ ] Add support for different base kernels for latent functions + +## Core Methods to Implement +- [ ] `__init__()` - Parameter initialization and validation +- [ ] `K(X, X2=None)` - Kernel matrix computation +- [ ] `Kdiag(X)` - Diagonal computation +- [ ] `update_gradients_full()` - Gradient computation +- [ ] `update_gradients_diag()` - Diagonal gradient computation +- [ ] `parameters_changed()` - Parameter update handling + +## Acceptance Criteria +- [ ] Core LFM kernel class implemented and functional +- [ ] Basic kernel computation working correctly +- [ ] Parameter handling and constraints implemented +- [ ] Gradient computation implemented +- [ ] Unit tests passing for core functionality +- [ ] Integration with GPy's parameterization system + +## Implementation Notes +- Follow the mathematical structure from the MATLAB implementation +- Use GPy's parameterization system for constraints +- Implement efficient computation methods +- Ensure proper handling of edge cases and numerical stability +- Add comprehensive docstrings and documentation + +## Related +- CIP: 0001 (LFM kernel implementation) +- Backlog: design-modern-lfm-kernel +- Papers: Álvarez et al. (2009, 2012) diff --git a/backlog/features/2025-08-15_lfm-kernel-code-review.md b/backlog/features/2025-08-15_lfm-kernel-code-review.md new file mode 100644 index 00000000..75d54f07 --- /dev/null +++ b/backlog/features/2025-08-15_lfm-kernel-code-review.md @@ -0,0 +1,51 @@ +--- +id: "lfm-kernel-code-review" +title: "Review existing LFM kernel implementations" +status: "Ready" +priority: "High" +created: "2025-08-15" +last_updated: "2025-08-15" +owner: "Neil Lawrence" +dependencies: [] +tags: +- lfm +- kernel +- code-review +- documentation +--- + +# Review existing LFM kernel implementations + +## Description +Conduct a comprehensive review of existing LFM (Latent Force Model) kernel implementations in both GPy and MATLAB to understand the current state, design decisions, and limitations. + +## Background +- GPy has existing ODE-based kernels (`EQ_ODE1`, `EQ_ODE2`) that implement LFM concepts +- MATLAB implementation in GPmat provides a more complete LFM framework +- Need to understand differences and identify modernization opportunities + +## Tasks +- [ ] Review `GPy/kern/src/eq_ode1.py` and `eq_ode2.py` implementations +- [ ] Analyze MATLAB LFM implementation structure and patterns +- [ ] Document current limitations and inconsistencies +- [ ] Identify reusable components and design patterns +- [ ] Compare parameter handling approaches +- [ ] Review cross-kernel computation methods +- [ ] Document mathematical foundations and implementation details + +## Acceptance Criteria +- [ ] Complete documentation of existing implementations +- [ ] Clear understanding of design differences between GPy and MATLAB versions +- [ ] Identified list of modernization opportunities +- [ ] Documentation of mathematical foundations +- [ ] Assessment of current limitations and bugs + +## Implementation Notes +- Focus on understanding the mathematical foundations from the papers +- Pay attention to parameter tying and multi-output handling +- Document the differential equation structure and kernel computation +- Identify opportunities for using GPy's modern multioutput kernel approach + +## Related +- CIP: 0001 (LFM kernel implementation) +- Papers: Álvarez et al. (2009, 2012), Lawrence et al. (2006)