class Action: """ Represents an action in the model """ def __init__(self, row_group_start, row_group_end, row, model): """ Initialize :param row_group_start: Start index of the row group in the matrix :param row_group_end: End index of the row group in the matrix :param row: Index of the corresponding row in the matrix :param model: Corresponding model """ self.row_group_start = row_group_start self.row_group_end = row_group_end self.row = row - 1 self.model = model assert row >= -1 and row + row_group_start <= row_group_end def __iter__(self): return self def __next__(self): if self.row + self.row_group_start >= self.row_group_end - 1: raise StopIteration else: self.row += 1 return self def __str__(self): return "{}".format(self.row) def transitions(self): """ Get transitions associated with the action :return List of tranistions """ row = self.row_group_start + self.row #return self.model.transition_matrix().get_row(self.row_group_start + self.row) return self.model.transition_matrix.row_iter(row, row)