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
biopython
package - Launched 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 equivalent application tools between BioJulia and Biopython:
Application | BioJulia packages | Biopython objects/modules |
---|---|---|
Sequence annotation | GenomicFeatures, GenomicAnnotations | Seq , SeqRecord |
Input/Output | FASTX, XAM, BigWig,... | 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 (assignment as a statement) |
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 |
Extensive metaprogramming (Lisp-like macros, homoiconicity,...) | Less extensive metaprogramming (decorators, metaclasses,...) |
Included default package manager | No default package manager (poetry, conda, and other alternatives available) |
Single implementation available (JuliaLang) | Multiple implementations available (PyPy, Numba,...) |
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:
- See Noteworthy differences from Python 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