Implement CSI processing and phase sanitization modules; add unit tests for DensePose and modality translation networks

This commit is contained in:
rUv
2025-06-07 05:36:01 +00:00
parent f3c77b1750
commit 44e5382931
11 changed files with 739 additions and 49 deletions

46
src/core/csi_processor.py Normal file
View File

@@ -0,0 +1,46 @@
"""CSI (Channel State Information) processor for WiFi-DensePose system."""
import numpy as np
from typing import Dict, Any, Optional
class CSIProcessor:
"""Processes raw CSI data for neural network input."""
def __init__(self, config: Optional[Dict[str, Any]] = None):
"""Initialize CSI processor with configuration.
Args:
config: Configuration dictionary with processing parameters
"""
self.config = config or {}
self.sample_rate = self.config.get('sample_rate', 1000)
self.num_subcarriers = self.config.get('num_subcarriers', 56)
self.num_antennas = self.config.get('num_antennas', 3)
def process_raw_csi(self, raw_data: np.ndarray) -> np.ndarray:
"""Process raw CSI data into normalized format.
Args:
raw_data: Raw CSI data array
Returns:
Processed CSI data ready for neural network input
"""
if raw_data.size == 0:
raise ValueError("Raw CSI data cannot be empty")
# Basic processing: normalize and reshape
processed = raw_data.astype(np.float32)
# Handle NaN values by replacing with mean of non-NaN values
if np.isnan(processed).any():
nan_mask = np.isnan(processed)
non_nan_mean = np.nanmean(processed)
processed[nan_mask] = non_nan_mean
# Simple normalization
if processed.std() > 0:
processed = (processed - processed.mean()) / processed.std()
return processed