e154bdd8f4
(note that due to the use of a table in the hud display, it can get a little.. ugly.. looking) Add "playername" to list of available stats MIGHT close huds when poker table is closed in Nix. It doesn't in Windows, but it should.
629 lines
24 KiB
Python
629 lines
24 KiB
Python
#!/usr/bin/env python
|
|
|
|
"""Manage collecting and formatting of stats and tooltips.
|
|
"""
|
|
# Copyright 2008, Ray E. Barker
|
|
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
|
########################################################################
|
|
|
|
# How to write a new stat:
|
|
# 1 You can see a listing of all the raw stats (e.g., from the HudCache table)
|
|
# by running Database.py as a stand along program. You need to combine
|
|
# those raw stats to get stats to present to the HUD. If you need more
|
|
# information than is in the HudCache table, then you have to write SQL.
|
|
# 2 The raw stats seen when you run Database.py are available in the Stats.py
|
|
# in the stat_dict dict. For example the number of vpips would be
|
|
# stat_dict[player]['vpip']. So the % vpip is
|
|
# float(stat_dict[player]['vpip'])/float(stat_dict[player]['n']). You can see how the
|
|
# keys of stat_dict relate to the column names in HudCache by inspecting
|
|
# the proper section of the SQL.py module.
|
|
# 3 You have to write a small function for each stat you want to add. See
|
|
# the vpip() function for example. This function has to be protected from
|
|
# exceptions, using something like the try:/except: paragraphs in vpip.
|
|
# 4 The name of the function has to be the same as the of the stat used
|
|
# in the config file.
|
|
# 5 The stat functions have a peculiar return value, which is outlined in
|
|
# the do_stat function. This format is useful for tool tips and maybe
|
|
# other stuff.
|
|
# 6 For each stat you make add a line to the __main__ function to test it.
|
|
|
|
# Standard Library modules
|
|
#import sys
|
|
|
|
# pyGTK modules
|
|
import pygtk
|
|
import gtk
|
|
|
|
# FreePokerTools modules
|
|
import Configuration
|
|
import Database
|
|
|
|
def do_tip(widget, tip):
|
|
widget.set_tooltip_text(tip)
|
|
|
|
def do_stat(stat_dict, player = 24, stat = 'vpip'):
|
|
return eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player})
|
|
|
|
# OK, for reference the tuple returned by the stat is:
|
|
# 0 - The stat, raw, no formating, eg 0.33333333
|
|
# 1 - formatted stat with appropriate precision and punctuation, eg 33%
|
|
# 2 - formatted stat with appropriate precision, punctuation and a hint, eg v=33%
|
|
# 3 - same as #2 except name of stat instead of hint, eg vpip=33%
|
|
# 4 - the calculation that got the stat, eg 9/27
|
|
# 5 - the name of the stat, useful for a tooltip, eg vpip
|
|
|
|
###########################################
|
|
# functions that return individual stats
|
|
|
|
def playername(stat_dict, player):
|
|
return (stat_dict[player]['screen_name'],
|
|
stat_dict[player]['screen_name'],
|
|
stat_dict[player]['screen_name'],
|
|
stat_dict[player]['screen_name'],
|
|
stat_dict[player]['screen_name'],
|
|
stat_dict[player]['screen_name'])
|
|
|
|
def vpip(stat_dict, player):
|
|
""" Voluntarily put $ in the pot."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'v=%3.1f' % (100*stat) + '%',
|
|
'vpip=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']),
|
|
'vpip'
|
|
)
|
|
except: return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'w=%3.1f' % (0) + '%',
|
|
'wtsd=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'wtsd'
|
|
)
|
|
|
|
def pfr(stat_dict, player):
|
|
""" Preflop (3rd street) raise."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['pfr'])/float(stat_dict[player]['n'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'p=%3.1f' % (100*stat) + '%',
|
|
'pfr=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['pfr'], stat_dict[player]['n']),
|
|
'pfr'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'p=%3.1f' % (0) + '%',
|
|
'pfr=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'pfr'
|
|
)
|
|
|
|
def wtsd(stat_dict, player):
|
|
""" Went to SD when saw flop/4th."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['sd'])/float(stat_dict[player]['saw_f'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'w=%3.1f' % (100*stat) + '%',
|
|
'wtsd=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']),
|
|
'% went to showdown'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'w=%3.1f' % (0) + '%',
|
|
'wtsd=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% went to showdown'
|
|
)
|
|
|
|
def wmsd(stat_dict, player):
|
|
""" Won $ at showdown."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['wmsd'])/float(stat_dict[player]['sd'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'w=%3.1f' % (100*stat) + '%',
|
|
'wmsd=%3.1f' % (100*stat) + '%',
|
|
'(%f5.0/%d)' % (stat_dict[player]['wmsd'], stat_dict[player]['sd']),
|
|
'% won money at showdown'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'w=%3.1f' % (0) + '%',
|
|
'wmsd=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% won money at showdown'
|
|
)
|
|
|
|
def saw_f(stat_dict, player):
|
|
""" Saw flop/4th."""
|
|
try:
|
|
num = float(stat_dict[player]['saw_f'])
|
|
den = float(stat_dict[player]['n'])
|
|
stat = num/den
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'sf=%3.1f' % (100*stat) + '%',
|
|
'saw_f=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['saw_f'], stat_dict[player]['n']),
|
|
'saw_f'
|
|
)
|
|
except:
|
|
stat = 0.0
|
|
num = 0
|
|
den = 0
|
|
return (stat,
|
|
'%3.1f' % (stat) + '%',
|
|
'sf=%3.1f' % (stat) + '%',
|
|
'saw_f=%3.1f' % (stat) + '%',
|
|
'(%d/%d)' % (num, den),
|
|
'saw_f'
|
|
)
|
|
|
|
def n(stat_dict, player):
|
|
""" Number of hands played."""
|
|
try:
|
|
return (stat_dict[player]['n'],
|
|
'%d' % (stat_dict[player]['n']),
|
|
'n=%d' % (stat_dict[player]['n']),
|
|
'n=%d' % (stat_dict[player]['n']),
|
|
'(%d)' % (stat_dict[player]['n']),
|
|
'number hands seen'
|
|
)
|
|
except:
|
|
return (0,
|
|
'%d' % (0),
|
|
'n=%d' % (0),
|
|
'n=%d' % (0),
|
|
'(%d)' % (0),
|
|
'number hands seen'
|
|
)
|
|
|
|
def fold_f(stat_dict, player):
|
|
""" Folded flop/4th."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['fold_2'])/fold(stat_dict[player]['saw_f'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'ff=%3.1f' % (100*stat) + '%',
|
|
'fold_f=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['fold_2'], stat_dict[player]['saw_f']),
|
|
'folded flop/4th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'ff=%3.1f' % (0) + '%',
|
|
'fold_f=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'folded flop/4th'
|
|
)
|
|
|
|
def steal(stat_dict, player):
|
|
""" Steal %."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['steal'])/float(stat_dict[player]['steal_opp'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'st=%3.1f' % (100*stat) + '%',
|
|
'steal=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']),
|
|
'% steal attempted'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'st=%3.1f' % (0) + '%',
|
|
'steal=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% steal attempted'
|
|
)
|
|
|
|
def f_SB_steal(stat_dict, player):
|
|
""" Folded SB to steal."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['SBnotDef'])/float(stat_dict[player]['SBstolen'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'fSB=%3.1f' % (100*stat) + '%',
|
|
'fSB_s=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['SBnotDef'], stat_dict[player]['SBstolen']),
|
|
'% folded SB to steal'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'fSB=%3.1f' % (0) + '%',
|
|
'fSB_s=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% folded SB to steal'
|
|
)
|
|
|
|
def f_BB_steal(stat_dict, player):
|
|
""" Folded BB to steal."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['BBnotDef'])/float(stat_dict[player]['BBstolen'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'fBB=%3.1f' % (100*stat) + '%',
|
|
'fBB_s=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['BBnotDef'], stat_dict[player]['BBstolen']),
|
|
'% folded BB to steal'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'fBB=%3.1f' % (0) + '%',
|
|
'fBB_s=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% folded BB to steal'
|
|
)
|
|
|
|
def three_B_0(stat_dict, player):
|
|
""" Three bet preflop/3rd."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['TB_0'])/float(stat_dict[player]['TB_opp_0'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'3B=%3.1f' % (100*stat) + '%',
|
|
'3B_pf=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['TB_0'], stat_dict[player]['TB_opp_0']),
|
|
'% 3/4 Bet preflop/3rd'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'3B=%3.1f' % (0) + '%',
|
|
'3B_pf=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% 3/4 Bet preflop/3rd'
|
|
)
|
|
|
|
def WMsF(stat_dict, player):
|
|
""" Won $ when saw flop/4th."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['w_w_s_1'])/float(stat_dict[player]['saw_1'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'wf=%3.1f' % (100*stat) + '%',
|
|
'w_w_f=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['w_w_s_1'], stat_dict[player]['saw_f']),
|
|
'% won$/saw flop/4th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'wf=%3.1f' % (0) + '%',
|
|
'w_w_f=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% won$/saw flop/4th'
|
|
)
|
|
|
|
def a_freq_1(stat_dict, player):
|
|
""" Flop/4th aggression frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['aggr_1'])/float(stat_dict[player]['saw_f'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'a1=%3.1f' % (100*stat) + '%',
|
|
'a_fq_1=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['aggr_1'], stat_dict[player]['saw_f']),
|
|
'Aggression Freq flop/4th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'a1=%3.1f' % (0) + '%',
|
|
'a_fq_1=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'Aggression Freq flop/4th'
|
|
)
|
|
|
|
def a_freq_2(stat_dict, player):
|
|
""" Turn/5th aggression frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['aggr_2'])/float(stat_dict[player]['saw_2'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'a2=%3.1f' % (100*stat) + '%',
|
|
'a_fq_2=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['aggr_2'], stat_dict[player]['saw_2']),
|
|
'Aggression Freq turn/5th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'a2=%3.1f' % (0) + '%',
|
|
'a_fq_2=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'Aggression Freq turn/5th'
|
|
)
|
|
|
|
def a_freq_3(stat_dict, player):
|
|
""" River/6th aggression frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['aggr_3'])/float(stat_dict[player]['saw_3'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'a3=%3.1f' % (100*stat) + '%',
|
|
'a_fq_3=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['aggr_1'], stat_dict[player]['saw_1']),
|
|
'Aggression Freq river/6th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'a3=%3.1f' % (0) + '%',
|
|
'a_fq_3=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'Aggression Freq river/6th'
|
|
)
|
|
|
|
def a_freq_4(stat_dict, player):
|
|
""" 7th street aggression frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['aggr_4'])/float(stat_dict[player]['saw_4'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'a4=%3.1f' % (100*stat) + '%',
|
|
'a_fq_4=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['aggr_4'], stat_dict[player]['saw_4']),
|
|
'Aggression Freq 7th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'a4=%3.1f' % (0) + '%',
|
|
'a_fq_4=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'Aggression Freq flop/4th'
|
|
)
|
|
|
|
def cb_1(stat_dict, player):
|
|
""" Flop continuation bet."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['CB_1'])/float(stat_dict[player]['CB_opp_1'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'cb1=%3.1f' % (100*stat) + '%',
|
|
'cb_1=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['CB_1'], stat_dict[player]['CB_opp_1']),
|
|
'% continuation bet flop/4th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'cb1=%3.1f' % (0) + '%',
|
|
'cb_1=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% continuation bet flop/4th'
|
|
)
|
|
|
|
def cb_2(stat_dict, player):
|
|
""" Turn continuation bet."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['CB_2'])/float(stat_dict[player]['CB_opp_2'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'cb2=%3.1f' % (100*stat) + '%',
|
|
'cb_2=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['CB_2'], stat_dict[player]['CB_opp_2']),
|
|
'% continuation bet turn/5th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'cb2=%3.1f' % (0) + '%',
|
|
'cb_2=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% continuation bet turn/5th'
|
|
)
|
|
|
|
def cb_3(stat_dict, player):
|
|
""" River continuation bet."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['CB_3'])/float(stat_dict[player]['CB_opp_3'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'cb3=%3.1f' % (100*stat) + '%',
|
|
'cb_3=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['CB_3'], stat_dict[player]['CB_opp_3']),
|
|
'% continuation bet river/6th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'cb3=%3.1f' % (0) + '%',
|
|
'cb_3=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% continuation bet river/6th'
|
|
)
|
|
|
|
def cb_4(stat_dict, player):
|
|
""" 7th street continuation bet."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['CB_4'])/float(stat_dict[player]['CB_opp_4'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'cb4=%3.1f' % (100*stat) + '%',
|
|
'cb_4=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['CB_4'], stat_dict[player]['CB_opp_4']),
|
|
'% continuation bet 7th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'cb4=%3.1f' % (0) + '%',
|
|
'cb_4=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% continuation bet 7th'
|
|
)
|
|
|
|
def ffreq_1(stat_dict, player):
|
|
""" Flop/4th fold frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['f_freq_1'])/float(stat_dict[player]['was_raised_1'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'ff1=%3.1f' % (100*stat) + '%',
|
|
'ff_1=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['f_freq_1'], stat_dict[player]['was_raised_1']),
|
|
'% fold frequency flop/4th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'ff1=%3.1f' % (0) + '%',
|
|
'ff_1=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% fold frequency flop/4th'
|
|
)
|
|
|
|
def ffreq_2(stat_dict, player):
|
|
""" Turn/5th fold frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['f_freq_2'])/float(stat_dict[player]['was_raised_2'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'ff2=%3.1f' % (100*stat) + '%',
|
|
'ff_2=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['f_freq_2'], stat_dict[player]['was_raised_2']),
|
|
'% fold frequency turn/5th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'ff2=%3.1f' % (0) + '%',
|
|
'ff_2=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% fold frequency turn/5th'
|
|
)
|
|
|
|
def ffreq_3(stat_dict, player):
|
|
""" River/6th fold frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['f_freq_3'])/float(stat_dict[player]['was_raised_3'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'ff3=%3.1f' % (100*stat) + '%',
|
|
'ff_3=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['f_freq_3'], stat_dict[player]['was_raised_3']),
|
|
'% fold frequency river/6th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'ff3=%3.1f' % (0) + '%',
|
|
'ff_3=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% fold frequency river/6th'
|
|
)
|
|
|
|
def ffreq_4(stat_dict, player):
|
|
""" 7th fold frequency."""
|
|
stat = 0.0
|
|
try:
|
|
stat = float(stat_dict[player]['f_freq_4'])/float(stat_dict[player]['was_raised_4'])
|
|
return (stat,
|
|
'%3.1f' % (100*stat) + '%',
|
|
'ff4=%3.1f' % (100*stat) + '%',
|
|
'ff_4=%3.1f' % (100*stat) + '%',
|
|
'(%d/%d)' % (stat_dict[player]['f_freq_4'], stat_dict[player]['was_raised_4']),
|
|
'% fold frequency 7th'
|
|
)
|
|
except:
|
|
return (stat,
|
|
'%3.1f' % (0) + '%',
|
|
'ff4=%3.1f' % (0) + '%',
|
|
'ff_4=%3.1f' % (0) + '%',
|
|
'(%d/%d)' % (0, 0),
|
|
'% fold frequency 7th'
|
|
)
|
|
|
|
if __name__== "__main__":
|
|
c = Configuration.Config()
|
|
db_connection = Database.Database(c, 'fpdb', 'holdem')
|
|
h = db_connection.get_last_hand()
|
|
stat_dict = db_connection.get_stats_from_hand(h)
|
|
|
|
for player in stat_dict.keys():
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'vpip')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'pfr')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'wtsd')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'saw_f')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'n')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'fold_f')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'wmsd')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'steal')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'f_SB_steal')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'f_BB_steal')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'three_B_0')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'WMsF')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_1')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_2')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_3')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_4')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_1')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_2')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_3')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_4')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_1')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_2')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_3')
|
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_4')
|
|
|
|
print "\n\nLegal stats:"
|
|
for attr in dir():
|
|
if attr.startswith('__'): continue
|
|
if attr in ("Configuration", "Database", "GInitiallyUnowned", "gtk", "pygtk",
|
|
"player", "c", "db_connection", "do_stat", "do_tip", "stat_dict",
|
|
"h"): continue
|
|
print attr, eval("%s.__doc__" % (attr))
|
|
# print " <pu_stat pu_stat_name = \"%s\"> </pu_stat>" % (attr)
|
|
|
|
db_connection.close
|
|
|