@@ -517,32 +517,26 @@ def parse_trajectory(self, player_name: str, round_num: int) -> TrajectoryInfo |
517517 return None
518518
519519 def get_available_trajectories (self ) -> list [tuple ]:
520- """Get list of available trajectory files as (player_name, round_num) tuples"""
520+ """Get list of available trajectory files as (player_name, round_num) tuples using metadata """
521521 trajectories = []
522- players_dir = self .log_dir / "players"
523522
524- if not players_dir . exists ():
525- return trajectories
523+ # Get metadata to extract player and round information
524+ metadata = self . parse_game_metadata ()
526525
527- # Iterate through player directories
528- for player_dir in players_dir .iterdir ():
529- if not player_dir .is_dir ():
530- continue
526+ # Get player names from agent_info
527+ player_names = []
528+ if metadata .agent_info :
529+ player_names = [agent .name for agent in metadata .agent_info ]
530+ elif metadata .results and "agents" in metadata .results :
531+ player_names = [agent .get ("name" , "" ) for agent in metadata .results ["agents" ] if agent .get ("name" )]
531532
532- player_name = player_dir .name
533+ # Get round numbers from rounds data
534+ round_nums = [round_data ["round_num" ] for round_data in metadata .rounds ]
533535
534- # Find trajectory files in this player's directory
535- for traj_file in player_dir .glob ("*_r*.traj.*" ):
536- # Extract round from filename like gpt5_r2.traj.json
537- parts = traj_file .stem .split ("." ) # Remove extension
538- if parts :
539- name_part = parts [0 ] # gpt5_r2
540- try :
541- _ , round_part = name_part .split ("_" )
542- round_num = int (round_part [1 :]) # Remove 'r' prefix
543- trajectories .append ((player_name , round_num ))
544- except (ValueError , IndexError ):
545- continue
536+ # Generate all possible (player_name, round_num) combinations
537+ for player_name in player_names :
538+ for round_num in round_nums :
539+ trajectories .append ((player_name , round_num ))
546540
547541 return sorted (trajectories )
548542
@@ -812,17 +806,17 @@ def index():
812806 # Parse the selected game
813807 parser = LogParser (folder_path )
814808 metadata = parser .parse_game_metadata ()
815- available_trajectories = parser .get_available_trajectories ()
816809
817- # Group trajectories by round
818810 trajectories_by_round = {}
819- for player_name , round_num in available_trajectories :
811+ for player_name , round_num in parser . get_available_trajectories () :
820812 if round_num not in trajectories_by_round :
821813 trajectories_by_round [round_num ] = []
822814 trajectory = parser .parse_trajectory (player_name , round_num )
823815 if trajectory :
824816 trajectories_by_round [round_num ].append (trajectory )
825817
818+ # print({k: [_v.player_id for _v in v] for k, v in trajectories_by_round.items()})
819+
826820 # Get analysis data
827821 analysis_data = parser .analyze_line_counts ()
828822 sim_wins_data = parser .analyze_sim_wins_per_round ()
0 commit comments