# Path: striatum/rewardplot.py
# def calculate_cum_reward(policy):
# def calculate_avg_reward(policy):
# def plot_avg_reward(policy):
# def plot_avg_regret(policy):
# 
# Path: striatum/storage/recommendation.py
# class Recommendation(object):
#     """The object to store a recommendation.
# 
#     Parameters
#     ----------
#     action : Action
#     estimated_reward: float
#     uncertainty: float
#     score: float
#     """
# 
#     def __init__(self, action, estimated_reward, uncertainty, score,
#                  reward=None):
#         self.action = action
#         self.estimated_reward = estimated_reward
#         self.uncertainty = uncertainty
#         self.score = score
#         self.reward = reward


from abc import abstractmethod
from striatum import rewardplot as rplt
from ..storage import Recommendation

    def update_action(self, action):
        """Update action.

        Parameters
        ----------
        action : Action
            The Action object to update.
        """
        self._action_storage.update(action)

    @abstractmethod
    def remove_action(self, action_id):
        """Remove action by id.

        Parameters
        ----------
        action_id : int
            The id of the action to remove.
        """
        pass

    def calculate_cum_reward(self):
        """Calculate cumulative reward with respect to time.
        """
        return rplt.calculate_cum_reward(self)

    def calculate_avg_reward(self):
        """Calculate average reward with respect to time.
        """

# Path: striatum/rewardplot.py
# def calculate_cum_reward(policy):
# def calculate_avg_reward(policy):
# def plot_avg_reward(policy):
# def plot_avg_regret(policy):
# 
# Path: striatum/storage/recommendation.py
# class Recommendation(object):
#     """The object to store a recommendation.
# 
#     Parameters
#     ----------
#     action : Action
#     estimated_reward: float
#     uncertainty: float
#     score: float
#     """
# 
#     def __init__(self, action, estimated_reward, uncertainty, score,
#                  reward=None):
#         self.action = action
#         self.estimated_reward = estimated_reward
#         self.uncertainty = uncertainty
#         self.score = score
#         self.reward = reward


# Path: striatum/bandit/bandit.py
from abc import abstractmethod
from striatum import rewardplot as rplt
from ..storage import Recommendation


    def update_action(self, action):
        """Update action.

        Parameters
        ----------
        action : Action
            The Action object to update.
        """
        self._action_storage.update(action)

    @abstractmethod
    def remove_action(self, action_id):
        """Remove action by id.

        Parameters
        ----------
        action_id : int
            The id of the action to remove.
        """
        pass

    def calculate_cum_reward(self):
        """Calculate cumulative reward with respect to time.
        """
        return rplt.calculate_cum_reward(self)

    def calculate_avg_reward(self):
        """Calculate average reward with respect to time.
        """

        return rplt.calculate_avg_reward(self)