diff --git a/previews/PR12/comparisons/bioconductor/index.html b/previews/PR12/comparisons/bioconductor/index.html index 9e0eb6b..4b50eb8 100644 --- a/previews/PR12/comparisons/bioconductor/index.html +++ b/previews/PR12/comparisons/bioconductor/index.html @@ -1,2 +1,2 @@ -Bioconductor (R) · Overview of BioJulia

Bioconductor (R)

  • Bioconductor represents an ecosystem of related genomics tools written in the R programming language
  • Tools written in other languages, such as C and Python, are also included with R wrappers available
  • Launched over two decades ago, it now hosts over 2000 packages for bioinformatics and related fields
  • Packages cover a broard range of methods for the analysis and manipulation of genomic data

A few equivalent applications between BioJulia and Bioconductor:

ApplicationBioJulia packagesBioconductor packages
Data structuresBioSymbols, KmerAnalysis, IntervalTreesBiobase
Sequence annotationGenomicFeatures, GenomicAnnotations, FormatSpecimensAnnotationHub
Input/OutputFASTX, XAM, BigWig,...BiocIO, Biostrings, ShortRead,...
Sequence alignmentBioSequences, BioAlignmentsBiostrings
Expression analysisSingleCellProjectionsDESeq2

A few package/ecosystem equivalents between Julia and R:

ApplicationJuliaR
Data manipulation/analysisDataFrames, CSV, Query, Tidiertibble, dplyr, tidyverse
Plotting/visualizationGadfly, VegaLite, Makieggplot2, vegalite, plotly
Statistical analysisStatistics, HypothesisTests, GLMstats
Machine learningFlux, SciML, Zygotemlr3, caret, tidymodels, Deriv
Numerical mathematicsLinearAlgebra, IterativeSolversMatrix, pracma, deSolve
Web applicationsGenie, Franklinshiny

A few notable differences between Julia and R:

JuliaR
High-level, general-purpose compiled languageHigh-level, interpreted language for statistical computing
Dynamically typed with multiple dispatch and optional type annotationsDynamically typed without type annotations support
Built-in parallelism via threads, coroutines (Tasks)Parallelism via external libraries (BLAS, parallel,...)
Extensive metaprogramming (Lisp-like macros, generated functions,...)Less extensive metaprogramming (function factories, expression manipulation,...)
Single implementation available (JuliaLang)Multiple implementations available (pqR, Renjin,...)

To transition from R to Julia:

+Bioconductor (R) · Overview of BioJulia

Bioconductor (R)

  • Bioconductor represents an ecosystem of related genomics tools written in the R programming language
  • Tools written in other languages, such as C and Python, are also included with R wrappers available
  • Launched over two decades ago, it now hosts over 2000 packages for bioinformatics and related fields
  • Packages cover a broard range of methods for the analysis and manipulation of genomic data

A few equivalent applications between BioJulia and Bioconductor:

ApplicationBioJulia packagesBioconductor packages
Data structuresBioSymbols, KmerAnalysis, IntervalTreesBiobase
Sequence annotationGenomicFeatures, GenomicAnnotations, FormatSpecimensAnnotationHub
Input/OutputFASTX, XAM, BigWig,...BiocIO, Biostrings, ShortRead,...
Sequence alignmentBioSequences, BioAlignmentsBiostrings
Expression analysisSingleCellProjectionsDESeq2

A few package/ecosystem equivalents between Julia and R:

ApplicationJuliaR
Data manipulation/analysisDataFrames, CSV, Query, Tidiertibble, dplyr, tidyverse
Plotting/visualizationGadfly, VegaLite, Makieggplot2, vegalite, plotly
Statistical analysisStatistics, HypothesisTests, GLMstats
Machine learningFlux, SciML, Zygotemlr3, caret, tidymodels, Deriv
Numerical mathematicsLinearAlgebra, IterativeSolversMatrix, pracma, deSolve
Web applicationsGenie, Franklinshiny

A few notable differences between Julia and R:

JuliaR
High-level, general-purpose compiled languageHigh-level, interpreted language for statistical computing
Dynamically typed with multiple dispatch and optional type annotationsDynamically typed without type annotations support
Built-in parallelism via threads, coroutines (Tasks)Parallelism via external libraries (BLAS, parallel,...)
Extensive metaprogramming (Lisp-like macros, generated functions,...)Less extensive metaprogramming (function factories, expression manipulation,...)
Single implementation available (JuliaLang)Multiple implementations available (pqR, Renjin,...)

To transition from R to Julia:

diff --git a/previews/PR12/comparisons/biojava/index.html b/previews/PR12/comparisons/biojava/index.html index e7a1d72..b3c9a8a 100644 --- a/previews/PR12/comparisons/biojava/index.html +++ b/previews/PR12/comparisons/biojava/index.html @@ -1,2 +1,2 @@ -BioJava (Java) · Overview of BioJulia

BioJava (Java)

  • BioJava is a biological data processing library written in the Java programming language
  • BioJava tooling is distributed via multiple classes within the same org.biojava package
  • Launched in 2002 with six major releases covering more than 11 Java releases

A few equivalent applications between BioJulia and BioJava:

ApplicationBioJulia packagesBioJava modules
Input/OutputFASTX, XAM, BigWig,...nbio.genome.io.fastq, nbio.ontology.obo,...
Sequence alignmentBioSequences, BioAlignmentsnbio.sequence, nbio.alignment
Macromolecular structuresBioStructuresnbio.structure

A few package/ecosystem equivalents between Julia and Java:

ApplicationJuliaJava
Data manipulation/analysisDataFrames, CSV, QueryTablesaw
Plotting/visualizationPlots, MakieJFreeChart, Jzy3d
Statistical analysisStatistics, HypothesisTestsStatistics (Apache Commons), NM Dev
Machine learningFlux, SciMLJava-ML, Neuroph
Numerical mathematicsLinearAlgebraNM Dev
Notebook/report generatorIJulia, PlutoIJava
Web applicationsGenie, FranklinGrails, Javalin

A few notable differences between Julia and Java:

JuliaJava
High-level, general-purpose compiled languageHigh-level, object-oriented, two-step (compiled and interpreted) language
Expression-based (statements yield a value)Statement-based (assignment as a statement)
Dynamically typed with multiple dispatch and optional type annotationsStatically typed with required type declarations
Built-in parallelism via threads, coroutines (Tasks)Built-in parallelism via threads, streams, fibers (Project Loom)
Extensive metaprogramming (Lisp-like macros, homoiconicity,...)Less extensive metaprogramming (reflection, annotations,...)
Included default package managerNo default package manager (dependency/build management tools include Maven, Gradle,...)
Single implementation available (JuliaLang)Multiple implementations available (OpenJDK, GraalVM,...)

To transition from Java to Julia:

+BioJava (Java) · Overview of BioJulia

BioJava (Java)

  • BioJava is a biological data processing library written in the Java programming language
  • BioJava tooling is distributed via multiple classes within the same org.biojava package
  • Launched in 2002 with six major releases covering more than 11 Java releases

A few equivalent applications between BioJulia and BioJava:

ApplicationBioJulia packagesBioJava modules
Input/OutputFASTX, XAM, BigWig,...nbio.genome.io.fastq, nbio.ontology.obo,...
Sequence alignmentBioSequences, BioAlignmentsnbio.sequence, nbio.alignment
Macromolecular structuresBioStructuresnbio.structure

A few package/ecosystem equivalents between Julia and Java:

ApplicationJuliaJava
Data manipulation/analysisDataFrames, CSV, QueryTablesaw
Plotting/visualizationPlots, MakieJFreeChart, Jzy3d
Statistical analysisStatistics, HypothesisTestsStatistics (Apache Commons), NM Dev
Machine learningFlux, SciMLJava-ML, Neuroph
Numerical mathematicsLinearAlgebraNM Dev
Notebook/report generatorIJulia, PlutoIJava
Web applicationsGenie, FranklinGrails, Javalin

A few notable differences between Julia and Java:

JuliaJava
High-level, general-purpose compiled languageHigh-level, object-oriented, two-step (compiled and interpreted) language
Expression-based (statements yield a value)Statement-based (assignment as a statement)
Dynamically typed with multiple dispatch and optional type annotationsStatically typed with required type declarations
Built-in parallelism via threads, coroutines (Tasks)Built-in parallelism via threads, streams, fibers (Project Loom)
Extensive metaprogramming (Lisp-like macros, homoiconicity,...)Less extensive metaprogramming (reflection, annotations,...)
Included default package managerNo default package manager (dependency/build management tools include Maven, Gradle,...)
Single implementation available (JuliaLang)Multiple implementations available (OpenJDK, GraalVM,...)

To transition from Java to Julia:

diff --git a/previews/PR12/comparisons/bioperl/index.html b/previews/PR12/comparisons/bioperl/index.html index 8a22596..495e3bf 100644 --- a/previews/PR12/comparisons/bioperl/index.html +++ b/previews/PR12/comparisons/bioperl/index.html @@ -1,2 +1,2 @@ -BioPerl (Perl5) · Overview of BioJulia

BioPerl (Perl5)

  • BioPerl represents an ecosystem of related molecular biology modules written in the Perl5 programming language
  • Supported by the Open Bioinformatics Foundation and includes additional utilities and interfaces for common bioinformatics applications
  • Launched in 2002 and has contributed to major scientific achievements including the Human Genome Project

A few equivalent application tools between BioJulia and BioPerl:

ApplicationBioJulia packagesBioPerl modules/objects
Input/OutputFASTX, XAM, BigWig,...SeqIO
Sequence alignmentBioSequences, BioAlignmentsAlignIO, SimpleAlign
Data structuresKmers, IntervalTreesBio::Kmer, Bio::Tree
Population GeneticsPopGenPopGen

A few package/ecosystem equivalents between Julia and Perl5:

ApplicationJuliaPerl5
Data manipulation/analysisDataFrames, CSV, QueryPDL, Text-CSV
Plotting/visualizationPlots, Gadfly, MakieGDGraph, Chart-GGPlot
Statistical analysisStatistics, HypothesisTests, GLMStatistics-Descriptive, PDL-Stats
Numerical mathematicsLinearAlgebra, SymbolicsPDL-LinearAlgebra, Math-Symbolic
Notebook/report generatorIJulia, PlutoDevel-IPerl
Web applicationsGenie, FranklinCatalyst, Mojolicious

A few notable differences between Julia and Perl5:

JuliaPerl5
High-level, general-purpose compiled languageHigh-level, general-purpose interpreted language
Dynamically typed with multiple dispatch and optional type annotationsDynamically typed without type annotations support
Built-in parallelism via threads, coroutines (Tasks)Parallelism via threads, external modules (Coro, Parallel,...)
Lisp-inspired metaprogramming (S-expressions, homoiconicity,...)Macro-less metaprogramming capabilities (eval, symbol table manipulation,...)
Single language implementation (JuliaLang)Family of related languages/implementations (Perl5, Perl6/Raku, ActivePerl,...)

To transition from Perl5 to Julia:

+BioPerl (Perl5) · Overview of BioJulia

BioPerl (Perl5)

  • BioPerl represents an ecosystem of related molecular biology modules written in the Perl5 programming language
  • Supported by the Open Bioinformatics Foundation and includes additional utilities and interfaces for common bioinformatics applications
  • Launched in 2002 and has contributed to major scientific achievements including the Human Genome Project

A few equivalent application tools between BioJulia and BioPerl:

ApplicationBioJulia packagesBioPerl modules/objects
Input/OutputFASTX, XAM, BigWig,...SeqIO
Sequence alignmentBioSequences, BioAlignmentsAlignIO, SimpleAlign
Data structuresKmers, IntervalTreesBio::Kmer, Bio::Tree
Population GeneticsPopGenPopGen

A few package/ecosystem equivalents between Julia and Perl5:

ApplicationJuliaPerl5
Data manipulation/analysisDataFrames, CSV, QueryPDL, Text-CSV
Plotting/visualizationPlots, Gadfly, MakieGDGraph, Chart-GGPlot
Statistical analysisStatistics, HypothesisTests, GLMStatistics-Descriptive, PDL-Stats
Numerical mathematicsLinearAlgebra, SymbolicsPDL-LinearAlgebra, Math-Symbolic
Notebook/report generatorIJulia, PlutoDevel-IPerl
Web applicationsGenie, FranklinCatalyst, Mojolicious

