scikit-bio (Python3)

  • scikit-bio represents a Python3 library providing data structures, algorithms, and additional bioinformatics resources
  • Unlike with BioJulia, scikit-bio tools are installed together as modules into a single skbio package
  • Launched in 2014 based on a BSD-relicensing of PyCogent and QIIME code and is currently in beta/maintenance mode

A few equivalent application tools between BioJulia and scikit-bio:

ApplicationBioJulia packagesscikit-bio modules
Sequence alignmentBioSequences, BioAlignmentsskbio.sequence, skbio.alignment
Input/OutputFASTX, XAM, BigWig,...skbio.io
Data structuresIntervalTreesskbio.tree

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: