decklist_analyser takes Magic: the Gathering decklists in CSV form from a specific source and uses them to either check for overlapping cards between lists or group decks based on the cards they contain into distinct clusters detected algorithmically.
Installing decklist_analyser can be tricky thanks to some of the packages used.
Run pip install -r requirements.txt
and hope it works
Start by installing numpy
, pandas
and regex
with whatever package
manager you prefer.
Next, attempt to install pycairo
. If this fails, try the wheels
located at https://www.lfd.uci.edu/~gohlke/pythonlibs/.
Then, install python-igraph
. It's important to do them this way
around - python-igraph
depends on pycairo
and if you are manually
downloading the wheels it won't use those, but rather download its own
and fail. The above URL has wheels for python-igraph
.
Next, install louvain
. Again, the above URL has the wheels.
matplotlib
can also be found above.
Start by installing numpy
, pandas
and regex
with whatever package
manager you prefer.
Since Unix systems vary wildly, I only detail the broad strokes below.
Next, attempt to install pycairo
. If this fails, you're probably
missing dependencies required. See
https://pycairo.readthedocs.io/en/latest/getting_started.html for
details.
Then, install python-igraph
. Again, missing dependencies are likely -
check https://igraph.org/python/.
Similarly, for louvain
, detailed installation instructions can be
found from https://louvain-igraph.readthedocs.io/en/latest/install.html.
matplotlib
installation instructions are at https://matplotlib.org/3.1.1/users/installing.html.
In the directory, create the folders logs/
and output/
.
This prevents the program throwing errors because it doesn't currently
make folders for these.
In config/
, copy CONFIG.example.py
to CONFIG.py
and configure this
as you wish.
graphml_location
: where output graphs will be saved.log_location
: where log files will be created. "{}" is the current date.decklist_directory
: directory containing decklists to check for overlap, when running on--mode overlap
.aggregate_data_loc
: path to CSV containing the data for all decklists, for--mode analysis
.cluster_percentage
: the percentage (interior-total) of weighted edges each node should have.deck_percentage
: what percentage of a deck should be in cluster X for it to count as a cluster X deck.
Usage is perfomed through the command line. Here, python3
will be used
to avoid ambiguity, but depending on your installation of Python it may
be python
.
Running python3 main.py -h
produces the following:
usage: main.py [-h] {overlap,analysis} ...
optional arguments:
-h, --help show this help message and exit
mode:
{overlap,analysis} Whether the program runs on overlap or analysis: overlap - Discover all files in the decklist_directory specified by CONFIG.py and
return the cards that they share. analysis - Cluster decklists
python3 main.py overlap -h
has the following output:
usage: main.py overlap [-h] [--all]
optional arguments:
-h, --help show this help message and exit
--all, -a Check for overlap in all decks of specifed aggregate location.
python3 main.py analysis -h
produces:
usage: main.py analysis [-h] [--profile PROFILE PROFILE | --resolution_parameter RESOLUTION_PARAMETER] [--graph] [--no-lands] [--label] [--colour]
[--start START]
optional arguments:
-h, --help show this help message and exit
--profile PROFILE PROFILE, -p PROFILE PROFILE
Run a profile and create a graph of number of clusters against resolution_parameter. The lower and upper bounds are specified after
the parameter is passed. This disables the standard output.
--resolution_parameter RESOLUTION_PARAMETER, -r RESOLUTION_PARAMETER
Set the resolution_parameter used in the program to the value passed.
--graph, -g Produce a visual for the clusters and a .graphml file in graphml_location (config).
--no-lands Remove all land cards from the decks to produce clusters of only nonland cards.
--label Ask the user for names for each cluster detected
--colour Ask the user for colours to plot each cluster's wedge in.
--start START, -s START
Where initial card cluster membership is stored.
python3 main.py overlap
python3 main.py analysis -r 0.9 --label --no-lands --graph
Issues and bug reports, as well as suggestions, can be filed at https://github.com/Jlobblet/decklist_analyser/issues
Contribution should be done through the repository at https://github.com/Jlobblet/decklist_analyser.