Example #1
0
    def _get_set_possibility_and_win_possibility_columns(self):
        # holdem_functions.hand_rankings
        set_possibility_column = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        win_possibility_column = [0]

        if self.stage == 'Deal':
            pass
        elif self.stage == 'Turn' or self.stage == 'River' or self.stage == 'Flop':
            player_cards = []
            card1 = '{}{}'.format(self.card1.get_value(),
                                  self.card1.get_suit().lower())
            card2 = '{}{}'.format(self.card2.get_value(),
                                  self.card2.get_suit().lower())
            player_cards.append(card1)
            player_cards.append(card2)

            if self.stage != 'Flop':
                player_cards.append('?')
                player_cards.append('?')

            community_cards = []
            board_cards = self.board_card
            for card in board_cards:
                temp = ""
                temp += card[0]
                temp += card[1].lower()
                community_cards.append(temp)

            hole_cards, board = holdem_argparser.parse_cards(
                player_cards, community_cards)
            rounds = Config.get_num_of_monte_carlo_rounds()
            exact = Config.get_exact_holdem_calculation()
            verbose = Config.get_verbose_holdem_lib()

            #print 'hole_card=[{}], board=[{}], rounds=[{}], exact=[{}], verbose=[{}],'.format(hole_cards, board, rounds, exact, verbose)
            win_possibility, set_histogram, winner_list = holdem_calc.run(
                hole_cards, rounds, exact, board, None, verbose)

            if self.stage != 'Flop':
                win_possibility_column[0] = win_possibility[1]

            float_iterations = float(sum(winner_list))
            # only care about record owner's set histogram
            for index, occurrence in enumerate(set_histogram[0]):
                set_possibility_column[index] = occurrence / float_iterations

        else:
            raise Exception('unrecognized stage: [{}]'.format(self.stage))

        #print "stage={} hand={} board={} win_pos={} set_pos={}".format(self.stage, self.cards, self. board_card, win_possibility_column, set_possibility_column)

        set_possibility_column.extend(win_possibility_column)
        return set_possibility_column