Biopython (Python3) ​
Biopython represents an ecosystem of related biology tools written in the Python3 programming language
Unlike with BioJulia, Biopython tools are installed together as modules into a single
biopythonpackageLaunched over two decades ago with major releases covering the Python2/3 transition
Capabilities cover a number of molecular biology applications including sequence alignment, population genetics, and machine learning
A few similar applications between BioJulia and Biopython:
| Application | BioJulia packages | Biopython objects/modules |
|---|---|---|
| Sequence annotation | GenomicFeatures, GenomicAnnotations | Seq, SeqRecord |
| Input/Output | FASTX, XAM, BigWig, etc. | Bio.SeqIO, Bio.AlignIO |
| Sequence alignment | BioSequences, BioAlignments | Bio.Align |
| Population genetics | PopGen | Bio.PopGen |
A few package/ecosystem equivalents between Julia and Python3:
| Application | Julia | Python3 |
|---|---|---|
| Data manipulation/analysis | DataFrames, CSV, Query | pandas, Blaze |
| Plotting/visualization | Plots, Gadfly, Makie, TidierPlots | matplotlib, seaborn, bokeh, plotnine, VisPy |
| Statistical analysis | Statistics, HypothesisTests, GLM | SciPy, statsmodels |
| Machine learning | Flux, SciML, MLJ, Zygote | PyTorch, TensorFlow, scikit-learn, JAX |
| Numerical mathematics | LinearAlgebra, Symbolics | NumPy, SciPy, SymPy |
| Notebook/report generator | IJulia, Pluto, Weave | IPython, Jupyter Book |
| Web applications | Genie, Franklin | Django, Flask, Pelican, Dash |
A few notable differences between Julia and Python3:
| Julia | Python3 |
|---|---|
| High-level, general-purpose compiled language | High-level, general-purpose interpreted language |
| Expression-based (statements yield a value) | Statement-based (statements don't always yield a value) |
| Dynamically typed with multiple dispatch and optional type annotations | Dynamically typed with optional type annotations |
| Built-in parallelism via threads, coroutines (Tasks) | Limited (GIL) built-in parallelism via threads, async/await |
| Lisp-like (homoiconic, macro-based) metaprogramming | Reflection-based runtime metaprogramming |
| Included default package manager | No default package manager (poetry, conda, and other alternatives available) |
| Single implementation available (JuliaLang) | Multiple implementations available (PyPy, Numba, etc.) |
| Arrays are column-major (columns are contiguous in memory) | (Numpy) arrays are row-major by default (rows are contiguous in memory) |
To transition from Python3 to Julia:
Consult the Noteworthy differences from Python section in the Julia manual for a more in-depth comparison
Use PythonCall.jl/CondaPkg.jl to seamlessly integrate Python3 code into your Julia project
Use juliacall to seamlessly integrate Julia code into your Python3 project