Files
foxhunt/ml/examples/test_parquet_schema.rs
jgrusewski 31890df312 feat(wave12): Complete ML warning fixes and add Parquet training infrastructure
Wave 12 Group 3 Progress: ML Training Infrastructure Improvements

## Changes Summary

### Warning Fixes (W12-16B-WARNINGS: COMPLETE)
- Fixed all actionable ML library warnings (0 warnings in ml/src/)
- Fixed training example warnings (train_tft.rs, train_dqn.rs, train_ppo.rs, train_mamba2_dbn.rs)
- Removed 900+ lines dead code (duplicate types, orphaned tests)
- Enhanced metrics output with wall-clock timing

Key fixes:
- ml/examples/train_tft.rs: Changed 50→225 features, removed unused imports
- ml/examples/train_tft_dbn.rs: Used training_duration and feature_config properly
- ml/src/trainers/tft.rs: Fixed unused metadata, removed dead code methods
- ml/src/dqn/: Deleted rainbow_types.rs (828 lines duplicate code)
- ml/src/trainers/ppo.rs: Enhanced value pre-training metrics output

### Training Infrastructure
- Added TFT Parquet support (ml/src/trainers/tft_parquet.rs)
- Completed DQN training (30 epochs, 178 min)
- Completed PPO training (30 epochs, production ready)
- Completed MAMBA-2 retraining (20 epochs, best epoch 15)

### Test Data
- Added 180-day Parquet files: ES.FUT, NQ.FUT, 6E.FUT, ZN.FUT
- Added DBN validation examples
- Added 225-feature validation examples

### Model Checkpoints
- DQN: dqn_final_epoch30.safetensors (production ready)
- PPO: ppo_actor/critic_epoch_30.safetensors (production ready)
- MAMBA-2: best_model_epoch_15.safetensors (production ready)

## Remaining Work (W12-16B+)
- Implement PPO Parquet support (4-6h)
- Implement MAMBA-2 Parquet support (4-6h)
- Wire gRPC orchestrator for Parquet training (2-3h)
- Fix lazy loading implementation (8-12h)
- Complete TFT training with 225 features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 08:54:26 +02:00

28 lines
1015 B
Rust

//! Quick test to inspect Parquet schema
use parquet::arrow::arrow_reader::ParquetRecordBatchReaderBuilder;
use std::fs::File;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let file = File::open("test_data/ES_FUT_180d.parquet")?;
let builder = ParquetRecordBatchReaderBuilder::try_new(file)?;
let reader = builder.build()?;
// Get the first batch to inspect schema
if let Some(batch_result) = reader.into_iter().next() {
let batch = batch_result?;
println!("Schema: {:?}", batch.schema());
println!("\nColumn 0 (timestamp):");
println!(" Data type: {:?}", batch.column(0).data_type());
println!(" Null count: {}", batch.column(0).null_count());
println!(" Length: {}", batch.column(0).len());
// Try to print first few values
println!("\nFirst 3 values:");
use arrow::array::Array;
let col = batch.column(0);
println!(" Value type: {}", std::any::type_name_of_val(&col));
}
Ok(())
}