A few notable differences between Julia and Perl5:

JuliaPerl5
High-level, general-purpose compiled languageHigh-level, general-purpose interpreted language
Dynamically typed with multiple dispatch and optional type annotationsDynamically typed without type annotations support
Built-in parallelism via threads, coroutines (Tasks)Parallelism via threads, external modules (Coro, Parallel,...)
Lisp-inspired metaprogramming (S-expressions, homoiconicity,...)Macro-less metaprogramming capabilities (eval, symbol table manipulation,...)
Single language implementation (JuliaLang)Family of related languages/implementations (Perl5, Perl6/Raku, ActivePerl,...)

To transition from Perl5 to Julia:

diff --git a/previews/PR12/comparisons/biopython/index.html b/previews/PR12/comparisons/biopython/index.html index 049a8b3..38370b3 100644 --- a/previews/PR12/comparisons/biopython/index.html +++ b/previews/PR12/comparisons/biopython/index.html @@ -1,2 +1,2 @@ -Biopython (Python3) · Overview of BioJulia

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, Makiematplotlib, seaborn, bokeh, plotnine, VisPy
Statistical analysisStatistics, HypothesisTests, GLMSciPy, statsmodels
Machine learningFlux, SciML, 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:

+Biopython (Python3) · Overview of BioJulia

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, Makiematplotlib, seaborn, bokeh, plotnine, VisPy
Statistical analysisStatistics, HypothesisTests, GLMSciPy, statsmodels
Machine learningFlux, SciML, 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:

diff --git a/previews/PR12/comparisons/bioruby/index.html b/previews/PR12/comparisons/bioruby/index.html index 3b3a2c1..03d97d2 100644 --- a/previews/PR12/comparisons/bioruby/index.html +++ b/previews/PR12/comparisons/bioruby/index.html @@ -1,2 +1,2 @@ -BioRuby (Ruby) · Overview of BioJulia

BioRuby (Ruby)

  • BioRuby represents an ecosystem of related biology tools written in the Ruby programming language
  • Unlike with BioJulia, BioRuby tools are installed together as classes/modules into a single bio gem
  • Launched in 2000 with two major releases covering the Ruby1/2/3 transitions
  • Primarily composed of wrapper classes/modules for common bioinformatics, molecular biology applications

A few equivalent application tools between BioJulia and BioRuby:

ApplicationBioJulia packagesBioRuby classes/modules
Sequence alignmentBioSequences, BioAlignmentsBio::Sequence, Bio::Alignment
Input/OutputFASTX, XAM, BigWig,...Bio::Fasta, Bio::Fastq,...

A few package/ecosystem equivalents between Julia and Ruby:

ApplicationJuliaRuby
Data manipulation/analysisDataFrames, CSV, Querydaru, CSV
Plotting/visualizationPlots, MakieChartkick, gruff
Statistical analysisStatistics, HypothesisTests, GLM, DistributionsStatsample, distribution
Machine learningFlux, SciMLRumale, TensorStream
Numerical mathematicsLinearAlgebraNMatrix, minimization, integration
Notebook/report generatorIJulia, PlutoIRuby
Web applicationsGenie, FranklinHanami, Jekyll

A few notable differences between Julia and Ruby:

JuliaRuby
High-level, general-purpose compiled languageHigh-level, general-purpose interpreted language
Dynamically typed with multiple dispatch and optional type annotationsDynamically typed with optional type annotations (Sorbet, RBS)
Built-in parallelism via threads, coroutines (Tasks)Built-in parallelism via threads, fibers
Lisp-inspired metaprogramming (S-expressions, homoiconicity,...)Macro-less metaprogramming capabilities (dynamic reflection, eval methods,...)
Single implementation available (JuliaLang)Multiple implementations available (TruffleRuby, mruby,...)

To transition from Ruby to Julia:

+BioRuby (Ruby) · Overview of BioJulia

BioRuby (Ruby)

  • BioRuby represents an ecosystem of related biology tools written in the Ruby programming language
  • Unlike with BioJulia, BioRuby tools are installed together as classes/modules into a single bio gem
  • Launched in 2000 with two major releases covering the Ruby1/2/3 transitions
  • Primarily composed of wrapper classes/modules for common bioinformatics, molecular biology applications

A few equivalent application tools between BioJulia and BioRuby:

ApplicationBioJulia packagesBioRuby classes/modules
Sequence alignmentBioSequences, BioAlignmentsBio::Sequence, Bio::Alignment
Input/OutputFASTX, XAM, BigWig,...Bio::Fasta, Bio::Fastq,...

A few package/ecosystem equivalents between Julia and Ruby:

ApplicationJuliaRuby
Data manipulation/analysisDataFrames, CSV, Querydaru, CSV
Plotting/visualizationPlots, MakieChartkick, gruff
Statistical analysisStatistics, HypothesisTests, GLM, DistributionsStatsample, distribution
Machine learningFlux, SciMLRumale, TensorStream
Numerical mathematicsLinearAlgebraNMatrix, minimization, integration
Notebook/report generatorIJulia, PlutoIRuby
Web applicationsGenie, FranklinHanami, Jekyll

A few notable differences between Julia and Ruby:

JuliaRuby
High-level, general-purpose compiled languageHigh-level, general-purpose interpreted language
Dynamically typed with multiple dispatch and optional type annotationsDynamically typed with optional type annotations (Sorbet, RBS)
Built-in parallelism via threads, coroutines (Tasks)Built-in parallelism via threads, fibers
Lisp-inspired metaprogramming (S-expressions, homoiconicity,...)Macro-less metaprogramming capabilities (dynamic reflection, eval methods,...)
Single implementation available (JuliaLang)Multiple implementations available (TruffleRuby, mruby,...)

To transition from Ruby to Julia:

diff --git a/previews/PR12/comparisons/scikitbio/index.html b/previews/PR12/comparisons/scikitbio/index.html index ad26294..07ad662 100644 --- a/previews/PR12/comparisons/scikitbio/index.html +++ b/previews/PR12/comparisons/scikitbio/index.html @@ -1,2 +1,2 @@ -scikit-bio (Python3) · Overview of BioJulia

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, Makiematplotlib, seaborn, bokeh, plotnine, VisPy
Statistical analysisStatistics, HypothesisTests, GLMSciPy, statsmodels
Machine learningFlux, SciML, 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:

+scikit-bio (Python3) · Overview of BioJulia

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, Makiematplotlib, seaborn, bokeh, plotnine, VisPy
Statistical analysisStatistics, HypothesisTests, GLMSciPy, statsmodels
Machine learningFlux, SciML, 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:

diff --git a/previews/PR12/getting_started/biojuliainstallation/index.html b/previews/PR12/getting_started/biojuliainstallation/index.html index 7f17fd9..16f92c5 100644 --- a/previews/PR12/getting_started/biojuliainstallation/index.html +++ b/previews/PR12/getting_started/biojuliainstallation/index.html @@ -23,4 +23,4 @@ # all of the dependencies specified in that file into your Julia environment. (@v1.9) pkg> instantiate # Exit REPL via the Backspace key -julia> using <name of package here>
Note

You can skip straight to (@v1.9) pkg> activate ... if you have already installed the package code locally, simply make sure to point Pkg to the right path as shown above.

You can now change your source code and load them into the Julia session with using <name of package here>. To test your code, run (@v1.9) pkg> test to run the package's test suite to ensure that everything works correctly. When you are done developing the package, enter (@v1.9) pkg> free to stop tracking the package.

+julia> using <name of package here>
Note

You can skip straight to (@v1.9) pkg> activate ... if you have already installed the package code locally, simply make sure to point Pkg to the right path as shown above.

You can now change your source code and load them into the Julia session with using <name of package here>. To test your code, run (@v1.9) pkg> test to run the package's test suite to ensure that everything works correctly. When you are done developing the package, enter (@v1.9) pkg> free to stop tracking the package.

diff --git a/previews/PR12/getting_started/casescenarios/index.html b/previews/PR12/getting_started/casescenarios/index.html index 7024ade..400563f 100644 --- a/previews/PR12/getting_started/casescenarios/index.html +++ b/previews/PR12/getting_started/casescenarios/index.html @@ -1,2 +1,2 @@ -Case Scenarios · Overview of BioJulia

Case Scenarios

Note

These scenarios are inspired by real stories from members of the BioJulia/Julia community!

Novel biotechnology startup solutions

Lab data processing, visualization, and analysis

Pharmaceutical drug design pipelines

Modeling and simulation of biological systems

School course/lesson planning

Martha was recently hired to teach a biostatistics course for first-year students at the University of Concordia. This will be a new offering at the university, thus she has been given free reign to design her own course plan. She is most interested in engaging students with a fun practical component, including assignments that are trivial to set up, easy for students to learn, and that draw from real-world examples. She looks for inspiration from similar courses, and finds that many are aiming to develop a strong foundation in statistical programming for handling data analysis, hypothesis testing, and other tasks.

A number of these courses teach R or Python3, which have been entrenched in statistics for a number of years. They also appear to be popular with new programmers due to being high-level and easy to learn. However, during her research, Martha encounters a number of issues that raise concern:

  • Performance would become an issue with larger datasets or visual plots, with the interpreter taking too long to generate output and thus wasting valuable class time
  • Both languages have been around for a long time, with a number of quirks and design decisions that have not aged well such as implicit mutation and lack of type checking
  • Setting up reproducible environments with all the necessary bits (packages, data,...) in either language is challenging, with a number of limitations and choices presented such as package manager, language implementation, etc.
  • R is designed specifically for statistical computing, with concepts not found in other, more general languages (S3/S4 class system, factors,...) which could confuse students with previous programming knowledge or those wishing to learn more fundamental computer science
  • She wants to avoid the "two-language problem" wherein parts of either language are written in another and thus introduce unneeded complexity

A fellow physics professor recommends that she look into Julia, which has found success within the department. She takes a look and discovers a lot to love about this relatively new language. Beyond addressing many of the issues she encountered with R and Python, she especially enjoys how fast the performance is, how the default package manager allows for reproducibility and ease of use, and how close to mathematical writing Julia can get whilst remaining readable.

Her first objective is to create a presentation format with good aesthetics that can also show off and run code. She discovers how to set up interactive notebooks with Pluto that she will host in a central repository or online via a website or with solutions like Binder. This has a number of advantages compared to PowerPoint or Markdown presentations:

  • Easily run and experiment with code cells within a reproducible environment
  • Dependency management automatically handled via the built-in package manager
  • Share the code and lessons with students either as notebooks or as exported PDF/HTML pages

To bundle the datasets with the notebooks, she takes advantage of Julia's Artifact system for handling and retrieving data from almost anywhere on the Internet.

With the course infrastructure set, she now turns to creating the actual course material. She can cover a number of biostatistics topics using powerful, well-established Julia packages:

With everything in place, she is almost ready to present her course. However, just before the start of the semester, she decides to provide a lesson on Tukey's honest significance test. Unfortunately, there is no package written in Julia for this test, and there is little time left to develop the code on her own. Luckily, Julia posseses amazing interoperability with both Python3 and R, and discovers how to both bundle and call Scipy's stats.tukey_hsd function via PythonCall and CondaPkg. Not only will the Python3 code seamlessly integrate into the Julia notebook, but it will also handle the conda packaging automatically!

Martha goes on to deliver one of the best courses that semester, empowered by Julia to deliver an engaging, interactive experience that teaches her students both the fundamentals of biostatistics and of quality programming.

Research planning and development

+Case Scenarios · Overview of BioJulia

Case Scenarios

Note

These scenarios are inspired by real stories from members of the BioJulia/Julia community!

Novel biotechnology startup solutions

Lab data processing, visualization, and analysis

Pharmaceutical drug design pipelines

Modeling and simulation of biological systems

School course/lesson planning

