Is there a Julia package similar to the Python's "ShowYourWork"?

I think there are some misconceptions in this thread about what ShowYourWork does. I’m one of the maintainers of the package - it does quite a bit more than make code reproducible or generate TeX. While it is written in Python (and JavaScript), it’s actually language independent and you can execute arbitrary scripts at each build step, including Julia code.

It’s basically a way of involving code execution/data processing/etc., into the source of a LaTeX project in a reproducible way (e.g., \variable{mytable.tex} would declare mytable.tex as a node in the data processing graph, and it would be generated by some script).

It uses Snakemake (a modern version of make, but which also allows Python syntax inside the make file) to declare dependencies in the build process, which is supposed to lazily run your entire research pipeline from raw data (which might stored and versioned on zenodo) to processed data (which might be uploaded to cloud as well) to final plots/tables/or even single numbers.

The goal is for the command showyourwork to run your entire research analysis pipeline all the way from raw data to final PDF compilation in a reproducible way. Changing a single version number of any dependency would result in all dependent tasks to be re-run.

SYW also has really nice GitHub actions integration, and will re-generate dependencies of your paper each time something changes. There’s even an action that will generate a latexdiff whenever there is a PR to your SYW-based repo.

It uses conda for version management, which can install specific versions of julia, and you can totally include a {Manifest,Project}.toml and have the Snakemake file re-compute every Julia step whenever those change. (Similar for whatever other languages are used in your analysis).

34 Likes