""" Generate Arm Ratings CSV File This script calculates outfield arm ratings from Retrosheet play-by-play data and saves them to a CSV file for future reference. Usage: python generate_arm_ratings_csv.py --year 2005 --events data-input/retrosheet/retrosheets_events_2005.csv # Or for partial season: python generate_arm_ratings_csv.py --year 2025 --events data-input/retrosheet/events.csv --season-pct 0.5 """ import argparse import pandas as pd from defenders.retrosheet_arm_calculator import save_arm_ratings_to_csv def main(): parser = argparse.ArgumentParser( description="Generate arm ratings CSV from Retrosheet data" ) parser.add_argument( "--year", type=int, required=True, help="Season year (e.g., 2005)" ) parser.add_argument( "--events", type=str, required=True, help="Path to Retrosheet events CSV file" ) parser.add_argument( "--output-dir", type=str, default="data-output", help="Output directory (default: data-output)", ) parser.add_argument( "--season-pct", type=float, default=1.0, help="Percentage of season completed (default: 1.0)", ) args = parser.parse_args() print(f"Loading Retrosheet events from {args.events}...") df_events = pd.read_csv(args.events, low_memory=False) print(f"Loaded {len(df_events):,} events") print(f"\nCalculating arm ratings for {args.year} season...") output_file = save_arm_ratings_to_csv( df_events=df_events, season_year=args.year, output_dir=args.output_dir, season_pct=args.season_pct, ) print(f"\n✓ Success! Arm ratings saved to: {output_file}") print("\nYou can now use this file in your card creation scripts:") print( " from defenders.retrosheet_arm_calculator import load_arm_ratings_from_csv" ) print(f" arm_ratings = load_arm_ratings_from_csv({args.year})") if __name__ == "__main__": main()