Authors: Elisabeth Roesch, Joe G. Greener, Adam L. MacLean, Huda Nassar, Christopher Rackauckas, Timothy E. Holy, Michael P.H. Stumpf.
This is the online material accompanying the paper "Julia for Biologists" and the JuliaCon presentation "Julia for Biologists". It's objective is to provide A. a diverse collection of Julia code examples and B. information on related online material in regards to Julia for biologists.
The code examples are chosen and organised in a way so that they highlight the three core language features of Julia: speed, abstraction and metaprogramming. We focus on capturing diversity in several regards:
- examples are selected from multiple biological and methodological domains.
- They are also designed to reflect different levels in regards to the computational focus of readers/listeners: high-level user cases (e.g. here) and low-level user cases (e.g. here).
- Additionally, they demonstrate different access points to Julia: Pluto notebooks (e.g. here), Jupyter notebooks (e.g. here) and
.jl
files (e.g. here).
This example demonstrates the speed of Julia for vectorisable code and the code can be found here. If you haven't used Pluto notebooks before, see here how to open them and explore!
- Domain: Single cell data
- Methodology: Network inference
- Feature: Speed for vectorisable code
- Packages: InformationMeasures.jl, Graphs.jl, SimpleWeightedGraphs.jl, GraphPlot.jl, StatsPlots.jl
- Access point: Pluto notebook
- Computational focus: high-level user case
This example demonstrates the speed of Julia for non linear system code and can be found here.
- Domain: Ecology
- Methodology: Dynamical systems
- Feature: Speed for non linear system code
- Packages: DifferentialEquations.jl
- Access point:
.jl
file - Computational focus: high-level user case
This example demonstrates the composability of packages in Julia and the code can be found here.
- Domain: Structural bioinformatics
- Methodology: Alignments, protein structure
- Feature: Package composability
- Packages: BioStructures.jl, BioSequences.jl, Bio3DViewer.jl, MetaGraphs.jl, Graphs.jl
- Access point: Jupyter notebook
- Computational focus: high-level user case
This example demonstrateds code reusability and the use of lazy operations in Julia and the code can be found here.
- Domain: Cell biology and neuroscience
- Methodology: Image processing
- Feature: Code reusablility and lazy operations
- Packages: JuliaImages suite
- Access point: Jupyter notebook
- Computational focus: low-level user case
This example demonstrates metaprogramming with Julia and the code can be found here.
- Domain: Biochemistry
- Methodology: Dynamical systems
- Feature: Metaprogramming
- Packages: DifferentialEquations.jl, Catalyst.jl, GpABC.jl, Turing.jl
- Access point: Jupyter notebook
- Computational focus: high-level user case
- Official website with tutorial videos and notebooks: https://julialang.org and https://julialang.org/learning/notebooks
- Download and install Julia: https://julialang.org/downloads
- Julia Academy, for free courses by core Julia developers: https://juliaacademy.com
- The Julia Programming Language youtube channel: https://www.youtube.com/c/TheJuliaLanguage
- "Developing Julia Packages" tutorial by Chris Rackauckas: https://www.youtube.com/watch?v=QVmU29rCjaA
- "The Unreasonable Effectiveness of Multiple Dispatch" talk by Stefan Karpinski: https://www.youtube.com/watch?v=kc9HwsxE1OY
- Introduction to metaprogramming workshop by David Sanders: https://www.youtube.com/watch?v=2QLhw6LVaq0
- Using old R code in your new Julia project: https://juliainterop.github.io/RCall.jl/stable/gettingstarted/
- BioJulia organisation website for bioinformatics packages and discussion: https://biojulia.net
- Package searching on JuliaHub and Julia Observer: https://juliahub.com/ui/Packages and https://juliaobserver.com/categories/Biology
- "Julia for Bioinformatics and Computational Biology" talk by Ben Ward, note this talk is from 2016 and some of the details are out of date: https://www.youtube.com/watch?v=0aa3g1NrLBM
- "On the performance and design of BioSequences compared to the Seq language" blog post by Jakob Nybo Nissen and Ben J. Ward, which discusses some design tradeoffs and benchmarking in detail: https://biojulia.net/post/seq-lang
- Discourse, the main discussion forum for the Julia community: https://discourse.julialang.org
- Slack, for quick and informal correspondence with a community of over 8,000 members: https://julialang.org/slack
- Zulip, similar to Slack with unlimited message history: https://julialang.zulipchat.com
- JuliaCon, the conference for all things Julia: https://juliacon.org
- Current diversity and inclusion initiatives: https://julialang.org/diversity/current