paper-dynasty-card-creation/generate_arm_ratings_csv.py
Cal Corum 0a17745389 Run black and ruff across entire codebase
Standardize formatting with black and apply ruff auto-fixes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 14:24:33 -05:00

66 lines
2.0 KiB
Python

"""
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()