Source code for gameanalysis.reduction.identity
"""Identity reduction
This is the same as not reducing a game.
"""
import numpy as np
from gameanalysis import paygame
from gameanalysis import restrict
from gameanalysis import utils
[docs]def reduce_game(full_game, red_players=None):
"""Return original game
Parameters
----------
full_game : Game
The game to reduce.
red_players : ndarray-like, optional
If specified, this must match the number of players per role in
full_game.
"""
utils.check(
red_players is None or np.all(full_game.num_role_players == red_players),
"identity reduction must have same number of players",
)
return paygame.game_copy(full_game)
[docs]def expand_profiles(full_game, profiles):
"""Return input profiles
Parameters
----------
full_game : Game
Game that all profiles must be valid for.
profiles : ndarray-like
The profiles.
axis : int, optional
The axis the profiles lie on.
"""
profiles = np.asarray(profiles, int)
utils.check(full_game.is_profile(profiles).all(), "profiles must be valid")
return profiles.reshape((-1, full_game.num_strats))
[docs]def reduce_profiles(red_game, profiles):
"""Return original profiles
Parameters
----------
red_game : Game
Game that all profiles must be valid for.
profiles : ndarray-like
The profiles.
axis : int, optional
The axis the profiles are on.
"""
profiles = np.asarray(profiles, int)
utils.check(red_game.is_profile(profiles).all(), "profiles must be valid")
return profiles.reshape((-1, red_game.num_strats))
[docs]def expand_deviation_profiles(full_game, rest, red_players=None, role_index=None):
"""Expand all deviation profiles from a restriction
Parameters
----------
full_game : Game
The game the deviations profiles will be valid for.
rest : [bool]
The restriction to get deviations from.
red_players : [int], optional
The number of players in each role in the reduced game.IF
specified, it must match the number for full_game.
role_index : int, optional
If specified , only expand deviations for the role selected.
"""
utils.check(
red_players is None or np.all(full_game.num_role_players == red_players),
"identity reduction must have same number of players",
)
return restrict.deviation_profiles(full_game, rest, role_index)