GPy/backlog/features/2025-08-15_design-modern-lfm-kernel.md

3.9 KiB

id title status priority created last_updated owner github_issue dependencies tags
design-modern-lfm-kernel Design modern LFM kernel architecture Completed High 2025-08-15 2025-08-15 Neil Lawrence lfm-kernel-code-review
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 (via test-driven design)
  • Design parameter handling for mass, damper, spring, sensitivity, delay (via test-driven design)
  • Plan integration with GPy's multioutput framework (via test-driven design)
  • Design cross-kernel computation methods (via test-driven design)
  • Design efficient computation methods for large datasets (via test-driven design)
  • Plan parameter tying and constraint handling (assumed to be addressed separately)

Acceptance Criteria

  • Complete design specification document (test suite serves as specification)
  • API design that follows GPy patterns (tested and validated)
  • Integration plan with existing GPy infrastructure (multioutput framework)
  • Performance considerations documented (gradient testing framework)
  • Backward compatibility strategy defined (separate LFM1/LFM2 classes)

Implementation Notes

  • Study how other multioutput kernels in GPy handle output indices
  • Design for extensibility to different differential equation types
  • Plan for efficient computation of cross-kernel terms
  • Parameter Tying: Assumed to be addressed by separate CIP-0002 work
  • Design Focus: Clean LFM implementation without parameter tying workarounds
  • CIP: 0001 (LFM kernel implementation)
  • Backlog: lfm-kernel-code-review

Progress Updates

2025-08-15

Design task started after completion of code review:

  • Code review identified parameter tying as a fundamental limitation
  • Decision made to proceed with clean LFM implementation assuming parameter tying addressed separately
  • Focus on core LFM functionality without parameter tying workarounds
  • Ready to begin detailed design of modern LFM kernel architecture

2025-08-15 (Test-Driven Design)

Major Progress: Created comprehensive test suite using test-driven design approach:

  • Created test_lfm_kernel.py with 15+ test methods covering all aspects
  • Defined expected API: LFM1 and LFM2 kernel classes with standard parameters
  • Specified multioutput integration using output index as second input dimension
  • Defined parameter constraints (positive mass, damper, spring)
  • Specified mathematical properties (positive semi-definite, symmetry, diagonal)
  • Included gradient testing, serialization, and edge case handling
  • Test suite serves as detailed specification for implementation

2025-08-15 (Design Completion)

Design Phase Completed: Successfully completed test-driven design approach:

  • Validated test framework works correctly with GPy's testing infrastructure
  • Confirmed existing EQ_ODE1/EQ_ODE2 kernels are incomplete (NotImplementedError)
  • Test suite provides comprehensive specification for implementation
  • All design tasks completed through test-driven approach
  • Ready to proceed with implementation phase