Merge branch 'master' of git://git.assembla.com/fpdb-sql
This commit is contained in:
commit
c3a408766d
233
pyfpdb/Stats.py
233
pyfpdb/Stats.py
|
@ -22,6 +22,8 @@
|
||||||
########################################################################
|
########################################################################
|
||||||
|
|
||||||
# How to write a new stat:
|
# How to write a new stat:
|
||||||
|
# 0 Do not use a name like "xyz_2". Names ending in _ and a single digit are
|
||||||
|
# used to indicate the number of decimal places the user wants to see in the Hud.
|
||||||
# 1 You can see a listing of all the raw stats (e.g., from the HudCache table)
|
# 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
|
# 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
|
# those raw stats to get stats to present to the HUD. If you need more
|
||||||
|
@ -50,16 +52,34 @@
|
||||||
# pyGTK modules
|
# pyGTK modules
|
||||||
import pygtk
|
import pygtk
|
||||||
import gtk
|
import gtk
|
||||||
|
import re
|
||||||
|
|
||||||
# FreePokerTools modules
|
# FreePokerTools modules
|
||||||
import Configuration
|
import Configuration
|
||||||
import Database
|
import Database
|
||||||
|
|
||||||
|
|
||||||
|
re_Places = re.compile("_[0-9]$")
|
||||||
|
re_Percent = re.compile("%$")
|
||||||
|
|
||||||
|
|
||||||
def do_tip(widget, tip):
|
def do_tip(widget, tip):
|
||||||
widget.set_tooltip_text(tip)
|
widget.set_tooltip_text(tip)
|
||||||
|
|
||||||
def do_stat(stat_dict, player = 24, stat = 'vpip'):
|
def do_stat(stat_dict, player = 24, stat = 'vpip'):
|
||||||
return eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player})
|
match = re_Places.search(stat)
|
||||||
|
if match == None:
|
||||||
|
result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': stat, 'player': player})
|
||||||
|
else:
|
||||||
|
base = stat[0:-2]
|
||||||
|
places = int(stat[-1:])
|
||||||
|
result = eval("%(stat)s(stat_dict, %(player)d)" % {'stat': base, 'player': player})
|
||||||
|
match = re_Percent.search(result[1])
|
||||||
|
if match == None:
|
||||||
|
result = (result[0], "%.*f" % (places, result[0]), result[2], result[3], result[4], result[5])
|
||||||
|
else:
|
||||||
|
result = (result[0], "%.*f%%" % (places, 100*result[0]), result[2], result[3], result[4], result[5])
|
||||||
|
return result
|
||||||
|
|
||||||
# OK, for reference the tuple returned by the stat is:
|
# OK, for reference the tuple returned by the stat is:
|
||||||
# 0 - The stat, raw, no formating, eg 0.33333333
|
# 0 - The stat, raw, no formating, eg 0.33333333
|
||||||
|
@ -108,26 +128,6 @@ def vpip(stat_dict, player):
|
||||||
'Voluntarily Put In Pot %'
|
'Voluntarily Put In Pot %'
|
||||||
)
|
)
|
||||||
|
|
||||||
def vpip_0(stat_dict, player):
|
|
||||||
""" Voluntarily put $ in the pot (no decimals)."""
|
|
||||||
stat = 0.0
|
|
||||||
try:
|
|
||||||
stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n'])
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (100*stat) + '%',
|
|
||||||
'v=%2.0f' % (100*stat) + '%',
|
|
||||||
'vpip=%2.0f' % (100*stat) + '%',
|
|
||||||
'(%d/%d)' % (stat_dict[player]['vpip'], stat_dict[player]['n']),
|
|
||||||
'vpip'
|
|
||||||
)
|
|
||||||
except: return (stat,
|
|
||||||
'%2.0f' % (0) + '%',
|
|
||||||
'w=%2.0f' % (0) + '%',
|
|
||||||
'wtsd=%2.0f' % (0) + '%',
|
|
||||||
'(%d/%d)' % (0, 0),
|
|
||||||
'wtsd'
|
|
||||||
)
|
|
||||||
|
|
||||||
def pfr(stat_dict, player):
|
def pfr(stat_dict, player):
|
||||||
""" Preflop (3rd street) raise."""
|
""" Preflop (3rd street) raise."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
|
@ -149,27 +149,6 @@ def pfr(stat_dict, player):
|
||||||
'Pre-Flop Raise %'
|
'Pre-Flop Raise %'
|
||||||
)
|
)
|
||||||
|
|
||||||
def pfr_0(stat_dict, player):
|
|
||||||
""" Preflop (3rd street) raise (no decimals)."""
|
|
||||||
stat = 0.0
|
|
||||||
try:
|
|
||||||
stat = float(stat_dict[player]['pfr'])/float(stat_dict[player]['n'])
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (100*stat) + '%',
|
|
||||||
'p=%2.0f' % (100*stat) + '%',
|
|
||||||
'pfr=%2.0f' % (100*stat) + '%',
|
|
||||||
'(%d/%d)' % (stat_dict[player]['pfr'], stat_dict[player]['n']),
|
|
||||||
'pfr'
|
|
||||||
)
|
|
||||||
except:
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (0) + '%',
|
|
||||||
'p=%2.0f' % (0) + '%',
|
|
||||||
'pfr=%2.0f' % (0) + '%',
|
|
||||||
'(%d/%d)' % (0, 0),
|
|
||||||
'pfr'
|
|
||||||
)
|
|
||||||
|
|
||||||
def wtsd(stat_dict, player):
|
def wtsd(stat_dict, player):
|
||||||
""" Went to SD when saw flop/4th."""
|
""" Went to SD when saw flop/4th."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
|
@ -191,27 +170,6 @@ def wtsd(stat_dict, player):
|
||||||
'% went to showdown'
|
'% went to showdown'
|
||||||
)
|
)
|
||||||
|
|
||||||
def wtsd_0(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,
|
|
||||||
'%2.0f' % (100*stat) + '%',
|
|
||||||
'w=%2.0f' % (100*stat) + '%',
|
|
||||||
'wtsd=%2.0f' % (100*stat) + '%',
|
|
||||||
'(%d/%d)' % (stat_dict[player]['sd'], stat_dict[player]['saw_f']),
|
|
||||||
'% went to showdown'
|
|
||||||
)
|
|
||||||
except:
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (0) + '%',
|
|
||||||
'w=%2.0f' % (0) + '%',
|
|
||||||
'wtsd=%2.0f' % (0) + '%',
|
|
||||||
'(%d/%d)' % (0, 0),
|
|
||||||
'% went to showdown'
|
|
||||||
)
|
|
||||||
|
|
||||||
def wmsd(stat_dict, player):
|
def wmsd(stat_dict, player):
|
||||||
""" Won $ at showdown."""
|
""" Won $ at showdown."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
|
@ -233,28 +191,7 @@ def wmsd(stat_dict, player):
|
||||||
'% won money at showdown'
|
'% won money at showdown'
|
||||||
)
|
)
|
||||||
|
|
||||||
def wmsd_0(stat_dict, player):
|
def profit100(stat_dict, player):
|
||||||
""" Won $ at showdown."""
|
|
||||||
stat = 0.0
|
|
||||||
try:
|
|
||||||
stat = float(stat_dict[player]['wmsd'])/float(stat_dict[player]['sd'])
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (100*stat) + '%',
|
|
||||||
'w=%2.0f' % (100*stat) + '%',
|
|
||||||
'wmsd=%2.0f' % (100*stat) + '%',
|
|
||||||
'(%5.1f/%d)' % (float(stat_dict[player]['wmsd']), stat_dict[player]['sd']),
|
|
||||||
'% won money at showdown'
|
|
||||||
)
|
|
||||||
except:
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (0) + '%',
|
|
||||||
'w=%2.0f' % (0) + '%',
|
|
||||||
'wmsd=%2.0f' % (0) + '%',
|
|
||||||
'(%d/%d)' % (0, 0),
|
|
||||||
'% won money at showdown'
|
|
||||||
)
|
|
||||||
|
|
||||||
def profit100_0(stat_dict, player):
|
|
||||||
""" Profit won per 100 hands (no decimal places)."""
|
""" Profit won per 100 hands (no decimal places)."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -356,27 +293,6 @@ def steal(stat_dict, player):
|
||||||
except:
|
except:
|
||||||
return (stat, 'NA', 'st=NA', 'steal=NA', '(0/0)', '% steal attempted')
|
return (stat, 'NA', 'st=NA', 'steal=NA', '(0/0)', '% steal attempted')
|
||||||
|
|
||||||
def steal_0(stat_dict, player):
|
|
||||||
""" Steal %."""
|
|
||||||
stat = 0.0
|
|
||||||
try:
|
|
||||||
stat = float(stat_dict[player]['steal'])/float(stat_dict[player]['steal_opp'])
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (100*stat) + '%',
|
|
||||||
'st=%2.0f' % (100*stat) + '%',
|
|
||||||
'steal=%2.0f' % (100*stat) + '%',
|
|
||||||
'(%d/%d)' % (stat_dict[player]['steal'], stat_dict[player]['steal_opp']),
|
|
||||||
'% steal attempted'
|
|
||||||
)
|
|
||||||
except:
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (0) + '%',
|
|
||||||
'st=%2.0f' % (0) + '%',
|
|
||||||
'steal=%2.0f' % (0) + '%',
|
|
||||||
'(%d/%d)' % (0, 0),
|
|
||||||
'% steal attempted'
|
|
||||||
)
|
|
||||||
|
|
||||||
def f_SB_steal(stat_dict, player):
|
def f_SB_steal(stat_dict, player):
|
||||||
""" Folded SB to steal."""
|
""" Folded SB to steal."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
|
@ -417,27 +333,7 @@ def f_BB_steal(stat_dict, player):
|
||||||
'(0/0)',
|
'(0/0)',
|
||||||
'% folded BB to steal')
|
'% folded BB to steal')
|
||||||
|
|
||||||
def f_BB_steal_0(stat_dict, player):
|
def three_B(stat_dict, player):
|
||||||
""" Folded BB to steal."""
|
|
||||||
stat = 0.0
|
|
||||||
try:
|
|
||||||
stat = float(stat_dict[player]['bbnotdef'])/float(stat_dict[player]['bbstolen'])
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (100*stat) + '%',
|
|
||||||
'fBB=%2.0f' % (100*stat) + '%',
|
|
||||||
'fBB_s=%2.0f' % (100*stat) + '%',
|
|
||||||
'(%d/%d)' % (stat_dict[player]['bbnotdef'], stat_dict[player]['bbstolen']),
|
|
||||||
'% folded BB to steal'
|
|
||||||
)
|
|
||||||
except:
|
|
||||||
return (stat,
|
|
||||||
'NA',
|
|
||||||
'fBB=NA',
|
|
||||||
'fBB_s=NA',
|
|
||||||
'(0/0)',
|
|
||||||
'% folded BB to steal')
|
|
||||||
|
|
||||||
def three_B_0(stat_dict, player):
|
|
||||||
""" Three bet preflop/3rd."""
|
""" Three bet preflop/3rd."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -479,7 +375,7 @@ def WMsF(stat_dict, player):
|
||||||
'% won$/saw flop/4th'
|
'% won$/saw flop/4th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def a_freq_1(stat_dict, player):
|
def a_freq1(stat_dict, player):
|
||||||
""" Flop/4th aggression frequency."""
|
""" Flop/4th aggression frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -500,7 +396,7 @@ def a_freq_1(stat_dict, player):
|
||||||
'Aggression Freq flop/4th'
|
'Aggression Freq flop/4th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def a_freq_2(stat_dict, player):
|
def a_freq2(stat_dict, player):
|
||||||
""" Turn/5th aggression frequency."""
|
""" Turn/5th aggression frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -521,7 +417,7 @@ def a_freq_2(stat_dict, player):
|
||||||
'Aggression Freq turn/5th'
|
'Aggression Freq turn/5th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def a_freq_3(stat_dict, player):
|
def a_freq3(stat_dict, player):
|
||||||
""" River/6th aggression frequency."""
|
""" River/6th aggression frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -542,7 +438,7 @@ def a_freq_3(stat_dict, player):
|
||||||
'Aggression Freq river/6th'
|
'Aggression Freq river/6th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def a_freq_4(stat_dict, player):
|
def a_freq4(stat_dict, player):
|
||||||
""" 7th street aggression frequency."""
|
""" 7th street aggression frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -591,34 +487,7 @@ def a_freq_123(stat_dict, player):
|
||||||
'Post-Flop Aggression Freq'
|
'Post-Flop Aggression Freq'
|
||||||
)
|
)
|
||||||
|
|
||||||
def a_freq_123_0(stat_dict, player):
|
def cb1(stat_dict, player):
|
||||||
""" Post-Flop aggression frequency (no decimals)."""
|
|
||||||
stat = 0.0
|
|
||||||
try:
|
|
||||||
stat = float( stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3']) / float( stat_dict[player]['saw_1'] + stat_dict[player]['saw_2'] + stat_dict[player]['saw_3']);
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (100*stat) + '%',
|
|
||||||
'afq=%2.0f' % (100*stat) + '%',
|
|
||||||
'postf_aggfq=%2.0f' % (100*stat) + '%',
|
|
||||||
'(%d/%d)' % ( stat_dict[player]['aggr_1']
|
|
||||||
+ stat_dict[player]['aggr_2']
|
|
||||||
+ stat_dict[player]['aggr_3']
|
|
||||||
, stat_dict[player]['saw_1']
|
|
||||||
+ stat_dict[player]['saw_2']
|
|
||||||
+ stat_dict[player]['saw_3']
|
|
||||||
),
|
|
||||||
'Post-Flop Aggression Freq'
|
|
||||||
)
|
|
||||||
except:
|
|
||||||
return (stat,
|
|
||||||
'%2.0f' % (0) + '%',
|
|
||||||
'a3=%2.0f' % (0) + '%',
|
|
||||||
'a_fq_3=%2.0f' % (0) + '%',
|
|
||||||
'(%d/%d)' % (0, 0),
|
|
||||||
'Post-Flop Aggression Freq'
|
|
||||||
)
|
|
||||||
|
|
||||||
def cb_1(stat_dict, player):
|
|
||||||
""" Flop continuation bet."""
|
""" Flop continuation bet."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -639,7 +508,7 @@ def cb_1(stat_dict, player):
|
||||||
'% continuation bet flop/4th'
|
'% continuation bet flop/4th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def cb_2(stat_dict, player):
|
def cb2(stat_dict, player):
|
||||||
""" Turn continuation bet."""
|
""" Turn continuation bet."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -660,7 +529,7 @@ def cb_2(stat_dict, player):
|
||||||
'% continuation bet turn/5th'
|
'% continuation bet turn/5th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def cb_3(stat_dict, player):
|
def cb3(stat_dict, player):
|
||||||
""" River continuation bet."""
|
""" River continuation bet."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -681,7 +550,7 @@ def cb_3(stat_dict, player):
|
||||||
'% continuation bet river/6th'
|
'% continuation bet river/6th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def cb_4(stat_dict, player):
|
def cb4(stat_dict, player):
|
||||||
""" 7th street continuation bet."""
|
""" 7th street continuation bet."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -702,7 +571,7 @@ def cb_4(stat_dict, player):
|
||||||
'% continuation bet 7th'
|
'% continuation bet 7th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def ffreq_1(stat_dict, player):
|
def ffreq1(stat_dict, player):
|
||||||
""" Flop/4th fold frequency."""
|
""" Flop/4th fold frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -723,7 +592,7 @@ def ffreq_1(stat_dict, player):
|
||||||
'% fold frequency flop/4th'
|
'% fold frequency flop/4th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def ffreq_2(stat_dict, player):
|
def ffreq2(stat_dict, player):
|
||||||
""" Turn/5th fold frequency."""
|
""" Turn/5th fold frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -744,7 +613,7 @@ def ffreq_2(stat_dict, player):
|
||||||
'% fold frequency turn/5th'
|
'% fold frequency turn/5th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def ffreq_3(stat_dict, player):
|
def ffreq3(stat_dict, player):
|
||||||
""" River/6th fold frequency."""
|
""" River/6th fold frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -765,7 +634,7 @@ def ffreq_3(stat_dict, player):
|
||||||
'% fold frequency river/6th'
|
'% fold frequency river/6th'
|
||||||
)
|
)
|
||||||
|
|
||||||
def ffreq_4(stat_dict, player):
|
def ffreq4(stat_dict, player):
|
||||||
""" 7th fold frequency."""
|
""" 7th fold frequency."""
|
||||||
stat = 0.0
|
stat = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -804,24 +673,24 @@ if __name__== "__main__":
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'fold_f')
|
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 = 'wmsd')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'steal')
|
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_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 = '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 = 'three_B_0')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'wmsf')
|
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_freq1')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_2')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq2')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_3')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq3')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_4')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq4')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_123')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_123')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_123_0')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_123_0')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_1')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb1')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_2')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb2')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_3')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb3')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_4')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb4')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_1')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq1')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_2')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq2')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_3')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq3')
|
||||||
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_4')
|
print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq4')
|
||||||
print "\n"
|
print "\n"
|
||||||
|
|
||||||
print "\n\nLegal stats:"
|
print "\n\nLegal stats:"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user