# Processors

This directory contains the core processing components for the bowling analysis system.

## BiasCalculator

The `BiasCalculator` is the unified implementation for bias calculation and event detection in the bowling analysis system. It replaces several deprecated implementations that were previously scattered throughout the codebase.

### Usage

```javascript
const BiasCalculator = require('../processors/BiasCalculator');

// Create a new instance
const biasCalculator = new BiasCalculator({
  debug: true,
  biasFilePath: 'path/to/bias.json',
  logger: customLogger // Optional
});

// Calculate bias from metrics
const biasData = await biasCalculator.calculateBias(metrics);

// Execute the full bias calculation pipeline
const biasResult = await biasCalculator.execute({
  metrics: {
    metrics: phaseOneData.metrics,
    timeSeries: phaseOneData.timeSeries
  }
}, {
  saveBias: true,
  biasFilePath: 'path/to/bias.json'
});

// Detect events using bias correlations
const events = biasCalculator.detectEventsWithBias(metrics, biasData);
```

### Configuration Options

- `debug` (boolean): Enable debug logging
- `dataDir` (string): Directory for data files (default: process.cwd())
- `biasFilePath` (string): Path to the bias data file (default: 'bias.json' in the current directory)
- `generateBias` (boolean): Whether to generate bias data if it doesn't exist (default: false)
- `logger` (object): Custom logger instance

### Key Methods

- `execute(data, options)`: Execute the full bias calculation pipeline
- `calculateBias(metrics)`: Calculate bias from metrics data
- `loadBiasData(filePath)`: Load bias data from a file
- `saveBiasData(biasData, filePath)`: Save bias data to a file
- `detectEventsWithBias(metrics, biasData, simulatedMoments)`: Detect events using bias correlations

### Notes

This implementation consolidates functionality that was previously spread across:
- `src/bowling_analysis/heuristics/BiasCalculator.js`
- `src/bowling_analysis/utils/BiasAnalyzer.js`
- `src/bowling_analysis/stages/bias_calculator.js`

All code should now use this implementation for bias calculation and event detection.
