From aec0b281815fd92674124564e2d3bf1311d5cfb5 Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Thu, 9 Jan 2025 21:37:30 -0500 Subject: [PATCH 1/9] add original index to summary --- axelrod/result_set.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/axelrod/result_set.py b/axelrod/result_set.py index db5921c7b..82d3b0cc3 100644 --- a/axelrod/result_set.py +++ b/axelrod/result_set.py @@ -709,6 +709,8 @@ def summarise(self): median_scores = map(np.nanmedian, self.normalised_scores) median_wins = map(np.nanmedian, self.wins) + original_index = {index for index, _player in enumerate(self.players)} + self.player = namedtuple( "Player", [ @@ -718,6 +720,7 @@ def summarise(self): "Cooperation_rating", "Wins", "Initial_C_rate", + "Original_index", "CC_rate", "CD_rate", "DC_rate", @@ -725,7 +728,7 @@ def summarise(self): "CC_to_C_rate", "CD_to_C_rate", "DC_to_C_rate", - "DD_to_C_rate", + "DD_to_C_rate" ], ) @@ -767,6 +770,7 @@ def summarise(self): self.cooperating_rating, median_wins, self.initial_cooperation_rate, + original_index ) ) From 18e34e558ca5767deedd25925d7035ff7f0f7d1d Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Thu, 9 Jan 2025 21:39:47 -0500 Subject: [PATCH 2/9] formatting --- axelrod/result_set.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/axelrod/result_set.py b/axelrod/result_set.py index 82d3b0cc3..12024076d 100644 --- a/axelrod/result_set.py +++ b/axelrod/result_set.py @@ -728,7 +728,7 @@ def summarise(self): "CC_to_C_rate", "CD_to_C_rate", "DC_to_C_rate", - "DD_to_C_rate" + "DD_to_C_rate", ], ) @@ -770,7 +770,7 @@ def summarise(self): self.cooperating_rating, median_wins, self.initial_cooperation_rate, - original_index + original_index, ) ) From 14b088d59d7fd96ae14064af8c906b26cd39f4d1 Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Fri, 10 Jan 2025 09:28:02 -0800 Subject: [PATCH 3/9] fix summary test --- axelrod/tests/unit/test_resultset.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/axelrod/tests/unit/test_resultset.py b/axelrod/tests/unit/test_resultset.py index 33b1e7f78..954284641 100644 --- a/axelrod/tests/unit/test_resultset.py +++ b/axelrod/tests/unit/test_resultset.py @@ -638,7 +638,7 @@ def test_summarise_regression_test(self): ] tournament = axl.Tournament(players, turns=10, repetitions=3) results = tournament.play() - + print(results.write_summary("other_test.csv")) summary = [ ( 0, @@ -647,6 +647,7 @@ def test_summarise_regression_test(self): 0.0, 3.0, 0.0, + 1, 0.0, 0.0, 0.4000000000000001, @@ -663,6 +664,7 @@ def test_summarise_regression_test(self): 0.7, 0.0, 1.0, + 2, 0.6666666666666666, 0.03333333333333333, 0.0, @@ -679,6 +681,7 @@ def test_summarise_regression_test(self): 0.7, 0.0, 1.0, + 3, 0.6666666666666666, 0.03333333333333333, 0.0, @@ -695,6 +698,7 @@ def test_summarise_regression_test(self): 1.0, 0.0, 1.0, + 0, 0.6666666666666666, 0.3333333333333333, 0.0, @@ -724,7 +728,7 @@ def test_write_summary(self): csvreader = csv.reader(csvfile) for row in csvreader: ranked_names.append(row[1]) - self.assertEqual(len(row), 14) + self.assertEqual(len(row), 15) self.assertEqual(ranked_names[0], "Name") self.assertEqual(ranked_names[1:], rs.ranked_names) From 46ceebcc72a4c1706c3162c44298917172fa2417 Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Fri, 10 Jan 2025 09:28:52 -0800 Subject: [PATCH 4/9] rm spurious print statement --- axelrod/tests/unit/test_resultset.py | 1 - 1 file changed, 1 deletion(-) diff --git a/axelrod/tests/unit/test_resultset.py b/axelrod/tests/unit/test_resultset.py index 954284641..eec60d6c5 100644 --- a/axelrod/tests/unit/test_resultset.py +++ b/axelrod/tests/unit/test_resultset.py @@ -638,7 +638,6 @@ def test_summarise_regression_test(self): ] tournament = axl.Tournament(players, turns=10, repetitions=3) results = tournament.play() - print(results.write_summary("other_test.csv")) summary = [ ( 0, From ed66465b4639d8f69a0ac84e7175a98707964d4b Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Fri, 10 Jan 2025 10:06:37 -0800 Subject: [PATCH 5/9] fix failing doctest --- .../summarising_tournaments.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst index ac97edd6a..fd4f2ab86 100644 --- a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst +++ b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst @@ -18,10 +18,10 @@ that summarises the results of the tournament:: >>> summary = results.summarise() >>> import pprint >>> pprint.pprint(summary) - [Player(Rank=0, Name='Defector', Median_score=2.6..., Cooperation_rating=0.0, Wins=3.0, Initial_C_rate=0.0, CC_rate=...), - Player(Rank=1, Name='Tit For Tat', Median_score=2.3..., Cooperation_rating=0..., Wins=0.0, Initial_C_rate=1.0, CC_rate=...), - Player(Rank=2, Name='Grudger', Median_score=2.3..., Cooperation_rating=0..., Wins=0.0, Initial_C_rate=1.0, CC_rate=...), - Player(Rank=3, Name='Cooperator', Median_score=2.0..., Cooperation_rating=1.0, Wins=0.0, Initial_C_rate=1.0, CC_rate=...)] + [Player(Rank=0, Name='Defector', Median_score=2.6, Cooperation_rating=0.0, Wins=3.0, Initial_C_rate=0.0, Original_index=1, CC_rate=0.0, CD_rate=0.0, DC_rate=0.4000000000000001, DD_rate=0.6, CC_to_C_rate=0, CD_to_C_rate=0, DC_to_C_rate=0, DD_to_C_rate=0), + Player(Rank=1, Name='Tit For Tat', Median_score=2.3000000000000003, Cooperation_rating=0.7, Wins=0.0, Initial_C_rate=1.0, Original_index=2, CC_rate=0.6666666666666666, CD_rate=0.03333333333333333, DC_rate=0.0, DD_rate=0.3, CC_to_C_rate=1.0, CD_to_C_rate=0, DC_to_C_rate=0, DD_to_C_rate=0), + Player(Rank=2, Name='Grudger', Median_score=2.3000000000000003, Cooperation_rating=0.7, Wins=0.0, Initial_C_rate=1.0, Original_index=3, CC_rate=0.6666666666666666, CD_rate=0.03333333333333333, DC_rate=0.0, DD_rate=0.3, CC_to_C_rate=1.0, CD_to_C_rate=0, DC_to_C_rate=0, DD_to_C_rate=0), + Player(Rank=3, Name='Cooperator', Median_score=2.0, Cooperation_rating=1.0, Wins=0.0, Initial_C_rate=1.0, Original_index=0, CC_rate=0.6666666666666666, CD_rate=0.3333333333333333, DC_rate=0.0, DD_rate=0.0, CC_to_C_rate=1.0, CD_to_C_rate=1.0, DC_to_C_rate=0, DD_to_C_rate=0)] It is also possible to write this data directly to a csv file using the `write_summary` method:: @@ -32,11 +32,11 @@ It is also possible to write this data directly to a csv file using the ... csvreader = csv.reader(outfile) ... for row in csvreader: ... print(row) - ['Rank', 'Name', 'Median_score', 'Cooperation_rating', 'Wins', 'Initial_C_rate', 'CC_rate', 'CD_rate', 'DC_rate', 'DD_rate', 'CC_to_C_rate', 'CD_to_C_rate', 'DC_to_C_rate', 'DD_to_C_rate'] - ['0', 'Defector', ...] - ['1', 'Tit For Tat', ...] - ['2', 'Grudger', ...] - ['3', 'Cooperator', ...] + ['Rank', 'Name', 'Median_score', 'Cooperation_rating', 'Wins', 'Initial_C_rate', 'Original_index', 'CC_rate', 'CD_rate', 'DC_rate', 'DD_rate', 'CC_to_C_rate', 'CD_to_C_rate', 'DC_to_C_rate', 'DD_to_C_rate'] + ['0', 'Defector', '2.6', '0.0', '3.0', '0.0', '1', '0.0', '0.0', '0.4000000000000001', '0.6', '0', '0', '0', '0'] + ['1', 'Tit For Tat', '2.3000000000000003', '0.7', '0.0', '1.0', '2', '0.6666666666666666', '0.03333333333333333', '0.0', '0.3', '1.0', '0', '0', '0'] + ['2', 'Grudger', '2.3000000000000003', '0.7', '0.0', '1.0', '3', '0.6666666666666666', '0.03333333333333333', '0.0', '0.3', '1.0', '0', '0', '0'] + ['3', 'Cooperator', '2.0', '1.0', '0.0', '1.0', '0', '0.6666666666666666', '0.3333333333333333', '0.0', '0.0', '1.0', '1.0', '0', '0'] The result set class computes a large number of detailed outcomes read about From 0010f143d8fcc0cbba34933c91f9bee2e3b67f86 Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Fri, 10 Jan 2025 15:36:59 -0800 Subject: [PATCH 6/9] doctest attempt --- .../summarising_tournaments.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst index fd4f2ab86..f3aa1f708 100644 --- a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst +++ b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst @@ -18,10 +18,10 @@ that summarises the results of the tournament:: >>> summary = results.summarise() >>> import pprint >>> pprint.pprint(summary) - [Player(Rank=0, Name='Defector', Median_score=2.6, Cooperation_rating=0.0, Wins=3.0, Initial_C_rate=0.0, Original_index=1, CC_rate=0.0, CD_rate=0.0, DC_rate=0.4000000000000001, DD_rate=0.6, CC_to_C_rate=0, CD_to_C_rate=0, DC_to_C_rate=0, DD_to_C_rate=0), - Player(Rank=1, Name='Tit For Tat', Median_score=2.3000000000000003, Cooperation_rating=0.7, Wins=0.0, Initial_C_rate=1.0, Original_index=2, CC_rate=0.6666666666666666, CD_rate=0.03333333333333333, DC_rate=0.0, DD_rate=0.3, CC_to_C_rate=1.0, CD_to_C_rate=0, DC_to_C_rate=0, DD_to_C_rate=0), - Player(Rank=2, Name='Grudger', Median_score=2.3000000000000003, Cooperation_rating=0.7, Wins=0.0, Initial_C_rate=1.0, Original_index=3, CC_rate=0.6666666666666666, CD_rate=0.03333333333333333, DC_rate=0.0, DD_rate=0.3, CC_to_C_rate=1.0, CD_to_C_rate=0, DC_to_C_rate=0, DD_to_C_rate=0), - Player(Rank=3, Name='Cooperator', Median_score=2.0, Cooperation_rating=1.0, Wins=0.0, Initial_C_rate=1.0, Original_index=0, CC_rate=0.6666666666666666, CD_rate=0.3333333333333333, DC_rate=0.0, DD_rate=0.0, CC_to_C_rate=1.0, CD_to_C_rate=1.0, DC_to_C_rate=0, DD_to_C_rate=0)] + [Player(Rank=0, Name='Defector', Median_score=2.6..., Cooperation_rating=0.0, Wins=3.0, Initial_C_rate=0.0, Original_index=1, CC_rate=...), + Player(Rank=1, Name='Tit For Tat', Median_score=2.3..., Cooperation_rating=0...., Wins=0.0, Initial_C_rate=1.0, Original_index=2, CC_rate=...), + Player(Rank=2, Name='Grudger', Median_score=2.3..., Cooperation_rating=0...., Wins=0.0, Initial_C_rate=1.0, Original_index=3, CC_rate=...), + Player(Rank=3, Name='Cooperator', Median_score=2.0..., Cooperation_rating=1.0, Wins=0.0, Initial_C_rate=1.0, Original_index=0, CC_rate=...)] It is also possible to write this data directly to a csv file using the `write_summary` method:: From d3861030a3b87e40ac0bd5207881db5c9658114e Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Fri, 10 Jan 2025 18:37:23 -0800 Subject: [PATCH 7/9] attempt --- .../summarising_tournaments.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst index f3aa1f708..68a3e90c9 100644 --- a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst +++ b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst @@ -19,8 +19,8 @@ that summarises the results of the tournament:: >>> import pprint >>> pprint.pprint(summary) [Player(Rank=0, Name='Defector', Median_score=2.6..., Cooperation_rating=0.0, Wins=3.0, Initial_C_rate=0.0, Original_index=1, CC_rate=...), - Player(Rank=1, Name='Tit For Tat', Median_score=2.3..., Cooperation_rating=0...., Wins=0.0, Initial_C_rate=1.0, Original_index=2, CC_rate=...), - Player(Rank=2, Name='Grudger', Median_score=2.3..., Cooperation_rating=0...., Wins=0.0, Initial_C_rate=1.0, Original_index=3, CC_rate=...), + Player(Rank=1, Name='Tit For Tat', Median_score=2.3..., Cooperation_rating=0..., Wins=0.0, Initial_C_rate=1.0, Original_index=2, CC_rate=...), + Player(Rank=2, Name='Grudger', Median_score=2.3..., Cooperation_rating=0..., Wins=0.0, Initial_C_rate=1.0, Original_index=3, CC_rate=...), Player(Rank=3, Name='Cooperator', Median_score=2.0..., Cooperation_rating=1.0, Wins=0.0, Initial_C_rate=1.0, Original_index=0, CC_rate=...)] It is also possible to write this data directly to a csv file using the @@ -33,11 +33,11 @@ It is also possible to write this data directly to a csv file using the ... for row in csvreader: ... print(row) ['Rank', 'Name', 'Median_score', 'Cooperation_rating', 'Wins', 'Initial_C_rate', 'Original_index', 'CC_rate', 'CD_rate', 'DC_rate', 'DD_rate', 'CC_to_C_rate', 'CD_to_C_rate', 'DC_to_C_rate', 'DD_to_C_rate'] - ['0', 'Defector', '2.6', '0.0', '3.0', '0.0', '1', '0.0', '0.0', '0.4000000000000001', '0.6', '0', '0', '0', '0'] - ['1', 'Tit For Tat', '2.3000000000000003', '0.7', '0.0', '1.0', '2', '0.6666666666666666', '0.03333333333333333', '0.0', '0.3', '1.0', '0', '0', '0'] - ['2', 'Grudger', '2.3000000000000003', '0.7', '0.0', '1.0', '3', '0.6666666666666666', '0.03333333333333333', '0.0', '0.3', '1.0', '0', '0', '0'] - ['3', 'Cooperator', '2.0', '1.0', '0.0', '1.0', '0', '0.6666666666666666', '0.3333333333333333', '0.0', '0.0', '1.0', '1.0', '0', '0'] - + ['0', 'Defector', ...] + ['1', 'Tit For Tat', ...] + ['2', 'Grudger', ...] + ['3', 'Cooperator', ...] + The result set class computes a large number of detailed outcomes read about those in :ref:`tournament-results`. From be3b738774a34d0fc0aef8b2fc5a29b560e4f72d Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Sat, 11 Jan 2025 23:12:19 -0800 Subject: [PATCH 8/9] cleanup --- axelrod/result_set.py | 2 +- axelrod/tests/unit/test_resultset.py | 1 + .../summarising_tournaments.rst | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/axelrod/result_set.py b/axelrod/result_set.py index 12024076d..3d0934a94 100644 --- a/axelrod/result_set.py +++ b/axelrod/result_set.py @@ -709,7 +709,7 @@ def summarise(self): median_scores = map(np.nanmedian, self.normalised_scores) median_wins = map(np.nanmedian, self.wins) - original_index = {index for index, _player in enumerate(self.players)} + original_index = [index for index, _player in enumerate(self.players)] self.player = namedtuple( "Player", diff --git a/axelrod/tests/unit/test_resultset.py b/axelrod/tests/unit/test_resultset.py index eec60d6c5..449849f12 100644 --- a/axelrod/tests/unit/test_resultset.py +++ b/axelrod/tests/unit/test_resultset.py @@ -638,6 +638,7 @@ def test_summarise_regression_test(self): ] tournament = axl.Tournament(players, turns=10, repetitions=3) results = tournament.play() + summary = [ ( 0, diff --git a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst index 68a3e90c9..834d6bf08 100644 --- a/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst +++ b/docs/tutorials/new_to_game_theory_and_or_python/summarising_tournaments.rst @@ -38,6 +38,6 @@ It is also possible to write this data directly to a csv file using the ['2', 'Grudger', ...] ['3', 'Cooperator', ...] - + The result set class computes a large number of detailed outcomes read about those in :ref:`tournament-results`. From f73eb39b0ddedce28792e5249b46a85f734f22cb Mon Sep 17 00:00:00 2001 From: Ian Miller Date: Sat, 11 Jan 2025 23:14:09 -0800 Subject: [PATCH 9/9] formatting --- axelrod/tests/unit/test_resultset.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/axelrod/tests/unit/test_resultset.py b/axelrod/tests/unit/test_resultset.py index 449849f12..586d38603 100644 --- a/axelrod/tests/unit/test_resultset.py +++ b/axelrod/tests/unit/test_resultset.py @@ -638,7 +638,7 @@ def test_summarise_regression_test(self): ] tournament = axl.Tournament(players, turns=10, repetitions=3) results = tournament.play() - + summary = [ ( 0,