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:

ApplicationBioJulia packagesBiopython objects/modules
Sequence annotationGenomicFeatures, GenomicAnnotationsSeq, SeqRecord
Input/OutputFASTX, XAM, BigWig,...Bio.SeqIO, Bio.AlignIO
Sequence alignmentBioSequences, BioAlignmentsBio.Align
Population geneticsPopGenBio.PopGen

A few package/ecosystem equivalents between Julia and Python3:

ApplicationJuliaPython3
Data manipulation/analysisDataFrames, CSV, Querypandas, Blaze
Plotting/visualizationPlots, Gadfly, Makie, TidierPlotsmatplotlib, seaborn, bokeh, plotnine, VisPy
Statistical analysisStatistics, HypothesisTests, GLMSciPy, statsmodels
Machine learningFlux, SciML, MLJ, ZygotePyTorch, TensorFlow, scikit-learn, JAX
Numerical mathematicsLinearAlgebra, SymbolicsNumPy, SciPy, SymPy
Notebook/report generatorIJulia, Pluto, WeaveIPython, Jupyter Book
Web applicationsGenie, FranklinDjango, Flask, Pelican, Dash

A few notable differences between Julia and Python3:

JuliaPython3
High-level, general-purpose compiled languageHigh-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 annotationsDynamically 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 managerNo 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: