Bridgebots Tools is a suite of tools for finding, processing, and analyzing bridge data. It utilizes the Bridgebots Core package to parse and represent data.
Install the Bridgebots Tools package with pip install bridgebots_tools.
Install the package with poetry install
The csv_report script extracts bridge data from a directory or file. It currently supports PBN and LIN formats.
The report function can be run as a python script:
python csv_report.py
Or as a module:
python -m bridgebots_tools.csv_report
List all arguments by running with --help
python -m bridgebots_tools.csv_report --help
Usage: python -m bridgebots_tools.csv_report [OPTIONS] INPUT_PATH
[OUTPUT_PATH]
Options:
--input_format [lin|pbn]
--output_format [team|individual]
-v, --verbose
--info
-q, --quiet
--help Show this message and exit.-
input_format: the type of files to read (pbn or lin). Default is lin. -
output_format: Inindividualmode each play of a board will have its own row in the output csv. Inteammode a single row will be created for each pair of boards in the match, allowing for easy comparision. Columns will be prefixed witho_orc_to represent play in the open/closed rooms. -
Log Level Flags :
verbose/-voutput debugging information such as files processed and number of deals found.--infoDefault log level. Includes warnings about malformed records.--quiet/-qNo output
-
INPUT_PATHpath to a bridge file or directory containing bridge files. If a directory is used, it will be searched recursively. -
OUTPUT_PATHpath to output csv file. If not supplied, the csv will be written to stdout.
| Name | Value |
|---|---|
| board_id | Board name |
| file | Originating file |
| deal_hash | A unique identifier of the deal, dealer, and vulnerability |
| north | Player name |
| south | Player name |
| east | Player name |
| west | Player name |
| dealer | Direction |
| vulnerable | Which seats are vulnerable. One of: all, none, 1-3 (declarer r/w), 2-4(declarer w/r) |
| bidding | The bids, alerts, and announcements from the auction |
| opener | Which seat opened (1-indexed) |
| opening | Bid |
| opener_hcp | Opener's Goren high card points |
| opener_shape | Opener's shape in descending suit order |
| overcall_type | One of None, Direct, Sandwich, or Balance |
| overcall | Bid |
| overcaller_hcp | Overcallers's Goren high card points |
| overcaller_shape | Overcaller's shape in descending suit order |
| contested | True if the team that didn't open made any action other than PASS |
| competitive | True if each team made at least two bids |
| declarer | Direction |
| contract | Final Contract |
| lead | Card led |
| result | Outcome (e.g. 2H-2) |
| tricks | Number of tricks taken by declarer |
| score_ns | Score for north-south |
| score_ew | Score for east-west |
| score_declarer | Score for declarer's team |
| score_defender | Score for defenders' team |
| link | BBO link to board_record |
| declarer_shape | Declarer's shape in suit order |
| dummy_shape | Dummy's shape in suit order |
| lho_shape | Declarer's left-hand opponent shape in suit order |
| rho_shape | Declarer's right-hand opponent shape suit order |
| declarer_hcp | Declarer's high card points |
| dummy_hcp | Dummy's high card points |
| lho_hcp | Declarer's left-hand opponent high card points |
| rho_hcp | Declarer's right-hand opponent high card points |
| trump_fit | Number of trumps held by declarer + dummy |
| trump_hcp | Number of high card points held by declarer + dummy in the trump suit |
Run the report on a single LIN file and output in team format:
$ python -m bridgebots_tools.csv_report tools_example/r16b8.lin tools_example/r16b8.csv
$ head -n 3 tools_example/r16b8.csvo_board_id,o_file,o_north,o_south,o_east,o_west,o_dealer,o_vulnerable,o_bidding,o_opener,o_opening,o_opener_hcp,o_opener_shape,o_overcall_type,o_overcall,o_overcaller_hcp,o_overcaller_shape,o_contested,o_declarer,o_contract,o_lead,o_result,o_tricks,o_score,o_link,c_board_id,c_file,c_north,c_south,c_east,c_west,c_dealer,c_vulnerable,c_bidding,c_opener,c_opening,c_opener_hcp,c_opener_shape,c_overcall_type,c_overcall,c_overcaller_hcp,c_overcaller_shape,c_contested,c_declarer,c_contract,c_lead,c_result,c_tricks,c_score,c_link
o46,r16b8.lin,Bathurst,Moss,Feldman,Watson,east,none,2H|PASS|4H|PASS|PASS|PASS,1,2H,6,2551,,,,,False,east,4H,DA,4H-1,9,-50,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CMoss%2CWatson%2CBathurst%2CFeldman%7Cst%7C%7Cmd%7C4S8632H8DA6CK96432%2CSAK4HKJ62DQJ532C7%2CSQT95HA93D7CAQJT8%2CSJ7HQT754DKT984C5%7Cah%7CBoard+46%7Csv%7Co%7Cmb%7C2H%7Cmb%7Cp%7Cmb%7C4H%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CDA%7Cpc%7CD2%7Cpc%7CD7%7Cpc%7CD9%7Cpg%7C%7Cpc%7CD6%7Cpc%7CD3%7Cpc%7CH3%7Cpc%7CDK%7Cpg%7C%7Cpc%7CCA%7Cpc%7CC5%7Cpc%7CC2%7Cpc%7CC7%7Cpg%7C%7Cmc%7C9%7Cpg%7C%7C,c46,r16b8.lin,Hung,J. Stansby,Hampson,Greco,east,none,PASS|PASS|1D!(2+)|2C|2H|X!|4H|4S|PASS|PASS|X|PASS|PASS|PASS,3,1D,14,3451,direct,2C,13,4315,True,north,4SX,C5,4SX=,10,590,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CJ.+Stansby%2CGreco%2CHung%2CHampson%7Cst%7C%7Cmd%7C4S8632H8DA6CK96432%2CSAK4HKJ62DQJ532C7%2CSQT95HA93D7CAQJT8%2CSJ7HQT754DKT984C5%7Cah%7CBoard+46%7Csv%7Co%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7C1D%21%7Can%7C2%2B%7Cmb%7C2C%7Cmb%7C2H%7Cmb%7CX%21%7Cmb%7C4H%7Cmb%7C4S%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7CX%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CC5%7Cpc%7CCK%7Cpc%7CC7%7Cpc%7CCQ%7Cpg%7C%7Cpc%7CS2%7Cpc%7CS4%7Cpc%7CST%7Cpc%7CSJ%7Cpg%7C%7Cpc%7CH5%7Cpc%7CH8%7Cpc%7CHK%7Cpc%7CHA%7Cpg%7C%7Cpc%7CSQ%7Cpc%7CS7%7Cpc%7CS3%7Cpc%7CSK%7Cpg%7C%7Cmc%7C10%7Cpg%7C%7C
o47,r16b8.lin,Bathurst,Moss,Feldman,Watson,south,1-3,PASS|PASS|3C|PASS|PASS|PASS,3,3C,10,0157,,,,,False,north,3C,SQ,3C+1,10,130,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CMoss%2CWatson%2CBathurst%2CFeldman%7Cst%7C%7Cmd%7C1SAT43HKJ976D985CK%2CSK965HT832DQ4CQ54%2CSHQDA7632CAT98762%2CSQJ872HA54DKJTCJ3%7Cah%7CBoard+47%7Csv%7Cn%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7C3C%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CSQ%7Cpc%7CSA%7Cpc%7CS5%7Cpc%7CHQ%7Cpg%7C%7Cpc%7CCK%7Cpc%7CC4%7Cpc%7CC2%7Cpc%7CC3%7Cpg%7C%7Cpc%7CD9%7Cpc%7CDQ%7Cpc%7CDA%7Cpc%7CDK%7Cpg%7C%7Cpc%7CCA%7Cpc%7CCJ%7Cpc%7CH7%7Cpc%7CC5%7Cpg%7C%7Cpc%7CD6%7Cpc%7CDT%7Cpc%7CD5%7Cpc%7CD4%7Cpg%7C%7Cmc%7C10%7Cpg%7C%7C,c47,r16b8.lin,Hung,J. Stansby,Hampson,Greco,south,1-3,2D!(Flannery)|PASS|3C|PASS|PASS|PASS,1,2D,11,4531,,,,,False,north,3C,CJ,3C+1,10,130,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CJ.+Stansby%2CGreco%2CHung%2CHampson%7Cst%7C%7Cmd%7C1SAT43HKJ976D985CK%2CSK965HT832DQ4CQ54%2CSHQDA7632CAT98762%2CSQJ872HA54DKJTCJ3%7Cah%7CBoard+47%7Csv%7Cn%7Cmb%7C2D%21%7Can%7CFlannery%7Cmb%7Cp%7Cmb%7C3C%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CCJ%7Cpc%7CCK%7Cpc%7CC5%7Cpc%7CC2%7Cpg%7C%7Cpc%7CSA%7Cpc%7CS5%7Cpc%7CHQ%7Cpc%7CS2%7Cpg%7C%7Cpc%7CS3%7Cpc%7CS9%7Cpc%7CC6%7Cpc%7CS7%7Cpg%7C%7Cpc%7CCA%7Cpc%7CC3%7Cpc%7CH6%7Cpc%7CC4%7Cpg%7C%7Cpc%7CDA%7Cpc%7CDJ%7Cpc%7CD5%7Cpc%7CD4%7Cpg%7C%7Cpc%7CD2%7Cpc%7CDT%7Cpc%7CD8%7Cpc%7CDQ%7Cpg%7C%7Cmc%7C10%7Cpg%7C%7C
Run the report in quiet mode on a directory of pbn files and output in individual format:
$ python -m bridgebots_tools.csv_report -q --input_format=pbn --output_format=individual tools_example/ tools_example/usbc.csv
$ wc -l tools_example/usbc.csv
4031 tools_example/usbc.csv
$ head -n 3 tools_example/usbc.csv
board_id,file,north,south,east,west,dealer,vulnerable,bidding,opener,opening,opener_hcp,opener_shape,overcall_type,overcall,overcaller_hcp,overcaller_shape,contested,declarer,contract,lead,result,tricks,score,link
,usbc_2011.pbn,Moss,Gitelman,Bathurst,Zagorin,north,none,1D|PASS|1NT|PASS|3NT|PASS|PASS|PASS,1,1D,16,2263,,,,,False,south,3NT,S5,3NT-4,5,-200,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CGitelman%2CZagorin%2CMoss%2CBathurst%7Cst%7C%7Cmd%7C3SQ6HQT7DJ98CJ8742%2CSK9853HA84D43CAT3%2CSJ7HK6DAKQ765CK96%2CSAT42HJ9532DT2CQ5%7Csv%7Co%7Cmb%7C1D%7Cmb%7Cp%7Cmb%7C1N%7Cmb%7Cp%7Cmb%7C3N%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CS5%7Cpc%7CS7%7Cpc%7CSA%7Cpc%7CS6%7Cpg%7C%7Cpc%7CS2%7Cpc%7CSQ%7Cpc%7CSK%7Cpc%7CSJ%7Cpg%7C%7Cpc%7CS9%7Cpc%7CC6%7Cpc%7CST%7Cpc%7CC7%7Cpg%7C%7Cpc%7CS4%7Cpc%7CC4%7Cpc%7CS8%7Cpc%7CD5%7Cpg%7C%7Cpc%7CS3%7Cpc%7CH6%7Cpc%7CH2%7Cpc%7CH7%7Cpg%7C%7Cpc%7CC3%7Cpc%7CC9%7Cpc%7CCQ%7Cpc%7CC2%7Cpg%7C%7Cpc%7CC5%7Cpc%7CC8%7Cpc%7CCA%7Cpc%7CCK%7Cpg%7C%7Cpc%7CHA%7Cpc%7CHK%7Cpc%7CH3%7Cpc%7CHT%7Cpg%7C%7Cmc%7C5%7Cpg%7C%7C
,usbc_2011.pbn,Grue,Lall,Greco,Hampson,north,none,1C|PASS|1D|1S|X|3H|PASS|3S|PASS|PASS|PASS,1,1C,16,2263,sandwich,1S,11,5323,True,west,3S,DK,3S-1,8,-50,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CLall%2CHampson%2CGrue%2CGreco%7Cst%7C%7Cmd%7C3SQ6HQT7DJ98CJ8742%2CSK9853HA84D43CAT3%2CSJ7HK6DAKQ765CK96%2CSAT42HJ9532DT2CQ5%7Csv%7Co%7Cmb%7C1C%7Cmb%7Cp%7Cmb%7C1D%7Cmb%7C1S%7Cmb%7CX%7Cmb%7C3H%7Cmb%7Cp%7Cmb%7C3S%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CDK%7Cpc%7CD2%7Cpc%7CD8%7Cpc%7CD3%7Cpg%7C%7Cpc%7CDA%7Cpc%7CDT%7Cpc%7CD9%7Cpc%7CD4%7Cpg%7C%7Cpc%7CHK%7Cpc%7CH2%7Cpc%7CH7%7Cpc%7CHA%7Cpg%7C%7Cpc%7CS3%7Cpc%7CS7%7Cpc%7CSA%7Cpc%7CS6%7Cpg%7C%7Cpc%7CS2%7Cpc%7CSQ%7Cpc%7CSK%7Cpc%7CSJ%7Cpg%7C%7Cpc%7CH4%7Cpc%7CH6%7Cpc%7CHJ%7Cpc%7CHQ%7Cpg%7C%7Cpc%7CC2%7Cpc%7CCA%7Cpc%7CC6%7Cpc%7CC5%7Cpg%7C%7Cmc%7C8%7Cpg%7C%7C
This is an analysis tool for investigating how one set of contracts compares with another in your bridge data. It will allow you to find deals where a contract from set A was played at one table, but a contract from set B was played at another. This could be used to evaluate choice of games/slams or competitive decisions like 5H over 4S.
The compare contracts report function can be run as a python script:
python compare_contracts_csv_report.py
Or as a module:
python -m bridgebots_tools.compare_contracts_csv_report
List all arguments by running with --help
python -m bridgebots_tools.compare_contracts_csv_report --help
Usage: python -m bridgebots_tools.compare_contracts_csv_report
[OPTIONS] CONTRACT_SETS... INPUT_PATH [OUTPUT_PATH]
Options:
--input_format [lin|pbn]
--deal_comparison_type [same_deal|any]
--direction_comparison_type [same_direction|opposite_direction|any]
--lax_doubles / --strict_doubles
-v, --verbose
--info
-q, --quiet
--help Show this message and exit.-
input_format: the type of files to read (pbn or lin). Default is lin. -
deal_comparison_type: Insame_dealmode the tool will only find comparisons where a contract from each contract set occurred in the same deal. Inanymode all boards that played in a contract in either contract set will be included. -
direction_comparison_type: Insame_directionmode, the contracts must have been played by the same pair (e.g. North-South). This is useful for comparing a choice of contracts (e.g. 3NT vs 4H,4S). Inopposite_directionmode, the contracts must have been played by opposite pairs. This is useful for comparing decisions to compete (e.g. 5H vs 4S). Inanymode, all boards will be included. -
Doubles Flags:
lax_doubles: Consider undoubled, doubled, and redoubled contracts to be equivalent.strict_doubles: Consider undoubled, doubled, and redoubled contracts to be distinct. Doubled and redoubled contracts can be included in contract sets (e.g. 2CX).
-
Log Level Flags :
verbose/-voutput debugging information such as files processed and number of deals found.--infoDefault log level. Includes warnings about malformed records.--quiet/-qNo output
-
CONTRACT_SETS: Two arguments. Each is a comma separated list of contracts to be compared with the other set. For example, you might provide the arguments3NTand4H,4Sto compare major suit games with 3NT. -
INPUT_PATHpath to a bridge file or directory containing bridge files. If a directory is used, it will be searched recursively. -
OUTPUT_PATHpath to output csv file. If not supplied, the csv will be written to stdout.
See the csv_report output fields above.
python -m bridgebots_tools.compare_contracts_csv_report 3NT 4H,4S .board_id,file,deal_hash,north,south,east,west,dealer,vulnerable,bidding,opener,opening,opener_hcp,opener_shape,overcall_type,overcall,overcaller_hcp,overcaller_shape,contested,competitive,declarer,contract,lead,result,tricks,score_ns,score_ew,score_declarer,score_defender,link,declarer_shape,dummy_shape,lho_shape,rho_shape,declarer_hcp,dummy_hcp,lho_hcp,rho_hcp,trump_fit,trump_hcp
c7,sfa1.lin,-6400932905757015746,Balicki,Zmudzinski,Helness,Helgemo,south,all,PASS|PASS|PASS|1NT|PASS|2H!|PASS|2S|PASS|3NT|PASS|PASS|PASS,4,1NT,17,3343,,,,,False,False,east,3NT,D4,3NT+1,10,-630,630,630,-630,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CZmudzinski%2CHelgemo%2CBalicki%2CHelness%7Cst%7C%7Cmd%7C1S54HK32DQ954CA974%2CSAKJ72HJ75D832CT8%2CST83HT964DA6CJ532%2CSQ96HAQ8DKJT7CKQ6%7Cah%7CBoard+7%7Csv%7Cb%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7C1N%7Cmb%7Cp%7Cmb%7C2H%21%7Cmb%7Cp%7Cmb%7C2S%7Cmb%7Cp%7Cmb%7C3N%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CD4%7Cpc%7CD2%7Cpc%7CDA%7Cpc%7CD7%7Cpg%7C%7Cpc%7CCJ%7Cpc%7CCK%7Cpc%7CCA%7Cpc%7CC8%7Cpg%7C%7Cpc%7CC4%7Cpc%7CCT%7Cpc%7CC2%7Cpc%7CC6%7Cpg%7C%7Cpc%7CD3%7Cpc%7CD6%7Cpc%7CDJ%7Cpc%7CDQ%7Cpg%7C%7Cmc%7C10%7Cpg%7C%7C,3343,5332,2344,3424,17,9,9,5,,
o7,sfa1.lin,-6400932905757015746,Fantoni,Nunes,Lynch,Passell,south,all,PASS|PASS|PASS|1NT|PASS|2C|PASS|2D|PASS|2S|PASS|4S|PASS|PASS|PASS,4,1NT,17,3343,,,,,False,False,west,4S,DA,4S-1,9,100,-100,-100,100,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CNunes%2CPassell%2CFantoni%2CLynch%7Cst%7C%7Cmd%7C1S54HK32DQ954CA974%2CSAKJ72HJ75D832CT8%2CST83HT964DA6CJ532%2CSQ96HAQ8DKJT7CKQ6%7Cah%7CBoard+7%7Csv%7Cb%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7C1N%7Cmb%7Cp%7Cmb%7C2C%7Cmb%7Cp%7Cmb%7C2D%7Cmb%7Cp%7Cmb%7C2S%7Cmb%7Cp%7Cmb%7C4S%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CDA%7Cpc%7CD7%7Cpc%7CD4%7Cpc%7CD8%7Cpg%7C%7Cpc%7CD6%7Cpc%7CDK%7Cpc%7CD5%7Cpc%7CD3%7Cpg%7C%7Cpc%7CSQ%7Cpc%7CS5%7Cpc%7CS2%7Cpc%7CS3%7Cpg%7C%7Cpc%7CS6%7Cpc%7CS4%7Cpc%7CSK%7Cpc%7CS8%7Cpg%7C%7Cpc%7CSA%7Cpc%7CST%7Cpc%7CS9%7Cpc%7CC4%7Cpg%7C%7Cpc%7CC8%7Cpc%7CC2%7Cpc%7CCK%7Cpc%7CCA%7Cpg%7C%7Cpc%7CDQ%7Cpc%7CD2%7Cpc%7CH6%7Cpc%7CDT%7Cpg%7C%7Cpc%7CD9%7Cpc%7CH5%7Cpc%7CH4%7Cpc%7CDJ%7Cpg%7C%7Cpc%7CCQ%7Cpc%7CC7%7Cpc%7CCT%7Cpc%7CC3%7Cpg%7C%7Cpc%7CC6%7Cpc%7CC9%7Cpc%7CS7%7Cpc%7CC5%7Cpg%7C%7Cmc%7C9%7Cpg%7C%7C,5332,3343,3424,2344,9,17,5,9,8,10
This tool is designed for building sets of practice deals for use on BBO. A user can supply a specific lin file and board number and the tool will create (or append) a LIN and CSV containing the deal and all the information available from the csv_report tool.
The practice deals tool can be run as a python script:
python practice_deals.py
Or as a module:
python -m bridgebots_tools.practice_deals
List all arguments by running with --help
python -m bridgebots_tools.practice_deals --help
Usage: python -m bridgebots_tools.practice_deals [OPTIONS] INPUT_DIR FILE_NAME
BOARD [OUTPUT_LIN]
[OUTPUT_CSV]
Options:
--input_format [lin|pbn]
-v, --verbose
--info
-q, --quiet
--help Show this message and exit.-
input_format: the type of files to read (pbn or lin). Default is lin. -
Log Level Flags :
verbose/-vOutput debugging information.--infoDefault log level. Includes warnings about malformed records.--quiet/-qNo output
-
INPUT_DIRpath to a directory containing bridge files. Will be searched recursively forFILE_NAME -
FILE_NAMEName of the target file to extract a board from. -
BOARDThe board number to extract. -
OUTPUT_LINpath to output LIN file to create or append. If not supplied, the LIN will be written to stdout. -
OUTPUT_CSVpath to output CSV file to create or append. If not supplied, the CSV will be written to stdout.
Extract board 46 from file usbf_sf_14502.lin located in the current working directory.
python -m bridgebots_tools.practice_deals . usbf_sf_14502.lin 46qx|o46|st||md|4SJ5H9DAT862CQ8752,SKQT94HAK73DQ4C93,S872HQT5DJ97CAT64,SA63HJ8642DK53CKJ|ah|Board 46|sv|o|mb|1H|mb|p|mb|3C!|an|jacoby 2N|mb|p|mb|4H|mb|p|mb|p|mb|p|pg||pc|C2|pc|C3|pc|CA|pc|CJ|pg||pc|D7|pc|D5|pc|DA|pc|D4|pg||pc|D6|pc|DQ|pc|D9|pc|D3|pg||pc|C9|pc|C4|pc|CK|pc|C5|pg||pc|H2|pc|H9|pc|HA|pc|H5|pg||mc|10|pg||
o_board_id,o_file,o_deal_hash,o_north,o_south,o_east,o_west,o_dealer,o_vulnerable,o_bidding,o_opener,o_opening,o_opener_hcp,o_opener_shape,o_overcall_type,o_overcall,o_overcaller_hcp,o_overcaller_shape,o_contested,o_competitive,o_declarer,o_contract,o_lead,o_result,o_tricks,o_score_ns,o_score_ew,o_score_declarer,o_score_defender,o_link,o_declarer_shape,o_dummy_shape,o_lho_shape,o_rho_shape,o_declarer_hcp,o_dummy_hcp,o_lho_hcp,o_rho_hcp,o_trump_fit,o_trump_hcp,c_board_id,c_file,c_deal_hash,c_north,c_south,c_east,c_west,c_dealer,c_vulnerable,c_bidding,c_opener,c_opening,c_opener_hcp,c_opener_shape,c_overcall_type,c_overcall,c_overcaller_hcp,c_overcaller_shape,c_contested,c_competitive,c_declarer,c_contract,c_lead,c_result,c_tricks,c_score_ns,c_score_ew,c_score_declarer,c_score_defender,c_link,c_declarer_shape,c_dummy_shape,c_lho_shape,c_rho_shape,c_declarer_hcp,c_dummy_hcp,c_lho_hcp,c_rho_hcp,c_trump_fit,c_trump_hcp
o46,usbf_sf_14502.lin,-5685382758932396718,Rodwell,Meckstroth,Weinstein,Levin,east,none,1H|PASS|3C!(jacoby 2N)|PASS|4H|PASS|PASS|PASS,1,1H,12,3532,,,,,False,False,east,4H,C2,4H=,10,-420,420,420,-420,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CMeckstroth%2CLevin%2CRodwell%2CWeinstein%7Cst%7C%7Cmd%7C4SJ5H9DAT862CQ8752%2CSKQT94HAK73DQ4C93%2CS872HQT5DJ97CAT64%2CSA63HJ8642DK53CKJ%7Cah%7CBoard+46%7Csv%7Co%7Cmb%7C1H%7Cmb%7Cp%7Cmb%7C3C%21%7Can%7Cjacoby+2N%7Cmb%7Cp%7Cmb%7C4H%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CC2%7Cpc%7CC3%7Cpc%7CCA%7Cpc%7CCJ%7Cpg%7C%7Cpc%7CD7%7Cpc%7CD5%7Cpc%7CDA%7Cpc%7CD4%7Cpg%7C%7Cpc%7CD6%7Cpc%7CDQ%7Cpc%7CD9%7Cpc%7CD3%7Cpg%7C%7Cpc%7CC9%7Cpc%7CC4%7Cpc%7CCK%7Cpc%7CC5%7Cpg%7C%7Cpc%7CH2%7Cpc%7CH9%7Cpc%7CHA%7Cpc%7CH5%7Cpg%7C%7Cmc%7C10%7Cpg%7C%7C,3532,5422,2155,3334,12,14,7,7,9,8,c46,usbf_sf_14502.lin,-5685382758932396718,Martel,Stansby,Mahmood,Hamman,east,none,1H|PASS|2S!|PASS|2NT!|PASS|3H|PASS|4H!(no slam interest)|PASS|PASS|PASS,1,1H,12,3532,,,,,False,False,east,4H,C5,4H=,10,-420,420,420,-420,https://www.bridgebase.com/tools/handviewer.html?lin=pn%7CStansby%2CHamman%2CMartel%2CMahmood%7Cst%7C%7Cmd%7C4SJ5H9DAT862CQ8752%2CSKQT94HAK73DQ4C93%2CS872HQT5DJ97CAT64%2CSA63HJ8642DK53CKJ%7Cah%7CBoard+46%7Csv%7Co%7Cmb%7C1H%7Cmb%7Cp%7Cmb%7C2S%21%7Cmb%7Cp%7Cmb%7C2N%21%7Cmb%7Cp%7Cmb%7C3H%7Cmb%7Cp%7Cmb%7C4H%21%7Can%7Cno+slam+interest%7Cmb%7Cp%7Cmb%7Cp%7Cmb%7Cp%7Cpg%7C%7Cpc%7CC5%7Cpc%7CC3%7Cpc%7CCA%7Cpc%7CCJ%7Cpg%7C%7Cpc%7CC4%7Cpc%7CCK%7Cpc%7CC2%7Cpc%7CC9%7Cpg%7C%7Cpc%7CH2%7Cpc%7CH9%7Cpc%7CHA%7Cpc%7CHT%7Cpg%7C%7Cpc%7CHK%7Cpc%7CH5%7Cpc%7CH4%7Cpc%7CC7%7Cpg%7C%7Cmc%7C10%7Cpg%7C%7C,3532,5422,2155,3334,12,14,7,7,9,8