-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
Task 005: HTFAResults Container Implementation
Overview
Implement the HTFAResults container class that stores HTFA analysis results with comprehensive metadata tracking and NIfTI reconstruction capabilities. This class serves as the primary interface for accessing, manipulating, and exporting HTFA results.
Objectives
- Create a comprehensive results storage container with rich metadata
- Implement NIfTI reconstruction from factor loadings and weights
- Provide clean API for accessing factors, weights, and metadata
- Support BIDS derivatives export with proper metadata preservation
- Enable seamless integration with visualization methods
Scope
In Scope
- HTFAResults class with full metadata tracking
- NIfTI reconstruction methods for factors and weights
- BIDS derivatives export functionality
- Results serialization/deserialization (pickle support)
- Integration with TFA and HTFA algorithm outputs
- Comprehensive docstring documentation
Out of Scope
- Visualization methods (handled in Task 006)
- Statistical analysis methods (future enhancement)
- Interactive result exploration (future enhancement)
- Custom file format support beyond NIfTI/BIDS
Technical Requirements
HTFAResults Class Design
class HTFAResults:
"""Container for HTFA analysis results with metadata and export capabilities."""
def __init__(self, factors, weights, metadata, affine=None):
# Core results storage
# Metadata preservation
# NIfTI reconstruction setup
# Properties for easy access
@property
def n_factors(self) -> int
@property
def n_timepoints(self) -> int
@property
def n_subjects(self) -> int
# NIfTI reconstruction methods
def factors_to_nifti(self) -> List[nib.Nifti1Image]
def weights_to_nifti(self) -> List[nib.Nifti1Image]
# Export functionality
def save_derivatives(self, output_dir: Path, dataset_name: str)
def to_pickle(self, filepath: Path)
@classmethod
def from_pickle(cls, filepath: Path) -> 'HTFAResults'Core Data Structure
- Spatial Factors: Stored as (n_voxels, n_factors) arrays
- Temporal Weights: (n_subjects, n_timepoints, n_factors) arrays
- Metadata Dictionary: Algorithm parameters, preprocessing info, timing
- NIfTI Affine: Spatial transformation for reconstruction
- BIDS Metadata: Preserved from input for derivatives export
NIfTI Reconstruction
- Transform factor loadings back to 3D brain space using stored affine
- Handle masked data with proper background value setting
- Support both single-factor and multi-factor NIfTI export
- Preserve original voxel spacing and orientation
BIDS Derivatives Export
- Create BIDS-compliant derivatives directory structure
- Generate dataset_description.json with HTFA metadata
- Export factors as statistical maps with proper naming
- Include comprehensive sidecar JSON files with analysis parameters
Implementation Details
Class Architecture
# Core attributes
self.factors: np.ndarray # (n_voxels, n_factors)
self.weights: np.ndarray # (n_subjects, n_timepoints, n_factors)
self.metadata: Dict[str, Any] # Algorithm params, timing, preprocessing
self.affine: np.ndarray # NIfTI spatial transformation
self.mask: np.ndarray # Brain mask for reconstruction
# Derived properties
self._factor_images: Optional[List[nib.Nifti1Image]] = None
self._weight_images: Optional[List[nib.Nifti1Image]] = NoneNIfTI Reconstruction Logic
- Spatial Reconstruction: Map factor loadings from vectorized to 3D space
- Temporal Reconstruction: Create 4D images for temporal weights
- Background Handling: Set non-brain voxels to zero using stored mask
- Metadata Preservation: Transfer analysis parameters to NIfTI headers
Export Directory Structure
derivatives/htfa/
├── dataset_description.json
├── sub-{subject}/
│ └── func/
│ ├── sub-{subject}_task-{task}_space-{space}_desc-htfa_weights.nii.gz
│ └── sub-{subject}_task-{task}_space-{space}_desc-htfa_weights.json
└── group/
├── task-{task}_space-{space}_desc-htfa_factors.nii.gz
└── task-{task}_space-{space}_desc-htfa_factors.json
Acceptance Criteria
Core Functionality
- HTFAResults class instantiated with factors, weights, metadata
- All properties (n_factors, n_subjects, etc.) return correct values
- NIfTI reconstruction produces valid brain images in original space
- BIDS derivatives export creates compliant directory structure
- Pickle serialization preserves all data and metadata
Data Integrity
- Factor loadings correctly mapped from vector to 3D brain space
- Temporal weights maintain subject and time dimension ordering
- NIfTI affine transformations preserve spatial accuracy
- Metadata completeness validated against input parameters
BIDS Compliance
- Derivatives directory follows BIDS specification
- JSON sidecars contain all required analysis metadata
- File naming follows BIDS entity conventions
- dataset_description.json validates against BIDS schema
API Usability
- Intuitive property access for common operations
- Clear error messages for invalid operations
- Comprehensive docstrings with usage examples
- Type hints for all public methods
Testing Strategy
Unit Tests
- Results container initialization with various input types
- Property access and derived calculations
- NIfTI reconstruction accuracy using synthetic data
- BIDS export directory structure and metadata validation
- Pickle serialization round-trip integrity
Integration Tests
- End-to-end workflow from TFA/HTFA algorithms to results export
- BIDS dataset processing with results reconstruction
- Cross-validation with original data spatial accuracy
- Multi-subject results handling and aggregation
Edge Case Testing
- Empty or single-factor results handling
- Missing metadata graceful degradation
- Malformed affine transformation recovery
- Large dataset memory efficiency validation
Dependencies
Required Components (from previous tasks)
- Task 001: TFA algorithm implementation (factor loadings format)
- Task 002: HTFA algorithm implementation (multi-subject results format)
External Dependencies
- nibabel: NIfTI image creation and manipulation
- numpy: Array operations and spatial transformations
- pandas: Metadata handling and JSON export
- pathlib: File system operations for BIDS export
Internal Dependencies
- htfa.utils: Utility functions for spatial transformations
- htfa.core: Integration with TFA/HTFA algorithm outputs
Risks and Mitigation
Technical Risks
- Memory Usage: Large datasets may strain memory during reconstruction
- Mitigation: Implement lazy loading and chunk-based processing
- Spatial Accuracy: NIfTI reconstruction might introduce spatial errors
- Mitigation: Comprehensive testing with known spatial coordinates
- BIDS Compliance: Complex specification may lead to validation errors
- Mitigation: Use bids-validator for automated compliance checking
Integration Risks
- Algorithm Interface: Results format may not match algorithm outputs
- Mitigation: Close coordination with Tasks 001/002 for API alignment
- Metadata Completeness: Missing parameters may break export functionality
- Mitigation: Required metadata validation in constructor
Effort Estimate
Size: Medium (M) - 1-2 days
Breakdown
- Core Class Implementation: 6 hours
- NIfTI Reconstruction Methods: 8 hours
- BIDS Export Functionality: 6 hours
- Testing and Validation: 4 hours
- Documentation and Examples: 2 hours
Total: 26 hours (1.6 days)
Definition of Done
- HTFAResults class implemented with all specified methods
- Unit tests achieve >95% coverage for results container
- NIfTI reconstruction validated against synthetic ground truth
- BIDS derivatives export passes bids-validator compliance
- Integration tests successful with TFA/HTFA algorithm outputs
- Documentation complete with usage examples and API reference
- Code passes all linting and type checking requirements
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels