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:
Application | BioJulia packages | scikit-bio modules |
---|---|---|
Sequence alignment | BioSequences, BioAlignments | skbio.sequence , skbio.alignment |
Input/Output | FASTX, XAM, BigWig,... | skbio.io |
Data structures | IntervalTrees | skbio.tree |
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