From 91a814d56daf3c644fcfa1256361f9212a8bd5eb Mon Sep 17 00:00:00 2001 From: Dev Date: Sun, 2 Nov 2025 15:55:55 +1100 Subject: [PATCH] add praser example of new emd data --- cross_validation/emd.py | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 cross_validation/emd.py diff --git a/cross_validation/emd.py b/cross_validation/emd.py new file mode 100644 index 0000000..bb56c0d --- /dev/null +++ b/cross_validation/emd.py @@ -0,0 +1,52 @@ +import math + +import numpy as np +from pathlib import Path + +CARD_BITS = 6 +RANKS = "23456789TJQKA" +SUITS = "shdc" + + +def load_np(filename): + return np.load((Path(__file__).parent.parent / "ehs-data" / filename).resolve()) + + +np_river = load_np("sd_river_ehs.np") +np_turn = load_np("sd_turn_hist.np") +np_flop = load_np("sd_flop_hist.np") + + +def to_card(i): + return f"{RANKS[math.floor(i / 4)]}{SUITS[i % 4]}" + + +def to_cards(value, n): + return [to_card((value >> (i * CARD_BITS)) & 0x3F) for i in range(n)] + + +N_ROWS = 1 + +print("\nflop data: # bins 465") +for row in np_flop[0:N_ROWS]: + print("-----") + print(row) + print(f"board: {to_cards(row['board'], 3)}") + print(f"player: {to_cards(row['player'], 2)}") + print(f"bins: {row['bins']}") + +print("\nturn data: # bins 30") +for row in np_turn[0:N_ROWS]: + print("-----") + print(row) + print(f"board: {to_cards(row['board'], 3)}") + print(f"player: {to_cards(row['player'], 2)}") + print(f"bins: {row['bins']}") + +print("\nriver data: 0-29 (winrate: (ehs+1) * 1/30)") +for row in np_river[0:N_ROWS]: + print("-----") + print(row) + print(f"board: {to_cards(row['board'], 3)}") + print(f"player: {to_cards(row['player'], 2)}") + print(f"wins: {row['ehs']}")