From ef51f00c4320475c881b05df2a97dd11d81c7704 Mon Sep 17 00:00:00 2001 From: Mudr0x <78977383+Mudr0x@users.noreply.github.com> Date: Sun, 28 May 2023 20:47:49 +0200 Subject: [PATCH] Release v.0.40.6 - Added and corrected many stats --- Database.py | 262 +- DerivedStats.py | 471 +- Hand.py | 6 +- SQL.py | 5680 ++++++++++++++++- WinningToFpdb.py | 2183 +++---- contributors.txt | 8 + fpdb.pyw | 8 +- .../Winning/Flop/ALO-4max-USD-5-10-202304.txt | 17 + 8 files changed, 7205 insertions(+), 1430 deletions(-) create mode 100644 regression-test-files/cash/Winning/Flop/ALO-4max-USD-5-10-202304.txt diff --git a/Database.py b/Database.py index f070e91..93cd978 100644 --- a/Database.py +++ b/Database.py @@ -111,7 +111,12 @@ def convert_decimal(s): # Keys used to index into player data in storeHandsPlayers. HANDS_PLAYERS_KEYS = [ 'startCash', + 'bigblind', 'effStack', + 'effActiveStack', + 'effMzone', + 'effActiveMzone', + 'tableMzone', 'startBounty', 'endBounty', 'seatNo', @@ -145,8 +150,10 @@ def convert_decimal(s): 'rakeWeighted', 'totalProfit', 'allInEV', + 'street0VPIChance', 'street0VPI', + 'street1Seen', 'street2Seen', 'street3Seen', @@ -159,12 +166,14 @@ def convert_decimal(s): 'street3AllIn', 'street4AllIn', 'wentAllIn', + 'street0AggrChance', 'street0Aggr', 'street1Aggr', 'street2Aggr', 'street3Aggr', 'street4Aggr', + 'street1CBChance', 'street2CBChance', 'street3CBChance', @@ -191,8 +200,10 @@ def convert_decimal(s): 'street4FirstToAct', 'tourneysPlayersId', 'startCards', + 'street0CalledRaiseChance', 'street0CalledRaiseDone', + 'street0_2BChance', 'street0_2BDone', 'street0_3BChance', @@ -209,6 +220,66 @@ def convert_decimal(s): 'street0_FoldTo4BDone', 'street0_SqueezeChance', 'street0_SqueezeDone', + 'street0_FoldToSqueezeChance', + 'street0_FoldToSqueezeDone', + + 'street1_2BChance', + 'street1_2BDone', + 'street1_3BChance', + 'street1_3BDone', + 'street1_4BChance', + 'street1_4BDone', + 'street1_C4BChance', + 'street1_C4BDone', + 'street1_FoldTo2BChance', + 'street1_FoldTo2BDone', + 'street1_FoldTo3BChance', + 'street1_FoldTo3BDone', + 'street1_FoldTo4BChance', + 'street1_FoldTo4BDone', + 'street1_SqueezeChance', + 'street1_SqueezeDone', + 'street1_FoldToSqueezeChance', + 'street1_FoldToSqueezeDone', + + 'street2_2BChance', + 'street2_2BDone', + 'street2_3BChance', + 'street2_3BDone', + 'street2_4BChance', + 'street2_4BDone', + 'street2_C4BChance', + 'street2_C4BDone', + 'street2_FoldTo2BChance', + 'street2_FoldTo2BDone', + 'street2_FoldTo3BChance', + 'street2_FoldTo3BDone', + 'street2_FoldTo4BChance', + 'street2_FoldTo4BDone', + 'street2_SqueezeChance', + 'street2_SqueezeDone', + 'street2_FoldToSqueezeChance', + 'street2_FoldToSqueezeDone', + + 'street3_2BChance', + 'street3_2BDone', + 'street3_3BChance', + 'street3_3BDone', + 'street3_4BChance', + 'street3_4BDone', + 'street3_C4BChance', + 'street3_C4BDone', + 'street3_FoldTo2BChance', + 'street3_FoldTo2BDone', + 'street3_FoldTo3BChance', + 'street3_FoldTo3BDone', + 'street3_FoldTo4BChance', + 'street3_FoldTo4BDone', + 'street3_SqueezeChance', + 'street3_SqueezeDone', + 'street3_FoldToSqueezeChance', + 'street3_FoldToSqueezeDone', + 'raiseToStealChance', 'raiseToStealDone', 'stealChance', @@ -224,6 +295,16 @@ def convert_decimal(s): 'foldToOtherRaisedStreet2', 'foldToOtherRaisedStreet3', 'foldToOtherRaisedStreet4', + 'callToOtherRaisedStreet0', + 'callToOtherRaisedStreet1', + 'callToOtherRaisedStreet2', + 'callToOtherRaisedStreet3', + 'callToOtherRaisedStreet4', + 'raiseToOtherRaisedStreet0', + 'raiseToOtherRaisedStreet1', + 'raiseToOtherRaisedStreet2', + 'raiseToOtherRaisedStreet3', + 'raiseToOtherRaisedStreet4', 'raiseFirstInChance', 'raisedFirstIn', 'foldBbToStealChance', @@ -238,6 +319,22 @@ def convert_decimal(s): 'foldToStreet3CBDone', 'foldToStreet4CBChance', 'foldToStreet4CBDone', + 'callToStreet1CBChance', + 'callToStreet1CBDone', + 'callToStreet2CBChance', + 'callToStreet2CBDone', + 'callToStreet3CBChance', + 'callToStreet3CBDone', + 'callToStreet4CBChance', + 'callToStreet4CBDone', + 'raiseToStreet1CBChance', + 'raiseToStreet1CBDone', + 'raiseToStreet2CBChance', + 'raiseToStreet2CBDone', + 'raiseToStreet3CBChance', + 'raiseToStreet3CBDone', + 'raiseToStreet4CBChance', + 'raiseToStreet4CBDone', 'street1CheckCallRaiseChance', 'street1CheckCallDone', 'street1CheckRaiseDone', @@ -250,16 +347,19 @@ def convert_decimal(s): 'street4CheckCallRaiseChance', 'street4CheckCallDone', 'street4CheckRaiseDone', + 'street1foldToCheckRaiseChance', + 'street1foldToCheckRaiseDone', + 'street2foldToCheckRaiseChance', + 'street2foldToCheckRaiseDone', + 'street3foldToCheckRaiseChance', + 'street3foldToCheckRaiseDone', + 'street4foldToCheckRaiseChance', + 'street4foldToCheckRaiseDone', 'street0Calls', 'street1Calls', 'street2Calls', 'street3Calls', 'street4Calls', - 'street0Bets', - 'street1Bets', - 'street2Bets', - 'street3Bets', - 'street4Bets', 'street0Raises', 'street1Raises', 'street2Raises', @@ -268,6 +368,19 @@ def convert_decimal(s): 'street1Discards', 'street2Discards', 'street3Discards', + + 'street0Callers', + 'street1Callers', + 'street2Callers', + 'street3Callers', + 'street4Callers', + + 'street0Aggressors', + 'street1Aggressors', + 'street2Aggressors', + 'street3Aggressors', + 'street4Aggressors', + 'handString' ] @@ -278,6 +391,7 @@ def convert_decimal(s): CACHE_KEYS = [ 'n', + 'street0VPIChance', 'street0VPI', 'street0AggrChance', @@ -300,6 +414,66 @@ def convert_decimal(s): 'street0_FoldTo4BDone', 'street0_SqueezeChance', 'street0_SqueezeDone', + 'street0_FoldToSqueezeChance', + 'street0_FoldToSqueezeDone', + + 'street1_2BChance', + 'street1_2BDone', + 'street1_3BChance', + 'street1_3BDone', + 'street1_4BChance', + 'street1_4BDone', + 'street1_C4BChance', + 'street1_C4BDone', + 'street1_FoldTo2BChance', + 'street1_FoldTo2BDone', + 'street1_FoldTo3BChance', + 'street1_FoldTo3BDone', + 'street1_FoldTo4BChance', + 'street1_FoldTo4BDone', + 'street1_SqueezeChance', + 'street1_SqueezeDone', + 'street1_FoldToSqueezeChance', + 'street1_FoldToSqueezeDone', + + 'street2_2BChance', + 'street2_2BDone', + 'street2_3BChance', + 'street2_3BDone', + 'street2_4BChance', + 'street2_4BDone', + 'street2_C4BChance', + 'street2_C4BDone', + 'street2_FoldTo2BChance', + 'street2_FoldTo2BDone', + 'street2_FoldTo3BChance', + 'street2_FoldTo3BDone', + 'street2_FoldTo4BChance', + 'street2_FoldTo4BDone', + 'street2_SqueezeChance', + 'street2_SqueezeDone', + 'street2_FoldToSqueezeChance', + 'street2_FoldToSqueezeDone', + + 'street3_2BChance', + 'street3_2BDone', + 'street3_3BChance', + 'street3_3BDone', + 'street3_4BChance', + 'street3_4BDone', + 'street3_C4BChance', + 'street3_C4BDone', + 'street3_FoldTo2BChance', + 'street3_FoldTo2BDone', + 'street3_FoldTo3BChance', + 'street3_FoldTo3BDone', + 'street3_FoldTo4BChance', + 'street3_FoldTo4BDone', + 'street3_SqueezeChance', + 'street3_SqueezeDone', + 'street3_FoldToSqueezeChance', + 'street3_FoldToSqueezeDone', + 'raiseToStealChance', 'raiseToStealDone', 'stealChance', @@ -324,6 +498,16 @@ def convert_decimal(s): 'foldToOtherRaisedStreet2', 'foldToOtherRaisedStreet3', 'foldToOtherRaisedStreet4', + 'callToOtherRaisedStreet0', + 'callToOtherRaisedStreet1', + 'callToOtherRaisedStreet2', + 'callToOtherRaisedStreet3', + 'callToOtherRaisedStreet4', + 'raiseToOtherRaisedStreet0', + 'raiseToOtherRaisedStreet1', + 'raiseToOtherRaisedStreet2', + 'raiseToOtherRaisedStreet3', + 'raiseToOtherRaisedStreet4', 'wonWhenSeenStreet1', 'wonWhenSeenStreet2', 'wonWhenSeenStreet3', @@ -351,6 +535,22 @@ def convert_decimal(s): 'foldToStreet3CBDone', 'foldToStreet4CBChance', 'foldToStreet4CBDone', + 'callToStreet1CBChance', + 'callToStreet1CBDone', + 'callToStreet2CBChance', + 'callToStreet2CBDone', + 'callToStreet3CBChance', + 'callToStreet3CBDone', + 'callToStreet4CBChance', + 'callToStreet4CBDone', + 'raiseToStreet1CBChance', + 'raiseToStreet1CBDone', + 'raiseToStreet2CBChance', + 'raiseToStreet2CBDone', + 'raiseToStreet3CBChance', + 'raiseToStreet3CBDone', + 'raiseToStreet4CBChance', + 'raiseToStreet4CBDone', 'common', 'committed', 'winnings', @@ -374,16 +574,19 @@ def convert_decimal(s): 'street4CheckCallRaiseChance', 'street4CheckCallDone', 'street4CheckRaiseDone', + 'street1foldToCheckRaiseChance', + 'street1foldToCheckRaiseDone', + 'street2foldToCheckRaiseChance', + 'street2foldToCheckRaiseDone', + 'street3foldToCheckRaiseChance', + 'street3foldToCheckRaiseDone', + 'street4foldToCheckRaiseChance', + 'street4foldToCheckRaiseDone', 'street0Calls', 'street1Calls', 'street2Calls', 'street3Calls', 'street4Calls', - 'street0Bets', - 'street1Bets', - 'street2Bets', - 'street3Bets', - 'street4Bets', 'street0Raises', 'street1Raises', 'street2Raises', @@ -391,7 +594,19 @@ def convert_decimal(s): 'street4Raises', 'street1Discards', 'street2Discards', - 'street3Discards' + 'street3Discards', + + 'street0Callers', + 'street1Callers', + 'street2Callers', + 'street3Callers', + 'street4Callers', + + 'street0Aggressors', + 'street1Aggressors', + 'street2Aggressors', + 'street3Aggressors', + 'street4Aggressors' ] @@ -710,7 +925,7 @@ def dumpDatabase(self): for table in (u'Actions', u'Autorates', u'Backings', u'Gametypes', u'Hands', u'Boards', u'HandsActions', u'HandsPlayers', u'HandsStove', u'Files', u'HudCache', u'Sessions', u'SessionsCache', u'TourneysCache',u'Players', u'RawHands', u'RawTourneys', u'Settings', u'Sites', u'TourneyTypes', u'Tourneys', u'TourneysPlayers'): print "table:", table result+="###################\nTable "+table+"\n###################\n" - #rows=self.cursor.execute(self.sql.query['get'+table]) // buggy under Python 2.7 + #rows=self.cursor.execute(self.sql.query['get'+table]) // bugged under Python 2.7 rows=self.cursor.execute(u"SELECT * FROM " + table) rows=self.cursor.fetchall() columnNames=self.cursor.description @@ -1641,6 +1856,9 @@ def create_tables(self): c.execute(self.sql.query['addPlayerHeroesIndex']) c.execute(self.sql.query['addStartCashIndex']) c.execute(self.sql.query['addEffStackIndex']) + c.execute(self.sql.query['addEffActiveStackIndex']) + c.execute(self.sql.query['addEffMzoneIndex']) + c.execute(self.sql.query['addEffActiveMzoneIndex']) c.execute(self.sql.query['addTotalProfitIndex']) c.execute(self.sql.query['addWinningsIndex']) c.execute(self.sql.query['addFinalPotIndex']) @@ -1906,6 +2124,7 @@ def fillDefaultData(self): c.execute("INSERT INTO Actions (id,name,code) VALUES ('14', 'completes', 'P')") c.execute("INSERT INTO Actions (id,name,code) VALUES ('15', 'straddle', 'ST')") c.execute("INSERT INTO Actions (id,name,code) VALUES ('16', 'button blind', 'BUB')") + c.execute("INSERT INTO Actions (id,name,code) VALUES ('17', 'walk', 'W')") #Fill Rank c.execute("INSERT INTO Rank (id,name) VALUES ('1', 'Nothing')") c.execute("INSERT INTO Rank (id,name) VALUES ('2', 'NoPair')") @@ -2377,6 +2596,25 @@ def storeHand(self, hdata, doinsert = False, printdata = False): hdata['playersAtStreet3'], hdata['playersAtStreet4'], hdata['playersAtShowdown'], + + hdata['street0Callers'], + hdata['street1Callers'], + hdata['street2Callers'], + hdata['street3Callers'], + hdata['street4Callers'], + + hdata['street0Aggressors'], + hdata['street1Aggressors'], + hdata['street2Aggressors'], + hdata['street3Aggressors'], + hdata['street4Aggressors'], + + hdata['street0Calls'], + hdata['street1Calls'], + hdata['street2Calls'], + hdata['street3Calls'], + hdata['street4Calls'], + hdata['street0Raises'], hdata['street1Raises'], hdata['street2Raises'], diff --git a/DerivedStats.py b/DerivedStats.py index 534562d..898d9a6 100644 --- a/DerivedStats.py +++ b/DerivedStats.py @@ -36,7 +36,12 @@ def _buildStatsInitializer(): init = {} #Init vars that may not be used, but still need to be inserted. # All stud street4 need this when importing holdem - init['effStack'] = 0 + init['bigblind'] = 0 + init['effStack'] = 0 + init['effActiveStack'] = 0 + init['effMzone'] = 0 + init['effActiveMzone'] = 0 + init['tableMzone'] = 0 init['startBounty'] = None init['endBounty'] = None init['common'] = 0 @@ -56,8 +61,9 @@ def _buildStatsInitializer(): init['startCards'] = 170 init['handString'] = None init['position'] = 9 #ANTE ALL IN + init['street0CalledRaiseChance'] = 0 - init['street0CalledRaiseDone'] = 0 + init['street0CalledRaiseDone'] = 0 init['street0VPIChance'] = True init['street0VPI'] = False init['street0AggrChance'] = True @@ -77,6 +83,66 @@ def _buildStatsInitializer(): init['street0_FoldTo4BDone']= False init['street0_SqueezeChance']= False init['street0_SqueezeDone'] = False + init['street0_FoldToSqueezeChance']= False + init['street0_FoldToSqueezeDone'] = False + + init['street1_2BChance'] = False + init['street1_2BDone'] = False + init['street1_3BChance'] = False + init['street1_3BDone'] = False + init['street1_4BChance'] = False + init['street1_4BDone'] = False + init['street1_C4BChance'] = False + init['street1_C4BDone'] = False + init['street1_FoldTo2BChance']= False + init['street1_FoldTo2BDone']= False + init['street1_FoldTo3BChance']= False + init['street1_FoldTo3BDone']= False + init['street1_FoldTo4BChance']= False + init['street1_FoldTo4BDone']= False + init['street1_SqueezeChance']= False + init['street1_SqueezeDone'] = False + init['street1_FoldToSqueezeChance']= False + init['street1_FoldToSqueezeDone'] = False + + init['street2_2BChance'] = False + init['street2_2BDone'] = False + init['street2_3BChance'] = False + init['street2_3BDone'] = False + init['street2_4BChance'] = False + init['street2_4BDone'] = False + init['street2_C4BChance'] = False + init['street2_C4BDone'] = False + init['street2_FoldTo2BChance']= False + init['street2_FoldTo2BDone']= False + init['street2_FoldTo3BChance']= False + init['street2_FoldTo3BDone']= False + init['street2_FoldTo4BChance']= False + init['street2_FoldTo4BDone']= False + init['street2_SqueezeChance']= False + init['street2_SqueezeDone'] = False + init['street2_FoldToSqueezeChance']= False + init['street2_FoldToSqueezeDone'] = False + + init['street3_2BChance'] = False + init['street3_2BDone'] = False + init['street3_3BChance'] = False + init['street3_3BDone'] = False + init['street3_4BChance'] = False + init['street3_4BDone'] = False + init['street3_C4BChance'] = False + init['street3_C4BDone'] = False + init['street3_FoldTo2BChance']= False + init['street3_FoldTo2BDone']= False + init['street3_FoldTo3BChance']= False + init['street3_FoldTo3BDone']= False + init['street3_FoldTo4BChance']= False + init['street3_FoldTo4BDone']= False + init['street3_SqueezeChance']= False + init['street3_SqueezeDone'] = False + init['street3_FoldToSqueezeChance']= False + init['street3_FoldToSqueezeDone'] = False + init['stealChance'] = False init['stealDone'] = False init['success_Steal'] = False @@ -95,12 +161,15 @@ def _buildStatsInitializer(): init['street4Seen'] = False init['otherRaisedStreet0'] = False init['foldToOtherRaisedStreet0'] = False + init['callToOtherRaisedStreet0'] = False + init['raiseToOtherRaisedStreet0'] = False init['wentAllIn'] = False for i in range(5): init['street%dCalls' % i] = 0 - init['street%dBets' % i] = 0 init['street%dRaises' % i] = 0 + init['street%dCallers' % i] = 0 + init['street%dAggressors' % i] = 0 init['street%dAggr' % i] = False init['street%dInPosition' % i] = False init['street%dFirstToAct' % i] = False @@ -115,10 +184,18 @@ def _buildStatsInitializer(): init['street%dCheckCallRaiseChance' %i] = False init['street%dCheckCallDone' %i] = False init['street%dCheckRaiseDone' %i] = False + init['street%dfoldToCheckRaiseChance' %i] = False + init['street%dfoldToCheckRaiseDone' %i] = False init['otherRaisedStreet%d' %i] = False init['foldToOtherRaisedStreet%d' %i] = False + init['callToOtherRaisedStreet%d' %i] = False + init['raiseToOtherRaisedStreet%d' %i] = False init['foldToStreet%dCBChance' %i] = False init['foldToStreet%dCBDone' %i] = False + init['callToStreet%dCBChance' %i] = False + init['callToStreet%dCBDone' %i] = False + init['raiseToStreet%dCBChance' %i] = False + init['raiseToStreet%dCBDone' %i] = False init['wonWhenSeenStreet%d' %i] = False return init @@ -346,6 +423,9 @@ def assembleHandsPlayers(self, hand): self.calcEffectiveStack(hand) self.calcCheckCallRaise(hand) self.calc34BetStreet0(hand) + self.calc34BetStreet1(hand) + self.calc34BetStreet2(hand) + self.calc34BetStreet3(hand) self.calcSteals(hand) self.calcCalledRaiseStreet0(hand) # Additional stats @@ -354,6 +434,7 @@ def assembleHandsPlayers(self, hand): def assembleHandsActions(self, hand): k = 0 + walk = False for i, street in enumerate(hand.actionStreets): for j, act in enumerate(hand.actions[street]): k += 1 @@ -370,7 +451,18 @@ def assembleHandsActions(self, hand): self.handsactions[k]['street'] = i-1 self.handsactions[k]['actionNo'] = k self.handsactions[k]['streetActionNo'] = (j+1) - self.handsactions[k]['actionId'] = hand.ACTION[act[1]] + if street == 'BLINDSANTES' and act[1] in ('big blind', 'both', 'button blind'): + all_folds = True + for _act in enumerate(hand.actions['PREFLOP']): + if _act[1][0] != act[0] and _act[1][1] in ('checks', 'calls', 'bets', 'raises', 'completes'): + all_folds = False + if all_folds: + walk = True + if walk: + self.handsactions[k]['actionId'] = 17 + walk = False + else: + self.handsactions[k]['actionId'] = hand.ACTION[act[1]] if act[1] not in ('discards') and len(act) > 2: self.handsactions[k]['amount'] = int(100 * act[2]) if act[1] in ('raises', 'completes'): @@ -931,10 +1023,17 @@ def streetXRaises(self, hand): # In theory its "num small bets paid to see flop/street4, including blind" which makes sense for limit. Not so useful for nl # Leaving empty for the moment, - for i in range(5): self.hands['street%dRaises' % i] = 0 + for i in range(5): + self.hands['street%dCalls' % i] = 0 + self.hands['street%dRaises' % i] = 0 + self.hands['street%dCallers' % i] = 0 + self.hands['street%dAggressors' % i] = 0 for (i, street) in enumerate(hand.actionStreets[1:]): + self.hands['street%dCalls' % i] = len(filter( lambda action: action[1] in ('calls'), hand.actions[street])) self.hands['street%dRaises' % i] = len(filter( lambda action: action[1] in ('raises','bets','completes'), hand.actions[street])) + self.hands['street%dAggressors' % i] = len(filter(lambda action: action[0] != hand.hero and action[1] in ('raises', 'bets', 'completes'), hand.actions[street])) + self.hands['street%dCallers' % i] = len(filter(lambda action: action[0] != hand.hero and action[1] in ('calls'), hand.actions[street])) def calcSteals(self, hand): """Fills raiseFirstInChance|raisedFirstIn, fold(Bb|Sb)ToSteal(Chance|) @@ -1051,11 +1150,15 @@ def calc34BetStreet0(self, hand): if pname == first_agressor: player_stats['street0_4BChance'] = raise_chance player_stats['street0_FoldTo3BChance'] = True + if squeeze_chance: + player_stats['street0_FoldToSqueezeChance'] = True if aggr: player_stats['street0_4BDone'] = raise_chance bet_level += 1 elif act == 'folds': player_stats['street0_FoldTo3BDone'] = True + if squeeze_chance: + player_stats['street0_FoldToSqueezeDone'] = True break else: player_stats['street0_C4BChance'] = raise_chance @@ -1069,8 +1172,242 @@ def calc34BetStreet0(self, hand): if act == 'folds': player_stats['street0_FoldTo4BDone'] = True + def calc34BetStreet1(self, hand): + """Fills street1_(3|4)B(Chance|Done), other(3|4)BStreet1""" + if hand.gametype['base'] == 'stud': + bet_level = 0 # bet_level after 3-bet is equal to 3 + else: + bet_level = 1 # bet_level after 3-bet is equal to 3 + squeeze_chance, raise_chance, action_cnt, first_agressor = False, True, {}, None + p0_in = set([x[0] for x in hand.actions[hand.actionStreets[0]] if not x[-1]]) + p1_in = set([x[0] for x in hand.actions[hand.actionStreets[2]]]) + p_in = p1_in.union(p0_in) + for p in p_in: action_cnt[p] = 0 + for action in hand.actions[hand.actionStreets[2]]: + pname, act, aggr, allin = action[0], action[1], action[1] in ('raises', 'bets', 'completes'), False + player_stats = self.handsplayers.get(pname) + action_cnt[pname] += 1 + if len(action) > 3 and act != 'discards': + allin = action[-1] + if len(p_in)==1 and action_cnt[pname]==1: + raise_chance = False + if act == 'folds' or allin or player_stats['sitout']: + p_in.discard(pname) + if player_stats['sitout']: continue + if bet_level == 0: + if aggr: + if first_agressor == None: + first_agressor = pname + bet_level += 1 + continue + elif bet_level == 1: + player_stats['street1_2BChance'] = raise_chance + if aggr: + if first_agressor == None: + first_agressor = pname + player_stats['street1_2BDone'] = True + bet_level += 1 + continue + elif bet_level == 2: + player_stats['street1_3BChance'] = raise_chance + player_stats['street1_SqueezeChance'] = squeeze_chance + if pname == first_agressor: + player_stats['street1_FoldTo2BChance'] = True + if act == 'folds': + player_stats['street1_FoldTo2BDone'] = True + if not squeeze_chance and act == 'calls': + squeeze_chance = True + continue + if aggr: + player_stats['street1_3BDone'] = True + player_stats['street1_SqueezeDone'] = squeeze_chance + second_agressor = pname + bet_level += 1 + continue + elif bet_level == 3: + if pname == first_agressor: + player_stats['street1_4BChance'] = raise_chance + player_stats['street1_FoldTo3BChance'] = True + if squeeze_chance: + player_stats['street1_FoldToSqueezeChance'] = True + if aggr: + player_stats['street1_4BDone'] = raise_chance + bet_level += 1 + elif act == 'folds': + player_stats['street1_FoldTo3BDone'] = True + if squeeze_chance: + player_stats['street1_FoldToSqueezeDone'] = True + break + else: + player_stats['street1_C4BChance'] = raise_chance + if aggr: + player_stats['street1_C4BDone'] = raise_chance + bet_level += 1 + continue + elif bet_level == 4: + if pname != first_agressor: + player_stats['street1_FoldTo4BChance'] = True + if act == 'folds': + player_stats['street1_FoldTo4BDone'] = True + + def calc34BetStreet2(self, hand): + """Fills street2_(3|4)B(Chance|Done), other(3|4)Bstreet2""" + if hand.gametype['base'] == 'stud': + bet_level = 0 # bet_level after 3-bet is equal to 3 + else: + bet_level = 1 # bet_level after 3-bet is equal to 3 + squeeze_chance, raise_chance, action_cnt, first_agressor = False, True, {}, None + p0_in = set([x[0] for x in hand.actions[hand.actionStreets[0]] if not x[-1]]) + p1_in = set([x[0] for x in hand.actions[hand.actionStreets[3]]]) + p_in = p1_in.union(p0_in) + for p in p_in: action_cnt[p] = 0 + for action in hand.actions[hand.actionStreets[3]]: + pname, act, aggr, allin = action[0], action[1], action[1] in ('raises', 'bets', 'completes'), False + player_stats = self.handsplayers.get(pname) + action_cnt[pname] += 1 + if len(action) > 3 and act != 'discards': + allin = action[-1] + if len(p_in)==1 and action_cnt[pname]==1: + raise_chance = False + if act == 'folds' or allin or player_stats['sitout']: + p_in.discard(pname) + if player_stats['sitout']: continue + if bet_level == 0: + if aggr: + if first_agressor == None: + first_agressor = pname + bet_level += 1 + continue + elif bet_level == 1: + player_stats['street2_2BChance'] = raise_chance + if aggr: + if first_agressor == None: + first_agressor = pname + player_stats['street2_2BDone'] = True + bet_level += 1 + continue + elif bet_level == 2: + player_stats['street2_3BChance'] = raise_chance + player_stats['street2_SqueezeChance'] = squeeze_chance + if pname == first_agressor: + player_stats['street2_FoldTo2BChance'] = True + if act == 'folds': + player_stats['street2_FoldTo2BDone'] = True + if not squeeze_chance and act == 'calls': + squeeze_chance = True + continue + if aggr: + player_stats['street2_3BDone'] = True + player_stats['street2_SqueezeDone'] = squeeze_chance + second_agressor = pname + bet_level += 1 + continue + elif bet_level == 3: + if pname == first_agressor: + player_stats['street2_4BChance'] = raise_chance + player_stats['street2_FoldTo3BChance'] = True + if squeeze_chance: + player_stats['street2_FoldToSqueezeChance'] = True + if aggr: + player_stats['street2_4BDone'] = raise_chance + bet_level += 1 + elif act == 'folds': + player_stats['street2_FoldTo3BDone'] = True + if squeeze_chance: + player_stats['street2_FoldToSqueezeDone'] = True + break + else: + player_stats['street2_C4BChance'] = raise_chance + if aggr: + player_stats['street2_C4BDone'] = raise_chance + bet_level += 1 + continue + elif bet_level == 4: + if pname != first_agressor: + player_stats['street2_FoldTo4BChance'] = True + if act == 'folds': + player_stats['street2_FoldTo4BDone'] = True + + def calc34BetStreet3(self, hand): + """Fills street3_(3|4)B(Chance|Done), other(3|4)Bstreet3""" + if hand.gametype['base'] == 'stud': + bet_level = 0 # bet_level after 3-bet is equal to 3 + else: + bet_level = 1 # bet_level after 3-bet is equal to 3 + squeeze_chance, raise_chance, action_cnt, first_agressor = False, True, {}, None + p0_in = set([x[0] for x in hand.actions[hand.actionStreets[0]] if not x[-1]]) + p1_in = set([x[0] for x in hand.actions[hand.actionStreets[4]]]) + p_in = p1_in.union(p0_in) + for p in p_in: action_cnt[p] = 0 + for action in hand.actions[hand.actionStreets[4]]: + pname, act, aggr, allin = action[0], action[1], action[1] in ('raises', 'bets', 'completes'), False + player_stats = self.handsplayers.get(pname) + action_cnt[pname] += 1 + if len(action) > 3 and act != 'discards': + allin = action[-1] + if len(p_in)==1 and action_cnt[pname]==1: + raise_chance = False + if act == 'folds' or allin or player_stats['sitout']: + p_in.discard(pname) + if player_stats['sitout']: continue + if bet_level == 0: + if aggr: + if first_agressor == None: + first_agressor = pname + bet_level += 1 + continue + elif bet_level == 1: + player_stats['street3_2BChance'] = raise_chance + if aggr: + if first_agressor == None: + first_agressor = pname + player_stats['street3_2BDone'] = True + bet_level += 1 + continue + elif bet_level == 2: + player_stats['street3_3BChance'] = raise_chance + player_stats['street3_SqueezeChance'] = squeeze_chance + if pname == first_agressor: + player_stats['street3_FoldTo2BChance'] = True + if act == 'folds': + player_stats['street3_FoldTo2BDone'] = True + if not squeeze_chance and act == 'calls': + squeeze_chance = True + continue + if aggr: + player_stats['street3_3BDone'] = True + player_stats['street3_SqueezeDone'] = squeeze_chance + second_agressor = pname + bet_level += 1 + continue + elif bet_level == 3: + if pname == first_agressor: + player_stats['street3_4BChance'] = raise_chance + player_stats['street3_FoldTo3BChance'] = True + if squeeze_chance: + player_stats['street3_FoldToSqueezeChance'] = True + if aggr: + player_stats['street3_4BDone'] = raise_chance + bet_level += 1 + elif act == 'folds': + player_stats['street3_FoldTo3BDone'] = True + if squeeze_chance: + player_stats['street3_FoldToSqueezeDone'] = True + break + else: + player_stats['street3_C4BChance'] = raise_chance + if aggr: + player_stats['street3_C4BDone'] = raise_chance + bet_level += 1 + continue + elif bet_level == 4: + if pname != first_agressor: + player_stats['street3_FoldTo4BChance'] = True + if act == 'folds': + player_stats['street3_FoldTo4BDone'] = True + def calcCBets(self, hand): - """Fill streetXCBChance, streetXCBDone, foldToStreetXCBDone, foldToStreetXCBChance + """Fill streetXCBChance, streetXCBDone, foldToStreetXCBDone, foldToStreetXCBChance, raiseToStreetXCBDone, raiseToStreetXCBChance Continuation Bet chance, action: Had the last bet (initiative) on previous street, got called, close street action @@ -1093,6 +1430,18 @@ def calcCBets(self, hand): #print "DEBUG:", hand.handid, pname.encode('utf8'), street, folds, '--', name, 'lastbet on ', hand.actionStreets[i+1] self.handsplayers[pname]['foldToStreet%sCBChance' % (i+1)] = True self.handsplayers[pname]['foldToStreet%sCBDone' % (i+1)] = folds + for pname, calls in self.callTofirstsBetOrRaiser(hand.actions, street, name).iteritems(): + #print "DEBUG:", hand.handid, pname.encode('utf8'), street, calls, '--', name, 'lastbet on ', hand.actionStreets[i+1] + self.handsplayers[pname]['callToStreet%sCBChance' % (i+1)] = True + self.handsplayers[pname]['callToStreet%sCBDone' % (i+1)] = calls + for pname, raises in self.raiseTofirstsBetOrRaiser(hand.actions, street, name).iteritems(): + #print "DEBUG:", hand.handid, pname.encode('utf8'), street, raises, '--', name, 'lastbet on ', hand.actionStreets[i+1] + self.handsplayers[pname]['raiseToStreet%sCBChance' % (i+1)] = True + self.handsplayers[pname]['raiseToStreet%sCBDone' % (i+1)] = raises + for pname, completes in self.raiseTofirstsBetOrRaiser(hand.actions, street, name).iteritems(): + #print "DEBUG:", hand.handid, pname.encode('utf8'), street, completes, '--', name, 'lastbet on ', hand.actionStreets[i+1] + self.handsplayers[pname]['raiseToStreet%sCBChance' % (i+1)] = True + self.handsplayers[pname]['raiseToStreet%sCBDone' % (i+1)] = completes def calcCalledRaiseStreet0(self, hand): """ @@ -1151,6 +1500,10 @@ def calcCheckCallRaise(self, hand): player_stats['street%dCheckCallDone' % (i+1)] = act=='calls' player_stats['street%dCheckRaiseDone' % (i+1)] = act=='raises' acted.add(pname) + if pname == hand.hero and pname not in acted and acted.__len__() > 0: + player_stats['street%dfoldToCheckRaiseChance' % (i + 1)] = True + if player_stats['street%dCheckRaiseDone' % (i+1)] == True and act=='folds': + player_stats['street%dfoldToCheckRaiseDone' % (i + 1)] = True def aggr(self, hand, i): aggrers = set() @@ -1185,19 +1538,28 @@ def calls(self, hand, i): for act in hand.actions[hand.actionStreets[i+1]]: if act[1] in ('calls'): player_stats = self.handsplayers.get(act[0]) + if player_stats['otherRaisedStreet%s' % i] == True: + player_stats['callToOtherRaisedStreet%s' % i] = True player_stats['street%sCalls' % i] = 1 + player_stats['street%sCalls' % i] + if act[0] != hand.hero: + player_stats['street%sCallers' % i] = 1 + player_stats['street%sCallers' % i] def bets(self, hand, i): for act in hand.actions[hand.actionStreets[i+1]]: if act[1] in ('bets'): player_stats = self.handsplayers.get(act[0]) - player_stats['street%sBets' % i] = 1 + player_stats['street%sBets' % i] - + if act[0] != hand.hero: + player_stats['street%sAggressors' % i] = 1 + player_stats['street%sAggressors' % i] + def raises(self, hand, i): for act in hand.actions[hand.actionStreets[i+1]]: if act[1] in ('completes', 'raises'): player_stats = self.handsplayers.get(act[0]) + if player_stats['otherRaisedStreet%s' % i] == True: + player_stats['raiseToOtherRaisedStreet%s' % i] = True player_stats['street%sRaises' % i] = 1 + player_stats['street%sRaises' % i] + if act[0] != hand.hero: + player_stats['street%sAggressors' % i] = 1 + player_stats['street%sAggressors' % i] def folds(self, hand, i): for act in hand.actions[hand.actionStreets[i+1]]: @@ -1209,7 +1571,21 @@ def folds(self, hand, i): # %(hand.handid, act[0],hand.actionStreets[i+1], i) def countPlayers(self, hand): - pass + counted_seats = 0 + for p in hand.players: + if p[1] not in hand.sitout: + hand.seating.append(p[1]) + counted_seats += 1 + counted_playing = hand.seating.__len__() + actions = hand.actions[hand.holeStreets[0]] + hand.folding = [] + for action in actions: + if action[1] in 'folds': + hand.folding.append(action[0]) + counted_playing -= 1 + hand.counted_playing = counted_playing + hand.counted_seats = counted_seats + return counted_seats def pfba(self, actions, f=None, l=None): """Helper method. Returns set of PlayersFilteredByActions @@ -1247,11 +1623,32 @@ def calcEffectiveStack(self,hand): """ seen = {} pstacks = {} + ptotstacks = 0 actions = hand.actions[hand.holeStreets[0]] - for p in hand.players: + sb = [x[2] for x in hand.actions[hand.actionStreets[0]] if x[1] in ('small blind', 'secondsb')] + bb = [x[2] for x in hand.actions[hand.actionStreets[0]] if x[1] in ('big blind', 'button blind', 'both')] + ante = [x[2] for x in hand.actions[hand.actionStreets[0]] if x[1] == 'ante'] + counted_seats = hand.counted_seats + counted_playing = hand.counted_playing + if sb: + sb_value = int(100 * Decimal(sb[0])) + else: + sb_value = 0 + if bb: + bb_value = int(100 * Decimal(bb[0])) + else: + bb_value = 0 + if ante: + ante_value = int(100 * Decimal(ante[0])) + else: + ante_value = 0 + for p in hand.players: if p[1] not in hand.sitout: - pstacks[p[1]] = int(100 * Decimal(p[2])) + pstacks[p[1]] = int(100 * (Decimal(p[2]))) + ptotstacks += int(100 * (Decimal(p[2]))) for action in actions: + self.handsplayers[action[0]]['bigblind'] = bb_value + self.handsplayers[action[0]]['tableMzone'] = ptotstacks*1.0 / (counted_playing * (bb_value + sb_value + ante_value))*1.0 if action[0] in seen: continue if action[0] not in pstacks: continue seen[action[0]] = 1 @@ -1259,10 +1656,18 @@ def calcEffectiveStack(self,hand): if oppstacks: if pstacks[action[0]] > max(oppstacks): self.handsplayers[action[0]]['effStack'] = max(oppstacks) + self.handsplayers[action[0]]['effMzone'] = max(oppstacks)*1.0 / (sb_value + bb_value + (ante_value*counted_seats))*1.0 else: self.handsplayers[action[0]]['effStack'] = pstacks[action[0]] - if action[1] == 'folds': - pstacks[action[0]] = 0 + self.handsplayers[action[0]]['effMzone'] = pstacks[action[0]]*1.0 / (sb_value + bb_value + (ante_value*counted_seats))*1.0 + oppactivestacks = [v for (k,v) in pstacks.iteritems() if k != action[0] and k not in hand.folding] + if oppactivestacks: + if pstacks[action[0]] > max(oppactivestacks): + self.handsplayers[action[0]]['effActiveStack'] = max(oppactivestacks) + self.handsplayers[action[0]]['effActiveMzone'] = max(oppactivestacks)*1.0 / (sb_value + bb_value + (ante_value*counted_seats))*1.0 + else: + self.handsplayers[action[0]]['effActiveStack'] = pstacks[action[0]] + self.handsplayers[action[0]]['effActiveMzone'] = pstacks[action[0]]*1.0 / (sb_value + bb_value + (ante_value*counted_seats))*1.0 def firstsBetOrRaiser(self, actions): """Returns player name that placed the first bet or raise. @@ -1289,7 +1694,45 @@ def foldTofirstsBetOrRaiser(self, actions, street, aggressor): players[act[0]] = False if act[1] == 'raises' or act[1] == 'completes': break - elif act[1]!='discards': + elif act[1] not in ('discards','stands pat'): + i+=1 + return players + + def callTofirstsBetOrRaiser(self, actions, street, aggressor): + """Returns player name that placed the first bet or raise. + + None if there were no bets or raises on that street + """ + i, players = 0, {} + for act in actions[street]: + if i>1: break + if act[0] != aggressor: + if act[1] == 'calls': + players[act[0]] = True + else: + players[act[0]] = False + if act[1] == 'raises' or act[1] == 'completes': + break + elif act[1] not in ('discards','stands pat'): + i+=1 + return players + + def raiseTofirstsBetOrRaiser(self, actions, street, aggressor): + """Returns player name that placed the first bet or raise. + + None if there were no bets or raises on that street + """ + i, players = 0, {} + for act in actions[street]: + if i>1: break + if act[0] != aggressor: + if act[1] == 'raises' or act[1] == 'completes': + players[act[0]] = True + else: + players[act[0]] = False + if act[1] == 'raises' or act[1] == 'completes': + break + elif act[1] not in ('discards','stands pat'): i+=1 return players diff --git a/Hand.py b/Hand.py index e7a47be..ed816f6 100644 --- a/Hand.py +++ b/Hand.py @@ -43,7 +43,7 @@ class Hand(object): MS = {'horse' : 'HORSE', '8game' : '8-Game', 'hose' : 'HOSE', 'ha': 'HA'} ACTION = {'ante': 1, 'small blind': 2, 'secondsb': 3, 'big blind': 4, 'both': 5, 'calls': 6, 'raises': 7, 'bets': 8, 'stands pat': 9, 'folds': 10, 'checks': 11, 'discards': 12, 'bringin': 13, 'completes': 14, - 'straddle': 15, 'button blind': 16} + 'straddle': 15, 'button blind': 16, 'walk': 17} def __init__(self, config, sitename, gametype, handText, builtFrom = "HHC"): self.config = config @@ -566,6 +566,8 @@ def select(self, db, handId): self.addBlind(name, 'straddle', bet) elif act == 16: self.addBlind(name, 'button blind', bet) + elif act == 17: + self.addBlind(name, 'big blind', bet) else: print "DEBUG: unknown action: '%s'" % act @@ -971,6 +973,8 @@ def actionString(self, act, street=None): return ("%s: posts small blind %s%s%s" %(act[0], self.sym, act[2], ' and is all-in' if act[3] else '')) elif(act[1] == "big blind"): return ("%s: posts big blind %s%s%s" %(act[0], self.sym, act[2], ' and is all-in' if act[3] else '')) + elif(act[1] == "walk"): + return ("%s: posts big blind %s%s%s and walk" %(act[0], self.sym, act[2], ' and is all-in' if act[3] else '')) elif(act[1] == "straddle"): return ("%s: straddles %s%s%s" %(act[0], self.sym, act[2], ' and is all-in' if act[3] else '')) elif(act[1] == "button blind"): diff --git a/SQL.py b/SQL.py index bd16ca0..b36d3a2 100644 --- a/SQL.py +++ b/SQL.py @@ -455,6 +455,25 @@ def __init__(self, game='holdem', db_server='mysql'): playersAtStreet3 SMALLINT NOT NULL, playersAtStreet4 SMALLINT NOT NULL, playersAtShowdown SMALLINT NOT NULL, + + street0Callers TINYINT NOT NULL, + street1Callers TINYINT NOT NULL, + street2Callers TINYINT NOT NULL, + street3Callers TINYINT NOT NULL, + street4Callers TINYINT NOT NULL, + + street0Aggressors TINYINT NOT NULL, + street1Aggressors TINYINT NOT NULL, + street2Aggressors TINYINT NOT NULL, + street3Aggressors TINYINT NOT NULL, + street4Aggressors TINYINT NOT NULL, + + street0Calls TINYINT NOT NULL, + street1Calls TINYINT NOT NULL, + street2Calls TINYINT NOT NULL, + street3Calls TINYINT NOT NULL, + street4Calls TINYINT NOT NULL, + street0Raises TINYINT NOT NULL, /* num small bets paid to see flop/street4, including blind */ street1Raises TINYINT NOT NULL, /* num small bets paid to see turn/street5 */ street2Raises TINYINT NOT NULL, /* num big bets paid to see river/street6 */ @@ -496,6 +515,25 @@ def __init__(self, game='holdem', db_server='mysql'): playersAtStreet3 SMALLINT NOT NULL, playersAtStreet4 SMALLINT NOT NULL, playersAtShowdown SMALLINT NOT NULL, + + street0Callers SMALLINT NOT NULL, + street1Callers SMALLINT NOT NULL, + street2Callers SMALLINT NOT NULL, + street3Callers SMALLINT NOT NULL, + street4Callers SMALLINT NOT NULL, + + street0Aggressors SMALLINT NOT NULL, + street1Aggressors SMALLINT NOT NULL, + street2Aggressors SMALLINT NOT NULL, + street3Aggressors SMALLINT NOT NULL, + street4Aggressors SMALLINT NOT NULL, + + street0Calls SMALLINT NOT NULL, + street1Calls SMALLINT NOT NULL, + street2Calls SMALLINT NOT NULL, + street3Calls SMALLINT NOT NULL, + street4Calls SMALLINT NOT NULL, + street0Raises SMALLINT NOT NULL, /* num small bets paid to see flop/street4, including blind */ street1Raises SMALLINT NOT NULL, /* num small bets paid to see turn/street5 */ street2Raises SMALLINT NOT NULL, /* num big bets paid to see river/street6 */ @@ -536,6 +574,25 @@ def __init__(self, game='holdem', db_server='mysql'): playersAtStreet3 INT NOT NULL, playersAtStreet4 INT NOT NULL, playersAtShowdown INT NOT NULL, + + street0Callers INT NOT NULL, + street1Callers INT NOT NULL, + street2Callers INT NOT NULL, + street3Callers INT NOT NULL, + street4Callers INT NOT NULL, + + street0Aggressors INT NOT NULL, + street1Aggressors INT NOT NULL, + street2Aggressors INT NOT NULL, + street3Aggressors INT NOT NULL, + street4Aggressors INT NOT NULL, + + street0Calls INT NOT NULL, + street1Calls INT NOT NULL, + street2Calls INT NOT NULL, + street3Calls INT NOT NULL, + street4Calls INT NOT NULL, + street0Raises INT NOT NULL, /* num small bets paid to see flop/street4, including blind */ street1Raises INT NOT NULL, /* num small bets paid to see turn/street5 */ street2Raises INT NOT NULL, /* num big bets paid to see river/street6 */ @@ -801,7 +858,12 @@ def __init__(self, game='holdem', db_server='mysql'): handId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id), playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id), startCash BIGINT NOT NULL, + bigblind BIGINT NOT NULL, effStack BIGINT NOT NULL, + effActiveStack BIGINT NOT NULL, + effMzone FLOAT NOT NULL, + effActiveMzone FLOAT NOT NULL, + tableMzone FLOAT NOT NULL, startBounty BIGINT, endBounty BIGINT, position CHAR(1), @@ -860,8 +922,8 @@ def __init__(self, game='holdem', db_server='mysql'): street0_3BChance BOOLEAN, street0_3BDone BOOLEAN, street0_4BChance BOOLEAN, - street0_C4BChance BOOLEAN, street0_4BDone BOOLEAN, + street0_C4BChance BOOLEAN, street0_C4BDone BOOLEAN, street0_FoldTo2BChance BOOLEAN, street0_FoldTo2BDone BOOLEAN, @@ -871,6 +933,65 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone BOOLEAN, street0_SqueezeChance BOOLEAN, street0_SqueezeDone BOOLEAN, + street0_FoldToSqueezeChance BOOLEAN, + street0_FoldToSqueezeDone BOOLEAN, + + street1_2BChance BOOLEAN, + street1_2BDone BOOLEAN, + street1_3BChance BOOLEAN, + street1_3BDone BOOLEAN, + street1_4BChance BOOLEAN, + street1_4BDone BOOLEAN, + street1_C4BChance BOOLEAN, + street1_C4BDone BOOLEAN, + street1_FoldTo2BChance BOOLEAN, + street1_FoldTo2BDone BOOLEAN, + street1_FoldTo3BChance BOOLEAN, + street1_FoldTo3BDone BOOLEAN, + street1_FoldTo4BChance BOOLEAN, + street1_FoldTo4BDone BOOLEAN, + street1_SqueezeChance BOOLEAN, + street1_SqueezeDone BOOLEAN, + street1_FoldToSqueezeChance BOOLEAN, + street1_FoldToSqueezeDone BOOLEAN, + + street2_2BChance BOOLEAN, + street2_2BDone BOOLEAN, + street2_3BChance BOOLEAN, + street2_3BDone BOOLEAN, + street2_4BChance BOOLEAN, + street2_4BDone BOOLEAN, + street2_C4BChance BOOLEAN, + street2_C4BDone BOOLEAN, + street2_FoldTo2BChance BOOLEAN, + street2_FoldTo2BDone BOOLEAN, + street2_FoldTo3BChance BOOLEAN, + street2_FoldTo3BDone BOOLEAN, + street2_FoldTo4BChance BOOLEAN, + street2_FoldTo4BDone BOOLEAN, + street2_SqueezeChance BOOLEAN, + street2_SqueezeDone BOOLEAN, + street2_FoldToSqueezeChance BOOLEAN, + street2_FoldToSqueezeDone BOOLEAN, + + street3_2BChance BOOLEAN, + street3_2BDone BOOLEAN, + street3_3BChance BOOLEAN, + street3_3BDone BOOLEAN, + street3_4BChance BOOLEAN, + street3_4BDone BOOLEAN, + street3_C4BChance BOOLEAN, + street3_C4BDone BOOLEAN, + street3_FoldTo2BChance BOOLEAN, + street3_FoldTo2BDone BOOLEAN, + street3_FoldTo3BChance BOOLEAN, + street3_FoldTo3BDone BOOLEAN, + street3_FoldTo4BChance BOOLEAN, + street3_FoldTo4BDone BOOLEAN, + street3_SqueezeChance BOOLEAN, + street3_SqueezeDone BOOLEAN, + street3_FoldToSqueezeChance BOOLEAN, + street3_FoldToSqueezeDone BOOLEAN, raiseToStealChance BOOLEAN, raiseToStealDone BOOLEAN, @@ -918,6 +1039,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 BOOLEAN, foldToOtherRaisedStreet3 BOOLEAN, foldToOtherRaisedStreet4 BOOLEAN, + callToOtherRaisedStreet0 BOOLEAN, + callToOtherRaisedStreet1 BOOLEAN, + callToOtherRaisedStreet2 BOOLEAN, + callToOtherRaisedStreet3 BOOLEAN, + callToOtherRaisedStreet4 BOOLEAN, + raiseToOtherRaisedStreet0 BOOLEAN, + raiseToOtherRaisedStreet1 BOOLEAN, + raiseToOtherRaisedStreet2 BOOLEAN, + raiseToOtherRaisedStreet3 BOOLEAN, + raiseToOtherRaisedStreet4 BOOLEAN, raiseFirstInChance BOOLEAN, raisedFirstIn BOOLEAN, @@ -944,6 +1075,24 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet4CBChance BOOLEAN, foldToStreet4CBDone BOOLEAN, + callToStreet1CBChance BOOLEAN, + callToStreet1CBDone BOOLEAN, + callToStreet2CBChance BOOLEAN, + callToStreet2CBDone BOOLEAN, + callToStreet3CBChance BOOLEAN, + callToStreet3CBDone BOOLEAN, + callToStreet4CBChance BOOLEAN, + callToStreet4CBDone BOOLEAN, + + raiseToStreet1CBChance BOOLEAN, + raiseToStreet1CBDone BOOLEAN, + raiseToStreet2CBChance BOOLEAN, + raiseToStreet2CBDone BOOLEAN, + raiseToStreet3CBChance BOOLEAN, + raiseToStreet3CBDone BOOLEAN, + raiseToStreet4CBChance BOOLEAN, + raiseToStreet4CBDone BOOLEAN, + street1CheckCallRaiseChance BOOLEAN, street1CheckCallDone BOOLEAN, street1CheckRaiseDone BOOLEAN, @@ -956,17 +1105,21 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance BOOLEAN, street4CheckCallDone BOOLEAN, street4CheckRaiseDone BOOLEAN, + street1foldToCheckRaiseChance BOOLEAN, + street1foldToCheckRaiseDone BOOLEAN, + street2foldToCheckRaiseChance BOOLEAN, + street2foldToCheckRaiseDone BOOLEAN, + street3foldToCheckRaiseChance BOOLEAN, + street3foldToCheckRaiseDone BOOLEAN, + street4foldToCheckRaiseChance BOOLEAN, + street4foldToCheckRaiseDone BOOLEAN, street0Calls TINYINT, street1Calls TINYINT, street2Calls TINYINT, street3Calls TINYINT, street4Calls TINYINT, - street0Bets TINYINT, - street1Bets TINYINT, - street2Bets TINYINT, - street3Bets TINYINT, - street4Bets TINYINT, + street0Raises TINYINT, street1Raises TINYINT, street2Raises TINYINT, @@ -976,6 +1129,18 @@ def __init__(self, game='holdem', db_server='mysql'): street2Discards TINYINT, street3Discards TINYINT, + street0Callers TINYINT, + street1Callers TINYINT, + street2Callers TINYINT, + street3Callers TINYINT, + street4Callers TINYINT, + + street0Aggressors TINYINT, + street1Aggressors TINYINT, + street2Aggressors TINYINT, + street3Aggressors TINYINT, + street4Aggressors TINYINT, + handString TEXT, actionString VARCHAR(15)) ENGINE=INNODB""" @@ -985,7 +1150,12 @@ def __init__(self, game='holdem', db_server='mysql'): handId BIGINT NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id), playerId INT NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id), startCash BIGINT NOT NULL, + bigblind BIGINT NOT NULL, effStack BIGINT NOT NULL, + effActiveStack BIGINT NOT NULL, + effMzone FLOAT NOT NULL, + effActiveMzone FLOAT NOT NULL, + tableMzone FLOAT NOT NULL, startBounty BIGINT, endBounty BIGINT, position CHAR(1), @@ -1032,7 +1202,7 @@ def __init__(self, game='holdem', db_server='mysql'): wonWhenSeenStreet3 BOOLEAN, wonWhenSeenStreet4 BOOLEAN, wonAtSD BOOLEAN, - + street0VPIChance BOOLEAN, street0VPI BOOLEAN, street0AggrChance BOOLEAN, @@ -1055,6 +1225,65 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone BOOLEAN, street0_SqueezeChance BOOLEAN, street0_SqueezeDone BOOLEAN, + street0_FoldToSqueezeChance BOOLEAN, + street0_FoldToSqueezeDone BOOLEAN, + + street1_2BChance BOOLEAN, + street1_2BDone BOOLEAN, + street1_3BChance BOOLEAN, + street1_3BDone BOOLEAN, + street1_4BChance BOOLEAN, + street1_4BDone BOOLEAN, + street1_C4BChance BOOLEAN, + street1_C4BDone BOOLEAN, + street1_FoldTo2BChance BOOLEAN, + street1_FoldTo2BDone BOOLEAN, + street1_FoldTo3BChance BOOLEAN, + street1_FoldTo3BDone BOOLEAN, + street1_FoldTo4BChance BOOLEAN, + street1_FoldTo4BDone BOOLEAN, + street1_SqueezeChance BOOLEAN, + street1_SqueezeDone BOOLEAN, + street1_FoldToSqueezeChance BOOLEAN, + street1_FoldToSqueezeDone BOOLEAN, + + street2_2BChance BOOLEAN, + street2_2BDone BOOLEAN, + street2_3BChance BOOLEAN, + street2_3BDone BOOLEAN, + street2_4BChance BOOLEAN, + street2_4BDone BOOLEAN, + street2_C4BChance BOOLEAN, + street2_C4BDone BOOLEAN, + street2_FoldTo2BChance BOOLEAN, + street2_FoldTo2BDone BOOLEAN, + street2_FoldTo3BChance BOOLEAN, + street2_FoldTo3BDone BOOLEAN, + street2_FoldTo4BChance BOOLEAN, + street2_FoldTo4BDone BOOLEAN, + street2_SqueezeChance BOOLEAN, + street2_SqueezeDone BOOLEAN, + street2_FoldToSqueezeChance BOOLEAN, + street2_FoldToSqueezeDone BOOLEAN, + + street3_2BChance BOOLEAN, + street3_2BDone BOOLEAN, + street3_3BChance BOOLEAN, + street3_3BDone BOOLEAN, + street3_4BChance BOOLEAN, + street3_4BDone BOOLEAN, + street3_C4BChance BOOLEAN, + street3_C4BDone BOOLEAN, + street3_FoldTo2BChance BOOLEAN, + street3_FoldTo2BDone BOOLEAN, + street3_FoldTo3BChance BOOLEAN, + street3_FoldTo3BDone BOOLEAN, + street3_FoldTo4BChance BOOLEAN, + street3_FoldTo4BDone BOOLEAN, + street3_SqueezeChance BOOLEAN, + street3_SqueezeDone BOOLEAN, + street3_FoldToSqueezeChance BOOLEAN, + street3_FoldToSqueezeDone BOOLEAN, raiseToStealChance BOOLEAN, raiseToStealDone BOOLEAN, @@ -1102,6 +1331,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 BOOLEAN, foldToOtherRaisedStreet3 BOOLEAN, foldToOtherRaisedStreet4 BOOLEAN, + callToOtherRaisedStreet0 BOOLEAN, + callToOtherRaisedStreet1 BOOLEAN, + callToOtherRaisedStreet2 BOOLEAN, + callToOtherRaisedStreet3 BOOLEAN, + callToOtherRaisedStreet4 BOOLEAN, + raiseToOtherRaisedStreet0 BOOLEAN, + raiseToOtherRaisedStreet1 BOOLEAN, + raiseToOtherRaisedStreet2 BOOLEAN, + raiseToOtherRaisedStreet3 BOOLEAN, + raiseToOtherRaisedStreet4 BOOLEAN, raiseFirstInChance BOOLEAN, raisedFirstIn BOOLEAN, @@ -1128,6 +1367,24 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet4CBChance BOOLEAN, foldToStreet4CBDone BOOLEAN, + callToStreet1CBChance BOOLEAN, + callToStreet1CBDone BOOLEAN, + callToStreet2CBChance BOOLEAN, + callToStreet2CBDone BOOLEAN, + callToStreet3CBChance BOOLEAN, + callToStreet3CBDone BOOLEAN, + callToStreet4CBChance BOOLEAN, + callToStreet4CBDone BOOLEAN, + + raiseToStreet1CBChance BOOLEAN, + raiseToStreet1CBDone BOOLEAN, + raiseToStreet2CBChance BOOLEAN, + raiseToStreet2CBDone BOOLEAN, + raiseToStreet3CBChance BOOLEAN, + raiseToStreet3CBDone BOOLEAN, + raiseToStreet4CBChance BOOLEAN, + raiseToStreet4CBDone BOOLEAN, + street1CheckCallRaiseChance BOOLEAN, street1CheckCallDone BOOLEAN, street1CheckRaiseDone BOOLEAN, @@ -1140,17 +1397,21 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance BOOLEAN, street4CheckCallDone BOOLEAN, street4CheckRaiseDone BOOLEAN, + street1foldToCheckRaiseChance BOOLEAN, + street1foldToCheckRaiseDone BOOLEAN, + street2foldToCheckRaiseChance BOOLEAN, + street2foldToCheckRaiseDone BOOLEAN, + street3foldToCheckRaiseChance BOOLEAN, + street3foldToCheckRaiseDone BOOLEAN, + street4foldToCheckRaiseChance BOOLEAN, + street4foldToCheckRaiseDone BOOLEAN, street0Calls SMALLINT, street1Calls SMALLINT, street2Calls SMALLINT, street3Calls SMALLINT, street4Calls SMALLINT, - street0Bets SMALLINT, - street1Bets SMALLINT, - street2Bets SMALLINT, - street3Bets SMALLINT, - street4Bets SMALLINT, + street0Raises SMALLINT, street1Raises SMALLINT, street2Raises SMALLINT, @@ -1160,6 +1421,18 @@ def __init__(self, game='holdem', db_server='mysql'): street2Discards SMALLINT, street3Discards SMALLINT, + street0Callers SMALLINT, + street1Callers SMALLINT, + street2Callers SMALLINT, + street3Callers SMALLINT, + street4Callers SMALLINT, + + street0Aggressors SMALLINT, + street1Aggressors SMALLINT, + street2Aggressors SMALLINT, + street3Aggressors SMALLINT, + street4Aggressors SMALLINT, + handString TEXT, actionString VARCHAR(15))""" elif db_server == 'sqlite': @@ -1168,7 +1441,12 @@ def __init__(self, game='holdem', db_server='mysql'): handId INT NOT NULL, playerId INT NOT NULL, startCash INT NOT NULL, + bigblind INT NOT NULL, effStack INT NOT NULL, + effActiveStack INT NOT NULL, + effMzone FLOAT NOT NULL, + effActiveMzone FLOAT NOT NULL, + tableMzone FLOAT NOT NULL, startBounty INT, endBounty INT, position TEXT, @@ -1214,8 +1492,8 @@ def __init__(self, game='holdem', db_server='mysql'): wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, wonWhenSeenStreet4 INT, - wonAtSD INT, - + wonAtSD INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -1238,6 +1516,65 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, raiseToStealChance INT, raiseToStealDone INT, @@ -1285,6 +1622,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, raiseFirstInChance INT, raisedFirstIn INT, @@ -1311,6 +1658,24 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, + street1CheckCallRaiseChance INT, street1CheckCallDone INT, street1CheckRaiseDone INT, @@ -1323,17 +1688,21 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -1343,6 +1712,18 @@ def __init__(self, game='holdem', db_server='mysql'): street2Discards INT, street3Discards INT, + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT, + handString TEXT, actionString VARCHAR(15)) """ @@ -1607,7 +1988,8 @@ def __init__(self, game='holdem', db_server='mysql'): position CHAR(1), tourneyTypeId SMALLINT UNSIGNED, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id), styleKey CHAR(7) NOT NULL, /* 1st char is style (A/T/H/S), other 6 are the key */ - n INT NOT NULL, + n INT NOT NULL, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -1630,6 +2012,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -1654,6 +2096,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -1680,7 +2132,23 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBChance INT, foldToStreet3CBDone INT, foldToStreet4CBChance INT, - foldToStreet4CBDone INT, + foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -1704,16 +2172,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -1721,7 +2193,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) ENGINE=INNODB""" elif db_server == 'postgresql': self.query['createHudCacheTable'] = """CREATE TABLE HudCache ( @@ -1732,7 +2216,8 @@ def __init__(self, game='holdem', db_server='mysql'): position CHAR(1), tourneyTypeId INT, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id), styleKey CHAR(7) NOT NULL, /* 1st char is style (A/T/H/S), other 6 are the key */ - n INT, + n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -1755,6 +2240,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -1779,6 +2324,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -1806,6 +2361,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -1829,16 +2400,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -1846,7 +2421,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ elif db_server == 'sqlite': self.query['createHudCacheTable'] = """CREATE TABLE HudCache ( @@ -1857,7 +2444,8 @@ def __init__(self, game='holdem', db_server='mysql'): position TEXT, tourneyTypeId INT, styleKey TEXT NOT NULL, /* 1st char is style (A/T/H/S), other 6 are the key */ - n INT, + n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -1880,6 +2468,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -1904,6 +2552,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -1931,6 +2589,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common INT, committed INT, winnings INT, @@ -1954,16 +2628,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -1971,7 +2649,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ ################################ @@ -1987,7 +2677,8 @@ def __init__(self, game='holdem', db_server='mysql'): tourneyTypeId SMALLINT UNSIGNED, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id), playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id), startCards SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (startCards) REFERENCES StartCards(id), - n INT NOT NULL, + n INT NOT NULL, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2010,6 +2701,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -2034,6 +2785,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -2060,7 +2821,23 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBChance INT, foldToStreet3CBDone INT, foldToStreet4CBChance INT, - foldToStreet4CBDone INT, + foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -2084,16 +2861,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -2101,7 +2882,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) ENGINE=INNODB""" elif db_server == 'postgresql': self.query['createCardsCacheTable'] = """CREATE TABLE CardsCache ( @@ -2112,7 +2905,8 @@ def __init__(self, game='holdem', db_server='mysql'): tourneyTypeId INT, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id), playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id), startCards SMALLINT, FOREIGN KEY (startCards) REFERENCES StartCards(id), - n INT, + n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2135,6 +2929,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -2159,6 +3013,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -2186,6 +3050,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -2209,16 +3089,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -2226,7 +3110,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ elif db_server == 'sqlite': self.query['createCardsCacheTable'] = """CREATE TABLE CardsCache ( @@ -2237,7 +3133,8 @@ def __init__(self, game='holdem', db_server='mysql'): tourneyTypeId INT, playerId INT, startCards INT, - n INT, + n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2260,6 +3157,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -2284,6 +3241,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -2311,6 +3278,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common INT, committed INT, winnings INT, @@ -2334,16 +3317,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -2351,7 +3338,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ ################################ @@ -2369,7 +3368,8 @@ def __init__(self, game='holdem', db_server='mysql'): seats SMALLINT NOT NULL, maxPosition TINYINT NOT NULL, position CHAR(1), - n INT NOT NULL, + n INT NOT NULL, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2392,6 +3392,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -2416,6 +3476,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -2442,7 +3512,23 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBChance INT, foldToStreet3CBDone INT, foldToStreet4CBChance INT, - foldToStreet4CBDone INT, + foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -2466,16 +3552,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -2483,7 +3573,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) ENGINE=INNODB""" elif db_server == 'postgresql': self.query['createPositionsCacheTable'] = """CREATE TABLE PositionsCache ( @@ -2497,6 +3599,7 @@ def __init__(self, game='holdem', db_server='mysql'): maxPosition SMALLINT NOT NULL, position CHAR(1), n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2519,6 +3622,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -2543,6 +3706,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -2570,6 +3743,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -2593,16 +3782,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -2610,7 +3803,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ elif db_server == 'sqlite': self.query['createPositionsCacheTable'] = """CREATE TABLE PositionsCache ( @@ -2624,6 +3829,7 @@ def __init__(self, game='holdem', db_server='mysql'): maxPosition INT NOT NULL, position TEXT, n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2646,6 +3852,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -2670,6 +3936,16 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -2697,6 +3973,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common INT, committed INT, winnings INT, @@ -2720,16 +4012,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -2737,7 +4033,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ ################################ @@ -2830,7 +4138,8 @@ def __init__(self, game='holdem', db_server='mysql'): endTime DATETIME NOT NULL, gametypeId SMALLINT UNSIGNED, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id), playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id), - n INT NOT NULL, + n INT NOT NULL, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2853,6 +4162,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -2862,7 +4231,7 @@ def __init__(self, game='holdem', db_server='mysql'): street2Seen INT, street3Seen INT, street4Seen INT, - sawShowdown INT, + sawShowdown INT, street1Aggr INT, street2Aggr INT, street3Aggr INT, @@ -2876,7 +4245,17 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet1 INT, foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, - foldToOtherRaisedStreet4 INT, + foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -2903,7 +4282,23 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBChance INT, foldToStreet3CBDone INT, foldToStreet4CBChance INT, - foldToStreet4CBDone INT, + foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -2927,16 +4322,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -2944,7 +4343,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) ENGINE=INNODB """ @@ -2956,7 +4367,8 @@ def __init__(self, game='holdem', db_server='mysql'): endTime timestamp without time zone NOT NULL, gametypeId INT, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id), playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id), - n INT, + n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -2979,6 +4391,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -3002,7 +4474,17 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet1 INT, foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, - foldToOtherRaisedStreet4 INT, + foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -3030,6 +4512,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -3053,16 +4551,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -3070,7 +4572,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ elif db_server == 'sqlite': @@ -3082,6 +4596,7 @@ def __init__(self, game='holdem', db_server='mysql'): gametypeId INT, playerId INT, n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -3104,6 +4619,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -3127,7 +4702,17 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet1 INT, foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, - foldToOtherRaisedStreet4 INT, + foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -3155,6 +4740,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common INT, committed INT, winnings INT, @@ -3178,16 +4779,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -3195,7 +4800,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ ################################ @@ -3210,7 +4827,8 @@ def __init__(self, game='holdem', db_server='mysql'): endTime DATETIME NOT NULL, tourneyId INT UNSIGNED NOT NULL, FOREIGN KEY (tourneyId) REFERENCES Tourneys(id), playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id), - n INT NOT NULL, + n INT NOT NULL, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -3233,6 +4851,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -3242,7 +4920,7 @@ def __init__(self, game='holdem', db_server='mysql'): street2Seen INT, street3Seen INT, street4Seen INT, - sawShowdown INT, + sawShowdown INT, street1Aggr INT, street2Aggr INT, street3Aggr INT, @@ -3256,7 +4934,17 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet1 INT, foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, - foldToOtherRaisedStreet4 INT, + foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -3283,7 +4971,23 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBChance INT, foldToStreet3CBDone INT, foldToStreet4CBChance INT, - foldToStreet4CBDone INT, + foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -3307,16 +5011,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -3324,7 +5032,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) ENGINE=INNODB """ @@ -3336,7 +5056,8 @@ def __init__(self, game='holdem', db_server='mysql'): endTime timestamp without time zone NOT NULL, tourneyId INT, FOREIGN KEY (tourneyId) REFERENCES Tourneys(id), playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id), - n INT, + n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -3359,6 +5080,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -3382,7 +5163,17 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet1 INT, foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, - foldToOtherRaisedStreet4 INT, + foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -3410,6 +5201,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common BIGINT, committed BIGINT, winnings BIGINT, @@ -3433,16 +5240,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -3450,7 +5261,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ elif db_server == 'sqlite': @@ -3462,6 +5285,7 @@ def __init__(self, game='holdem', db_server='mysql'): tourneyId INT, playerId INT, n INT, + street0VPIChance INT, street0VPI INT, street0AggrChance INT, @@ -3484,6 +5308,66 @@ def __init__(self, game='holdem', db_server='mysql'): street0_FoldTo4BDone INT, street0_SqueezeChance INT, street0_SqueezeDone INT, + street0_FoldToSqueezeChance INT, + street0_FoldToSqueezeDone INT, + + street1_2BChance INT, + street1_2BDone INT, + street1_3BChance INT, + street1_3BDone INT, + street1_4BChance INT, + street1_4BDone INT, + street1_C4BChance INT, + street1_C4BDone INT, + street1_FoldTo2BChance INT, + street1_FoldTo2BDone INT, + street1_FoldTo3BChance INT, + street1_FoldTo3BDone INT, + street1_FoldTo4BChance INT, + street1_FoldTo4BDone INT, + street1_SqueezeChance INT, + street1_SqueezeDone INT, + street1_FoldToSqueezeChance INT, + street1_FoldToSqueezeDone INT, + + street2_2BChance INT, + street2_2BDone INT, + street2_3BChance INT, + street2_3BDone INT, + street2_4BChance INT, + street2_4BDone INT, + street2_C4BChance INT, + street2_C4BDone INT, + street2_FoldTo2BChance INT, + street2_FoldTo2BDone INT, + street2_FoldTo3BChance INT, + street2_FoldTo3BDone INT, + street2_FoldTo4BChance INT, + street2_FoldTo4BDone INT, + street2_SqueezeChance INT, + street2_SqueezeDone INT, + street2_FoldToSqueezeChance INT, + street2_FoldToSqueezeDone INT, + + street3_2BChance INT, + street3_2BDone INT, + street3_3BChance INT, + street3_3BDone INT, + street3_4BChance INT, + street3_4BDone INT, + street3_C4BChance INT, + street3_C4BDone INT, + street3_FoldTo2BChance INT, + street3_FoldTo2BDone INT, + street3_FoldTo3BChance INT, + street3_FoldTo3BDone INT, + street3_FoldTo4BChance INT, + street3_FoldTo4BDone INT, + street3_SqueezeChance INT, + street3_SqueezeDone INT, + street3_FoldToSqueezeChance INT, + street3_FoldToSqueezeDone INT, + raiseToStealChance INT, raiseToStealDone INT, stealChance INT, @@ -3507,7 +5391,17 @@ def __init__(self, game='holdem', db_server='mysql'): foldToOtherRaisedStreet1 INT, foldToOtherRaisedStreet2 INT, foldToOtherRaisedStreet3 INT, - foldToOtherRaisedStreet4 INT, + foldToOtherRaisedStreet4 INT, + callToOtherRaisedStreet0 INT, + callToOtherRaisedStreet1 INT, + callToOtherRaisedStreet2 INT, + callToOtherRaisedStreet3 INT, + callToOtherRaisedStreet4 INT, + raiseToOtherRaisedStreet0 INT, + raiseToOtherRaisedStreet1 INT, + raiseToOtherRaisedStreet2 INT, + raiseToOtherRaisedStreet3 INT, + raiseToOtherRaisedStreet4 INT, wonWhenSeenStreet1 INT, wonWhenSeenStreet2 INT, wonWhenSeenStreet3 INT, @@ -3535,6 +5429,22 @@ def __init__(self, game='holdem', db_server='mysql'): foldToStreet3CBDone INT, foldToStreet4CBChance INT, foldToStreet4CBDone INT, + callToStreet1CBChance INT, + callToStreet1CBDone INT, + callToStreet2CBChance INT, + callToStreet2CBDone INT, + callToStreet3CBChance INT, + callToStreet3CBDone INT, + callToStreet4CBChance INT, + callToStreet4CBDone INT, + raiseToStreet1CBChance INT, + raiseToStreet1CBDone INT, + raiseToStreet2CBChance INT, + raiseToStreet2CBDone INT, + raiseToStreet3CBChance INT, + raiseToStreet3CBDone INT, + raiseToStreet4CBChance INT, + raiseToStreet4CBDone INT, common INT, committed INT, winnings INT, @@ -3558,16 +5468,20 @@ def __init__(self, game='holdem', db_server='mysql'): street4CheckCallRaiseChance INT, street4CheckCallDone INT, street4CheckRaiseDone INT, + street1foldToCheckRaiseChance INT, + street1foldToCheckRaiseDone INT, + street2foldToCheckRaiseChance INT, + street2foldToCheckRaiseDone INT, + street3foldToCheckRaiseChance INT, + street3foldToCheckRaiseDone INT, + street4foldToCheckRaiseChance INT, + street4foldToCheckRaiseDone INT, street0Calls INT, street1Calls INT, street2Calls INT, street3Calls INT, street4Calls INT, - street0Bets INT, - street1Bets INT, - street2Bets INT, - street3Bets INT, - street4Bets INT, + street0Raises INT, street1Raises INT, street2Raises INT, @@ -3575,7 +5489,19 @@ def __init__(self, game='holdem', db_server='mysql'): street4Raises INT, street1Discards INT, street2Discards INT, - street3Discards INT) + street3Discards INT, + + street0Callers INT, + street1Callers INT, + street2Callers INT, + street3Callers INT, + street4Callers INT, + + street0Aggressors INT, + street1Aggressors INT, + street2Aggressors INT, + street3Aggressors INT, + street4Aggressors INT) """ if db_server == 'mysql': @@ -3656,11 +5582,26 @@ def __init__(self, game='holdem', db_server='mysql'): self.query['addStartCashIndex'] = """CREATE INDEX cash_idx ON HandsPlayers (startCash)""" if db_server == 'mysql': + self.query['addbigblindIndex'] = """ALTER TABLE HandsPlayers ADD INDEX amount_bb_idx (anmountBB)""" self.query['addEffStackIndex'] = """ALTER TABLE HandsPlayers ADD INDEX eff_stack_idx (effStack)""" + self.query['addEffActiveStackIndex'] = """ALTER TABLE HandsPlayers ADD INDEX eff_active_stack_idx (effActiveStack)""" + self.query['addEffMzoneIndex'] = """ALTER TABLE HandsPlayers ADD INDEX eff_mzone_idx (effMzone)""" + self.query['addEffActiveMzoneIndex'] = """ALTER TABLE HandsPlayers ADD INDEX eff_active_mzone_idx (effActiveMzone)""" + self.query['addTableMzoneIndex'] = """ALTER TABLE HandsPlayers ADD INDEX table_mzone_idx (tableMzone)""" elif db_server == 'postgresql': + self.query['addbigblindIndex'] = """CREATE INDEX amount_bb_idx ON HandsPlayers (anmountBB)""" self.query['addEffStackIndex'] = """CREATE INDEX eff_stack_idx ON HandsPlayers (effStack)""" + self.query['addEffActiveStackIndex'] = """CREATE INDEX eff_active_stack_idx ON HandsPlayers (effActiveStack)""" + self.query['addEffMzoneIndex'] = """CREATE INDEX eff_mzone_idx ON HandsPlayers (effMzone)""" + self.query['addEffActiveMzoneIndex'] = """CREATE INDEX eff_active_mzone_idx ON HandsPlayers (effActiveMzone)""" + self.query['addTableMzoneIndex'] = """CREATE INDEX table_mzone_idx ON HandsPlayers (tableMzone)""" elif db_server == 'sqlite': + self.query['addbigblindIndex'] = """CREATE INDEX amount_bb_idx ON HandsPlayers (anmountBB)""" self.query['addEffStackIndex'] = """CREATE INDEX eff_stack_idx ON HandsPlayers (effStack)""" + self.query['addEffActiveStackIndex'] = """CREATE INDEX eff_active_stack_idx ON HandsPlayers (effActiveStack)""" + self.query['addEffMzoneIndex'] = """CREATE INDEX eff_mzone_idx ON HandsPlayers (effMzone)""" + self.query['addEffActiveMzoneIndex'] = """CREATE INDEX eff_active_mzone_idx ON HandsPlayers (effActiveMzone)""" + self.query['addTableMzoneIndex'] = """CREATE INDEX table_mzone_idx ON HandsPlayers (tableMzone)""" if db_server == 'mysql': self.query['addTotalProfitIndex'] = """ALTER TABLE HandsPlayers ADD INDEX profit_idx (totalProfit)""" @@ -3766,6 +5707,7 @@ def __init__(self, game='holdem', db_server='mysql'): hp.seatNo AS seat, p.name AS screen_name, sum(hc.n) AS n, + sum(hc.street0VPIChance) AS vpip_opp, sum(hc.street0VPI) AS vpip, sum(hc.street0AggrChance) AS pfr_opp, @@ -3784,6 +5726,72 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.street0_FoldTo4BDone) AS F4B_0, sum(hc.street0_SqueezeChance) AS SQZ_opp_0, sum(hc.street0_SqueezeDone) AS SQZ_0, + sum(hc.street0_FoldToSqueezeChance) AS FSQZ_opp_0, + sum(hc.street0_FoldToSqueezeDone) AS FSQZ_0, + + sum(hc.street1VPIChance) AS vpip_opp_1, + sum(hc.street1VPI) AS vpip_1, + sum(hc.street1AggrChance) AS aggr_opp_1, + sum(hc.street1Aggr) AS aggr_1, + sum(hc.street1CalledRaiseChance) AS CAR_opp_1, + sum(hc.street1CalledRaiseDone) AS CAR_1, + sum(hc.street1_3BChance) AS TB_opp_1, + sum(hc.street1_3BDone) AS TB_1, + sum(hc.street1_4BChance) AS FB_opp_1, + sum(hc.street1_4BDone) AS FB_1, + sum(hc.street1_C4BChance) AS CFB_opp_1, + sum(hc.street1_C4BDone) AS CFB_1, + sum(hc.street1_FoldTo3BChance) AS F3B_opp_1, + sum(hc.street1_FoldTo3BDone) AS F3B_1, + sum(hc.street1_FoldTo4BChance) AS F4B_opp_1, + sum(hc.street1_FoldTo4BDone) AS F4B_1, + sum(hc.street1_SqueezeChance) AS SQZ_opp_1, + sum(hc.street1_SqueezeDone) AS SQZ_1, + sum(hc.street1_FoldToSqueezeChance) AS FSQZ_opp_1, + sum(hc.street1_FoldToSqueezeDone) AS FSQZ_1, + + sum(hc.street2VPIChance) AS vpip_opp_2, + sum(hc.street2VPI) AS vpip_2, + sum(hc.street2AggrChance) AS aggr_opp_2, + sum(hc.street2Aggr) AS aggr_2, + sum(hc.street2CalledRaiseChance) AS CAR_opp_2, + sum(hc.street2CalledRaiseDone) AS CAR_2, + sum(hc.street2_3BChance) AS TB_opp_2, + sum(hc.street2_3BDone) AS TB_2, + sum(hc.street2_4BChance) AS FB_opp_2, + sum(hc.street2_4BDone) AS FB_2, + sum(hc.street2_C4BChance) AS CFB_opp_2, + sum(hc.street2_C4BDone) AS CFB_2, + sum(hc.street2_FoldTo3BChance) AS F3B_opp_2, + sum(hc.street2_FoldTo3BDone) AS F3B_2, + sum(hc.street2_FoldTo4BChance) AS F4B_opp_2, + sum(hc.street2_FoldTo4BDone) AS F4B_2, + sum(hc.street2_SqueezeChance) AS SQZ_opp_2, + sum(hc.street2_SqueezeDone) AS SQZ_2, + sum(hc.street2_FoldToSqueezeChance) AS FSQZ_opp_2, + sum(hc.street2_FoldToSqueezeDone) AS FSQZ_2, + + sum(hc.street3VPIChance) AS vpip_opp_3, + sum(hc.street3VPI) AS vpip_3, + sum(hc.street3AggrChance) AS aggr_opp_3, + sum(hc.street3Aggr) AS aggr_3, + sum(hc.street3CalledRaiseChance) AS CAR_opp_3, + sum(hc.street3CalledRaiseDone) AS CAR_3, + sum(hc.street3_3BChance) AS TB_opp_3, + sum(hc.street3_3BDone) AS TB_3, + sum(hc.street3_4BChance) AS FB_opp_3, + sum(hc.street3_4BDone) AS FB_3, + sum(hc.street3_C4BChance) AS CFB_opp_3, + sum(hc.street3_C4BDone) AS CFB_3, + sum(hc.street3_FoldTo3BChance) AS F3B_opp_3, + sum(hc.street3_FoldTo3BDone) AS F3B_3, + sum(hc.street3_FoldTo4BChance) AS F4B_opp_3, + sum(hc.street3_FoldTo4BDone) AS F4B_3, + sum(hc.street3_SqueezeChance) AS SQZ_opp_3, + sum(hc.street3_SqueezeDone) AS SQZ_3, + sum(hc.street3_FoldToSqueezeChance) AS FSQZ_opp_3, + sum(hc.street3_FoldToSqueezeDone) AS FSQZ_3, + sum(hc.raiseToStealChance) AS RTS_opp, sum(hc.raiseToStealDone) AS RTS, sum(hc.success_Steal) AS SUC_ST, @@ -3793,10 +5801,6 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.street3Seen) AS saw_3, sum(hc.street4Seen) AS saw_4, sum(hc.sawShowdown) AS sd, - sum(hc.street1Aggr) AS aggr_1, - sum(hc.street2Aggr) AS aggr_2, - sum(hc.street3Aggr) AS aggr_3, - sum(hc.street4Aggr) AS aggr_4, sum(hc.otherRaisedStreet1) AS was_raised_1, sum(hc.otherRaisedStreet2) AS was_raised_2, sum(hc.otherRaisedStreet3) AS was_raised_3, @@ -3805,6 +5809,14 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.foldToOtherRaisedStreet2) AS f_freq_2, sum(hc.foldToOtherRaisedStreet3) AS f_freq_3, sum(hc.foldToOtherRaisedStreet4) AS f_freq_4, + sum(hc.callToOtherRaisedStreet1) AS c_freq_1, + sum(hc.callToOtherRaisedStreet2) AS c_freq_2, + sum(hc.callToOtherRaisedStreet3) AS c_freq_3, + sum(hc.callToOtherRaisedStreet4) AS c_freq_4, + sum(hc.raiseToOtherRaisedStreet1) AS r_freq_1, + sum(hc.raiseToOtherRaisedStreet2) AS r_freq_2, + sum(hc.raiseToOtherRaisedStreet3) AS r_freq_3, + sum(hc.raiseToOtherRaisedStreet4) AS r_freq_4, sum(hc.wonWhenSeenStreet1) AS w_w_s_1, sum(hc.wonAtSD) AS wmsd, sum(hc.stealChance) AS steal_opp, @@ -3829,6 +5841,22 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.foldToStreet3CBDone) AS f_cb_3, sum(hc.foldToStreet4CBChance) AS f_cb_opp_4, sum(hc.foldToStreet4CBDone) AS f_cb_4, + sum(hc.callToStreet1CBChance) AS c_cb_opp_1, + sum(hc.callToStreet1CBDone) AS c_cb_1, + sum(hc.callToStreet2CBChance) AS c_cb_opp_2, + sum(hc.callToStreet2CBDone) AS c_cb_2, + sum(hc.callToStreet3CBChance) AS c_cb_opp_3, + sum(hc.callToStreet3CBDone) AS c_cb_3, + sum(hc.callToStreet4CBChance) AS c_cb_opp_4, + sum(hc.callToStreet4CBDone) AS c_cb_4, + sum(hc.raiseToStreet1CBChance) AS r_cb_opp_1, + sum(hc.raiseToStreet1CBDone) AS r_cb_1, + sum(hc.raiseToStreet2CBChance) AS r_cb_opp_2, + sum(hc.raiseToStreet2CBDone) AS r_cb_2, + sum(hc.raiseToStreet3CBChance) AS r_cb_opp_3, + sum(hc.raiseToStreet3CBDone) AS r_cb_3, + sum(hc.raiseToStreet4CBChance) AS r_cb_opp_4, + sum(hc.raiseToStreet4CBDone) AS r_cb_4, sum(hc.totalProfit) AS net, sum(gt.bigblind * hc.n) AS bigblind, sum(hc.street1CheckCallRaiseChance) AS ccr_opp_1, @@ -3841,23 +5869,39 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.street3CheckCallDone) AS cc_3, sum(hc.street3CheckRaiseDone) AS cr_3, sum(hc.street4CheckCallRaiseChance) AS ccr_opp_4, - sum(hc.street4CheckCallDone) AS cc_4 - sum(hc.street4CheckRaiseDone) AS cr_4 + sum(hc.street4CheckCallDone) AS cc_4, + sum(hc.street4CheckRaiseDone) AS cr_4, + sum(hc.street1foldToCheckRaiseChance) AS f_cr_opp_1, + sum(hc.street1foldToCheckRaiseDone) AS f_cr_1, + sum(hc.street2foldToCheckRaiseChance) AS f_cr_opp_2, + sum(hc.street2foldToCheckRaiseDone) AS f_cr_2, + sum(hc.street3foldToCheckRaiseChance) AS f_cr_opp_3, + sum(hc.street3foldToCheckRaiseDone) AS f_cr_3, + sum(hc.street4foldToCheckRaiseChance) AS f_cr_opp_4, + sum(hc.street4foldToCheckRaiseDone) AS f_cr_4, sum(hc.street0Calls) AS call_0, sum(hc.street1Calls) AS call_1, sum(hc.street2Calls) AS call_2, sum(hc.street3Calls) AS call_3, sum(hc.street4Calls) AS call_4, - sum(hc.street0Bets) AS bet_0, - sum(hc.street1Bets) AS bet_1, - sum(hc.street2Bets) AS bet_2, - sum(hc.street3Bets) AS bet_3, - sum(hc.street4Bets) AS bet_4, + sum(hc.street0Raises) AS raise_0, sum(hc.street1Raises) AS raise_1, sum(hc.street2Raises) AS raise_2, sum(hc.street3Raises) AS raise_3, - sum(hc.street4Raises) AS raise_4 + sum(hc.street4Raises) AS raise_4, + + sum(hc.street0Callers) AS callers_0, + sum(hc.street1Callers) AS callers_1, + sum(hc.street2Callers) AS callers_2, + sum(hc.street3Callers) AS callers_3, + sum(hc.street4Callers) AS callers_4, + + sum(hc.street0Aggressors) AS aggressors_0, + sum(hc.street1Aggressors) AS aggressors_1, + sum(hc.street2Aggressors) AS aggressors_2, + sum(hc.street3Aggressors) AS aggressors_3, + sum(hc.street4Aggressors) AS aggressors_4 FROM Hands h INNER JOIN HandsPlayers hp ON (hp.handId = h.id) INNER JOIN HudCache hc ON ( hc.PlayerId = hp.PlayerId+0 @@ -3888,6 +5932,7 @@ def __init__(self, game='holdem', db_server='mysql'): end) AS seat, p.name AS screen_name, sum(hc.n) AS n, + sum(hc.street0VPIChance) AS vpip_opp, sum(hc.street0VPI) AS vpip, sum(hc.street0AggrChance) AS pfr_opp, @@ -3906,6 +5951,72 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.street0_FoldTo4BDone) AS F4B_0, sum(hc.street0_SqueezeChance) AS SQZ_opp_0, sum(hc.street0_SqueezeDone) AS SQZ_0, + sum(hc.street0_FoldToSqueezeChance) AS FSQZ_opp_0, + sum(hc.street0_FoldToSqueezeDone) AS FSQZ_0, + + sum(hc.street1VPIChance) AS vpip_opp_1, + sum(hc.street1VPI) AS vpip_1, + sum(hc.street1AggrChance) AS aggr_opp_1, + sum(hc.street1Aggr) AS aggr_1, + sum(hc.street1CalledRaiseChance) AS CAR_opp_1, + sum(hc.street1CalledRaiseDone) AS CAR_1, + sum(hc.street1_3BChance) AS TB_opp_1, + sum(hc.street1_3BDone) AS TB_1, + sum(hc.street1_4BChance) AS FB_opp_1, + sum(hc.street1_4BDone) AS FB_1, + sum(hc.street1_C4BChance) AS CFB_opp_1, + sum(hc.street1_C4BDone) AS CFB_1, + sum(hc.street1_FoldTo3BChance) AS F3B_opp_1, + sum(hc.street1_FoldTo3BDone) AS F3B_1, + sum(hc.street1_FoldTo4BChance) AS F4B_opp_1, + sum(hc.street1_FoldTo4BDone) AS F4B_1, + sum(hc.street1_SqueezeChance) AS SQZ_opp_1, + sum(hc.street1_SqueezeDone) AS SQZ_1, + sum(hc.street1_FoldToSqueezeChance) AS FSQZ_opp_1, + sum(hc.street1_FoldToSqueezeDone) AS FSQZ_1, + + sum(hc.street2VPIChance) AS vpip_opp_2, + sum(hc.street2VPI) AS vpip_2, + sum(hc.street2AggrChance) AS aggr_opp_2, + sum(hc.street2Aggr) AS aggr_2, + sum(hc.street2CalledRaiseChance) AS CAR_opp_2, + sum(hc.street2CalledRaiseDone) AS CAR_2, + sum(hc.street2_3BChance) AS TB_opp_2, + sum(hc.street2_3BDone) AS TB_2, + sum(hc.street2_4BChance) AS FB_opp_2, + sum(hc.street2_4BDone) AS FB_2, + sum(hc.street2_C4BChance) AS CFB_opp_2, + sum(hc.street2_C4BDone) AS CFB_2, + sum(hc.street2_FoldTo3BChance) AS F3B_opp_2, + sum(hc.street2_FoldTo3BDone) AS F3B_2, + sum(hc.street2_FoldTo4BChance) AS F4B_opp_2, + sum(hc.street2_FoldTo4BDone) AS F4B_2, + sum(hc.street2_SqueezeChance) AS SQZ_opp_2, + sum(hc.street2_SqueezeDone) AS SQZ_2, + sum(hc.street2_FoldToSqueezeChance) AS FSQZ_opp_2, + sum(hc.street2_FoldToSqueezeDone) AS FSQZ_2, + + sum(hc.street3VPIChance) AS vpip_opp_3, + sum(hc.street3VPI) AS vpip_3, + sum(hc.street3AggrChance) AS aggr_opp_3, + sum(hc.street3Aggr) AS aggr_3, + sum(hc.street3CalledRaiseChance) AS CAR_opp_3, + sum(hc.street3CalledRaiseDone) AS CAR_3, + sum(hc.street3_3BChance) AS TB_opp_3, + sum(hc.street3_3BDone) AS TB_3, + sum(hc.street3_4BChance) AS FB_opp_3, + sum(hc.street3_4BDone) AS FB_3, + sum(hc.street3_C4BChance) AS CFB_opp_3, + sum(hc.street3_C4BDone) AS CFB_3, + sum(hc.street3_FoldTo3BChance) AS F3B_opp_3, + sum(hc.street3_FoldTo3BDone) AS F3B_3, + sum(hc.street3_FoldTo4BChance) AS F4B_opp_3, + sum(hc.street3_FoldTo4BDone) AS F4B_3, + sum(hc.street3_SqueezeChance) AS SQZ_opp_3, + sum(hc.street3_SqueezeDone) AS SQZ_3, + sum(hc.street3_FoldToSqueezeChance) AS FSQZ_opp_3, + sum(hc.street3_FoldToSqueezeDone) AS FSQZ_3, + sum(hc.raiseToStealChance) AS RTS_opp, sum(hc.raiseToStealDone) AS RTS, sum(hc.success_Steal) AS SUC_ST, @@ -3915,10 +6026,6 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.street3Seen) AS saw_3, sum(hc.street4Seen) AS saw_4, sum(hc.sawShowdown) AS sd, - sum(hc.street1Aggr) AS aggr_1, - sum(hc.street2Aggr) AS aggr_2, - sum(hc.street3Aggr) AS aggr_3, - sum(hc.street4Aggr) AS aggr_4, sum(hc.otherRaisedStreet1) AS was_raised_1, sum(hc.otherRaisedStreet2) AS was_raised_2, sum(hc.otherRaisedStreet3) AS was_raised_3, @@ -3927,6 +6034,14 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.foldToOtherRaisedStreet2) AS f_freq_2, sum(hc.foldToOtherRaisedStreet3) AS f_freq_3, sum(hc.foldToOtherRaisedStreet4) AS f_freq_4, + sum(hc.callToOtherRaisedStreet1) AS c_freq_1, + sum(hc.callToOtherRaisedStreet2) AS c_freq_2, + sum(hc.callToOtherRaisedStreet3) AS c_freq_3, + sum(hc.callToOtherRaisedStreet4) AS c_freq_4, + sum(hc.raiseToOtherRaisedStreet1) AS r_freq_1, + sum(hc.raiseToOtherRaisedStreet2) AS r_freq_2, + sum(hc.raiseToOtherRaisedStreet3) AS r_freq_3, + sum(hc.raiseToOtherRaisedStreet4) AS r_freq_4, sum(hc.wonWhenSeenStreet1) AS w_w_s_1, sum(hc.wonAtSD) AS wmsd, sum(hc.stealChance) AS steal_opp, @@ -3951,6 +6066,22 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.foldToStreet3CBDone) AS f_cb_3, sum(hc.foldToStreet4CBChance) AS f_cb_opp_4, sum(hc.foldToStreet4CBDone) AS f_cb_4, + sum(hc.callToStreet1CBChance) AS c_cb_opp_1, + sum(hc.callToStreet1CBDone) AS c_cb_1, + sum(hc.callToStreet2CBChance) AS c_cb_opp_2, + sum(hc.callToStreet2CBDone) AS c_cb_2, + sum(hc.callToStreet3CBChance) AS c_cb_opp_3, + sum(hc.callToStreet3CBDone) AS c_cb_3, + sum(hc.callToStreet4CBChance) AS c_cb_opp_4, + sum(hc.callToStreet4CBDone) AS c_cb_4, + sum(hc.raiseToStreet1CBChance) AS r_cb_opp_1, + sum(hc.raiseToStreet1CBDone) AS r_cb_1, + sum(hc.raiseToStreet2CBChance) AS r_cb_opp_2, + sum(hc.raiseToStreet2CBDone) AS r_cb_2, + sum(hc.raiseToStreet3CBChance) AS r_cb_opp_3, + sum(hc.raiseToStreet3CBDone) AS r_cb_3, + sum(hc.raiseToStreet4CBChance) AS r_cb_opp_4, + sum(hc.raiseToStreet4CBDone) AS r_cb_4, sum(hc.totalProfit) AS net, sum(gt.bigblind * hc.n) AS bigblind, sum(hc.street1CheckCallRaiseChance) AS ccr_opp_1, @@ -3965,21 +6096,37 @@ def __init__(self, game='holdem', db_server='mysql'): sum(hc.street4CheckCallRaiseChance) AS ccr_opp_4, sum(hc.street4CheckCallDone) AS cc_4, sum(hc.street4CheckRaiseDone) AS cr_4, + sum(hc.street1foldToCheckRaiseChance) AS f_cr_opp_1, + sum(hc.street1foldToCheckRaiseDone) AS f_cr_1, + sum(hc.street2foldToCheckRaiseChance) AS f_cr_opp_2, + sum(hc.street2foldToCheckRaiseDone) AS f_cr_2, + sum(hc.street3foldToCheckRaiseChance) AS f_cr_opp_3, + sum(hc.street3foldToCheckRaiseDone) AS f_cr_3, + sum(hc.street4foldToCheckRaiseChance) AS f_cr_opp_4, + sum(hc.street4foldToCheckRaiseDone) AS f_cr_4, sum(hc.street0Calls) AS call_0, sum(hc.street1Calls) AS call_1, sum(hc.street2Calls) AS call_2, sum(hc.street3Calls) AS call_3, sum(hc.street4Calls) AS call_4, - sum(hc.street0Bets) AS bet_0, - sum(hc.street1Bets) AS bet_1, - sum(hc.street2Bets) AS bet_2, - sum(hc.street3Bets) AS bet_3, - sum(hc.street4Bets) AS bet_4, + sum(hc.street0Raises) AS raise_0, sum(hc.street1Raises) AS raise_1, sum(hc.street2Raises) AS raise_2, sum(hc.street3Raises) AS raise_3, - sum(hc.street4Raises) AS raise_4 + sum(hc.street4Raises) AS raise_4, + + sum(hc.street0Callers) AS callers_0, + sum(hc.street1Callers) AS callers_1, + sum(hc.street2Callers) AS callers_2, + sum(hc.street3Callers) AS callers_3, + sum(hc.street4Callers) AS callers_4, + + sum(hc.street0Aggressors) AS aggressors_0, + sum(hc.street1Aggressors) AS aggressors_1, + sum(hc.street2Aggressors) AS aggressors_2, + sum(hc.street3Aggressors) AS aggressors_3, + sum(hc.street4Aggressors) AS aggressors_4 FROM Hands h INNER JOIN HandsPlayers hp ON (hp.handId = h.id) INNER JOIN HudCache hc ON (hc.playerId = hp.playerId) @@ -4037,6 +6184,7 @@ def __init__(self, game='holdem', db_server='mysql'): hp.seatNo AS seat, p.name AS screen_name, 1 AS n, + cast(hp2.street0VPIChance as integer) AS vpip_opp, cast(hp2.street0VPI as integer) AS vpip, cast(hp2.street0AggrChance as integer) AS pfr_opp, @@ -4055,6 +6203,72 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street0_FoldTo4BDone as integer) AS F4B_0, cast(hp2.street0_SqueezeChance as integer) AS SQZ_opp_0, cast(hp2.street0_SqueezeDone as integer) AS SQZ_0, + cast(hp2.street0_FoldToSqueezeChance as integer) AS FSQZ_opp_0, + cast(hp2.street0_FoldToSqueezeDone as integer) AS FSQZ_0, + + cast(hp2.street1VPIChance as integer) AS vpip_opp_1, + cast(hp2.street1VPI as integer) AS vpip_1, + cast(hp2.street1AggrChance as integer) AS aggr_opp_1, + cast(hp2.street1Aggr as integer) AS aggr_1, + cast(hp2.street1CalledRaiseChance as integer) AS CAR_opp_1, + cast(hp2.street1CalledRaiseDone as integer) AS CAR_1, + cast(hp2.street1_3BChance as integer) AS TB_opp_1, + cast(hp2.street1_3BDone as integer) AS TB_1, + cast(hp2.street1_4BChance as integer) AS FB_opp_1, + cast(hp2.street1_4BDone as integer) AS FB_1, + cast(hp2.street1_C4BChance as integer) AS CFB_opp_1, + cast(hp2.street1_C4BDone as integer) AS CFB_1, + cast(hp2.street1_FoldTo3BChance as integer) AS F3B_opp_1, + cast(hp2.street1_FoldTo3BDone as integer) AS F3B_1, + cast(hp2.street1_FoldTo4BChance as integer) AS F4B_opp_1, + cast(hp2.street1_FoldTo4BDone as integer) AS F4B_1, + cast(hp2.street1_SqueezeChance as integer) AS SQZ_opp_1, + cast(hp2.street1_SqueezeDone as integer) AS SQZ_1, + cast(hp2.street1_FoldToSqueezeChance as integer) AS FSQZ_opp_1, + cast(hp2.street1_FoldToSqueezeDone as integer) AS FSQZ_1, + + cast(hp2.street2VPIChance as integer) AS vpip_opp_2, + cast(hp2.street2VPI as integer) AS vpip_2, + cast(hp2.street2AggrChance as integer) AS aggr_opp_2, + cast(hp2.street2Aggr as integer) AS aggr_2, + cast(hp2.street2CalledRaiseChance as integer) AS CAR_opp_2, + cast(hp2.street2CalledRaiseDone as integer) AS CAR_2, + cast(hp2.street2_3BChance as integer) AS TB_opp_2, + cast(hp2.street2_3BDone as integer) AS TB_2, + cast(hp2.street2_4BChance as integer) AS FB_opp_2, + cast(hp2.street2_4BDone as integer) AS FB_2, + cast(hp2.street2_C4BChance as integer) AS CFB_opp_2, + cast(hp2.street2_C4BDone as integer) AS CFB_2, + cast(hp2.street2_FoldTo3BChance as integer) AS F3B_opp_2, + cast(hp2.street2_FoldTo3BDone as integer) AS F3B_2, + cast(hp2.street2_FoldTo4BChance as integer) AS F4B_opp_2, + cast(hp2.street2_FoldTo4BDone as integer) AS F4B_2, + cast(hp2.street2_SqueezeChance as integer) AS SQZ_opp_2, + cast(hp2.street2_SqueezeDone as integer) AS SQZ_2, + cast(hp2.street2_FoldToSqueezeChance as integer) AS FSQZ_opp_2, + cast(hp2.street2_FoldToSqueezeDone as integer) AS FSQZ_2, + + cast(hp2.street3VPIChance as integer) AS vpip_opp_3, + cast(hp2.street3VPI as integer) AS vpip_3, + cast(hp2.street3AggrChance as integer) AS aggr_opp_3, + cast(hp2.street3Aggr as integer) AS aggr_3, + cast(hp2.street3CalledRaiseChance as integer) AS CAR_opp_3, + cast(hp2.street3CalledRaiseDone as integer) AS CAR_3, + cast(hp2.street3_3BChance as integer) AS TB_opp_3, + cast(hp2.street3_3BDone as integer) AS TB_3, + cast(hp2.street3_4BChance as integer) AS FB_opp_3, + cast(hp2.street3_4BDone as integer) AS FB_3, + cast(hp2.street3_C4BChance as integer) AS CFB_opp_3, + cast(hp2.street3_C4BDone as integer) AS CFB_3, + cast(hp2.street3_FoldTo3BChance as integer) AS F3B_opp_3, + cast(hp2.street3_FoldTo3BDone as integer) AS F3B_3, + cast(hp2.street3_FoldTo4BChance as integer) AS F4B_opp_3, + cast(hp2.street3_FoldTo4BDone as integer) AS F4B_3, + cast(hp2.street3_SqueezeChance as integer) AS SQZ_opp_3, + cast(hp2.street3_SqueezeDone as integer) AS SQZ_3, + cast(hp2.street3_FoldToSqueezeChance as integer) AS FSQZ_opp_3, + cast(hp2.street3_FoldToSqueezeDone as integer) AS FSQZ_3, + cast(hp2.raiseToStealChance as integer) AS RTS_opp, cast(hp2.raiseToStealDone as integer) AS RTS, cast(hp2.success_Steal as integer) AS SUC_ST, @@ -4064,10 +6278,6 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street3Seen as integer) AS saw_3, cast(hp2.street4Seen as integer) AS saw_4, cast(hp2.sawShowdown as integer) AS sd, - cast(hp2.street1Aggr as integer) AS aggr_1, - cast(hp2.street2Aggr as integer) AS aggr_2, - cast(hp2.street3Aggr as integer) AS aggr_3, - cast(hp2.street4Aggr as integer) AS aggr_4, cast(hp2.otherRaisedStreet1 as integer) AS was_raised_1, cast(hp2.otherRaisedStreet2 as integer) AS was_raised_2, cast(hp2.otherRaisedStreet3 as integer) AS was_raised_3, @@ -4076,6 +6286,14 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.foldToOtherRaisedStreet2 as integer) AS f_freq_2, cast(hp2.foldToOtherRaisedStreet3 as integer) AS f_freq_3, cast(hp2.foldToOtherRaisedStreet4 as integer) AS f_freq_4, + cast(hp2.callToOtherRaisedStreet1 as integer) AS c_freq_1, + cast(hp2.callToOtherRaisedStreet2 as integer) AS c_freq_2, + cast(hp2.callToOtherRaisedStreet3 as integer) AS c_freq_3, + cast(hp2.callToOtherRaisedStreet4 as integer) AS c_freq_4, + cast(hp2.raiseToOtherRaisedStreet1 as integer) AS r_freq_1, + cast(hp2.raiseToOtherRaisedStreet2 as integer) AS r_freq_2, + cast(hp2.raiseToOtherRaisedStreet3 as integer) AS r_freq_3, + cast(hp2.raiseToOtherRaisedStreet4 as integer) AS r_freq_4, cast(hp2.wonWhenSeenStreet1 as integer) AS w_w_s_1, cast(hp2.wonAtSD as integer) AS wmsd, cast(hp2.stealChance as integer) AS steal_opp, @@ -4100,6 +6318,22 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.foldToStreet3CBDone as integer) AS f_cb_3, cast(hp2.foldToStreet4CBChance as integer) AS f_cb_opp_4, cast(hp2.foldToStreet4CBDone as integer) AS f_cb_4, + cast(hp2.callToStreet1CBChance as integer) AS c_cb_opp_1, + cast(hp2.callToStreet1CBDone as integer) AS c_cb_1, + cast(hp2.callToStreet2CBChance as integer) AS c_cb_opp_2, + cast(hp2.callToStreet2CBDone as integer) AS c_cb_2, + cast(hp2.callToStreet3CBChance as integer) AS c_cb_opp_3, + cast(hp2.callToStreet3CBDone as integer) AS c_cb_3, + cast(hp2.callToStreet4CBChance as integer) AS c_cb_opp_4, + cast(hp2.callToStreet4CBDone as integer) AS c_cb_4, + cast(hp2.raiseToStreet1CBChance as integer) AS r_cb_opp_1, + cast(hp2.raiseToStreet1CBDone as integer) AS r_cb_1, + cast(hp2.raiseToStreet2CBChance as integer) AS r_cb_opp_2, + cast(hp2.raiseToStreet2CBDone as integer) AS r_cb_2, + cast(hp2.raiseToStreet3CBChance as integer) AS r_cb_opp_3, + cast(hp2.raiseToStreet3CBDone as integer) AS r_cb_3, + cast(hp2.raiseToStreet4CBChance as integer) AS r_cb_opp_4, + cast(hp2.raiseToStreet4CBDone as integer) AS r_cb_4, cast(hp2.totalProfit as bigint) AS net, cast(gt.bigblind as bigint) AS bigblind, cast(hp2.street1CheckCallRaiseChance as integer) AS ccr_opp_1, @@ -4114,21 +6348,37 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street4CheckCallRaiseChance as integer) AS ccr_opp_4, cast(hp2.street4CheckCallDone as integer) AS cc_4, cast(hp2.street4CheckRaiseDone as integer) AS cr_4, + cast(hp2.street1foldToCheckRaiseChance as integer) AS f_cr_opp_1, + cast(hp2.street1foldToCheckRaiseDone as integer) AS f_cr_1, + cast(hp2.street2foldToCheckRaiseChance as integer) AS f_cr_opp_2, + cast(hp2.street2foldToCheckRaiseDone as integer) AS f_cr_2, + cast(hp2.street3foldToCheckRaiseChance as integer) AS f_cr_opp_3, + cast(hp2.street3foldToCheckRaiseDone as integer) AS f_cr_3, + cast(hp2.street4foldToCheckRaiseChance as integer) AS f_cr_opp_4, + cast(hp2.street4foldToCheckRaiseDone as integer) AS f_cr_4, cast(hp2.street0Calls as integer) AS call_0, cast(hp2.street1Calls as integer) AS call_1, cast(hp2.street2Calls as integer) AS call_2, cast(hp2.street3Calls as integer) AS call_3, cast(hp2.street4Calls as integer) AS call_4, - cast(hp2.street0Bets as integer) AS bet_0, - cast(hp2.street1Bets as integer) AS bet_1, - cast(hp2.street2Bets as integer) AS bet_2, - cast(hp2.street3Bets as integer) AS bet_3, - cast(hp2.street4Bets as integer) AS bet_4, + cast(hp2.street0Raises as integer) AS raise_0, cast(hp2.street1Raises as integer) AS raise_1, cast(hp2.street2Raises as integer) AS raise_2, cast(hp2.street3Raises as integer) AS raise_3, - cast(hp2.street4Raises as integer) AS raise_4 + cast(hp2.street4Raises as integer) AS raise_4, + + cast(hp2.street0Callers as integer) AS callers_0, + cast(hp2.street1Callers as integer) AS callers_1, + cast(hp2.street2Callers as integer) AS callers_2, + cast(hp2.street3Callers as integer) AS callers_3, + cast(hp2.street4Callers as integer) AS callers_4, + + cast(hp2.street0Aggressors as integer) AS aggressors_0, + cast(hp2.street1Aggressors as integer) AS aggressors_1, + cast(hp2.street2Aggressors as integer) AS aggressors_2, + cast(hp2.street3Aggressors as integer) AS aggressors_3, + cast(hp2.street4Aggressors as integer) AS aggressors_4 FROM Hands h INNER JOIN Hands h2 ON (h2.id >= %s AND h2.tableName = h.tableName) @@ -4162,6 +6412,7 @@ def __init__(self, game='holdem', db_server='mysql'): p.name AS screen_name, h.seats AS seats, 1 AS n, + cast(hp2.street0VPIChance as integer) AS vpip_opp, cast(hp2.street0VPI as integer) AS vpip, cast(hp2.street0AggrChance as integer) AS pfr_opp, @@ -4180,6 +6431,72 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street0_FoldTo4BDone as integer) AS F4B_0, cast(hp2.street0_SqueezeChance as integer) AS SQZ_opp_0, cast(hp2.street0_SqueezeDone as integer) AS SQZ_0, + cast(hp2.street0_FoldToSqueezeChance as integer) AS FSQZ_opp_0, + cast(hp2.street0_FoldToSqueezeDone as integer) AS FSQZ_0, + + cast(hp2.street1VPIChance as integer) AS vpip_opp_1, + cast(hp2.street1VPI as integer) AS vpip_1, + cast(hp2.street1AggrChance as integer) AS aggr_opp_1, + cast(hp2.street1Aggr as integer) AS aggr_1, + cast(hp2.street1CalledRaiseChance as integer) AS CAR_opp_1, + cast(hp2.street1CalledRaiseDone as integer) AS CAR_1, + cast(hp2.street1_3BChance as integer) AS TB_opp_1, + cast(hp2.street1_3BDone as integer) AS TB_1, + cast(hp2.street1_4BChance as integer) AS FB_opp_1, + cast(hp2.street1_4BDone as integer) AS FB_1, + cast(hp2.street1_C4BChance as integer) AS CFB_opp_1, + cast(hp2.street1_C4BDone as integer) AS CFB_1, + cast(hp2.street1_FoldTo3BChance as integer) AS F3B_opp_1, + cast(hp2.street1_FoldTo3BDone as integer) AS F3B_1, + cast(hp2.street1_FoldTo4BChance as integer) AS F4B_opp_1, + cast(hp2.street1_FoldTo4BDone as integer) AS F4B_1, + cast(hp2.street1_SqueezeChance as integer) AS SQZ_opp_1, + cast(hp2.street1_SqueezeDone as integer) AS SQZ_1, + cast(hp2.street1_FoldToSqueezeChance as integer) AS FSQZ_opp_1, + cast(hp2.street1_FoldToSqueezeDone as integer) AS FSQZ_1, + + cast(hp2.street2VPIChance as integer) AS vpip_opp_2, + cast(hp2.street2VPI as integer) AS vpip_2, + cast(hp2.street2AggrChance as integer) AS aggr_opp_2, + cast(hp2.street2Aggr as integer) AS aggr_2, + cast(hp2.street2CalledRaiseChance as integer) AS CAR_opp_2, + cast(hp2.street2CalledRaiseDone as integer) AS CAR_2, + cast(hp2.street2_3BChance as integer) AS TB_opp_2, + cast(hp2.street2_3BDone as integer) AS TB_2, + cast(hp2.street2_4BChance as integer) AS FB_opp_2, + cast(hp2.street2_4BDone as integer) AS FB_2, + cast(hp2.street2_C4BChance as integer) AS CFB_opp_2, + cast(hp2.street2_C4BDone as integer) AS CFB_2, + cast(hp2.street2_FoldTo3BChance as integer) AS F3B_opp_2, + cast(hp2.street2_FoldTo3BDone as integer) AS F3B_2, + cast(hp2.street2_FoldTo4BChance as integer) AS F4B_opp_2, + cast(hp2.street2_FoldTo4BDone as integer) AS F4B_2, + cast(hp2.street2_SqueezeChance as integer) AS SQZ_opp_2, + cast(hp2.street2_SqueezeDone as integer) AS SQZ_2, + cast(hp2.street2_FoldToSqueezeChance as integer) AS FSQZ_opp_2, + cast(hp2.street2_FoldToSqueezeDone as integer) AS FSQZ_2, + + cast(hp2.street3VPIChance as integer) AS vpip_opp_3, + cast(hp2.street3VPI as integer) AS vpip_3, + cast(hp2.street3AggrChance as integer) AS aggr_opp_3, + cast(hp2.street3Aggr as integer) AS aggr_3, + cast(hp2.street3CalledRaiseChance as integer) AS CAR_opp_3, + cast(hp2.street3CalledRaiseDone as integer) AS CAR_3, + cast(hp2.street3_3BChance as integer) AS TB_opp_3, + cast(hp2.street3_3BDone as integer) AS TB_3, + cast(hp2.street3_4BChance as integer) AS FB_opp_3, + cast(hp2.street3_4BDone as integer) AS FB_3, + cast(hp2.street3_C4BChance as integer) AS CFB_opp_3, + cast(hp2.street3_C4BDone as integer) AS CFB_3, + cast(hp2.street3_FoldTo3BChance as integer) AS F3B_opp_3, + cast(hp2.street3_FoldTo3BDone as integer) AS F3B_3, + cast(hp2.street3_FoldTo4BChance as integer) AS F4B_opp_3, + cast(hp2.street3_FoldTo4BDone as integer) AS F4B_3, + cast(hp2.street3_SqueezeChance as integer) AS SQZ_opp_3, + cast(hp2.street3_SqueezeDone as integer) AS SQZ_3, + cast(hp2.street3_FoldToSqueezeChance as integer) AS FSQZ_opp_3, + cast(hp2.street3_FoldToSqueezeDone as integer) AS FSQZ_3, + cast(hp2.raiseToStealChance as integer) AS RTS_opp, cast(hp2.raiseToStealDone as integer) AS RTS, cast(hp2.success_Steal as integer) AS SUC_ST, @@ -4189,10 +6506,6 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street3Seen as integer) AS saw_3, cast(hp2.street4Seen as integer) AS saw_4, cast(hp2.sawShowdown as integer) AS sd, - cast(hp2.street1Aggr as integer) AS aggr_1, - cast(hp2.street2Aggr as integer) AS aggr_2, - cast(hp2.street3Aggr as integer) AS aggr_3, - cast(hp2.street4Aggr as integer) AS aggr_4, cast(hp2.otherRaisedStreet1 as integer) AS was_raised_1, cast(hp2.otherRaisedStreet2 as integer) AS was_raised_2, cast(hp2.otherRaisedStreet3 as integer) AS was_raised_3, @@ -4201,6 +6514,14 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.foldToOtherRaisedStreet2 as integer) AS f_freq_2, cast(hp2.foldToOtherRaisedStreet3 as integer) AS f_freq_3, cast(hp2.foldToOtherRaisedStreet4 as integer) AS f_freq_4, + cast(hp2.callToOtherRaisedStreet1 as integer) AS c_freq_1, + cast(hp2.callToOtherRaisedStreet2 as integer) AS c_freq_2, + cast(hp2.callToOtherRaisedStreet3 as integer) AS c_freq_3, + cast(hp2.callToOtherRaisedStreet4 as integer) AS c_freq_4, + cast(hp2.raiseToOtherRaisedStreet1 as integer) AS r_freq_1, + cast(hp2.raiseToOtherRaisedStreet2 as integer) AS r_freq_2, + cast(hp2.raiseToOtherRaisedStreet3 as integer) AS r_freq_3, + cast(hp2.raiseToOtherRaisedStreet4 as integer) AS r_freq_4, cast(hp2.wonWhenSeenStreet1 as integer) AS w_w_s_1, cast(hp2.wonAtSD as integer) AS wmsd, cast(hp2.stealChance as integer) AS steal_opp, @@ -4225,6 +6546,22 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.foldToStreet3CBDone as integer) AS f_cb_3, cast(hp2.foldToStreet4CBChance as integer) AS f_cb_opp_4, cast(hp2.foldToStreet4CBDone as integer) AS f_cb_4, + cast(hp2.callToStreet1CBChance as integer) AS c_cb_opp_1, + cast(hp2.callToStreet1CBDone as integer) AS c_cb_1, + cast(hp2.callToStreet2CBChance as integer) AS c_cb_opp_2, + cast(hp2.callToStreet2CBDone as integer) AS c_cb_2, + cast(hp2.callToStreet3CBChance as integer) AS c_cb_opp_3, + cast(hp2.callToStreet3CBDone as integer) AS c_cb_3, + cast(hp2.callToStreet4CBChance as integer) AS c_cb_opp_4, + cast(hp2.callToStreet4CBDone as integer) AS c_cb_4, + cast(hp2.raiseToStreet1CBChance as integer) AS r_cb_opp_1, + cast(hp2.raiseToStreet1CBDone as integer) AS r_cb_1, + cast(hp2.raiseToStreet2CBChance as integer) AS r_cb_opp_2, + cast(hp2.raiseToStreet2CBDone as integer) AS r_cb_2, + cast(hp2.raiseToStreet3CBChance as integer) AS r_cb_opp_3, + cast(hp2.raiseToStreet3CBDone as integer) AS r_cb_3, + cast(hp2.raiseToStreet4CBChance as integer) AS r_cb_opp_4, + cast(hp2.raiseToStreet4CBDone as integer) AS r_cb_4, cast(hp2.totalProfit as bigint) AS net, cast(gt.bigblind as bigint) AS bigblind, cast(hp2.street1CheckCallRaiseChance as integer) AS ccr_opp_1, @@ -4239,21 +6576,37 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street4CheckCallRaiseChance as integer) AS ccr_opp_4, cast(hp2.street4CheckCallDone as integer) AS cc_4, cast(hp2.street4CheckRaiseDone as integer) AS cr_4, + cast(hp2.street1foldToCheckRaiseChance as integer) AS f_cr_opp_1, + cast(hp2.street1foldToCheckRaiseDone as integer) AS f_cr_1, + cast(hp2.street2foldToCheckRaiseChance as integer) AS f_cr_opp_2, + cast(hp2.street2foldToCheckRaiseDone as integer) AS f_cr_2, + cast(hp2.street3foldToCheckRaiseChance as integer) AS f_cr_opp_3, + cast(hp2.street3foldToCheckRaiseDone as integer) AS f_cr_3, + cast(hp2.street4foldToCheckRaiseChance as integer) AS f_cr_opp_4, + cast(hp2.street4foldToCheckRaiseDone as integer) AS f_cr_4, cast(hp2.street0Calls as integer) AS call_0, cast(hp2.street1Calls as integer) AS call_1, cast(hp2.street2Calls as integer) AS call_2, cast(hp2.street3Calls as integer) AS call_3, cast(hp2.street4Calls as integer) AS call_4, - cast(hp2.street0Bets as integer) AS bet_0, - cast(hp2.street1Bets as integer) AS bet_1, - cast(hp2.street2Bets as integer) AS bet_2, - cast(hp2.street3Bets as integer) AS bet_3, - cast(hp2.street4Bets as integer) AS bet_4, + cast(hp2.street0Raises as integer) AS raise_0, cast(hp2.street1Raises as integer) AS raise_1, cast(hp2.street2Raises as integer) AS raise_2, cast(hp2.street3Raises as integer) AS raise_3, - cast(hp2.street4Raises as integer) AS raise_4 + cast(hp2.street4Raises as integer) AS raise_4, + + cast(hp2.street0Callers as integer) AS callers_0, + cast(hp2.street1Callers as integer) AS callers_1, + cast(hp2.street2Callers as integer) AS callers_2, + cast(hp2.street3Callers as integer) AS callers_3, + cast(hp2.street4Callers as integer) AS callers_4, + + cast(hp2.street0Aggressors as integer) AS aggressors_0, + cast(hp2.street1Aggressors as integer) AS aggressors_1, + cast(hp2.street2Aggressors as integer) AS aggressors_2, + cast(hp2.street3Aggressors as integer) AS aggressors_3, + cast(hp2.street4Aggressors as integer) AS aggressors_4 FROM Hands h /* this hand */ INNER JOIN Hands h2 ON ( h2.id >= %s /* other hands */ AND h2.tableName = h.tableName) @@ -4288,6 +6641,7 @@ def __init__(self, game='holdem', db_server='mysql'): p.name AS screen_name, h.seats AS seats, 1 AS n, + cast(hp2.street0VPIChance as integer) AS vpip_opp, cast(hp2.street0VPI as integer) AS vpip, cast(hp2.street0AggrChance as integer) AS pfr_opp, @@ -4306,6 +6660,72 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street0_FoldTo4BDone as integer) AS F4B_0, cast(hp2.street0_SqueezeChance as integer) AS SQZ_opp_0, cast(hp2.street0_SqueezeDone as integer) AS SQZ_0, + cast(hp2.street0_FoldToSqueezeChance as integer) AS FSQZ_opp_0, + cast(hp2.street0_FoldToSqueezeDone as integer) AS FSQZ_0, + + cast(hp2.street1VPIChance as integer) AS vpip_opp_1, + cast(hp2.street1VPI as integer) AS vpip_1, + cast(hp2.street1AggrChance as integer) AS aggr_opp_1, + cast(hp2.street1Aggr as integer) AS aggr_1, + cast(hp2.street1CalledRaiseChance as integer) AS CAR_opp_1, + cast(hp2.street1CalledRaiseDone as integer) AS CAR_1, + cast(hp2.street1_3BChance as integer) AS TB_opp_1, + cast(hp2.street1_3BDone as integer) AS TB_1, + cast(hp2.street1_4BChance as integer) AS FB_opp_1, + cast(hp2.street1_4BDone as integer) AS FB_1, + cast(hp2.street1_C4BChance as integer) AS CFB_opp_1, + cast(hp2.street1_C4BDone as integer) AS CFB_1, + cast(hp2.street1_FoldTo3BChance as integer) AS F3B_opp_1, + cast(hp2.street1_FoldTo3BDone as integer) AS F3B_1, + cast(hp2.street1_FoldTo4BChance as integer) AS F4B_opp_1, + cast(hp2.street1_FoldTo4BDone as integer) AS F4B_1, + cast(hp2.street1_SqueezeChance as integer) AS SQZ_opp_1, + cast(hp2.street1_SqueezeDone as integer) AS SQZ_1, + cast(hp2.street1_FoldToSqueezeChance as integer) AS FSQZ_opp_1, + cast(hp2.street1_FoldToSqueezeDone as integer) AS FSQZ_1, + + cast(hp2.street2VPIChance as integer) AS vpip_opp_2, + cast(hp2.street2VPI as integer) AS vpip_2, + cast(hp2.street2AggrChance as integer) AS aggr_opp_2, + cast(hp2.street2Aggr as integer) AS aggr_2, + cast(hp2.street2CalledRaiseChance as integer) AS CAR_opp_2, + cast(hp2.street2CalledRaiseDone as integer) AS CAR_2, + cast(hp2.street2_3BChance as integer) AS TB_opp_2, + cast(hp2.street2_3BDone as integer) AS TB_2, + cast(hp2.street2_4BChance as integer) AS FB_opp_2, + cast(hp2.street2_4BDone as integer) AS FB_2, + cast(hp2.street2_C4BChance as integer) AS CFB_opp_2, + cast(hp2.street2_C4BDone as integer) AS CFB_2, + cast(hp2.street2_FoldTo3BChance as integer) AS F3B_opp_2, + cast(hp2.street2_FoldTo3BDone as integer) AS F3B_2, + cast(hp2.street2_FoldTo4BChance as integer) AS F4B_opp_2, + cast(hp2.street2_FoldTo4BDone as integer) AS F4B_2, + cast(hp2.street2_SqueezeChance as integer) AS SQZ_opp_2, + cast(hp2.street2_SqueezeDone as integer) AS SQZ_2, + cast(hp2.street2_FoldToSqueezeChance as integer) AS FSQZ_opp_2, + cast(hp2.street2_FoldToSqueezeDone as integer) AS FSQZ_2, + + cast(hp2.street3VPIChance as integer) AS vpip_opp_3, + cast(hp2.street3VPI as integer) AS vpip_3, + cast(hp2.street3AggrChance as integer) AS aggr_opp_3, + cast(hp2.street3Aggr as integer) AS aggr_3, + cast(hp2.street3CalledRaiseChance as integer) AS CAR_opp_3, + cast(hp2.street3CalledRaiseDone as integer) AS CAR_3, + cast(hp2.street3_3BChance as integer) AS TB_opp_3, + cast(hp2.street3_3BDone as integer) AS TB_3, + cast(hp2.street3_4BChance as integer) AS FB_opp_3, + cast(hp2.street3_4BDone as integer) AS FB_3, + cast(hp2.street3_C4BChance as integer) AS CFB_opp_3, + cast(hp2.street3_C4BDone as integer) AS CFB_3, + cast(hp2.street3_FoldTo3BChance as integer) AS F3B_opp_3, + cast(hp2.street3_FoldTo3BDone as integer) AS F3B_3, + cast(hp2.street3_FoldTo4BChance as integer) AS F4B_opp_3, + cast(hp2.street3_FoldTo4BDone as integer) AS F4B_3, + cast(hp2.street3_SqueezeChance as integer) AS SQZ_opp_3, + cast(hp2.street3_SqueezeDone as integer) AS SQZ_3, + cast(hp2.street3_FoldToSqueezeChance as integer) AS FSQZ_opp_3, + cast(hp2.street3_FoldToSqueezeDone as integer) AS FSQZ_3, + cast(hp2.raiseToStealChance as integer) AS RTS_opp, cast(hp2.raiseToStealDone as integer) AS RTS, cast(hp2.success_Steal as integer) AS SUC_ST, @@ -4327,6 +6747,14 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.foldToOtherRaisedStreet2 as integer) AS f_freq_2, cast(hp2.foldToOtherRaisedStreet3 as integer) AS f_freq_3, cast(hp2.foldToOtherRaisedStreet4 as integer) AS f_freq_4, + cast(hp2.callToOtherRaisedStreet1 as integer) AS c_freq_1, + cast(hp2.callToOtherRaisedStreet2 as integer) AS c_freq_2, + cast(hp2.callToOtherRaisedStreet3 as integer) AS c_freq_3, + cast(hp2.callToOtherRaisedStreet4 as integer) AS c_freq_4, + cast(hp2.raiseToOtherRaisedStreet1 as integer) AS r_freq_1, + cast(hp2.raiseToOtherRaisedStreet2 as integer) AS r_freq_2, + cast(hp2.raiseToOtherRaisedStreet3 as integer) AS r_freq_3, + cast(hp2.raiseToOtherRaisedStreet4 as integer) AS r_freq_4, cast(hp2.wonWhenSeenStreet1 as integer) AS w_w_s_1, cast(hp2.wonAtSD as integer) AS wmsd, cast(hp2.stealChance as integer) AS steal_opp, @@ -4351,6 +6779,22 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.foldToStreet3CBDone as integer) AS f_cb_3, cast(hp2.foldToStreet4CBChance as integer) AS f_cb_opp_4, cast(hp2.foldToStreet4CBDone as integer) AS f_cb_4, + cast(hp2.callToStreet1CBChance as integer) AS c_cb_opp_1, + cast(hp2.callToStreet1CBDone as integer) AS c_cb_1, + cast(hp2.callToStreet2CBChance as integer) AS c_cb_opp_2, + cast(hp2.callToStreet2CBDone as integer) AS c_cb_2, + cast(hp2.callToStreet3CBChance as integer) AS c_cb_opp_3, + cast(hp2.callToStreet3CBDone as integer) AS c_cb_3, + cast(hp2.callToStreet4CBChance as integer) AS c_cb_opp_4, + cast(hp2.callToStreet4CBDone as integer) AS c_cb_4, + cast(hp2.raiseToStreet1CBChance as integer) AS r_cb_opp_1, + cast(hp2.raiseToStreet1CBDone as integer) AS r_cb_1, + cast(hp2.raiseToStreet2CBChance as integer) AS r_cb_opp_2, + cast(hp2.raiseToStreet2CBDone as integer) AS r_cb_2, + cast(hp2.raiseToStreet3CBChance as integer) AS r_cb_opp_3, + cast(hp2.raiseToStreet3CBDone as integer) AS r_cb_3, + cast(hp2.raiseToStreet4CBChance as integer) AS r_cb_opp_4, + cast(hp2.raiseToStreet4CBDone as integer) AS r_cb_4, cast(hp2.totalProfit as integer) AS net, cast(gt.bigblind as integer) AS bigblind, cast(hp2.street1CheckCallRaiseChance as integer) AS ccr_opp_1, @@ -4365,21 +6809,37 @@ def __init__(self, game='holdem', db_server='mysql'): cast(hp2.street4CheckCallRaiseChance as integer) AS ccr_opp_4, cast(hp2.street4CheckCallDone as integer) AS cc_4, cast(hp2.street4CheckRaiseDone as integer) AS cr_4, + cast(hp2.street1foldToCheckRaiseChance as integer) AS f_cr_opp_1, + cast(hp2.street1foldToCheckRaiseDone as integer) AS f_cr_1, + cast(hp2.street2foldToCheckRaiseChance as integer) AS f_cr_opp_2, + cast(hp2.street2foldToCheckRaiseDone as integer) AS f_cr_2, + cast(hp2.street3foldToCheckRaiseChance as integer) AS f_cr_opp_3, + cast(hp2.street3foldToCheckRaiseDone as integer) AS f_cr_3, + cast(hp2.street4foldToCheckRaiseChance as integer) AS f_cr_opp_4, + cast(hp2.street4foldToCheckRaiseDone as integer) AS f_cr_4, cast(hp2.street0Calls as integer) AS call_0, cast(hp2.street1Calls as integer) AS call_1, cast(hp2.street2Calls as integer) AS call_2, cast(hp2.street3Calls as integer) AS call_3, cast(hp2.street4Calls as integer) AS call_4, - cast(hp2.street0Bets as integer) AS bet_0, - cast(hp2.street1Bets as integer) AS bet_1, - cast(hp2.street2Bets as integer) AS bet_2, - cast(hp2.street3Bets as integer) AS bet_3, - cast(hp2.street4Bets as integer) AS bet_4, + cast(hp2.street0Raises as integer) AS raise_0, cast(hp2.street1Raises as integer) AS raise_1, cast(hp2.street2Raises as integer) AS raise_2, cast(hp2.street3Raises as integer) AS raise_3, - cast(hp2.street4Raises as integer) AS raise_4 + cast(hp2.street4Raises as integer) AS raise_4, + + cast(hp2.street0Callers as integer) AS callers_0, + cast(hp2.street1Callers as integer) AS callers_1, + cast(hp2.street2Callers as integer) AS callers_2, + cast(hp2.street3Callers as integer) AS callers_3, + cast(hp2.street4Callers as integer) AS callers_4, + + cast(hp2.street0Aggressors as integer) AS aggressors_0, + cast(hp2.street1Aggressors as integer) AS aggressors_1, + cast(hp2.street2Aggressors as integer) AS aggressors_2, + cast(hp2.street3Aggressors as integer) AS aggressors_3, + cast(hp2.street4Aggressors as integer) AS aggressors_4 FROM Hands h /* this hand */ INNER JOIN Hands h2 ON ( h2.id >= %s /* other hands */ AND h2.tableName = h.tableName) @@ -4602,6 +7062,7 @@ def __init__(self, game='holdem', db_server='mysql'): , AS plposition ,gt.fast AS fast ,count(1) AS n + ,case when sum(cast(hp.street0VPIChance as integer)) = 0 then -999 else 100.0*sum(cast(hp.street0VPI as integer))/sum(cast(hp.street0VPIChance as integer)) end AS vpip @@ -4623,6 +7084,72 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(cast(hp.street0_FoldTo4Bchance as integer)) = 0 then -999 else 100.0*sum(cast(hp.street0_FoldTo4Bdone as integer))/sum(cast(hp.street0_FoldTo4Bchance as integer)) end AS pff4 + + ,case when sum(cast(hp.street1VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1VPI as integer))/sum(cast(hp.street1VPIChance as integer)) + end AS vpip_1 + ,case when sum(cast(hp.street1AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1Aggr as integer))/sum(cast(hp.street1AggrChance as integer)) + end AS pfr_1 + ,case when sum(cast(hp.street1CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1CalledRaiseDone as integer))/sum(cast(hp.street1CalledRaiseChance as integer)) + end AS car0_1 + ,case when sum(cast(hp.street1_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_3Bdone as integer))/sum(cast(hp.street1_3Bchance as integer)) + end AS pf3_1 + ,case when sum(cast(hp.street1_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_4Bdone as integer))/sum(cast(hp.street1_4Bchance as integer)) + end AS pf4_1 + ,case when sum(cast(hp.street1_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_FoldTo3Bdone as integer))/sum(cast(hp.street1_FoldTo3Bchance as integer)) + end AS pff3_1 + ,case when sum(cast(hp.street1_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_FoldTo4Bdone as integer))/sum(cast(hp.street1_FoldTo4Bchance as integer)) + end AS pff4_1 + + ,case when sum(cast(hp.street2VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2VPI as integer))/sum(cast(hp.street2VPIChance as integer)) + end AS vpip_2 + ,case when sum(cast(hp.street2AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2Aggr as integer))/sum(cast(hp.street2AggrChance as integer)) + end AS pfr_2 + ,case when sum(cast(hp.street2CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2CalledRaiseDone as integer))/sum(cast(hp.street2CalledRaiseChance as integer)) + end AS car0_2 + ,case when sum(cast(hp.street2_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_3Bdone as integer))/sum(cast(hp.street2_3Bchance as integer)) + end AS pf3_2 + ,case when sum(cast(hp.street2_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_4Bdone as integer))/sum(cast(hp.street2_4Bchance as integer)) + end AS pf4_2 + ,case when sum(cast(hp.street2_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_FoldTo3Bdone as integer))/sum(cast(hp.street2_FoldTo3Bchance as integer)) + end AS pff3_2 + ,case when sum(cast(hp.street2_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_FoldTo4Bdone as integer))/sum(cast(hp.street2_FoldTo4Bchance as integer)) + end AS pff4_2 + + ,case when sum(cast(hp.street3VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3VPI as integer))/sum(cast(hp.street3VPIChance as integer)) + end AS vpip_3 + ,case when sum(cast(hp.street3AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3Aggr as integer))/sum(cast(hp.street3AggrChance as integer)) + end AS pfr_3 + ,case when sum(cast(hp.street3CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3CalledRaiseDone as integer))/sum(cast(hp.street3CalledRaiseChance as integer)) + end AS car0_3 + ,case when sum(cast(hp.street3_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_3Bdone as integer))/sum(cast(hp.street3_3Bchance as integer)) + end AS pf3_3 + ,case when sum(cast(hp.street3_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_4Bdone as integer))/sum(cast(hp.street3_4Bchance as integer)) + end AS pf4_3 + ,case when sum(cast(hp.street3_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_FoldTo3Bdone as integer))/sum(cast(hp.street3_FoldTo3Bchance as integer)) + end AS pff3_3 + ,case when sum(cast(hp.street3_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_FoldTo4Bdone as integer))/sum(cast(hp.street3_FoldTo4Bchance as integer)) + end AS pff4_3 ,case when sum(cast(hp.raiseFirstInChance as integer)) = 0 then -999 else 100.0 * sum(cast(hp.raisedFirstIn as integer)) / @@ -4736,6 +7263,7 @@ def __init__(self, game='holdem', db_server='mysql'): , AS plposition ,gt.fast AS fast ,count(1) AS n + ,case when sum(cast(hp.street0VPIChance as integer)) = 0 then -999 else 100.0*sum(cast(hp.street0VPI as integer))/sum(cast(hp.street0VPIChance as integer)) end AS vpip @@ -4757,6 +7285,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(cast(hp.street0_FoldTo4Bchance as integer)) = 0 then -999 else 100.0*sum(cast(hp.street0_FoldTo4Bdone as integer))/sum(cast(hp.street0_FoldTo4Bchance as integer)) end AS pff4 + + ,case when sum(cast(hp.street1VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1VPI as integer))/sum(cast(hp.street1VPIChance as integer)) + end AS vpip_1 + ,case when sum(cast(hp.street1AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1Aggr as integer))/sum(cast(hp.street1AggrChance as integer)) + end AS pfr_1 + ,case when sum(cast(hp.street1CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1CalledRaiseDone as integer))/sum(cast(hp.street1CalledRaiseChance as integer)) + end AS car0_1 + ,case when sum(cast(hp.street1_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_3Bdone as integer))/sum(cast(hp.street1_3Bchance as integer)) + end AS pf3_1 + ,case when sum(cast(hp.street1_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_4Bdone as integer))/sum(cast(hp.street1_4Bchance as integer)) + end AS pf4_1 + ,case when sum(cast(hp.street1_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_FoldTo3Bdone as integer))/sum(cast(hp.street1_FoldTo3Bchance as integer)) + end AS pff3_1 + ,case when sum(cast(hp.street1_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_FoldTo4Bdone as integer))/sum(cast(hp.street1_FoldTo4Bchance as integer)) + end AS pff4_1 + + ,case when sum(cast(hp.street2VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2VPI as integer))/sum(cast(hp.street2VPIChance as integer)) + end AS vpip_2 + ,case when sum(cast(hp.street2AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2Aggr as integer))/sum(cast(hp.street2AggrChance as integer)) + end AS pfr_2 + ,case when sum(cast(hp.street2CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2CalledRaiseDone as integer))/sum(cast(hp.street2CalledRaiseChance as integer)) + end AS car0_2 + ,case when sum(cast(hp.street2_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_3Bdone as integer))/sum(cast(hp.street2_3Bchance as integer)) + end AS pf3_2 + ,case when sum(cast(hp.street2_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_4Bdone as integer))/sum(cast(hp.street2_4Bchance as integer)) + end AS pf4_2 + ,case when sum(cast(hp.street2_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_FoldTo3Bdone as integer))/sum(cast(hp.street2_FoldTo3Bchance as integer)) + end AS pff3_2 + ,case when sum(cast(hp.street2_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_FoldTo4Bdone as integer))/sum(cast(hp.street2_FoldTo4Bchance as integer)) + end AS pff4_2 + + ,case when sum(cast(hp.street3VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3VPI as integer))/sum(cast(hp.street3VPIChance as integer)) + end AS vpip_3 + ,case when sum(cast(hp.street3AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3Aggr as integer))/sum(cast(hp.street3AggrChance as integer)) + end AS pfr_3 + ,case when sum(cast(hp.street3CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3CalledRaiseDone as integer))/sum(cast(hp.street3CalledRaiseChance as integer)) + end AS car0_3 + ,case when sum(cast(hp.street3_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_3Bdone as integer))/sum(cast(hp.street3_3Bchance as integer)) + end AS pf3_3 + ,case when sum(cast(hp.street3_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_4Bdone as integer))/sum(cast(hp.street3_4Bchance as integer)) + end AS pf4_3 + ,case when sum(cast(hp.street3_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_FoldTo3Bdone as integer))/sum(cast(hp.street3_FoldTo3Bchance as integer)) + end AS pff3_3 + ,case when sum(cast(hp.street3_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_FoldTo4Bdone as integer))/sum(cast(hp.street3_FoldTo4Bchance as integer)) + end AS pff4_3 + ,case when sum(cast(hp.raiseFirstInChance as integer)) = 0 then -999 else 100.0 * sum(cast(hp.raisedFirstIn as integer)) / sum(cast(hp.raiseFirstInChance as integer)) @@ -4884,6 +7479,7 @@ def __init__(self, game='holdem', db_server='mysql'): , AS plposition ,gt.fast AS fast ,count(1) AS n + ,case when sum(cast(hp.street0VPIChance as integer)) = 0 then -999 else 100.0*sum(cast(hp.street0VPI as integer))/sum(cast(hp.street0VPIChance as integer)) end AS vpip @@ -4905,6 +7501,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(cast(hp.street0_FoldTo4Bchance as integer)) = 0 then -999 else 100.0*sum(cast(hp.street0_FoldTo4Bdone as integer))/sum(cast(hp.street0_FoldTo4Bchance as integer)) end AS pff4 + + ,case when sum(cast(hp.street1VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1VPI as integer))/sum(cast(hp.street1VPIChance as integer)) + end AS vpip_1 + ,case when sum(cast(hp.street1AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1Aggr as integer))/sum(cast(hp.street1AggrChance as integer)) + end AS pfr_1 + ,case when sum(cast(hp.street1CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1CalledRaiseDone as integer))/sum(cast(hp.street1CalledRaiseChance as integer)) + end AS car0_1 + ,case when sum(cast(hp.street1_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_3Bdone as integer))/sum(cast(hp.street1_3Bchance as integer)) + end AS pf3_1 + ,case when sum(cast(hp.street1_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_4Bdone as integer))/sum(cast(hp.street1_4Bchance as integer)) + end AS pf4_1 + ,case when sum(cast(hp.street1_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_FoldTo3Bdone as integer))/sum(cast(hp.street1_FoldTo3Bchance as integer)) + end AS pff3_1 + ,case when sum(cast(hp.street1_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street1_FoldTo4Bdone as integer))/sum(cast(hp.street1_FoldTo4Bchance as integer)) + end AS pff4_1 + + ,case when sum(cast(hp.street2VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2VPI as integer))/sum(cast(hp.street2VPIChance as integer)) + end AS vpip_2 + ,case when sum(cast(hp.street2AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2Aggr as integer))/sum(cast(hp.street2AggrChance as integer)) + end AS pfr_2 + ,case when sum(cast(hp.street2CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2CalledRaiseDone as integer))/sum(cast(hp.street2CalledRaiseChance as integer)) + end AS car0_2 + ,case when sum(cast(hp.street2_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_3Bdone as integer))/sum(cast(hp.street2_3Bchance as integer)) + end AS pf3_2 + ,case when sum(cast(hp.street2_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_4Bdone as integer))/sum(cast(hp.street2_4Bchance as integer)) + end AS pf4_2 + ,case when sum(cast(hp.street2_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_FoldTo3Bdone as integer))/sum(cast(hp.street2_FoldTo3Bchance as integer)) + end AS pff3_2 + ,case when sum(cast(hp.street2_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street2_FoldTo4Bdone as integer))/sum(cast(hp.street2_FoldTo4Bchance as integer)) + end AS pff4_2 + + ,case when sum(cast(hp.street3VPIChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3VPI as integer))/sum(cast(hp.street3VPIChance as integer)) + end AS vpip_3 + ,case when sum(cast(hp.street3AggrChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3Aggr as integer))/sum(cast(hp.street3AggrChance as integer)) + end AS pfr_3 + ,case when sum(cast(hp.street3CalledRaiseChance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3CalledRaiseDone as integer))/sum(cast(hp.street3CalledRaiseChance as integer)) + end AS car0_3 + ,case when sum(cast(hp.street3_3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_3Bdone as integer))/sum(cast(hp.street3_3Bchance as integer)) + end AS pf3_3 + ,case when sum(cast(hp.street3_4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_4Bdone as integer))/sum(cast(hp.street3_4Bchance as integer)) + end AS pf4_3 + ,case when sum(cast(hp.street3_FoldTo3Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_FoldTo3Bdone as integer))/sum(cast(hp.street3_FoldTo3Bchance as integer)) + end AS pff3_3 + ,case when sum(cast(hp.street3_FoldTo4Bchance as integer)) = 0 then -999 + else 100.0*sum(cast(hp.street3_FoldTo4Bdone as integer))/sum(cast(hp.street3_FoldTo4Bchance as integer)) + end AS pff4_3 + ,case when sum(cast(hp.raiseFirstInChance as integer)) = 0 then -999 else 100.0 * sum(cast(hp.raisedFirstIn as integer)) / sum(cast(hp.raiseFirstInChance as integer)) @@ -5178,6 +7841,7 @@ def __init__(self, game='holdem', db_server='mysql'): , AS bigBlindDesc , AS gtId ,sum(n) AS n + ,case when sum(street0VPIChance) = 0 then '0' else format(100.0*sum(street0VPI)/sum(street0VPIChance),1) end AS vpip @@ -5199,6 +7863,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(street0_FoldTo4Bchance) = 0 then '0' else format(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),1) end AS pff4 + + ,case when sum(street1VPIChance) = 0 then '0' + else format(100.0*sum(street1VPI)/sum(street1VPIChance),1) + end AS vpip_1 + ,case when sum(street1AggrChance) = 0 then '0' + else format(100.0*sum(street1Aggr)/sum(street1AggrChance),1) + end AS pfr_1 + ,case when sum(street1CalledRaiseChance) = 0 then '0' + else format(100.0*sum(street1CalledRaiseDone)/sum(street1CalledRaiseChance),1) + end AS car0_1 + ,case when sum(street1_3Bchance) = 0 then '0' + else format(100.0*sum(street1_3Bdone)/sum(street1_3Bchance),1) + end AS pf3_1 + ,case when sum(street1_4Bchance) = 0 then '0' + else format(100.0*sum(street1_4Bdone)/sum(street1_4Bchance),1) + end AS pf4_1 + ,case when sum(street1_FoldTo3Bchance) = 0 then '0' + else format(100.0*sum(street1_FoldTo3Bdone)/sum(street1_FoldTo3Bchance),1) + end AS pff3_1 + ,case when sum(street1_FoldTo4Bchance) = 0 then '0' + else format(100.0*sum(street1_FoldTo4Bdone)/sum(street1_FoldTo4Bchance),1) + end AS pff4_1 + + ,case when sum(street2VPIChance) = 0 then '0' + else format(100.0*sum(street2VPI)/sum(street2VPIChance),1) + end AS vpip_2 + ,case when sum(street2AggrChance) = 0 then '0' + else format(100.0*sum(street2Aggr)/sum(street2AggrChance),1) + end AS pfr_2 + ,case when sum(street2CalledRaiseChance) = 0 then '0' + else format(100.0*sum(street2CalledRaiseDone)/sum(street2CalledRaiseChance),1) + end AS car0_2 + ,case when sum(street2_3Bchance) = 0 then '0' + else format(100.0*sum(street2_3Bdone)/sum(street2_3Bchance),1) + end AS pf3_2 + ,case when sum(street2_4Bchance) = 0 then '0' + else format(100.0*sum(street2_4Bdone)/sum(street2_4Bchance),1) + end AS pf4_2 + ,case when sum(street2_FoldTo3Bchance) = 0 then '0' + else format(100.0*sum(street2_FoldTo3Bdone)/sum(street2_FoldTo3Bchance),1) + end AS pff3_2 + ,case when sum(street2_FoldTo4Bchance) = 0 then '0' + else format(100.0*sum(street2_FoldTo4Bdone)/sum(street2_FoldTo4Bchance),1) + end AS pff4_2 + + ,case when sum(street3VPIChance) = 0 then '0' + else format(100.0*sum(street3VPI)/sum(street3VPIChance),1) + end AS vpip_3 + ,case when sum(street3AggrChance) = 0 then '0' + else format(100.0*sum(street3Aggr)/sum(street3AggrChance),1) + end AS pfr_3 + ,case when sum(street3CalledRaiseChance) = 0 then '0' + else format(100.0*sum(street3CalledRaiseDone)/sum(street3CalledRaiseChance),1) + end AS car0_3 + ,case when sum(street3_3Bchance) = 0 then '0' + else format(100.0*sum(street3_3Bdone)/sum(street3_3Bchance),1) + end AS pf3_3 + ,case when sum(street3_4Bchance) = 0 then '0' + else format(100.0*sum(street3_4Bdone)/sum(street3_4Bchance),1) + end AS pf4_3 + ,case when sum(street3_FoldTo3Bchance) = 0 then '0' + else format(100.0*sum(street3_FoldTo3Bdone)/sum(street3_FoldTo3Bchance),1) + end AS pff3_3 + ,case when sum(street3_FoldTo4Bchance) = 0 then '0' + else format(100.0*sum(street3_FoldTo4Bdone)/sum(street3_FoldTo4Bchance),1) + end AS pff4_3 + ,case when sum(raiseFirstInChance) = 0 then '-' else format(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1) end AS steals @@ -5287,6 +8018,7 @@ def __init__(self, game='holdem', db_server='mysql'): , AS bigBlindDesc , AS gtId ,sum(n) AS n + ,case when sum(street0VPIChance) = 0 then '0' else round(100.0*sum(street0VPI)/sum(street0VPIChance),1) end AS vpip @@ -5308,6 +8040,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(street0_FoldTo4Bchance) = 0 then '0' else round(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),1) end AS pff4 + + ,case when sum(street1VPIChance) = 0 then '0' + else round(100.0*sum(street1VPI)/sum(street1VPIChance),1) + end AS vpip_1 + ,case when sum(street1AggrChance) = 0 then '0' + else round(100.0*sum(street1Aggr)/sum(street1AggrChance),1) + end AS pfr_1 + ,case when sum(street1CalledRaiseChance) = 0 then '0' + else round(100.0*sum(street1CalledRaiseDone)/sum(street1CalledRaiseChance),1) + end AS car0_1 + ,case when sum(street1_3Bchance) = 0 then '0' + else round(100.0*sum(street1_3Bdone)/sum(street1_3Bchance),1) + end AS pf3_1 + ,case when sum(street1_4Bchance) = 0 then '0' + else round(100.0*sum(street1_4Bdone)/sum(street1_4Bchance),1) + end AS pf4_1 + ,case when sum(street1_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street1_FoldTo3Bdone)/sum(street1_FoldTo3Bchance),1) + end AS pff3_1 + ,case when sum(street1_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street1_FoldTo4Bdone)/sum(street1_FoldTo4Bchance),1) + end AS pff4_1 + + ,case when sum(street2VPIChance) = 0 then '0' + else round(100.0*sum(street2VPI)/sum(street2VPIChance),1) + end AS vpip_2 + ,case when sum(street2AggrChance) = 0 then '0' + else round(100.0*sum(street2Aggr)/sum(street2AggrChance),1) + end AS pfr_2 + ,case when sum(street2CalledRaiseChance) = 0 then '0' + else round(100.0*sum(street2CalledRaiseDone)/sum(street2CalledRaiseChance),1) + end AS car0_2 + ,case when sum(street2_3Bchance) = 0 then '0' + else round(100.0*sum(street2_3Bdone)/sum(street2_3Bchance),1) + end AS pf3_2 + ,case when sum(street2_4Bchance) = 0 then '0' + else round(100.0*sum(street2_4Bdone)/sum(street2_4Bchance),1) + end AS pf4_2 + ,case when sum(street2_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street2_FoldTo3Bdone)/sum(street2_FoldTo3Bchance),1) + end AS pff3_2 + ,case when sum(street2_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street2_FoldTo4Bdone)/sum(street2_FoldTo4Bchance),1) + end AS pff4_2 + + ,case when sum(street3VPIChance) = 0 then '0' + else round(100.0*sum(street3VPI)/sum(street3VPIChance),1) + end AS vpip_3 + ,case when sum(street3AggrChance) = 0 then '0' + else round(100.0*sum(street3Aggr)/sum(street3AggrChance),1) + end AS pfr_3 + ,case when sum(street3CalledRaiseChance) = 0 then '0' + else round(100.0*sum(street3CalledRaiseDone)/sum(street3CalledRaiseChance),1) + end AS car0_3 + ,case when sum(street3_3Bchance) = 0 then '0' + else round(100.0*sum(street3_3Bdone)/sum(street3_3Bchance),1) + end AS pf3_3 + ,case when sum(street3_4Bchance) = 0 then '0' + else round(100.0*sum(street3_4Bdone)/sum(street3_4Bchance),1) + end AS pf4_3 + ,case when sum(street3_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street3_FoldTo3Bdone)/sum(street3_FoldTo3Bchance),1) + end AS pff3_3 + ,case when sum(street3_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street3_FoldTo4Bdone)/sum(street3_FoldTo4Bchance),1) + end AS pff4_3 + ,case when sum(raiseFirstInChance) = 0 then '-' else round(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1) end AS steals @@ -5410,6 +8209,7 @@ def __init__(self, game='holdem', db_server='mysql'): , AS bigBlindDesc , AS gtId ,sum(n) AS n + ,case when sum(street0VPIChance) = 0 then '0' else to_char(100.0*sum(street0VPI)/sum(street0VPIChance),'990D0') end AS vpip @@ -5431,6 +8231,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(street0_FoldTo4Bchance) = 0 then '0' else round(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),1) end AS pff4 + + ,case when sum(street1VPIChance) = 0 then '0' + else to_char(100.0*sum(street1VPI)/sum(street1VPIChance),'990D0') + end AS vpip_1 + ,case when sum(street1AggrChance) = 0 then '0' + else to_char(100.0*sum(street1Aggr)/sum(street1AggrChance),'90D0') + end AS pfr_1 + ,case when sum(street1CalledRaiseChance) = 0 then '0' + else to_char(100.0*sum(street1CalledRaiseDone)/sum(street1CalledRaiseChance),'90D0') + end AS car0_1 + ,case when sum(street1_3Bchance) = 0 then '0' + else to_char(100.0*sum(street1_3Bdone)/sum(street1_3Bchance),'90D0') + end AS pf3_1 + ,case when sum(street1_4Bchance) = 0 then '0' + else round(100.0*sum(street1_4Bdone)/sum(street1_4Bchance),1) + end AS pf4_1 + ,case when sum(street1_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street1_FoldTo3Bdone)/sum(street1_FoldTo3Bchance),1) + end AS pff3_1 + ,case when sum(street1_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street1_FoldTo4Bdone)/sum(street1_FoldTo4Bchance),1) + end AS pff4_1 + + ,case when sum(street2VPIChance) = 0 then '0' + else to_char(100.0*sum(street2VPI)/sum(street2VPIChance),'990D0') + end AS vpip_2 + ,case when sum(street2AggrChance) = 0 then '0' + else to_char(100.0*sum(street2Aggr)/sum(street2AggrChance),'90D0') + end AS pfr_2 + ,case when sum(street2CalledRaiseChance) = 0 then '0' + else to_char(100.0*sum(street2CalledRaiseDone)/sum(street2CalledRaiseChance),'90D0') + end AS car0_2 + ,case when sum(street2_3Bchance) = 0 then '0' + else to_char(100.0*sum(street2_3Bdone)/sum(street2_3Bchance),'90D0') + end AS pf3_2 + ,case when sum(street2_4Bchance) = 0 then '0' + else round(100.0*sum(street2_4Bdone)/sum(street2_4Bchance),1) + end AS pf4_2 + ,case when sum(street2_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street2_FoldTo3Bdone)/sum(street2_FoldTo3Bchance),1) + end AS pff3_2 + ,case when sum(street2_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street2_FoldTo4Bdone)/sum(street2_FoldTo4Bchance),1) + end AS pff4_2 + + ,case when sum(street3VPIChance) = 0 then '0' + else to_char(100.0*sum(street3VPI)/sum(street3VPIChance),'990D0') + end AS vpip_3 + ,case when sum(street3AggrChance) = 0 then '0' + else to_char(100.0*sum(street3Aggr)/sum(street3AggrChance),'90D0') + end AS pfr_3 + ,case when sum(street3CalledRaiseChance) = 0 then '0' + else to_char(100.0*sum(street3CalledRaiseDone)/sum(street3CalledRaiseChance),'90D0') + end AS car0_3 + ,case when sum(street3_3Bchance) = 0 then '0' + else to_char(100.0*sum(street3_3Bdone)/sum(street3_3Bchance),'90D0') + end AS pf3_3 + ,case when sum(street3_4Bchance) = 0 then '0' + else round(100.0*sum(street3_4Bdone)/sum(street3_4Bchance),1) + end AS pf4_3 + ,case when sum(street3_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street3_FoldTo3Bdone)/sum(street3_FoldTo3Bchance),1) + end AS pff3_3 + ,case when sum(street3_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street3_FoldTo4Bdone)/sum(street3_FoldTo4Bchance),1) + end AS pff4_3 + ,case when sum(raiseFirstInChance) = 0 then '-' else to_char(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),'90D0') end AS steals @@ -5559,6 +8426,7 @@ def __init__(self, game='holdem', db_server='mysql'): else 9 end as PlPosition ,sum(n) AS n + ,case when sum(street0VPIChance) = 0 then '0' else format(100.0*sum(street0VPI)/sum(street0VPIChance),1) end AS vpip @@ -5580,6 +8448,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(street0_FoldTo4Bchance) = 0 then '0' else format(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),1) end AS pff4 + + ,case when sum(street1VPIChance) = 0 then '0' + else format(100.0*sum(street1VPI)/sum(street1VPIChance),1) + end AS vpip_1 + ,case when sum(street1AggrChance) = 0 then '0' + else format(100.0*sum(street1Aggr)/sum(street1AggrChance),1) + end AS pfr_1 + ,case when sum(street1CalledRaiseChance) = 0 then '0' + else format(100.0*sum(street1CalledRaiseDone)/sum(street1CalledRaiseChance),1) + end AS car0_1 + ,case when sum(street1_3Bchance) = 0 then '0' + else format(100.0*sum(street1_3Bdone)/sum(street1_3Bchance),1) + end AS pf3_1 + ,case when sum(street1_4Bchance) = 0 then '0' + else format(100.0*sum(street1_4Bdone)/sum(street1_4Bchance),1) + end AS pf4_1 + ,case when sum(street1_FoldTo3Bchance) = 0 then '0' + else format(100.0*sum(street1_FoldTo3Bdone)/sum(street1_FoldTo3Bchance),1) + end AS pff3_1 + ,case when sum(street1_FoldTo4Bchance) = 0 then '0' + else format(100.0*sum(street1_FoldTo4Bdone)/sum(street1_FoldTo4Bchance),1) + end AS pff4_1 + + ,case when sum(street2VPIChance) = 0 then '0' + else format(100.0*sum(street2VPI)/sum(street2VPIChance),1) + end AS vpip_2 + ,case when sum(street2AggrChance) = 0 then '0' + else format(100.0*sum(street2Aggr)/sum(street2AggrChance),1) + end AS pfr_2 + ,case when sum(street2CalledRaiseChance) = 0 then '0' + else format(100.0*sum(street2CalledRaiseDone)/sum(street2CalledRaiseChance),1) + end AS car0_2 + ,case when sum(street2_3Bchance) = 0 then '0' + else format(100.0*sum(street2_3Bdone)/sum(street2_3Bchance),1) + end AS pf3_2 + ,case when sum(street2_4Bchance) = 0 then '0' + else format(100.0*sum(street2_4Bdone)/sum(street2_4Bchance),1) + end AS pf4_2 + ,case when sum(street2_FoldTo3Bchance) = 0 then '0' + else format(100.0*sum(street2_FoldTo3Bdone)/sum(street2_FoldTo3Bchance),1) + end AS pff3_2 + ,case when sum(street2_FoldTo4Bchance) = 0 then '0' + else format(100.0*sum(street2_FoldTo4Bdone)/sum(street2_FoldTo4Bchance),1) + end AS pff4_2 + + ,case when sum(street3VPIChance) = 0 then '0' + else format(100.0*sum(street3VPI)/sum(street3VPIChance),1) + end AS vpip_3 + ,case when sum(street3AggrChance) = 0 then '0' + else format(100.0*sum(street3Aggr)/sum(street3AggrChance),1) + end AS pfr_3 + ,case when sum(street3CalledRaiseChance) = 0 then '0' + else format(100.0*sum(street3CalledRaiseDone)/sum(street3CalledRaiseChance),1) + end AS car0_3 + ,case when sum(street3_3Bchance) = 0 then '0' + else format(100.0*sum(street3_3Bdone)/sum(street3_3Bchance),1) + end AS pf3_3 + ,case when sum(street3_4Bchance) = 0 then '0' + else format(100.0*sum(street3_4Bdone)/sum(street3_4Bchance),1) + end AS pf4_3 + ,case when sum(street3_FoldTo3Bchance) = 0 then '0' + else format(100.0*sum(street3_FoldTo3Bdone)/sum(street3_FoldTo3Bchance),1) + end AS pff3_3 + ,case when sum(street3_FoldTo4Bchance) = 0 then '0' + else format(100.0*sum(street3_FoldTo4Bdone)/sum(street3_FoldTo4Bchance),1) + end AS pff4_3 + ,case when sum(raiseFirstInChance) = 0 then '-' else format(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1) end AS steals @@ -5701,6 +8636,7 @@ def __init__(self, game='holdem', db_server='mysql'): else 9 end AS PlPosition ,sum(n) AS n + ,case when sum(street0VPIChance) = 0 then '0' else round(100.0*sum(street0VPI)/sum(street0VPIChance),1) end AS vpip @@ -5722,6 +8658,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(street0_FoldTo4Bchance) = 0 then '0' else round(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),1) end AS pff4 + + ,case when sum(street1VPIChance) = 0 then '0' + else round(100.0*sum(street1VPI)/sum(street1VPIChance),1) + end AS vpip_1 + ,case when sum(street1AggrChance) = 0 then '0' + else round(100.0*sum(street1Aggr)/sum(street1AggrChance),1) + end AS pfr_1 + ,case when sum(street1CalledRaiseChance) = 0 then '0' + else round(100.0*sum(street1CalledRaiseDone)/sum(street1CalledRaiseChance),1) + end AS car0_1 + ,case when sum(street1_3Bchance) = 0 then '0' + else round(100.0*sum(street1_3Bdone)/sum(street1_3Bchance),1) + end AS pf3_1 + ,case when sum(street1_4Bchance) = 0 then '0' + else round(100.0*sum(street1_4Bdone)/sum(street1_4Bchance),1) + end AS pf4_1 + ,case when sum(street1_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street1_FoldTo3Bdone)/sum(street1_FoldTo3Bchance),1) + end AS pff3_1 + ,case when sum(street1_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street1_FoldTo4Bdone)/sum(street1_FoldTo4Bchance),1) + end AS pff4_1 + + ,case when sum(street2VPIChance) = 0 then '0' + else round(100.0*sum(street2VPI)/sum(street2VPIChance),1) + end AS vpip_2 + ,case when sum(street2AggrChance) = 0 then '0' + else round(100.0*sum(street2Aggr)/sum(street2AggrChance),1) + end AS pfr_2 + ,case when sum(street2CalledRaiseChance) = 0 then '0' + else round(100.0*sum(street2CalledRaiseDone)/sum(street2CalledRaiseChance),1) + end AS car0_2 + ,case when sum(street2_3Bchance) = 0 then '0' + else round(100.0*sum(street2_3Bdone)/sum(street2_3Bchance),1) + end AS pf3_2 + ,case when sum(street2_4Bchance) = 0 then '0' + else round(100.0*sum(street2_4Bdone)/sum(street2_4Bchance),1) + end AS pf4_2 + ,case when sum(street2_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street2_FoldTo3Bdone)/sum(street2_FoldTo3Bchance),1) + end AS pff3_2 + ,case when sum(street2_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street2_FoldTo4Bdone)/sum(street2_FoldTo4Bchance),1) + end AS pff4_2 + + ,case when sum(street3VPIChance) = 0 then '0' + else round(100.0*sum(street3VPI)/sum(street3VPIChance),1) + end AS vpip_3 + ,case when sum(street3AggrChance) = 0 then '0' + else round(100.0*sum(street3Aggr)/sum(street3AggrChance),1) + end AS pfr_3 + ,case when sum(street3CalledRaiseChance) = 0 then '0' + else round(100.0*sum(street3CalledRaiseDone)/sum(street3CalledRaiseChance),1) + end AS car0_3 + ,case when sum(street3_3Bchance) = 0 then '0' + else round(100.0*sum(street3_3Bdone)/sum(street3_3Bchance),1) + end AS pf3_3 + ,case when sum(street3_4Bchance) = 0 then '0' + else round(100.0*sum(street3_4Bdone)/sum(street3_4Bchance),1) + end AS pf4_3 + ,case when sum(street3_FoldTo3Bchance) = 0 then '0' + else round(100.0*sum(street3_FoldTo3Bdone)/sum(street3_FoldTo3Bchance),1) + end AS pff3_3 + ,case when sum(street3_FoldTo4Bchance) = 0 then '0' + else round(100.0*sum(street3_FoldTo4Bdone)/sum(street3_FoldTo4Bchance),1) + end AS pff4_3 + ,case when sum(raiseFirstInChance) = 0 then '-' else round(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),1) end AS steals @@ -5854,6 +8857,7 @@ def __init__(self, game='holdem', db_server='mysql'): else 9 end AS PlPosition ,sum(n) AS n + ,case when sum(street0VPIChance) = 0 then '0' else to_char(100.0*sum(street0VPI)/sum(street0VPIChance),'990D0') end AS vpip @@ -5875,6 +8879,73 @@ def __init__(self, game='holdem', db_server='mysql'): ,case when sum(street0_FoldTo4Bchance) = 0 then '0' else to_char(100.0*sum(street0_FoldTo4Bdone)/sum(street0_FoldTo4Bchance),'90D0') end AS pff4 + + ,case when sum(street1VPIChance) = 0 then '0' + else to_char(100.0*sum(street1VPI)/sum(street1VPIChance),'990D0') + end AS vpip_1 + ,case when sum(street1AggrChance) = 0 then '0' + else to_char(100.0*sum(street1Aggr)/sum(street1AggrChance),'90D0') + end AS pfr_1 + ,case when sum(street1CalledRaiseChance) = 0 then '0' + else to_char(100.0*sum(street1CalledRaiseDone)/sum(street1CalledRaiseChance),'90D0') + end AS car0_1 + ,case when sum(street1_3Bchance) = 0 then '0' + else to_char(100.0*sum(street1_3Bdone)/sum(street1_3Bchance),'90D0') + end AS pf3_1 + ,case when sum(street1_4Bchance) = 0 then '0' + else to_char(100.0*sum(street1_4Bdone)/sum(street1_4Bchance),'90D0') + end AS pf4_1 + ,case when sum(street1_FoldTo3Bchance) = 0 then '0' + else to_char(100.0*sum(street1_FoldTo3Bdone)/sum(street1_FoldTo3Bchance),'90D0') + end AS pff3_1 + ,case when sum(street1_FoldTo4Bchance) = 0 then '0' + else to_char(100.0*sum(street1_FoldTo4Bdone)/sum(street1_FoldTo4Bchance),'90D0') + end AS pff4_1 + + ,case when sum(street2VPIChance) = 0 then '0' + else to_char(100.0*sum(street2VPI)/sum(street2VPIChance),'990D0') + end AS vpip_2 + ,case when sum(street2AggrChance) = 0 then '0' + else to_char(100.0*sum(street2Aggr)/sum(street2AggrChance),'90D0') + end AS pfr_2 + ,case when sum(street2CalledRaiseChance) = 0 then '0' + else to_char(100.0*sum(street2CalledRaiseDone)/sum(street2CalledRaiseChance),'90D0') + end AS car0_2 + ,case when sum(street2_3Bchance) = 0 then '0' + else to_char(100.0*sum(street2_3Bdone)/sum(street2_3Bchance),'90D0') + end AS pf3_2 + ,case when sum(street2_4Bchance) = 0 then '0' + else to_char(100.0*sum(street2_4Bdone)/sum(street2_4Bchance),'90D0') + end AS pf4_2 + ,case when sum(street2_FoldTo3Bchance) = 0 then '0' + else to_char(100.0*sum(street2_FoldTo3Bdone)/sum(street2_FoldTo3Bchance),'90D0') + end AS pff3_2 + ,case when sum(street2_FoldTo4Bchance) = 0 then '0' + else to_char(100.0*sum(street2_FoldTo4Bdone)/sum(street2_FoldTo4Bchance),'90D0') + end AS pff4_2 + + ,case when sum(street3VPIChance) = 0 then '0' + else to_char(100.0*sum(street3VPI)/sum(street3VPIChance),'990D0') + end AS vpip_3 + ,case when sum(street3AggrChance) = 0 then '0' + else to_char(100.0*sum(street3Aggr)/sum(street3AggrChance),'90D0') + end AS pfr_3 + ,case when sum(street3CalledRaiseChance) = 0 then '0' + else to_char(100.0*sum(street3CalledRaiseDone)/sum(street3CalledRaiseChance),'90D0') + end AS car0_3 + ,case when sum(street3_3Bchance) = 0 then '0' + else to_char(100.0*sum(street3_3Bdone)/sum(street3_3Bchance),'90D0') + end AS pf3_3 + ,case when sum(street3_4Bchance) = 0 then '0' + else to_char(100.0*sum(street3_4Bdone)/sum(street3_4Bchance),'90D0') + end AS pf4_3 + ,case when sum(street3_FoldTo3Bchance) = 0 then '0' + else to_char(100.0*sum(street3_FoldTo3Bdone)/sum(street3_FoldTo3Bchance),'90D0') + end AS pff3_3 + ,case when sum(street3_FoldTo4Bchance) = 0 then '0' + else to_char(100.0*sum(street3_FoldTo4Bdone)/sum(street3_FoldTo4Bchance),'90D0') + end AS pff4_3 + ,case when sum(raiseFirstInChance) = 0 then '-' else to_char(100.0*sum(raisedFirstIn)/sum(raiseFirstInChance),'90D0') end AS steals @@ -6248,6 +9319,7 @@ def __init__(self, game='holdem', db_server='mysql'): if db_server == 'mysql': self.query['rebuildCache'] = """insert into ,n + ,street0VPIChance ,street0VPI ,street0AggrChance @@ -6270,6 +9342,66 @@ def __init__(self, game='holdem', db_server='mysql'): ,street0_FoldTo4BDone ,street0_SqueezeChance ,street0_SqueezeDone + ,street0_FoldToSqueezeChance + ,street0_FoldToSqueezeDone + + ,street1_2BChance + ,street1_2BDone + ,street1_3BChance + ,street1_3BDone + ,street1_4BChance + ,street1_4BDone + ,street1_C4BChance + ,street1_C4BDone + ,street1_FoldTo2BChance + ,street1_FoldTo2BDone + ,street1_FoldTo3BChance + ,street1_FoldTo3BDone + ,street1_FoldTo4BChance + ,street1_FoldTo4BDone + ,street1_SqueezeChance + ,street1_SqueezeDone + ,street1_FoldToSqueezeChance + ,street1_FoldToSqueezeDone + + ,street2_2BChance + ,street2_2BDone + ,street2_3BChance + ,street2_3BDone + ,street2_4BChance + ,street2_4BDone + ,street2_C4BChance + ,street2_C4BDone + ,street2_FoldTo2BChance + ,street2_FoldTo2BDone + ,street2_FoldTo3BChance + ,street2_FoldTo3BDone + ,street2_FoldTo4BChance + ,street2_FoldTo4BDone + ,street2_SqueezeChance + ,street2_SqueezeDone + ,street2_FoldToSqueezeChance + ,street2_FoldToSqueezeDone + + ,street3_2BChance + ,street3_2BDone + ,street3_3BChance + ,street3_3BDone + ,street3_4BChance + ,street3_4BDone + ,street3_C4BChance + ,street3_C4BDone + ,street3_FoldTo2BChance + ,street3_FoldTo2BDone + ,street3_FoldTo3BChance + ,street3_FoldTo3BDone + ,street3_FoldTo4BChance + ,street3_FoldTo4BDone + ,street3_SqueezeChance + ,street3_SqueezeDone + ,street3_FoldToSqueezeChance + ,street3_FoldToSqueezeDone + ,raiseToStealChance ,raiseToStealDone ,stealChance @@ -6294,6 +9426,16 @@ def __init__(self, game='holdem', db_server='mysql'): ,foldToOtherRaisedStreet2 ,foldToOtherRaisedStreet3 ,foldToOtherRaisedStreet4 + ,callToOtherRaisedStreet0 + ,callToOtherRaisedStreet1 + ,callToOtherRaisedStreet2 + ,callToOtherRaisedStreet3 + ,callToOtherRaisedStreet4 + ,raiseToOtherRaisedStreet0 + ,raiseToOtherRaisedStreet1 + ,raiseToOtherRaisedStreet2 + ,raiseToOtherRaisedStreet3 + ,raiseToOtherRaisedStreet4 ,wonWhenSeenStreet1 ,wonWhenSeenStreet2 ,wonWhenSeenStreet3 @@ -6321,6 +9463,22 @@ def __init__(self, game='holdem', db_server='mysql'): ,foldToStreet3CBDone ,foldToStreet4CBChance ,foldToStreet4CBDone + ,callToStreet1CBChance + ,callToStreet1CBDone + ,callToStreet2CBChance + ,callToStreet2CBDone + ,callToStreet3CBChance + ,callToStreet3CBDone + ,callToStreet4CBChance + ,callToStreet4CBDone + ,raiseToStreet1CBChance + ,raiseToStreet1CBDone + ,raiseToStreet2CBChance + ,raiseToStreet2CBDone + ,raiseToStreet3CBChance + ,raiseToStreet3CBDone + ,raiseToStreet4CBChance + ,raiseToStreet4CBDone ,common ,committed ,winnings @@ -6344,16 +9502,20 @@ def __init__(self, game='holdem', db_server='mysql'): ,street4CheckCallRaiseChance ,street4CheckCallDone ,street4CheckRaiseDone + ,street1foldToCheckRaiseChance + ,street1foldToCheckRaiseDone + ,street2foldToCheckRaiseChance + ,street2foldToCheckRaiseDone + ,street3foldToCheckRaiseChance + ,street3foldToCheckRaiseDone + ,street4foldToCheckRaiseChance + ,street4foldToCheckRaiseDone ,street0Calls ,street1Calls ,street2Calls ,street3Calls ,street4Calls - ,street0Bets - ,street1Bets - ,street2Bets - ,street3Bets - ,street4Bets + ,street0Raises ,street1Raises ,street2Raises @@ -6362,9 +9524,22 @@ def __init__(self, game='holdem', db_server='mysql'): ,street1Discards ,street2Discards ,street3Discards + + ,street0Callers + ,street1Callers + ,street2Callers + ,street3Callers + ,street4Callers + + ,street0Aggressors + ,street1Aggressors + ,street2Aggressors + ,street3Aggressors + ,street4Aggressors ) SELECT ,count(1) + ,sum(CAST(street0VPIChance as integer)) ,sum(CAST(street0VPI as integer)) ,sum(CAST(street0AggrChance as integer)) @@ -6629,6 +10010,66 @@ def __init__(self, game='holdem', db_server='mysql'): ,sum(CAST(street0_FoldTo4BDone as integer)) ,sum(CAST(street0_SqueezeChance as integer)) ,sum(CAST(street0_SqueezeDone as integer)) + ,sum(CAST(street0_FoldToSqueezeChance as integer)) + ,sum(CAST(street0_FoldToSqueezeDone as integer)) + + ,sum(CAST(street1_2BChance as integer)) + ,sum(CAST(street1_2BDone as integer)) + ,sum(CAST(street1_3BChance as integer)) + ,sum(CAST(street1_3BDone as integer)) + ,sum(CAST(street1_4BChance as integer)) + ,sum(CAST(street1_4BDone as integer)) + ,sum(CAST(street1_C4BChance as integer)) + ,sum(CAST(street1_C4BDone as integer)) + ,sum(CAST(street1_FoldTo2BChance as integer)) + ,sum(CAST(street1_FoldTo2BDone as integer)) + ,sum(CAST(street1_FoldTo3BChance as integer)) + ,sum(CAST(street1_FoldTo3BDone as integer)) + ,sum(CAST(street1_FoldTo4BChance as integer)) + ,sum(CAST(street1_FoldTo4BDone as integer)) + ,sum(CAST(street1_SqueezeChance as integer)) + ,sum(CAST(street1_SqueezeDone as integer)) + ,sum(CAST(street1_FoldToSqueezeChance as integer)) + ,sum(CAST(street1_FoldToSqueezeDone as integer)) + + ,sum(CAST(street2_2BChance as integer)) + ,sum(CAST(street2_2BDone as integer)) + ,sum(CAST(street2_3BChance as integer)) + ,sum(CAST(street2_3BDone as integer)) + ,sum(CAST(street2_4BChance as integer)) + ,sum(CAST(street2_4BDone as integer)) + ,sum(CAST(street2_C4BChance as integer)) + ,sum(CAST(street2_C4BDone as integer)) + ,sum(CAST(street2_FoldTo2BChance as integer)) + ,sum(CAST(street2_FoldTo2BDone as integer)) + ,sum(CAST(street2_FoldTo3BChance as integer)) + ,sum(CAST(street2_FoldTo3BDone as integer)) + ,sum(CAST(street2_FoldTo4BChance as integer)) + ,sum(CAST(street2_FoldTo4BDone as integer)) + ,sum(CAST(street2_SqueezeChance as integer)) + ,sum(CAST(street2_SqueezeDone as integer)) + ,sum(CAST(street2_FoldToSqueezeChance as integer)) + ,sum(CAST(street2_FoldToSqueezeDone as integer)) + + ,sum(CAST(street3_2BChance as integer)) + ,sum(CAST(street3_2BDone as integer)) + ,sum(CAST(street3_3BChance as integer)) + ,sum(CAST(street3_3BDone as integer)) + ,sum(CAST(street3_4BChance as integer)) + ,sum(CAST(street3_4BDone as integer)) + ,sum(CAST(street3_C4BChance as integer)) + ,sum(CAST(street3_C4BDone as integer)) + ,sum(CAST(street3_FoldTo2BChance as integer)) + ,sum(CAST(street3_FoldTo2BDone as integer)) + ,sum(CAST(street3_FoldTo3BChance as integer)) + ,sum(CAST(street3_FoldTo3BDone as integer)) + ,sum(CAST(street3_FoldTo4BChance as integer)) + ,sum(CAST(street3_FoldTo4BDone as integer)) + ,sum(CAST(street3_SqueezeChance as integer)) + ,sum(CAST(street3_SqueezeDone as integer)) + ,sum(CAST(street3_FoldToSqueezeChance as integer)) + ,sum(CAST(street3_FoldToSqueezeDone as integer)) + ,sum(CAST(raiseToStealChance as integer)) ,sum(CAST(raiseToStealDone as integer)) ,sum(CAST(stealChance as integer)) @@ -6652,7 +10093,17 @@ def __init__(self, game='holdem', db_server='mysql'): ,sum(CAST(foldToOtherRaisedStreet1 as integer)) ,sum(CAST(foldToOtherRaisedStreet2 as integer)) ,sum(CAST(foldToOtherRaisedStreet3 as integer)) - ,sum(CAST(foldToOtherRaisedStreet4 as integer)) + ,sum(CAST(foldToOtherRaisedStreet4 as integer)) + ,sum(CAST(callToOtherRaisedStreet0 as integer)) + ,sum(CAST(callToOtherRaisedStreet1 as integer)) + ,sum(CAST(callToOtherRaisedStreet2 as integer)) + ,sum(CAST(callToOtherRaisedStreet3 as integer)) + ,sum(CAST(callToOtherRaisedStreet4 as integer)) + ,sum(CAST(raiseToOtherRaisedStreet0 as integer)) + ,sum(CAST(raiseToOtherRaisedStreet1 as integer)) + ,sum(CAST(raiseToOtherRaisedStreet2 as integer)) + ,sum(CAST(raiseToOtherRaisedStreet3 as integer)) + ,sum(CAST(raiseToOtherRaisedStreet4 as integer)) ,sum(CAST(wonWhenSeenStreet1 as integer)) ,sum(CAST(wonWhenSeenStreet2 as integer)) ,sum(CAST(wonWhenSeenStreet3 as integer)) @@ -6680,6 +10131,22 @@ def __init__(self, game='holdem', db_server='mysql'): ,sum(CAST(foldToStreet3CBDone as integer)) ,sum(CAST(foldToStreet4CBChance as integer)) ,sum(CAST(foldToStreet4CBDone as integer)) + ,sum(CAST(callToStreet1CBChance as integer)) + ,sum(CAST(callToStreet1CBDone as integer)) + ,sum(CAST(callToStreet2CBChance as integer)) + ,sum(CAST(callToStreet2CBDone as integer)) + ,sum(CAST(callToStreet3CBChance as integer)) + ,sum(CAST(callToStreet3CBDone as integer)) + ,sum(CAST(callToStreet4CBChance as integer)) + ,sum(CAST(callToStreet4CBDone as integer)) + ,sum(CAST(raiseToStreet1CBChance as integer)) + ,sum(CAST(raiseToStreet1CBDone as integer)) + ,sum(CAST(raiseToStreet2CBChance as integer)) + ,sum(CAST(raiseToStreet2CBDone as integer)) + ,sum(CAST(raiseToStreet3CBChance as integer)) + ,sum(CAST(raiseToStreet3CBDone as integer)) + ,sum(CAST(raiseToStreet4CBChance as integer)) + ,sum(CAST(raiseToStreet4CBDone as integer)) ,sum(common) ,sum(committed) ,sum(winnings) @@ -6703,16 +10170,20 @@ def __init__(self, game='holdem', db_server='mysql'): ,sum(CAST(street4CheckCallRaiseChance as integer)) ,sum(CAST(street4CheckCallDone as integer)) ,sum(CAST(street4CheckRaiseDone as integer)) - ,sum(CAST(street0Calls as integer)) - ,sum(CAST(street1Calls as integer)) - ,sum(CAST(street2Calls as integer)) - ,sum(CAST(street3Calls as integer)) - ,sum(CAST(street4Calls as integer)) - ,sum(CAST(street0Bets as integer)) - ,sum(CAST(street1Bets as integer)) - ,sum(CAST(street2Bets as integer)) - ,sum(CAST(street3Bets as integer)) - ,sum(CAST(street4Bets as integer)) + ,sum(CAST(street1foldToCheckRaiseChance as integer)) + ,sum(CAST(street1foldToCheckRaiseDone as integer)) + ,sum(CAST(street2foldToCheckRaiseChance as integer)) + ,sum(CAST(street2foldToCheckRaiseDone as integer)) + ,sum(CAST(street3foldToCheckRaiseChance as integer)) + ,sum(CAST(street3foldToCheckRaiseDone as integer)) + ,sum(CAST(street4foldToCheckRaiseChance as integer)) + ,sum(CAST(street4foldToCheckRaiseDone as integer)) + ,sum(CAST(hp.street0Calls as integer)) + ,sum(CAST(hp.street1Calls as integer)) + ,sum(CAST(hp.street2Calls as integer)) + ,sum(CAST(hp.street3Calls as integer)) + ,sum(CAST(hp.street4Calls as integer)) + ,sum(CAST(hp.street0Raises as integer)) ,sum(CAST(hp.street1Raises as integer)) ,sum(CAST(hp.street2Raises as integer)) @@ -6721,6 +10192,18 @@ def __init__(self, game='holdem', db_server='mysql'): ,sum(CAST(street1Discards as integer)) ,sum(CAST(street2Discards as integer)) ,sum(CAST(street3Discards as integer)) + + ,sum(CAST(hp.street0Callers as integer)) + ,sum(CAST(hp.street1Callers as integer)) + ,sum(CAST(hp.street2Callers as integer)) + ,sum(CAST(hp.street3Callers as integer)) + ,sum(CAST(hp.street4Callers as integer)) + + ,sum(CAST(hp.street0Aggressors as integer)) + ,sum(CAST(hp.street1Aggressors as integer)) + ,sum(CAST(hp.street2Aggressors as integer)) + ,sum(CAST(hp.street3Aggressors as integer)) + ,sum(CAST(hp.street4Aggressors as integer)) FROM Hands h INNER JOIN HandsPlayers hp ON (h.id = hp.handId) INNER JOIN Gametypes g ON (h.gametypeId = g.id) @@ -6732,6 +10215,7 @@ def __init__(self, game='holdem', db_server='mysql'): elif db_server == 'sqlite': self.query['rebuildCache'] = """insert into ,n + ,street0VPIChance ,street0VPI ,street0AggrChance @@ -6754,6 +10238,66 @@ def __init__(self, game='holdem', db_server='mysql'): ,street0_FoldTo4BDone ,street0_SqueezeChance ,street0_SqueezeDone + ,street0_FoldToSqueezeChance + ,street0_FoldToSqueezeDone + + ,street1_2BChance + ,street1_2BDone + ,street1_3BChance + ,street1_3BDone + ,street1_4BChance + ,street1_4BDone + ,street1_C4BChance + ,street1_C4BDone + ,street1_FoldTo2BChance + ,street1_FoldTo2BDone + ,street1_FoldTo3BChance + ,street1_FoldTo3BDone + ,street1_FoldTo4BChance + ,street1_FoldTo4BDone + ,street1_SqueezeChance + ,street1_SqueezeDone + ,street1_FoldToSqueezeChance + ,street1_FoldToSqueezeDone + + ,street2_2BChance + ,street2_2BDone + ,street2_3BChance + ,street2_3BDone + ,street2_4BChance + ,street2_4BDone + ,street2_C4BChance + ,street2_C4BDone + ,street2_FoldTo2BChance + ,street2_FoldTo2BDone + ,street2_FoldTo3BChance + ,street2_FoldTo3BDone + ,street2_FoldTo4BChance + ,street2_FoldTo4BDone + ,street2_SqueezeChance + ,street2_SqueezeDone + ,street2_FoldToSqueezeChance + ,street2_FoldToSqueezeDone + + ,street3_2BChance + ,street3_2BDone + ,street3_3BChance + ,street3_3BDone + ,street3_4BChance + ,street3_4BDone + ,street3_C4BChance + ,street3_C4BDone + ,street3_FoldTo2BChance + ,street3_FoldTo2BDone + ,street3_FoldTo3BChance + ,street3_FoldTo3BDone + ,street3_FoldTo4BChance + ,street3_FoldTo4BDone + ,street3_SqueezeChance + ,street3_SqueezeDone + ,street3_FoldToSqueezeChance + ,street3_FoldToSqueezeDone + ,raiseToStealChance ,raiseToStealDone ,stealChance @@ -6778,6 +10322,16 @@ def __init__(self, game='holdem', db_server='mysql'): ,foldToOtherRaisedStreet2 ,foldToOtherRaisedStreet3 ,foldToOtherRaisedStreet4 + ,callToOtherRaisedStreet0 + ,callToOtherRaisedStreet1 + ,callToOtherRaisedStreet2 + ,callToOtherRaisedStreet3 + ,callToOtherRaisedStreet4 + ,raiseToOtherRaisedStreet0 + ,raiseToOtherRaisedStreet1 + ,raiseToOtherRaisedStreet2 + ,raiseToOtherRaisedStreet3 + ,raiseToOtherRaisedStreet4 ,wonWhenSeenStreet1 ,wonWhenSeenStreet2 ,wonWhenSeenStreet3 @@ -6805,6 +10359,22 @@ def __init__(self, game='holdem', db_server='mysql'): ,foldToStreet3CBDone ,foldToStreet4CBChance ,foldToStreet4CBDone + ,callToStreet1CBChance + ,callToStreet1CBDone + ,callToStreet2CBChance + ,callToStreet2CBDone + ,callToStreet3CBChance + ,callToStreet3CBDone + ,callToStreet4CBChance + ,callToStreet4CBDone + ,raiseToStreet1CBChance + ,raiseToStreet1CBDone + ,raiseToStreet2CBChance + ,raiseToStreet2CBDone + ,raiseToStreet3CBChance + ,raiseToStreet3CBDone + ,raiseToStreet4CBChance + ,raiseToStreet4CBDone ,common ,committed ,winnings @@ -6828,16 +10398,20 @@ def __init__(self, game='holdem', db_server='mysql'): ,street4CheckCallRaiseChance ,street4CheckCallDone ,street4CheckRaiseDone + ,street1foldToCheckRaiseChance + ,street1foldToCheckRaiseDone + ,street2foldToCheckRaiseChance + ,street2foldToCheckRaiseDone + ,street3foldToCheckRaiseChance + ,street3foldToCheckRaiseDone + ,street4foldToCheckRaiseChance + ,street4foldToCheckRaiseDone ,street0Calls ,street1Calls ,street2Calls ,street3Calls ,street4Calls - ,street0Bets - ,street1Bets - ,street2Bets - ,street3Bets - ,street4Bets + ,street0Raises ,street1Raises ,street2Raises @@ -6846,9 +10420,22 @@ def __init__(self, game='holdem', db_server='mysql'): ,street1Discards ,street2Discards ,street3Discards + + ,street0Callers + ,street1Callers + ,street2Callers + ,street3Callers + ,street4Callers + + ,street0Aggressors + ,street1Aggressors + ,street2Aggressors + ,street3Aggressors + ,street4Aggressors ) SELECT