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 dissertationto compile the dissertationpixi run papersto compile three paperspixi run presentationsto compile the slide deckspixi run prepare-to-publishto compile everything and place it in thedistfolder
Other pixi tasks
The following commands are available to check the code:pixi run formatto format the Python code usingruffpixi run lintto lint the Python code usingruffpixi run typecheckto typecheck the Python code usingpyrightpixi run spellto check the spelling usingcodespellpixi run checkto run all the checks
The following commands are available to create graphs of snakemake's execution plan:
pixi run dagto create a directed acyclic graph of the snakemake workflowpixi run filegraphto create a file graph of the snakemake workflowpixi run rulegraphto create a rule graph of the snakemake workflow
The following commands are used for the CI publish job:
pixi run update-latex-depsto collect the texlive packages needed for the project and write them totl_packages.txtpixi run prepare-to-publishto collect every output file and place them into thegh-pagesfolder
The project uses Github Actions to automatically compile the outputs and upload them to Github pages. First, the following checks must pass:
rufffor Python linting and formattingpyrightfor Python type checkingcodespellfor 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}.