# Core Utilities

This directory contains core utility functions and configuration for the video processing system.

## Pattern Detection Configuration

The pattern detection system uses a centralized configuration approach to ensure consistency across different types of analysis.

### PatternDetectionConfig

The `PatternDetectionConfig` module provides standardized configuration options for different types of pattern detection:

- `DEFAULT_CONFIG`: Base configuration for pattern detection
- `FOOT_LANDING_CONFIG`: Specialized configuration for foot landing detection
- `RELEASE_POINT_CONFIG`: Specialized configuration for release point detection
- `CORRELATION_CONFIG`: Specialized configuration for correlation analysis
- `BIAS_ANALYSIS_CONFIG`: Specialized configuration for bias analysis
- `VELOCITY_ANALYSIS_CONFIG`: Specialized configuration for velocity analysis

To get a configuration for a specific type of detection:

```javascript
const { getConfig } = require('./PatternDetectionConfig');

// Get default configuration
const defaultConfig = getConfig();

// Get foot landing configuration
const footLandingConfig = getConfig('footLanding');

// Get configuration with overrides
const customConfig = getConfig('releasePoint', { windowSize: 7, smoothingFactor: 0.4 });
```

### BiasConfig

The `BiasConfig` module provides standardized configuration options for bias analysis:

- `DEFAULT_BIAS_CONFIG`: Base configuration for bias analysis
- `FOOT_LANDING_BIAS_CONFIG`: Specialized configuration for foot landing bias analysis
- `RELEASE_POINT_BIAS_CONFIG`: Specialized configuration for release point bias analysis

To get a configuration for a specific type of bias analysis:

```javascript
const { getBiasConfig, getBiasPatternConfig } = require('./BiasConfig');

// Get default bias configuration
const defaultBiasConfig = getBiasConfig();

// Get foot landing bias configuration
const footLandingBiasConfig = getBiasConfig('footLanding');

// Get bias configuration with overrides
const customBiasConfig = getBiasConfig('releasePoint', { significanceThreshold: 0.25 });

// Get pattern detection configuration for bias analysis
const biasPatternConfig = getBiasPatternConfig('default');
```

## Usage in Pattern Detection

To use the configuration system with the pattern detection utilities:

```javascript
const coreUtils = require('../../core/utils');

// Find patterns using default configuration
const patterns = coreUtils.findPatterns(data);

// Find patterns using specific configuration type
const footLandingPatterns = coreUtils.findPatterns(data, { type: 'footLanding' });

// Find patterns using configuration with overrides
const customPatterns = coreUtils.findPatterns(data, {
  type: 'releasePoint',
  windowSize: 7,
  minPeakProminence: 0.3
});

// Find patterns using bias configuration
const biasPatterns = coreUtils.findPatterns(data, 
  coreUtils.getBiasPatternConfig('default', { adaptiveWindow: true })
);
``` 