Martha was recently hired to teach a biostatistics course for first-year students at the University of Concordia. This will be a new offering at the university, thus she has been given free reign to design her own course plan. She is most interested in engaging students with a fun practical component, including assignments that are trivial to set up, easy for students to learn, and that draw from real-world examples. She looks for inspiration from similar courses, and finds that many are aiming to develop a strong foundation in statistical programming for handling data analysis, hypothesis testing, and other tasks.

A number of these courses teach R or Python3, which have been entrenched in statistics for a number of years. They also appear to be popular with new programmers due to being high-level and easy to learn. However, during her research, Martha encounters a number of issues that raise concern:

  • Performance would become an issue with larger datasets or visual plots, with the interpreter taking too long to generate output and thus wasting valuable class time
  • Both languages have been around for a long time, with a number of quirks and design decisions that have not aged well such as implicit mutation or lack of type annotations
  • Setting up reproducible environments with all the necessary bits (packages, data,...) in either language is challenging, with a number of limitations and choices presented such as package manager, language implementation, etc.
  • R is designed specifically for statistical computing, with concepts not found in other, more general languages (S3/S4 class system, factors,...) which could confuse students with previous programming knowledge or those wishing to learn more fundamental computer science
  • She wants to avoid the "two-language problem" wherein parts of either language are written in another and thus introduce unneeded complexity

A fellow physics professor recommends that she look into Julia, which has found success within the department. She takes a look and discovers a lot to love about this relatively new language. Beyond addressing many of the issues she encountered with R and Python3, she especially enjoys how fast the performance is, how the default package manager allows for reproducibility and ease of use, and how close to mathematical writing Julia can get whilst remaining readable.

Her first objective is to create a presentation format with good aesthetics that can also show off and run code. She discovers how to set up interactive notebooks with Pluto that she will host in a central repository or online via a website or with solutions like Binder. This has a number of advantages compared to PowerPoint or Markdown presentations:

  • Easily run and experiment with code cells within a reproducible environment
  • Dependency management automatically handled via the built-in package manager
  • Share the code and lessons with students either as notebooks or as exported PDF/HTML pages

To bundle the datasets with the notebooks, she takes advantage of Julia's Artifact system for handling and retrieving data from almost anywhere on the Internet.

With the course infrastructure set, she now turns to creating the actual course material. She can cover a number of biostatistics topics using powerful, well-established Julia packages:

With everything in place, she is almost ready to present her course. However, just before the start of the semester, she decides to provide a lesson on Tukey's honest significance test. Unfortunately, there is no package written in Julia for this test, and there is little time left to develop the code on her own. Luckily, Julia posseses amazing interoperability with both Python3 and R, and discovers how to both call and bundle Scipy's stats.tukey_hsd function via PythonCall and CondaPkg. Not only will the Python3 code seamlessly integrate into the Julia notebook, but it will also handle the conda packaging automatically!

Martha goes on to deliver one of the best courses that semester, empowered by Julia to deliver an engaging, interactive experience that teaches her students both the fundamentals of biostatistics and of quality programming.

Research planning and development

diff --git a/previews/PR12/getting_started/juliainstallation/index.html b/previews/PR12/getting_started/juliainstallation/index.html index 20a3213..2fd1ca9 100644 --- a/previews/PR12/getting_started/juliainstallation/index.html +++ b/previews/PR12/getting_started/juliainstallation/index.html @@ -12,4 +12,4 @@ # Second option: install juliaup in a Rust image (not recommended) FROM rust:latest -RUN cargo install juliaup

Direct download

You can also install Julia as a downloadable executable from the Julia website's Download section. You must make sure to install the correct Julia build for your machine based on:

Make sure to follow the exact installation steps for your machine in order to ensure the best experience.

Build from source

For building/testing purposes, you may build Julia from the source code that is fully available in the Julia GitHub repository. Simply enter git clone https://github.com/JuliaLang/julia.git to copy the entire source on your machine, create a new git branch via git checkout -b name-of-branch, add your modifications, and run make to start the Makefile build.

+RUN cargo install juliaup

Direct download

You can also install Julia as a downloadable executable from the Julia website's Download section. You must make sure to install the correct Julia build for your machine based on:

Make sure to follow the exact installation steps for your machine in order to ensure the best experience.

Build from source

For building/testing purposes, you may build Julia from the source code that is fully available in the Julia GitHub repository. Simply enter git clone https://github.com/JuliaLang/julia.git to copy the entire source on your machine, create a new git branch via git checkout -b name-of-branch, add your modifications, and run make to start the Makefile build.

diff --git a/previews/PR12/getting_started/toolsinstallation/index.html b/previews/PR12/getting_started/toolsinstallation/index.html index 8439274..c2fc648 100644 --- a/previews/PR12/getting_started/toolsinstallation/index.html +++ b/previews/PR12/getting_started/toolsinstallation/index.html @@ -21,4 +21,4 @@ ERROR: invalid redefinition of constant Point Stacktrace: [1] top-level scope -@ REPL[2]:1

To learn more, see the The Julia REPL section in the Julia manual.

Visual Studio Code extension

The Julia organization officially maintains the Julia vscode extension, which provides a complete IDE solution for developing in Julia. This boasts a number of advantages compared to a REPL solution:

To install vscode, follow the instructions on how to install the official binary for your development machine from the official website. Next, click on the Extension icon in the side Activity Bar and search for "Julia". The official Julia extension should be the first extension available. You can also install Julia within the Quick Open input panel by pressing Ctrl + P and entering ext install julialang.language-julia.

<!– TODO: Move image to assets directory –> Julia VSCode Extension

Install the extension and restart vscode. We also recommend installing some additional extensions that will further improve the development experience:

<!– TODO: some examples of julia-vscode commands–>

You can experiment with Julia extension features in the Quick Open panel by writing Julia and consulting the available options. To learn more, visit the Julia in Visual Studio Code page in the official vscode docs. You can also visit the Julia extension website to learn more about what features are available.

+@ REPL[2]:1

To learn more, see the The Julia REPL section in the Julia manual.

Visual Studio Code extension

The Julia organization officially maintains the Julia vscode extension, which provides a complete IDE solution for developing in Julia. This boasts a number of advantages compared to a REPL solution:

To install vscode, follow the instructions on how to install the official binary for your development machine from the official website. Next, click on the Extension icon in the side Activity Bar and search for "Julia". The official Julia extension should be the first extension available. You can also install Julia within the Quick Open input panel by pressing Ctrl + P and entering ext install julialang.language-julia.

<!– TODO: Move image to assets directory –> Julia VSCode Extension

Install the extension and restart vscode. We also recommend installing some additional extensions that will further improve the development experience:

<!– TODO: some examples of julia-vscode commands–>

You can experiment with Julia extension features in the Quick Open panel by writing Julia and consulting the available options. To learn more, visit the Julia in Visual Studio Code page in the official vscode docs. You can also visit the Julia extension website to learn more about what features are available.

diff --git a/previews/PR12/index.html b/previews/PR12/index.html index 4db2271..fed8719 100644 --- a/previews/PR12/index.html +++ b/previews/PR12/index.html @@ -1,2 +1,2 @@ -BioJulia: Fast, open, easy, software for biology · Overview of BioJulia

BioJulia: Fast, open, easy, software for biology

Note: This landing site is under extensive development and will receive frequent updates. It is not in a ready state, and is published under GitHub Pages only for testing purposes.

BioJulia is a passionate, community-led organization providing biology-related packages written in the Julia programming language. The organization offers a comprehensive, fully open-source ecosystem of both libraries that serve as essential building blocks for other packages as well as interactive tools for everyday tasks and workflows.

Biologists are fully empowered by Julia to easily tackle domain-specific challenges, taking advantage of features including:

Where to Start?

Use the top navigation bar to search for provided packages within one's field of interest.

+BioJulia: Fast, open, easy, software for biology · Overview of BioJulia

BioJulia: Fast, open, easy, software for biology

Note: This landing site is under extensive development and will receive frequent updates. It is not in a ready state, and is published under GitHub Pages only for testing purposes.

BioJulia is a passionate, community-led organization providing biology-related packages written in the Julia programming language. The organization offers a comprehensive, fully open-source ecosystem of both libraries that serve as essential building blocks for other packages as well as interactive tools for everyday tasks and workflows.

Biologists are fully empowered by Julia to easily tackle domain-specific challenges, taking advantage of features including:

Where to Start?

Use the top navigation bar to search for provided packages within one's field of interest.

diff --git a/previews/PR12/overview/index.html b/previews/PR12/overview/index.html index f8ba72a..5f98be1 100644 --- a/previews/PR12/overview/index.html +++ b/previews/PR12/overview/index.html @@ -1,2 +1,2 @@ -- · Overview of BioJulia
+- · Overview of BioJulia
diff --git a/previews/PR12/search/index.html b/previews/PR12/search/index.html index 57fa29a..005124e 100644 --- a/previews/PR12/search/index.html +++ b/previews/PR12/search/index.html @@ -1,2 +1,2 @@ -Search · Overview of BioJulia

Loading search...

    +Search · Overview of BioJulia

    Loading search...

      diff --git a/previews/PR12/search_index.js b/previews/PR12/search_index.js index 021f8a4..f039d33 100644 --- a/previews/PR12/search_index.js +++ b/previews/PR12/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"comparisons/bioconductor/#bioconductor","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"","category":"section"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Bioconductor represents an ecosystem of related genomics tools written in the R programming language\nTools written in other languages, such as C and Python, are also included with R wrappers available \nLaunched over two decades ago, it now hosts over 2000 packages for bioinformatics and related fields\nPackages cover a broard range of methods for the analysis and manipulation of genomic data","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"A few equivalent applications between BioJulia and Bioconductor:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Application BioJulia packages Bioconductor packages\nData structures BioSymbols, KmerAnalysis, IntervalTrees Biobase\nSequence annotation GenomicFeatures, GenomicAnnotations, FormatSpecimens AnnotationHub\nInput/Output FASTX, XAM, BigWig,... BiocIO, Biostrings, ShortRead,...\nSequence alignment BioSequences, BioAlignments Biostrings\nExpression analysis SingleCellProjections DESeq2","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"A few package/ecosystem equivalents between Julia and R:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Application Julia R\nData manipulation/analysis DataFrames, CSV, Query, Tidier tibble, dplyr, tidyverse\nPlotting/visualization Gadfly, VegaLite, Makie ggplot2, vegalite, plotly\nStatistical analysis Statistics, HypothesisTests, GLM stats\nMachine learning Flux, SciML, Zygote mlr3, caret, tidymodels, Deriv\nNumerical mathematics LinearAlgebra, IterativeSolvers Matrix, pracma, deSolve\nWeb applications Genie, Franklin shiny","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"A few notable differences between Julia and R:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Julia R\nHigh-level, general-purpose compiled language High-level, interpreted language for statistical computing\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed without type annotations support\nBuilt-in parallelism via threads, coroutines (Tasks) Parallelism via external libraries (BLAS, parallel,...)\nExtensive metaprogramming (Lisp-like macros, generated functions,...) Less extensive metaprogramming (function factories, expression manipulation,...)\nSingle implementation available (JuliaLang) Multiple implementations available (pqR, Renjin,...)","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"To transition from R to Julia:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"See Noteworthy differences from R in the Julia manual for a more in-depth comparison\nUse RCall.jl to seamlessly integrate R code into your Julia project\nUse JuliaCall to seamlessly integrate Julia code into your R project","category":"page"},{"location":"comparisons/bioruby/#bioruby","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"","category":"section"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"BioRuby represents an ecosystem of related biology tools written in the Ruby programming language\nUnlike with BioJulia, BioRuby tools are installed together as classes/modules into a single bio gem\nLaunched in 2000 with two major releases covering the Ruby1/2/3 transitions\nPrimarily composed of wrapper classes/modules for common bioinformatics, molecular biology applications ","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"A few equivalent application tools between BioJulia and BioRuby:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Application BioJulia packages BioRuby classes/modules\nSequence alignment BioSequences, BioAlignments Bio::Sequence, Bio::Alignment\nInput/Output FASTX, XAM, BigWig,... Bio::Fasta, Bio::Fastq,...","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"A few package/ecosystem equivalents between Julia and Ruby:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Application Julia Ruby\nData manipulation/analysis DataFrames, CSV, Query daru, CSV\nPlotting/visualization Plots, Makie Chartkick, gruff\nStatistical analysis Statistics, HypothesisTests, GLM, Distributions Statsample, distribution\nMachine learning Flux, SciML Rumale, TensorStream\nNumerical mathematics LinearAlgebra NMatrix, minimization, integration\nNotebook/report generator IJulia, Pluto IRuby\nWeb applications Genie, Franklin Hanami, Jekyll","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"A few notable differences between Julia and Ruby:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Julia Ruby\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed with optional type annotations (Sorbet, RBS)\nBuilt-in parallelism via threads, coroutines (Tasks) Built-in parallelism via threads, fibers\nLisp-inspired metaprogramming (S-expressions, homoiconicity,...) Macro-less metaprogramming capabilities (dynamic reflection, eval methods,...)\nSingle implementation available (JuliaLang) Multiple implementations available (TruffleRuby, mruby,...)","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"To transition from Ruby to Julia:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Read the Julia manual for an in-depth look at its internals and features\nSee Running External Programs in the manual for running Ruby scripts or other programs from Julia","category":"page"},{"location":"getting_started/biojuliainstallation/#biojuliainstallation","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"","category":"section"},{"location":"getting_started/biojuliainstallation/#Standard-installation","page":"Installing BioJulia Packages","title":"Standard installation","text":"","category":"section"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"As with any Julia package, you can easily install any BioJulia package with the help of the official package manager included by default with every Julia installation. All you need to know is the name of the package of interest!","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"There are two standard methods to install a package:","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nThe Julia package manager, similarly to conda and others, organizes dependencies according to the \"environment\" they are in, meaning in which directory the packages are installed to. The default Julia session adds packages to a \"global\" environment, usually the .julia/environments/v1.x directory. When you are developing a package, you must activate its project-specific environment by calling activate MyProjectName (see Package development below) so that you can isolate your dependencies from the global environment and manage them independently. See Working with Environment for more details.","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"The package manager (Pkg) module","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"# You can exclude the semicolon, it is used here for suppressing output \nusing Pkg;\n# Install the package\njulia> Pkg.add(\"\");\n# Use the installed package\nusing ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nOne excellent trick is that any Julia code with the julia> prompt included at the beginning of the line can be copy/pasted as is into the REPL! See the Julia REPL section for more.","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"Pkg mode","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"# Enter ]\n]\n# @v1.x will show your current Julia version\n(@v1.9) pkg> add \n# Exit Pkg REPL mode via the Backspace key\njulia> using ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nJust like with the previous method, you can copy/paste code with the (@v1.x) pkg> prompt included and Julia will work correctly! You can even skip having to enter Pkg mode by just entering directly (@v1.x) pkg> add.... You do not need to manually change the version number indicated in the prompt if you have a different Julia version than that which is listed, it is again handled for you.","category":"page"},{"location":"getting_started/biojuliainstallation/#pkg-devel","page":"Installing BioJulia Packages","title":"Package development","text":"","category":"section"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"If you are interested in developing a new or existing BioJulia/Julia package, the package manager can also help you by first cloning the package repository to your development machine. Pkg will then load the required dependencies in a new dependency environment based on the package's Project.toml file. Thereafter, both the direct and indirect dependencies can be locked using a generated Manifest.toml if needed and a pull request can be submitted. ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"There are two standard methods to set up Julia for developing a package:","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"The package manager (Pkg) module ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"using Pkg;\njulia> Pkg.develop(\"\");\nusing ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"Pkg mode","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"# Enter ]\n]\n# If the package is within a remote Git repository, write instead\n# `dev https://github.com//`\n(@v1.9) pkg> dev \n# Make sure you are within the same directory as the package folder\n(@v1.9) pkg> activate /path/to/package/folder/PackageName\n# The previous command activates the environment as directed by the\n# package's Project.toml file. This next command will then download\n# all of the dependencies specified in that file into your Julia environment.\n(@v1.9) pkg> instantiate\n# Exit REPL via the Backspace key\njulia> using ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nYou can skip straight to (@v1.9) pkg> activate ... if you have already installed the package code locally, simply make sure to point Pkg to the right path as shown above.","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"You can now change your source code and load them into the Julia session with using . To test your code, run (@v1.9) pkg> test to run the package's test suite to ensure that everything works correctly. When you are done developing the package, enter (@v1.9) pkg> free to stop tracking the package. ","category":"page"},{"location":"comparisons/biojava/#biojava","page":"BioJava (Java)","title":"BioJava (Java)","text":"","category":"section"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"BioJava is a biological data processing library written in the Java programming language\nBioJava tooling is distributed via multiple classes within the same org.biojava package\nLaunched in 2002 with six major releases covering more than 11 Java releases","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"A few equivalent applications between BioJulia and BioJava:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Application BioJulia packages BioJava modules\nInput/Output FASTX, XAM, BigWig,... nbio.genome.io.fastq, nbio.ontology.obo,...\nSequence alignment BioSequences, BioAlignments nbio.sequence, nbio.alignment\nMacromolecular structures BioStructures nbio.structure","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"A few package/ecosystem equivalents between Julia and Java:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Application Julia Java\nData manipulation/analysis DataFrames, CSV, Query Tablesaw\nPlotting/visualization Plots, Makie JFreeChart, Jzy3d\nStatistical analysis Statistics, HypothesisTests Statistics (Apache Commons), NM Dev\nMachine learning Flux, SciML Java-ML, Neuroph\nNumerical mathematics LinearAlgebra NM Dev\nNotebook/report generator IJulia, Pluto IJava\nWeb applications Genie, Franklin Grails, Javalin","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"A few notable differences between Julia and Java:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Julia Java\nHigh-level, general-purpose compiled language High-level, object-oriented, two-step (compiled and interpreted) language\nExpression-based (statements yield a value) Statement-based (assignment as a statement)\nDynamically typed with multiple dispatch and optional type annotations Statically typed with required type declarations\nBuilt-in parallelism via threads, coroutines (Tasks) Built-in parallelism via threads, streams, fibers (Project Loom)\nExtensive metaprogramming (Lisp-like macros, homoiconicity,...) Less extensive metaprogramming (reflection, annotations,...)\nIncluded default package manager No default package manager (dependency/build management tools include Maven, Gradle,...)\nSingle implementation available (JuliaLang) Multiple implementations available (OpenJDK, GraalVM,...)","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"To transition from Java to Julia:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Use JavaCall.jl to seamlessly integrate Java code into your Julia project\nSee Running External Programs in the Julia manual for running Java scripts or other programs from Julia","category":"page"},{"location":"comparisons/scikitbio/#scikitbio","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"","category":"section"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"scikit-bio represents a Python3 library providing data structures, algorithms, and additional bioinformatics resources\nUnlike with BioJulia, scikit-bio tools are installed together as modules into a single skbio package \nLaunched in 2014 based on a BSD-relicensing of PyCogent and QIIME code and is currently in beta/maintenance mode","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"A few equivalent application tools between BioJulia and scikit-bio:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"Application BioJulia packages scikit-bio modules\nSequence alignment BioSequences, BioAlignments skbio.sequence, skbio.alignment\nInput/Output FASTX, XAM, BigWig,... skbio.io\nData structures IntervalTrees skbio.tree","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"A few package/ecosystem equivalents between Julia and Python3:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"Application Julia Python3\nData manipulation/analysis DataFrames, CSV, Query pandas, Blaze\nPlotting/visualization Plots, Gadfly, Makie matplotlib, seaborn, bokeh, plotnine, VisPy\nStatistical analysis Statistics, HypothesisTests, GLM SciPy, statsmodels\nMachine learning Flux, SciML, Zygote PyTorch, TensorFlow, scikit-learn, JAX\nNumerical mathematics LinearAlgebra, Symbolics NumPy, SciPy, SymPy\nNotebook/report generator IJulia, Pluto, Weave IPython, Jupyter Book\nWeb applications Genie, Franklin Django, Flask, Pelican, Dash","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"A few notable differences between Julia and Python3:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"Julia Python3\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nExpression-based (statements yield a value) Statement-based (assignment as a statement)\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed with optional type annotations\nBuilt-in parallelism via threads, coroutines (Tasks) Limited (GIL) built-in parallelism via threads, async/await\nExtensive metaprogramming (Lisp-like macros, homoiconicity,...) Less extensive metaprogramming (decorators, metaclasses,...)\nIncluded default package manager No default package manager (poetry, conda, and other alternatives available)\nSingle implementation available (JuliaLang) Multiple implementations available (PyPy, Numba,...)\nArrays are column-major (columns are contiguous in memory) (Numpy) arrays are row-major by default (rows are contiguous in memory)","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"To transition from Python3 to Julia:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"See Noteworthy differences from Python in the Julia manual for a more in-depth comparison\nUse PythonCall.jl/CondaPkg.jl to seamlessly integrate Python3 code into your Julia project\nUse juliacall to seamlessly integrate Julia code into your Python3 project","category":"page"},{"location":"comparisons/biopython/#biopython","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"","category":"section"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Biopython represents an ecosystem of related biology tools written in the Python3 programming language\nUnlike with BioJulia, Biopython tools are installed together as modules into a single biopython package \nLaunched over two decades ago with major releases covering the Python2/3 transition\nCapabilities cover a number of molecular biology applications including sequence alignment, population genetics, and machine learning","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"A few equivalent application tools between BioJulia and Biopython:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Application BioJulia packages Biopython objects/modules\nSequence annotation GenomicFeatures, GenomicAnnotations Seq, SeqRecord\nInput/Output FASTX, XAM, BigWig,... Bio.SeqIO, Bio.AlignIO\nSequence alignment BioSequences, BioAlignments Bio.Align\nPopulation genetics PopGen Bio.PopGen","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"A few package/ecosystem equivalents between Julia and Python3:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Application Julia Python3\nData manipulation/analysis DataFrames, CSV, Query pandas, Blaze\nPlotting/visualization Plots, Gadfly, Makie matplotlib, seaborn, bokeh, plotnine, VisPy\nStatistical analysis Statistics, HypothesisTests, GLM SciPy, statsmodels\nMachine learning Flux, SciML, Zygote PyTorch, TensorFlow, scikit-learn, JAX\nNumerical mathematics LinearAlgebra, Symbolics NumPy, SciPy, SymPy\nNotebook/report generator IJulia, Pluto, Weave IPython, Jupyter Book\nWeb applications Genie, Franklin Django, Flask, Pelican, Dash","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"A few notable differences between Julia and Python3:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Julia Python3\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nExpression-based (statements yield a value) Statement-based (assignment as a statement)\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed with optional type annotations\nBuilt-in parallelism via threads, coroutines (Tasks) Limited (GIL) built-in parallelism via threads, async/await\nExtensive metaprogramming (Lisp-like macros, homoiconicity,...) Less extensive metaprogramming (decorators, metaclasses,...)\nIncluded default package manager No default package manager (poetry, conda, and other alternatives available)\nSingle implementation available (JuliaLang) Multiple implementations available (PyPy, Numba,...)\nArrays are column-major (columns are contiguous in memory) (Numpy) arrays are row-major by default (rows are contiguous in memory)","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"To transition from Python3 to Julia:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"See Noteworthy differences from Python in the Julia manual for a more in-depth comparison\nUse PythonCall.jl/CondaPkg.jl to seamlessly integrate Python3 code into your Julia project\nUse juliacall to seamlessly integrate Julia code into your Python3 project","category":"page"},{"location":"comparisons/bioperl/#bioperl","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"","category":"section"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"BioPerl represents an ecosystem of related molecular biology modules written in the Perl5 programming language\nSupported by the Open Bioinformatics Foundation and includes additional utilities and interfaces for common bioinformatics applications\nLaunched in 2002 and has contributed to major scientific achievements including the Human Genome Project","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"A few equivalent application tools between BioJulia and BioPerl:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Application BioJulia packages BioPerl modules/objects\nInput/Output FASTX, XAM, BigWig,... SeqIO\nSequence alignment BioSequences, BioAlignments AlignIO, SimpleAlign\nData structures Kmers, IntervalTrees Bio::Kmer, Bio::Tree\nPopulation Genetics PopGen PopGen","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"A few package/ecosystem equivalents between Julia and Perl5:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Application Julia Perl5\nData manipulation/analysis DataFrames, CSV, Query PDL, Text-CSV\nPlotting/visualization Plots, Gadfly, Makie GDGraph, Chart-GGPlot\nStatistical analysis Statistics, HypothesisTests, GLM Statistics-Descriptive, PDL-Stats\nNumerical mathematics LinearAlgebra, Symbolics PDL-LinearAlgebra, Math-Symbolic\nNotebook/report generator IJulia, Pluto Devel-IPerl\nWeb applications Genie, Franklin Catalyst, Mojolicious","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"A few notable differences between Julia and Perl5:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Julia Perl5\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed without type annotations support\nBuilt-in parallelism via threads, coroutines (Tasks) Parallelism via threads, external modules (Coro, Parallel,...)\nLisp-inspired metaprogramming (S-expressions, homoiconicity,...) Macro-less metaprogramming capabilities (eval, symbol table manipulation,...)\nSingle language implementation (JuliaLang) Family of related languages/implementations (Perl5, Perl6/Raku, ActivePerl,...)","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"To transition from Perl5 to Julia:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Read the Julia manual for an in-depth look at its internals and features\nSee Running External Programs in the manual for running Perl scripts or other programs from Julia","category":"page"},{"location":"getting_started/toolsinstallation/#toolsinstallation","page":"Installing Development Tools","title":"Installing Development Tools","text":"","category":"section"},{"location":"getting_started/toolsinstallation/#julia-repl","page":"Installing Development Tools","title":"Julia REPL","text":"","category":"section"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"A REPL, or read-eval-print loop, represents a language \"shell\" or program that allows the user to communicate with the programming language interactively with immediate feedback. This allows for exploring the language more deeply than via a script, with rapid prototyping being much quicker and easier to perform.","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"The Julia REPL is included by default in every Julia installation and boasts a number of features to the point that it alone can almost be considered a proper IDE. It should appear the moment you enter julia into your terminal:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":" _ _ _(_)_ | Documentation: https://docs.julialang.org\n (_) | (_) (_) |\n _ _ _| |_ __ _ | Type \"?\" for help, \"]?\" for Pkg help.\n | | | | | | |/ _` | |\n | | |_| | | | (_| | | Version 1.9.2 (2023-07-05)\n _/ |\\__'_|_|_|\\__'_| | Official https://julialang.org/ release\n|__/ |\n\njulia> ","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"We won't go into every feature that the REPL provides, however here is a quick list that most Julia users should know to make the most of this shell:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"There are 5 Julia REPL modes that serve separate purposes: \nThe Julian (default) mode wherein one can write, load, and test out code\nHelp mode for printing documentation for functions, keywords, etc.\nPkg mode for working with the included package manager and manipulating dependencies/packages\nShell mode to execute system commands (run a terminal from Julia which itself is running from a terminal!) \nSearch modes (forward, reverse) to look through your history of inputs","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Prompt Key binding\njulia> None (default mode)\nhelp?> ? or ?? (extended help)\n(@v1.x) pkg> ]\nshell> ;\n(reverse-i-search): ^R\n(forward-i-search): ^S","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"If you have a code editor installed on your development machine, you can go back and forth between the Julia session and the editor by entering julia> edit(\"\"). You can jump right back into the Julia session once you're finished!\nYou can get a list of matches to a partially written word by entering the TAB key, which also serves to render an Unicode symbol in the REPL (full list available in the Unicode Input section of the Julia manual): \njulia> pri[TAB]\nprimitive type print println printstyled\njulia> \\pi[TAB] # renders π\nYou can run a standalone script by entering include(\"\") in Julian mode. For greater control, the equivalent of Python3's if __name__ == __main__ condition would be if abspath() == @__FILE__","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"warning: Warning\nOne common gotcha with the Julia REPL is that there are currently certain code changes that cannot be performed without restarting your session, such as redefining structs (see the example below). You can mitigate this by adding the Revise package, although restarting the session is the simplest option.julia> struct Point\n x::Int\n y::Int\n end\n\njulia> struct Point\n x::Int\n z::Int\n end\nERROR: invalid redefinition of constant Point\nStacktrace:\n[1] top-level scope\n@ REPL[2]:1","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"To learn more, see the The Julia REPL section in the Julia manual.","category":"page"},{"location":"getting_started/toolsinstallation/#Visual-Studio-Code-extension","page":"Installing Development Tools","title":"Visual Studio Code extension","text":"","category":"section"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"The Julia organization officially maintains the Julia vscode extension, which provides a complete IDE solution for developing in Julia. This boasts a number of advantages compared to a REPL solution:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Built-in syntax highlighting and code completion\nGUI interaction for managing options and commands\nAdvanced profiling/debugging features \nAdditional extensions support ","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"To install vscode, follow the instructions on how to install the official binary for your development machine from the official website. Next, click on the Extension icon in the side Activity Bar and search for \"Julia\". The official Julia extension should be the first extension available. You can also install Julia within the Quick Open input panel by pressing Ctrl + P and entering ext install julialang.language-julia.","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":" (Image: Julia VSCode Extension)","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Install the extension and restart vscode. We also recommend installing some additional extensions that will further improve the development experience:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Even Better TOML (ext install tamasfe.even-better-toml) for working with the package TOML files (Project.toml, Manifest.toml, Artifacts.toml,...)\nGitLens (ext install eamodio.gitlens) for enhancing Git workflows","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"You can experiment with Julia extension features in the Quick Open panel by writing Julia and consulting the available options. To learn more, visit the Julia in Visual Studio Code page in the official vscode docs. You can also visit the Julia extension website to learn more about what features are available.","category":"page"},{"location":"#BioJulia:-Fast,-open,-easy,-software-for-biology","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"","category":"section"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Note: This landing site is under extensive development and will receive frequent updates. It is not in a ready state, and is published under GitHub Pages only for testing purposes. ","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"BioJulia is a passionate, community-led organization providing biology-related packages written in the Julia programming language. The organization offers a comprehensive, fully open-source ecosystem of both libraries that serve as essential building blocks for other packages as well as interactive tools for everyday tasks and workflows. ","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Biologists are fully empowered by Julia to easily tackle domain-specific challenges, taking advantage of features including:","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Fully reproducible environments thanks to Julia's built-in package manager\nCompetitive performance that rivals that of lower-level, more complex languages such as C and Fortran\nUnicode-based math symbol support, transparent BLAS integration, and additional features for performing complex numerical operations \nA batteries-included read-eval-print loop (REPL) for interactive data exploration and prototyping\nSeamless interoperability (JLLs, Cmd,...) with other languages via multiple foreign function interfaces","category":"page"},{"location":"#Where-to-Start?","page":"BioJulia: Fast, open, easy, software for biology","title":"Where to Start?","text":"","category":"section"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Take a look at all BioJulia code via the official GitHub page.\nBegin contributing ideas and features following the core guidelines.\nDeep dive into the ecosystem over at the Overview.\nStart learning right away using the Getting Started tutorials.\nSee some awesome examples in the BioJulia Showcase.\nCompare performance with the BioJulia Open Benchmarks.\nCome chat with us over in the Slack #biology workspace and on forums.","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Use the top navigation bar to search for provided packages within one's field of interest.","category":"page"},{"location":"getting_started/casescenarios/#casescenarios","page":"Case Scenarios","title":"Case Scenarios","text":"","category":"section"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"note: Note\n","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"These scenarios are inspired by real stories from members of the BioJulia/Julia community!","category":"page"},{"location":"getting_started/casescenarios/#Novel-biotechnology-startup-solutions","page":"Case Scenarios","title":"Novel biotechnology startup solutions","text":"","category":"section"},{"location":"getting_started/casescenarios/#Lab-data-processing,-visualization,-and-analysis","page":"Case Scenarios","title":"Lab data processing, visualization, and analysis","text":"","category":"section"},{"location":"getting_started/casescenarios/#Pharmaceutical-drug-design-pipelines","page":"Case Scenarios","title":"Pharmaceutical drug design pipelines","text":"","category":"section"},{"location":"getting_started/casescenarios/#Modeling-and-simulation-of-biological-systems","page":"Case Scenarios","title":"Modeling and simulation of biological systems","text":"","category":"section"},{"location":"getting_started/casescenarios/#School-course/lesson-planning","page":"Case Scenarios","title":"School course/lesson planning","text":"","category":"section"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Martha was recently hired to teach a biostatistics course for first-year students at the University of Concordia. This will be a new offering at the university, thus she has been given free reign to design her own course plan. She is most interested in engaging students with a fun practical component, including assignments that are trivial to set up, easy for students to learn, and that draw from real-world examples. She looks for inspiration from similar courses, and finds that many are aiming to develop a strong foundation in statistical programming for handling data analysis, hypothesis testing, and other tasks.","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"A number of these courses teach R or Python3, which have been entrenched in statistics for a number of years. They also appear to be popular with new programmers due to being high-level and easy to learn. However, during her research, Martha encounters a number of issues that raise concern:","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Performance would become an issue with larger datasets or visual plots, with the interpreter taking too long to generate output and thus wasting valuable class time\nBoth languages have been around for a long time, with a number of quirks and design decisions that have not aged well such as implicit mutation and lack of type checking\nSetting up reproducible environments with all the necessary bits (packages, data,...) in either language is challenging, with a number of limitations and choices presented such as package manager, language implementation, etc.\nR is designed specifically for statistical computing, with concepts not found in other, more general languages (S3/S4 class system, factors,...) which could confuse students with previous programming knowledge or those wishing to learn more fundamental computer science\nShe wants to avoid the \"two-language problem\" wherein parts of either language are written in another and thus introduce unneeded complexity ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"A fellow physics professor recommends that she look into Julia, which has found success within the department. She takes a look and discovers a lot to love about this relatively new language. Beyond addressing many of the issues she encountered with R and Python, she especially enjoys how fast the performance is, how the default package manager allows for reproducibility and ease of use, and how close to mathematical writing Julia can get whilst remaining readable. ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Her first objective is to create a presentation format with good aesthetics that can also show off and run code. She discovers how to set up interactive notebooks with Pluto that she will host in a central repository or online via a website or with solutions like Binder. This has a number of advantages compared to PowerPoint or Markdown presentations: ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Easily run and experiment with code cells within a reproducible environment\nDependency management automatically handled via the built-in package manager \nShare the code and lessons with students either as notebooks or as exported PDF/HTML pages","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"To bundle the datasets with the notebooks, she takes advantage of Julia's Artifact system for handling and retrieving data from almost anywhere on the Internet. ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"With the course infrastructure set, she now turns to creating the actual course material. She can cover a number of biostatistics topics using powerful, well-established Julia packages: ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Plots or Makie for data visualization\nDataFrames, CSV, and Tidier for data handling \nDistributions for probability and sampling\nHypothesisTests for parametric (ANOVA, chi-squared,...) and non-parametric testing\nGLM for generalized linear modelling\nFlux for basic machine learning","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"With everything in place, she is almost ready to present her course. However, just before the start of the semester, she decides to provide a lesson on Tukey's honest significance test. Unfortunately, there is no package written in Julia for this test, and there is little time left to develop the code on her own. Luckily, Julia posseses amazing interoperability with both Python3 and R, and discovers how to both bundle and call Scipy's stats.tukey_hsd function via PythonCall and CondaPkg. Not only will the Python3 code seamlessly integrate into the Julia notebook, but it will also handle the conda packaging automatically!","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Martha goes on to deliver one of the best courses that semester, empowered by Julia to deliver an engaging, interactive experience that teaches her students both the fundamentals of biostatistics and of quality programming.","category":"page"},{"location":"getting_started/casescenarios/#Research-planning-and-development","page":"Case Scenarios","title":"Research planning and development","text":"","category":"section"},{"location":"getting_started/juliainstallation/#juliainstallation","page":"Installing Julia","title":"Installing Julia","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"There are a number of methods available to install Julia that each have their own advantages:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"note: Note\nIt is NOT recommended to install Julia from your distribution's package manager, as no such installation is officially endorsed by the Julia project and thus may be out-of-date and broken/unmaintained!","category":"page"},{"location":"getting_started/juliainstallation/#juliaup-(recommended)","page":"Installing Julia","title":"juliaup (recommended)","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"juliaup is a Julia manager/version multiplexer tool designed to handle your Julia installation from the command-line. It is the easiest and most convenient installation option, and is available on almost all platforms that support Julia.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you are running Linux or Mac, enter the following command in your terminal:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"curl -fsSL https://install.julialang.org | sh","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you are running Windows, enter the following:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"winget install julia -s msstore","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you have the Rust programming language installed on your machine, you can install juliaup via the Cargo package manager:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"warning: Warning\nThis is not a recommended option as this will involve compiling the actual juliaup executable on your machine","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"cargo install juliaup","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You can use the first and last commands listed to install Julia via juliaup in a container (see Docker/Podman below)","category":"page"},{"location":"getting_started/juliainstallation/#Docker/Podman","page":"Installing Julia","title":"Docker/Podman","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"An official Docker image is available, allowing you to build containers with Julia already installed. This can be a preferred method of installation if you wish to test out Julia in a sandboxed, ephemeral (temporary) instance or are looking to include Julia in a containerized application.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You must first download the image via the Docker or Podman command-line tool:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"note: Note\nIf you are using Podman, you can replace the keyword docker with podman in any of the following commands!","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"docker pull julia:latest","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You can specify which version of the image you wish to install via tags, such as latest, rc, 1.6, etc.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"To create a run the container instance, run the following command:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"note: Note\nYou may skip the previous step if you have not already downloaded the image, Docker/Podman will automatically begin installing it for you here!","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"docker run -it --rm --network host julia:latest","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"The above command creates an interactive container that will be deleted the moment you exit via the --rm option and that will also share the same network namespace as your machine via the --network host option (allow for automatic port bindings). You may remove either option to disable their respective behaviours.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"The image itself can serve as a base for your custom container built from a Dockerfile/Containerfile:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"FROM julia:latest\n# ...","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you wish to use a different image as the basis of your container, yet still require Julia, you can use any of the other installation methods listed in this section in your Dockerfile/Containerfile. A few examples with juliaup:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"# First option: Install juliaup via curl\nFROM ubuntu:latest\n\nRUN apt update && \\\n apt install -y curl && \\\n curl -fsSL https://install.julialang.org | sh -s -- -y # install juliaup non-interactively\n\nRUN juliaup add release\n\n# Second option: install juliaup in a Rust image (not recommended)\nFROM rust:latest\n\nRUN cargo install juliaup","category":"page"},{"location":"getting_started/juliainstallation/#Direct-download","page":"Installing Julia","title":"Direct download","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You can also install Julia as a downloadable executable from the Julia website's Download section. You must make sure to install the correct Julia build for your machine based on:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"native instruction set (x86_64, i686, ARM, Apple Silicon, PowerPC)\noperating system type (Windows, MacOS, Linux (Glibc), Linux (Musl), FreeBSD)\nbit compute type (32-bit, 64-bit)\ndesired level of support (Tier 1 (guaranteed to build and pass all tests) through Tier 4)","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"Make sure to follow the exact installation steps for your machine in order to ensure the best experience.","category":"page"},{"location":"getting_started/juliainstallation/#Build-from-source","page":"Installing Julia","title":"Build from source","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"For building/testing purposes, you may build Julia from the source code that is fully available in the Julia GitHub repository. Simply enter git clone https://github.com/JuliaLang/julia.git to copy the entire source on your machine, create a new git branch via git checkout -b name-of-branch, add your modifications, and run make to start the Makefile build.","category":"page"}] +[{"location":"comparisons/bioconductor/#bioconductor","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"","category":"section"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Bioconductor represents an ecosystem of related genomics tools written in the R programming language\nTools written in other languages, such as C and Python, are also included with R wrappers available \nLaunched over two decades ago, it now hosts over 2000 packages for bioinformatics and related fields\nPackages cover a broard range of methods for the analysis and manipulation of genomic data","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"A few equivalent applications between BioJulia and Bioconductor:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Application BioJulia packages Bioconductor packages\nData structures BioSymbols, KmerAnalysis, IntervalTrees Biobase\nSequence annotation GenomicFeatures, GenomicAnnotations, FormatSpecimens AnnotationHub\nInput/Output FASTX, XAM, BigWig,... BiocIO, Biostrings, ShortRead,...\nSequence alignment BioSequences, BioAlignments Biostrings\nExpression analysis SingleCellProjections DESeq2","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"A few package/ecosystem equivalents between Julia and R:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Application Julia R\nData manipulation/analysis DataFrames, CSV, Query, Tidier tibble, dplyr, tidyverse\nPlotting/visualization Gadfly, VegaLite, Makie ggplot2, vegalite, plotly\nStatistical analysis Statistics, HypothesisTests, GLM stats\nMachine learning Flux, SciML, Zygote mlr3, caret, tidymodels, Deriv\nNumerical mathematics LinearAlgebra, IterativeSolvers Matrix, pracma, deSolve\nWeb applications Genie, Franklin shiny","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"A few notable differences between Julia and R:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"Julia R\nHigh-level, general-purpose compiled language High-level, interpreted language for statistical computing\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed without type annotations support\nBuilt-in parallelism via threads, coroutines (Tasks) Parallelism via external libraries (BLAS, parallel,...)\nExtensive metaprogramming (Lisp-like macros, generated functions,...) Less extensive metaprogramming (function factories, expression manipulation,...)\nSingle implementation available (JuliaLang) Multiple implementations available (pqR, Renjin,...)","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"To transition from R to Julia:","category":"page"},{"location":"comparisons/bioconductor/","page":"Bioconductor (R)","title":"Bioconductor (R)","text":"See Noteworthy differences from R in the Julia manual for a more in-depth comparison\nUse RCall.jl to seamlessly integrate R code into your Julia project\nUse JuliaCall to seamlessly integrate Julia code into your R project","category":"page"},{"location":"comparisons/bioruby/#bioruby","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"","category":"section"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"BioRuby represents an ecosystem of related biology tools written in the Ruby programming language\nUnlike with BioJulia, BioRuby tools are installed together as classes/modules into a single bio gem\nLaunched in 2000 with two major releases covering the Ruby1/2/3 transitions\nPrimarily composed of wrapper classes/modules for common bioinformatics, molecular biology applications ","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"A few equivalent application tools between BioJulia and BioRuby:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Application BioJulia packages BioRuby classes/modules\nSequence alignment BioSequences, BioAlignments Bio::Sequence, Bio::Alignment\nInput/Output FASTX, XAM, BigWig,... Bio::Fasta, Bio::Fastq,...","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"A few package/ecosystem equivalents between Julia and Ruby:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Application Julia Ruby\nData manipulation/analysis DataFrames, CSV, Query daru, CSV\nPlotting/visualization Plots, Makie Chartkick, gruff\nStatistical analysis Statistics, HypothesisTests, GLM, Distributions Statsample, distribution\nMachine learning Flux, SciML Rumale, TensorStream\nNumerical mathematics LinearAlgebra NMatrix, minimization, integration\nNotebook/report generator IJulia, Pluto IRuby\nWeb applications Genie, Franklin Hanami, Jekyll","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"A few notable differences between Julia and Ruby:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Julia Ruby\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed with optional type annotations (Sorbet, RBS)\nBuilt-in parallelism via threads, coroutines (Tasks) Built-in parallelism via threads, fibers\nLisp-inspired metaprogramming (S-expressions, homoiconicity,...) Macro-less metaprogramming capabilities (dynamic reflection, eval methods,...)\nSingle implementation available (JuliaLang) Multiple implementations available (TruffleRuby, mruby,...)","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"To transition from Ruby to Julia:","category":"page"},{"location":"comparisons/bioruby/","page":"BioRuby (Ruby)","title":"BioRuby (Ruby)","text":"Read the Julia manual for an in-depth look at its internals and features\nSee Running External Programs in the manual for running Ruby scripts or other programs from Julia","category":"page"},{"location":"getting_started/biojuliainstallation/#biojuliainstallation","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"","category":"section"},{"location":"getting_started/biojuliainstallation/#Standard-installation","page":"Installing BioJulia Packages","title":"Standard installation","text":"","category":"section"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"As with any Julia package, you can easily install any BioJulia package with the help of the official package manager included by default with every Julia installation. All you need to know is the name of the package of interest!","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"There are two standard methods to install a package:","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nThe Julia package manager, similarly to conda and others, organizes dependencies according to the \"environment\" they are in, meaning in which directory the packages are installed to. The default Julia session adds packages to a \"global\" environment, usually the .julia/environments/v1.x directory. When you are developing a package, you must activate its project-specific environment by calling activate MyProjectName (see Package development below) so that you can isolate your dependencies from the global environment and manage them independently. See Working with Environment for more details.","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"The package manager (Pkg) module","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"# You can exclude the semicolon, it is used here for suppressing output \nusing Pkg;\n# Install the package\njulia> Pkg.add(\"\");\n# Use the installed package\nusing ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nOne excellent trick is that any Julia code with the julia> prompt included at the beginning of the line can be copy/pasted as is into the REPL! See the Julia REPL section for more.","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"Pkg mode","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"# Enter ]\n]\n# @v1.x will show your current Julia version\n(@v1.9) pkg> add \n# Exit Pkg REPL mode via the Backspace key\njulia> using ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nJust like with the previous method, you can copy/paste code with the (@v1.x) pkg> prompt included and Julia will work correctly! You can even skip having to enter Pkg mode by just entering directly (@v1.x) pkg> add.... You do not need to manually change the version number indicated in the prompt if you have a different Julia version than that which is listed, it is again handled for you.","category":"page"},{"location":"getting_started/biojuliainstallation/#pkg-devel","page":"Installing BioJulia Packages","title":"Package development","text":"","category":"section"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"If you are interested in developing a new or existing BioJulia/Julia package, the package manager can also help you by first cloning the package repository to your development machine. Pkg will then load the required dependencies in a new dependency environment based on the package's Project.toml file. Thereafter, both the direct and indirect dependencies can be locked using a generated Manifest.toml if needed and a pull request can be submitted. ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"There are two standard methods to set up Julia for developing a package:","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"The package manager (Pkg) module ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"using Pkg;\njulia> Pkg.develop(\"\");\nusing ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"Pkg mode","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"# Enter ]\n]\n# If the package is within a remote Git repository, write instead\n# `dev https://github.com//`\n(@v1.9) pkg> dev \n# Make sure you are within the same directory as the package folder\n(@v1.9) pkg> activate /path/to/package/folder/PackageName\n# The previous command activates the environment as directed by the\n# package's Project.toml file. This next command will then download\n# all of the dependencies specified in that file into your Julia environment.\n(@v1.9) pkg> instantiate\n# Exit REPL via the Backspace key\njulia> using ","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"note: Note\nYou can skip straight to (@v1.9) pkg> activate ... if you have already installed the package code locally, simply make sure to point Pkg to the right path as shown above.","category":"page"},{"location":"getting_started/biojuliainstallation/","page":"Installing BioJulia Packages","title":"Installing BioJulia Packages","text":"You can now change your source code and load them into the Julia session with using . To test your code, run (@v1.9) pkg> test to run the package's test suite to ensure that everything works correctly. When you are done developing the package, enter (@v1.9) pkg> free to stop tracking the package. ","category":"page"},{"location":"comparisons/biojava/#biojava","page":"BioJava (Java)","title":"BioJava (Java)","text":"","category":"section"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"BioJava is a biological data processing library written in the Java programming language\nBioJava tooling is distributed via multiple classes within the same org.biojava package\nLaunched in 2002 with six major releases covering more than 11 Java releases","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"A few equivalent applications between BioJulia and BioJava:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Application BioJulia packages BioJava modules\nInput/Output FASTX, XAM, BigWig,... nbio.genome.io.fastq, nbio.ontology.obo,...\nSequence alignment BioSequences, BioAlignments nbio.sequence, nbio.alignment\nMacromolecular structures BioStructures nbio.structure","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"A few package/ecosystem equivalents between Julia and Java:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Application Julia Java\nData manipulation/analysis DataFrames, CSV, Query Tablesaw\nPlotting/visualization Plots, Makie JFreeChart, Jzy3d\nStatistical analysis Statistics, HypothesisTests Statistics (Apache Commons), NM Dev\nMachine learning Flux, SciML Java-ML, Neuroph\nNumerical mathematics LinearAlgebra NM Dev\nNotebook/report generator IJulia, Pluto IJava\nWeb applications Genie, Franklin Grails, Javalin","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"A few notable differences between Julia and Java:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Julia Java\nHigh-level, general-purpose compiled language High-level, object-oriented, two-step (compiled and interpreted) language\nExpression-based (statements yield a value) Statement-based (assignment as a statement)\nDynamically typed with multiple dispatch and optional type annotations Statically typed with required type declarations\nBuilt-in parallelism via threads, coroutines (Tasks) Built-in parallelism via threads, streams, fibers (Project Loom)\nExtensive metaprogramming (Lisp-like macros, homoiconicity,...) Less extensive metaprogramming (reflection, annotations,...)\nIncluded default package manager No default package manager (dependency/build management tools include Maven, Gradle,...)\nSingle implementation available (JuliaLang) Multiple implementations available (OpenJDK, GraalVM,...)","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"To transition from Java to Julia:","category":"page"},{"location":"comparisons/biojava/","page":"BioJava (Java)","title":"BioJava (Java)","text":"Use JavaCall.jl to seamlessly integrate Java code into your Julia project\nSee Running External Programs in the Julia manual for running Java scripts or other programs from Julia","category":"page"},{"location":"comparisons/scikitbio/#scikitbio","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"","category":"section"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"scikit-bio represents a Python3 library providing data structures, algorithms, and additional bioinformatics resources\nUnlike with BioJulia, scikit-bio tools are installed together as modules into a single skbio package \nLaunched in 2014 based on a BSD-relicensing of PyCogent and QIIME code and is currently in beta/maintenance mode","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"A few equivalent application tools between BioJulia and scikit-bio:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"Application BioJulia packages scikit-bio modules\nSequence alignment BioSequences, BioAlignments skbio.sequence, skbio.alignment\nInput/Output FASTX, XAM, BigWig,... skbio.io\nData structures IntervalTrees skbio.tree","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"A few package/ecosystem equivalents between Julia and Python3:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"Application Julia Python3\nData manipulation/analysis DataFrames, CSV, Query pandas, Blaze\nPlotting/visualization Plots, Gadfly, Makie matplotlib, seaborn, bokeh, plotnine, VisPy\nStatistical analysis Statistics, HypothesisTests, GLM SciPy, statsmodels\nMachine learning Flux, SciML, Zygote PyTorch, TensorFlow, scikit-learn, JAX\nNumerical mathematics LinearAlgebra, Symbolics NumPy, SciPy, SymPy\nNotebook/report generator IJulia, Pluto, Weave IPython, Jupyter Book\nWeb applications Genie, Franklin Django, Flask, Pelican, Dash","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"A few notable differences between Julia and Python3:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"Julia Python3\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nExpression-based (statements yield a value) Statement-based (assignment as a statement)\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed with optional type annotations\nBuilt-in parallelism via threads, coroutines (Tasks) Limited (GIL) built-in parallelism via threads, async/await\nExtensive metaprogramming (Lisp-like macros, homoiconicity,...) Less extensive metaprogramming (decorators, metaclasses,...)\nIncluded default package manager No default package manager (poetry, conda, and other alternatives available)\nSingle implementation available (JuliaLang) Multiple implementations available (PyPy, Numba,...)\nArrays are column-major (columns are contiguous in memory) (Numpy) arrays are row-major by default (rows are contiguous in memory)","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"To transition from Python3 to Julia:","category":"page"},{"location":"comparisons/scikitbio/","page":"scikit-bio (Python3)","title":"scikit-bio (Python3)","text":"See Noteworthy differences from Python in the Julia manual for a more in-depth comparison\nUse PythonCall.jl/CondaPkg.jl to seamlessly integrate Python3 code into your Julia project\nUse juliacall to seamlessly integrate Julia code into your Python3 project","category":"page"},{"location":"comparisons/biopython/#biopython","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"","category":"section"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Biopython represents an ecosystem of related biology tools written in the Python3 programming language\nUnlike with BioJulia, Biopython tools are installed together as modules into a single biopython package \nLaunched over two decades ago with major releases covering the Python2/3 transition\nCapabilities cover a number of molecular biology applications including sequence alignment, population genetics, and machine learning","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"A few equivalent application tools between BioJulia and Biopython:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Application BioJulia packages Biopython objects/modules\nSequence annotation GenomicFeatures, GenomicAnnotations Seq, SeqRecord\nInput/Output FASTX, XAM, BigWig,... Bio.SeqIO, Bio.AlignIO\nSequence alignment BioSequences, BioAlignments Bio.Align\nPopulation genetics PopGen Bio.PopGen","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"A few package/ecosystem equivalents between Julia and Python3:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Application Julia Python3\nData manipulation/analysis DataFrames, CSV, Query pandas, Blaze\nPlotting/visualization Plots, Gadfly, Makie matplotlib, seaborn, bokeh, plotnine, VisPy\nStatistical analysis Statistics, HypothesisTests, GLM SciPy, statsmodels\nMachine learning Flux, SciML, Zygote PyTorch, TensorFlow, scikit-learn, JAX\nNumerical mathematics LinearAlgebra, Symbolics NumPy, SciPy, SymPy\nNotebook/report generator IJulia, Pluto, Weave IPython, Jupyter Book\nWeb applications Genie, Franklin Django, Flask, Pelican, Dash","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"A few notable differences between Julia and Python3:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"Julia Python3\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nExpression-based (statements yield a value) Statement-based (assignment as a statement)\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed with optional type annotations\nBuilt-in parallelism via threads, coroutines (Tasks) Limited (GIL) built-in parallelism via threads, async/await\nExtensive metaprogramming (Lisp-like macros, homoiconicity,...) Less extensive metaprogramming (decorators, metaclasses,...)\nIncluded default package manager No default package manager (poetry, conda, and other alternatives available)\nSingle implementation available (JuliaLang) Multiple implementations available (PyPy, Numba,...)\nArrays are column-major (columns are contiguous in memory) (Numpy) arrays are row-major by default (rows are contiguous in memory)","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"To transition from Python3 to Julia:","category":"page"},{"location":"comparisons/biopython/","page":"Biopython (Python3)","title":"Biopython (Python3)","text":"See Noteworthy differences from Python in the Julia manual for a more in-depth comparison\nUse PythonCall.jl/CondaPkg.jl to seamlessly integrate Python3 code into your Julia project\nUse juliacall to seamlessly integrate Julia code into your Python3 project","category":"page"},{"location":"comparisons/bioperl/#bioperl","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"","category":"section"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"BioPerl represents an ecosystem of related molecular biology modules written in the Perl5 programming language\nSupported by the Open Bioinformatics Foundation and includes additional utilities and interfaces for common bioinformatics applications\nLaunched in 2002 and has contributed to major scientific achievements including the Human Genome Project","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"A few equivalent application tools between BioJulia and BioPerl:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Application BioJulia packages BioPerl modules/objects\nInput/Output FASTX, XAM, BigWig,... SeqIO\nSequence alignment BioSequences, BioAlignments AlignIO, SimpleAlign\nData structures Kmers, IntervalTrees Bio::Kmer, Bio::Tree\nPopulation Genetics PopGen PopGen","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"A few package/ecosystem equivalents between Julia and Perl5:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Application Julia Perl5\nData manipulation/analysis DataFrames, CSV, Query PDL, Text-CSV\nPlotting/visualization Plots, Gadfly, Makie GDGraph, Chart-GGPlot\nStatistical analysis Statistics, HypothesisTests, GLM Statistics-Descriptive, PDL-Stats\nNumerical mathematics LinearAlgebra, Symbolics PDL-LinearAlgebra, Math-Symbolic\nNotebook/report generator IJulia, Pluto Devel-IPerl\nWeb applications Genie, Franklin Catalyst, Mojolicious","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"A few notable differences between Julia and Perl5:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Julia Perl5\nHigh-level, general-purpose compiled language High-level, general-purpose interpreted language\nDynamically typed with multiple dispatch and optional type annotations Dynamically typed without type annotations support\nBuilt-in parallelism via threads, coroutines (Tasks) Parallelism via threads, external modules (Coro, Parallel,...)\nLisp-inspired metaprogramming (S-expressions, homoiconicity,...) Macro-less metaprogramming capabilities (eval, symbol table manipulation,...)\nSingle language implementation (JuliaLang) Family of related languages/implementations (Perl5, Perl6/Raku, ActivePerl,...)","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"To transition from Perl5 to Julia:","category":"page"},{"location":"comparisons/bioperl/","page":"BioPerl (Perl5)","title":"BioPerl (Perl5)","text":"Read the Julia manual for an in-depth look at its internals and features\nSee Running External Programs in the manual for running Perl scripts or other programs from Julia","category":"page"},{"location":"getting_started/toolsinstallation/#toolsinstallation","page":"Installing Development Tools","title":"Installing Development Tools","text":"","category":"section"},{"location":"getting_started/toolsinstallation/#julia-repl","page":"Installing Development Tools","title":"Julia REPL","text":"","category":"section"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"A REPL, or read-eval-print loop, represents a language \"shell\" or program that allows the user to communicate with the programming language interactively with immediate feedback. This allows for exploring the language more deeply than via a script, with rapid prototyping being much quicker and easier to perform.","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"The Julia REPL is included by default in every Julia installation and boasts a number of features to the point that it alone can almost be considered a proper IDE. It should appear the moment you enter julia into your terminal:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":" _ _ _(_)_ | Documentation: https://docs.julialang.org\n (_) | (_) (_) |\n _ _ _| |_ __ _ | Type \"?\" for help, \"]?\" for Pkg help.\n | | | | | | |/ _` | |\n | | |_| | | | (_| | | Version 1.9.2 (2023-07-05)\n _/ |\\__'_|_|_|\\__'_| | Official https://julialang.org/ release\n|__/ |\n\njulia> ","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"We won't go into every feature that the REPL provides, however here is a quick list that most Julia users should know to make the most of this shell:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"There are 5 Julia REPL modes that serve separate purposes: \nThe Julian (default) mode wherein one can write, load, and test out code\nHelp mode for printing documentation for functions, keywords, etc.\nPkg mode for working with the included package manager and manipulating dependencies/packages\nShell mode to execute system commands (run a terminal from Julia which itself is running from a terminal!) \nSearch modes (forward, reverse) to look through your history of inputs","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Prompt Key binding\njulia> None (default mode)\nhelp?> ? or ?? (extended help)\n(@v1.x) pkg> ]\nshell> ;\n(reverse-i-search): ^R\n(forward-i-search): ^S","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"If you have a code editor installed on your development machine, you can go back and forth between the Julia session and the editor by entering julia> edit(\"\"). You can jump right back into the Julia session once you're finished!\nYou can get a list of matches to a partially written word by entering the TAB key, which also serves to render an Unicode symbol in the REPL (full list available in the Unicode Input section of the Julia manual): \njulia> pri[TAB]\nprimitive type print println printstyled\njulia> \\pi[TAB] # renders π\nYou can run a standalone script by entering include(\"\") in Julian mode. For greater control, the equivalent of Python3's if __name__ == __main__ condition would be if abspath() == @__FILE__","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"warning: Warning\nOne common gotcha with the Julia REPL is that there are currently certain code changes that cannot be performed without restarting your session, such as redefining structs (see the example below). You can mitigate this by adding the Revise package, although restarting the session is the simplest option.julia> struct Point\n x::Int\n y::Int\n end\n\njulia> struct Point\n x::Int\n z::Int\n end\nERROR: invalid redefinition of constant Point\nStacktrace:\n[1] top-level scope\n@ REPL[2]:1","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"To learn more, see the The Julia REPL section in the Julia manual.","category":"page"},{"location":"getting_started/toolsinstallation/#Visual-Studio-Code-extension","page":"Installing Development Tools","title":"Visual Studio Code extension","text":"","category":"section"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"The Julia organization officially maintains the Julia vscode extension, which provides a complete IDE solution for developing in Julia. This boasts a number of advantages compared to a REPL solution:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Built-in syntax highlighting and code completion\nGUI interaction for managing options and commands\nAdvanced profiling/debugging features \nAdditional extensions support ","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"To install vscode, follow the instructions on how to install the official binary for your development machine from the official website. Next, click on the Extension icon in the side Activity Bar and search for \"Julia\". The official Julia extension should be the first extension available. You can also install Julia within the Quick Open input panel by pressing Ctrl + P and entering ext install julialang.language-julia.","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":" (Image: Julia VSCode Extension)","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Install the extension and restart vscode. We also recommend installing some additional extensions that will further improve the development experience:","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"Even Better TOML (ext install tamasfe.even-better-toml) for working with the package TOML files (Project.toml, Manifest.toml, Artifacts.toml,...)\nGitLens (ext install eamodio.gitlens) for enhancing Git workflows","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"","category":"page"},{"location":"getting_started/toolsinstallation/","page":"Installing Development Tools","title":"Installing Development Tools","text":"You can experiment with Julia extension features in the Quick Open panel by writing Julia and consulting the available options. To learn more, visit the Julia in Visual Studio Code page in the official vscode docs. You can also visit the Julia extension website to learn more about what features are available.","category":"page"},{"location":"#BioJulia:-Fast,-open,-easy,-software-for-biology","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"","category":"section"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Note: This landing site is under extensive development and will receive frequent updates. It is not in a ready state, and is published under GitHub Pages only for testing purposes. ","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"BioJulia is a passionate, community-led organization providing biology-related packages written in the Julia programming language. The organization offers a comprehensive, fully open-source ecosystem of both libraries that serve as essential building blocks for other packages as well as interactive tools for everyday tasks and workflows. ","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Biologists are fully empowered by Julia to easily tackle domain-specific challenges, taking advantage of features including:","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Fully reproducible environments thanks to Julia's built-in package manager\nCompetitive performance that rivals that of lower-level, more complex languages such as C and Fortran\nUnicode-based math symbol support, transparent BLAS integration, and additional features for performing complex numerical operations \nA batteries-included read-eval-print loop (REPL) for interactive data exploration and prototyping\nSeamless interoperability (JLLs, Cmd,...) with other languages via multiple foreign function interfaces","category":"page"},{"location":"#Where-to-Start?","page":"BioJulia: Fast, open, easy, software for biology","title":"Where to Start?","text":"","category":"section"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Take a look at all BioJulia code via the official GitHub page.\nBegin contributing ideas and features following the core guidelines.\nDeep dive into the ecosystem over at the Overview.\nStart learning right away using the Getting Started tutorials.\nSee some awesome examples in the BioJulia Showcase.\nCompare performance with the BioJulia Open Benchmarks.\nCome chat with us over in the Slack #biology workspace and on forums.","category":"page"},{"location":"","page":"BioJulia: Fast, open, easy, software for biology","title":"BioJulia: Fast, open, easy, software for biology","text":"Use the top navigation bar to search for provided packages within one's field of interest.","category":"page"},{"location":"getting_started/casescenarios/#casescenarios","page":"Case Scenarios","title":"Case Scenarios","text":"","category":"section"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"note: Note\nThese scenarios are inspired by real stories from members of the BioJulia/Julia community!","category":"page"},{"location":"getting_started/casescenarios/#Novel-biotechnology-startup-solutions","page":"Case Scenarios","title":"Novel biotechnology startup solutions","text":"","category":"section"},{"location":"getting_started/casescenarios/#Lab-data-processing,-visualization,-and-analysis","page":"Case Scenarios","title":"Lab data processing, visualization, and analysis","text":"","category":"section"},{"location":"getting_started/casescenarios/#Pharmaceutical-drug-design-pipelines","page":"Case Scenarios","title":"Pharmaceutical drug design pipelines","text":"","category":"section"},{"location":"getting_started/casescenarios/#Modeling-and-simulation-of-biological-systems","page":"Case Scenarios","title":"Modeling and simulation of biological systems","text":"","category":"section"},{"location":"getting_started/casescenarios/#School-course/lesson-planning","page":"Case Scenarios","title":"School course/lesson planning","text":"","category":"section"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Martha was recently hired to teach a biostatistics course for first-year students at the University of Concordia. This will be a new offering at the university, thus she has been given free reign to design her own course plan. She is most interested in engaging students with a fun practical component, including assignments that are trivial to set up, easy for students to learn, and that draw from real-world examples. She looks for inspiration from similar courses, and finds that many are aiming to develop a strong foundation in statistical programming for handling data analysis, hypothesis testing, and other tasks.","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"A number of these courses teach R or Python3, which have been entrenched in statistics for a number of years. They also appear to be popular with new programmers due to being high-level and easy to learn. However, during her research, Martha encounters a number of issues that raise concern:","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Performance would become an issue with larger datasets or visual plots, with the interpreter taking too long to generate output and thus wasting valuable class time\nBoth languages have been around for a long time, with a number of quirks and design decisions that have not aged well such as implicit mutation or lack of type annotations\nSetting up reproducible environments with all the necessary bits (packages, data,...) in either language is challenging, with a number of limitations and choices presented such as package manager, language implementation, etc.\nR is designed specifically for statistical computing, with concepts not found in other, more general languages (S3/S4 class system, factors,...) which could confuse students with previous programming knowledge or those wishing to learn more fundamental computer science\nShe wants to avoid the \"two-language problem\" wherein parts of either language are written in another and thus introduce unneeded complexity ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"A fellow physics professor recommends that she look into Julia, which has found success within the department. She takes a look and discovers a lot to love about this relatively new language. Beyond addressing many of the issues she encountered with R and Python3, she especially enjoys how fast the performance is, how the default package manager allows for reproducibility and ease of use, and how close to mathematical writing Julia can get whilst remaining readable. ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Her first objective is to create a presentation format with good aesthetics that can also show off and run code. She discovers how to set up interactive notebooks with Pluto that she will host in a central repository or online via a website or with solutions like Binder. This has a number of advantages compared to PowerPoint or Markdown presentations: ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Easily run and experiment with code cells within a reproducible environment\nDependency management automatically handled via the built-in package manager \nShare the code and lessons with students either as notebooks or as exported PDF/HTML pages","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"To bundle the datasets with the notebooks, she takes advantage of Julia's Artifact system for handling and retrieving data from almost anywhere on the Internet. ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"With the course infrastructure set, she now turns to creating the actual course material. She can cover a number of biostatistics topics using powerful, well-established Julia packages: ","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Plots or Makie for data visualization\nDataFrames, CSV, and Tidier for data handling \nDistributions for probability and sampling\nHypothesisTests for parametric (ANOVA, chi-squared,...) and non-parametric testing\nGLM for generalized linear modelling\nFlux for basic machine learning","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"With everything in place, she is almost ready to present her course. However, just before the start of the semester, she decides to provide a lesson on Tukey's honest significance test. Unfortunately, there is no package written in Julia for this test, and there is little time left to develop the code on her own. Luckily, Julia posseses amazing interoperability with both Python3 and R, and discovers how to both call and bundle Scipy's stats.tukey_hsd function via PythonCall and CondaPkg. Not only will the Python3 code seamlessly integrate into the Julia notebook, but it will also handle the conda packaging automatically!","category":"page"},{"location":"getting_started/casescenarios/","page":"Case Scenarios","title":"Case Scenarios","text":"Martha goes on to deliver one of the best courses that semester, empowered by Julia to deliver an engaging, interactive experience that teaches her students both the fundamentals of biostatistics and of quality programming.","category":"page"},{"location":"getting_started/casescenarios/#Research-planning-and-development","page":"Case Scenarios","title":"Research planning and development","text":"","category":"section"},{"location":"getting_started/juliainstallation/#juliainstallation","page":"Installing Julia","title":"Installing Julia","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"There are a number of methods available to install Julia that each have their own advantages:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"note: Note\nIt is NOT recommended to install Julia from your distribution's package manager, as no such installation is officially endorsed by the Julia project and thus may be out-of-date and broken/unmaintained!","category":"page"},{"location":"getting_started/juliainstallation/#juliaup-(recommended)","page":"Installing Julia","title":"juliaup (recommended)","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"juliaup is a Julia manager/version multiplexer tool designed to handle your Julia installation from the command-line. It is the easiest and most convenient installation option, and is available on almost all platforms that support Julia.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you are running Linux or Mac, enter the following command in your terminal:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"curl -fsSL https://install.julialang.org | sh","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you are running Windows, enter the following:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"winget install julia -s msstore","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you have the Rust programming language installed on your machine, you can install juliaup via the Cargo package manager:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"warning: Warning\nThis is not a recommended option as this will involve compiling the actual juliaup executable on your machine","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"cargo install juliaup","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You can use the first and last commands listed to install Julia via juliaup in a container (see Docker/Podman below)","category":"page"},{"location":"getting_started/juliainstallation/#Docker/Podman","page":"Installing Julia","title":"Docker/Podman","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"An official Docker image is available, allowing you to build containers with Julia already installed. This can be a preferred method of installation if you wish to test out Julia in a sandboxed, ephemeral (temporary) instance or are looking to include Julia in a containerized application.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You must first download the image via the Docker or Podman command-line tool:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"note: Note\nIf you are using Podman, you can replace the keyword docker with podman in any of the following commands!","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"docker pull julia:latest","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You can specify which version of the image you wish to install via tags, such as latest, rc, 1.6, etc.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"To create a run the container instance, run the following command:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"note: Note\nYou may skip the previous step if you have not already downloaded the image, Docker/Podman will automatically begin installing it for you here!","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"docker run -it --rm --network host julia:latest","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"The above command creates an interactive container that will be deleted the moment you exit via the --rm option and that will also share the same network namespace as your machine via the --network host option (allow for automatic port bindings). You may remove either option to disable their respective behaviours.","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"The image itself can serve as a base for your custom container built from a Dockerfile/Containerfile:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"FROM julia:latest\n# ...","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"If you wish to use a different image as the basis of your container, yet still require Julia, you can use any of the other installation methods listed in this section in your Dockerfile/Containerfile. A few examples with juliaup:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"# First option: Install juliaup via curl\nFROM ubuntu:latest\n\nRUN apt update && \\\n apt install -y curl && \\\n curl -fsSL https://install.julialang.org | sh -s -- -y # install juliaup non-interactively\n\nRUN juliaup add release\n\n# Second option: install juliaup in a Rust image (not recommended)\nFROM rust:latest\n\nRUN cargo install juliaup","category":"page"},{"location":"getting_started/juliainstallation/#Direct-download","page":"Installing Julia","title":"Direct download","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"You can also install Julia as a downloadable executable from the Julia website's Download section. You must make sure to install the correct Julia build for your machine based on:","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"native instruction set (x86_64, i686, ARM, Apple Silicon, PowerPC)\noperating system type (Windows, MacOS, Linux (Glibc), Linux (Musl), FreeBSD)\nbit compute type (32-bit, 64-bit)\ndesired level of support (Tier 1 (guaranteed to build and pass all tests) through Tier 4)","category":"page"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"Make sure to follow the exact installation steps for your machine in order to ensure the best experience.","category":"page"},{"location":"getting_started/juliainstallation/#Build-from-source","page":"Installing Julia","title":"Build from source","text":"","category":"section"},{"location":"getting_started/juliainstallation/","page":"Installing Julia","title":"Installing Julia","text":"For building/testing purposes, you may build Julia from the source code that is fully available in the Julia GitHub repository. Simply enter git clone https://github.com/JuliaLang/julia.git to copy the entire source on your machine, create a new git branch via git checkout -b name-of-branch, add your modifications, and run make to start the Makefile build.","category":"page"}] }