Weave.jl – Scientific Reports Using Julia

  • I'm a big fan of Weave/knitr/Rmd style notebooks over Jupyter for reproducibility. I've had a great experience with parameterized Weave.jl reports.

    My one complaint is that a streamlined dev workflow depends on good caching. knitr nailed that part, checking code hashes and checking dependencies between chunks. Weave.jl caching has been... finicky.

    For a completely different style of notebook, folks should check out Pluto.jl https://github.com/fonsp/Pluto.jl

  • Genuinely nice. If you do need to mix and match languages in a single document knitr/Rmarkdown has support for the most popular languages including Julia https://bookdown.org/yihui/rmarkdown/language-engines.html and that’s working nicely for me.

  • I use this stack. One extension I wrote is https://github.com/quantecon/instantiatefromurl.jl, to bind generated notebooks to Julia TOML (i.e. Julia's `requirements.txt`) that lives in a git repo. This means they don't depend on local machine state, so can move and run freely.

  • Lots of the sciml.ai packages and documentation use Weave — you can look there for some examples. Here's one:

    https://diffeq.sciml.ai/stable/tutorials/sde_example/

  • On the subjects of reports, it would be fun to have a system that parses the LaTeX and forcibly stops you deleting a plot from what generated it.

    I sometimes want to scream when watching the practices we get taught for doing "programming" in academia, there's just no standard of trying to do thing right.

  • I use this to format all the assignment handouts for my intro-to-programming-in-Earth-sciences class. Has worked great so far.

  • I use Julia and used to use Python. I've used jupyter lab for both (although for Julia I prefer Atom for IDE)

    What is the advantage of Weave.jl over jupyter lab? Is this just a way of integrating something "like jupyter" into Atom?

  • Weave looks great! Integrating dev and publishing.

  • Great article!