This repository contains code to compile my PhD dissertation, as well as the three papers that it consists of. The main outputs are the following:
dissertation.pdf
: The full dissertation, the main topic of which is the bargaining between a few central and many fringe players.theory.pdf
: A paper with an abstract, theoretical treatment of the problem.application.pdf
: An IO paper about a hybrid platform, which engages in bargaining with the fringe entrants.experiment.pdf
: A lab experiment that examines the outcomes of bargaining and coalition formation in a setting with one indispensable and two smaller players.defense.html
: The slides for the defense, which provide a high-level overview of the dissertation.
Tip
The code for the papers and the analysis were tracked in different repositories during the majority of their development. You can find the original repositories with the full histories at the following links:
The project is set up so that pixi
installs required dependencies into a local virtual environment. The exception is latex, which has to be install manually, and latexmk
must be on the search path (required texlive packages are listed in tl_packages.txt
).
Other than these, simply install pixi
, and then you can use the following commands to compile the outputs:
pixi run dissertation
to compile the dissertationpixi run papers
to compile three paperspixi run presentations
to compile the slide deckspixi run prepare-to-publish
to compile everything and place it in thedist
folder
Other pixi tasks
The following commands are available to check the code:pixi run format
to format the Python code usingruff
pixi run lint
to lint the Python code usingruff
pixi run typecheck
to typecheck the Python code usingpyright
pixi run spell
to check the spelling usingcodespell
pixi run check
to run all the checks
The following commands are available to create graphs of snakemake's execution plan:
pixi run dag
to create a directed acyclic graph of the snakemake workflowpixi run filegraph
to create a file graph of the snakemake workflowpixi run rulegraph
to create a rule graph of the snakemake workflow
The following commands are used for the CI publish job:
pixi run update-latex-deps
to collect the texlive packages needed for the project and write them totl_packages.txt
pixi run prepare-to-publish
to collect every output file and place them into thegh-pages
folder
The project uses Github Actions to automatically compile the outputs and upload them to Github pages. First, the following checks must pass:
ruff
for Python linting and formattingpyright
for Python type checkingcodespell
for spell checking
If they do, the publish
job is triggered, which compiles the outputs and uploads them to the gh-pages
branch. The results can be found at stanmart.github.io/phd-thesis/{output}
.