Add LFM kernel implementation backlog items

- Add code review task for existing LFM implementations
- Add design task for modern LFM kernel architecture
- Add implementation task for core LFM kernel functionality
- Establish clear task dependencies and acceptance criteria
- Link to CIP-0001 and relevant papers
This commit is contained in:
Neil Lawrence 2025-08-15 08:24:01 +02:00
parent 90805ba026
commit 06a103d61d
3 changed files with 171 additions and 0 deletions

View file

@ -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

View file

@ -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)

View file

@ -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)