A mahjong library aimed to implement mahjong AIs by imitating white reimu -- a excellent mahjong player.
Requires Python 3.7 or later.
If you only want the features, there are pre-built binaries for each feature: release
.exe is for Windows and binary with no extention is for Mac OS.
Running first time is usually slower (due to some intitalization in PyInstaller).
Install python 3.7 or later, then just use pip:
pip install auto-white-reimu
Alternatively, you can install from source by
python setup.py install
in the project root directory.
A demo for estimating win rate of a hand (using Monte Carlo method).
After installation, you can run the tools by
mahjong-win-rate
.
A example of input hand should be like this:
2345678p2345777s
This tools helps you to check your wining-efficiency(牌効率) during a play.
After installation, you can run the tools with
tenhou-check
then type your tenhou.net log url (likehttp://tenhou.net/0/?log=2019012600gm-0089-0000-100908f0&tw=0
) and
follow the hint.
it will generate a html report for easy checking.
You could also use it programmatically:
from mahjong.record.checker import TenhouChecker
filename, results = TenhouChecker().parse(
"http://tenhou.net/0/?log=2018111815gm-00a9-0000-504304e3",
player_index=1,
timeout=15,
generate_filename=True
)
with open(filename, "w", encoding='utf-8') as f:
f.write(results)
This converter extract paifus as a universal format, to csv files for easy analysis.
After installation, you can run the tools with
paifu-extract
Now support tenhou.net only.
IT IS JUST A DEMO TO SHOW THE CONCEPTS, TRANSLATED COMMANDS AND STATES ARE NEITHER COMPLETE NOR CORRECT YET!
Type your tenhou.net log url (likehttp://tenhou.net/0/?log=2019012600gm-0089-0000-100908f0&tw=0
).
For APIs, see code here.
Extra APIs are provided to analyse the csv with usage examples below:
import pandas as pd
from mahjong.record.universe.command import GameCommand
df = pd.read_csv("command_list.csv")
# clean up df, make states as python value
df = df.apply(GameCommand.pandas_columns_clean, axis="columns")
# extract all state changes
column_props = ["sub_scope_id", "property"]
df_state = df[column_props + ["state"]]
# pivot combined column to multi-level state.
df_state = df_state.set_index(column_props, append=True)
df_state = df_state.unstack(level=column_props)
# fill in all state to get exact state after each command executed.
df_state = df_state.ffill()
See pull request here for more details.
you could run test by executing pip install .[test]
at root dir, this would install all dependence for you.
and run pytest
in the root directory.
For PyCharm users, we provide some shared configuration in
runConfigurations.zip
.
Unzip these .xml settings and put them in your project
.idea/runConfigurations/
directory. Then you would see it in PyCharm menu
Run -> Edit Configurations
. You may need to adjust Python Interpreter to your own environment in these settings.
PLEASE DON'T TRACK THESE .XML SETTING IN VERSION CONTROL.
Thanks for tile image provided by Void.
Using mahjong image in this project is fine. For other usage, please concat him via QQ: 1246465300