From 4d62896bc496447afca87670a34e2ae520dcc6f3 Mon Sep 17 00:00:00 2001 From: Michael Persico Date: Sat, 30 Sep 2023 00:22:09 +0000 Subject: [PATCH 1/2] Finish case scenarios + new devcontainer extension - Finish the industry case scenario - Add Rewrap to standardize markdown - Fix typos --- .devcontainer/devcontainer.json | 3 +- docs/src/comparisons/bioconductor.md | 28 +- docs/src/comparisons/biojava.md | 15 +- docs/src/comparisons/bioperl.md | 16 +- docs/src/comparisons/biopython.md | 23 +- docs/src/comparisons/bioruby.md | 18 +- docs/src/comparisons/scikitbio.md | 20 +- .../getting_started/biojuliainstallation.md | 78 ++-- docs/src/getting_started/casescenarios.md | 363 +++++++++++++----- docs/src/getting_started/juliainstallation.md | 97 +++-- docs/src/getting_started/toolsinstallation.md | 118 +++--- docs/src/index.md | 59 ++- docs/src/overview.md | 1 + 13 files changed, 559 insertions(+), 280 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index aac5f6b..d89f4ac 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -9,7 +9,8 @@ "extensions": [ "julialang.language-julia", "tamasfe.even-better-toml", - "eamodio.gitlens" + "eamodio.gitlens", + "stkb.rewrap", ] } }, diff --git a/docs/src/comparisons/bioconductor.md b/docs/src/comparisons/bioconductor.md index 4cac5df..44eba2e 100644 --- a/docs/src/comparisons/bioconductor.md +++ b/docs/src/comparisons/bioconductor.md @@ -1,9 +1,13 @@ # [Bioconductor (R)](@id bioconductor) -- [Bioconductor](https://www.bioconductor.org/) 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 +* [Bioconductor](https://www.bioconductor.org/) 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:** @@ -37,7 +41,15 @@ | Single implementation available (JuliaLang) | Multiple implementations available (pqR, Renjin,...) | **To transition from R to Julia:** -- See [Noteworthy differences from R](https://docs.julialang.org/en/v1/manual/noteworthy-differences/#Noteworthy-differences-from-R) in the Julia manual for a more in-depth comparison -- Use [RCall.jl](https://github.com/JuliaInterop/RCall.jl.git) to seamlessly integrate R code into your Julia project -- Use [JuliaCall](https://cran.r-project.org/web/packages/JuliaCall/readme/README.html) to seamlessly integrate Julia code into your R project -- Check out the [Tidier.jl ecosystem](https://tidierorg.github.io/Tidier.jl/dev/) for packages similar to those commonly found in `tidyverse` +* See [Noteworthy differences from + R](https://docs.julialang.org/en/v1/manual/noteworthy-differences/#Noteworthy-differences-from-R) + in the Julia manual for a more in-depth comparison +* Use [RCall.jl](https://github.com/JuliaInterop/RCall.jl.git) to seamlessly + integrate R code into your Julia project +* Use + [JuliaCall](https://cran.r-project.org/web/packages/JuliaCall/readme/README.html) + to seamlessly integrate Julia code into your R project +* Check out the [Tidier.jl + ecosystem](https://tidierorg.github.io/Tidier.jl/dev/) for packages similar to + those commonly found in `tidyverse` + diff --git a/docs/src/comparisons/biojava.md b/docs/src/comparisons/biojava.md index 853aaa6..b6ba43e 100644 --- a/docs/src/comparisons/biojava.md +++ b/docs/src/comparisons/biojava.md @@ -1,8 +1,10 @@ # [BioJava (Java)](@id biojava) -- [BioJava](https://biojava.org/index.html) 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 +* [BioJava](https://biojava.org/index.html) 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:** @@ -37,6 +39,9 @@ | Single implementation available (JuliaLang) | Multiple implementations available (OpenJDK, GraalVM,...) | **To transition from Java to Julia:** -- Use [JavaCall.jl](https://juliainterop.github.io/JavaCall.jl/) to seamlessly integrate Java code into your Julia project -- See [Running External Programs](https://docs.julialang.org/en/v1/manual/running-external-programs/) in the Julia manual for running Java scripts or other programs from Julia +* Use [JavaCall.jl](https://juliainterop.github.io/JavaCall.jl/) to seamlessly + integrate Java code into your Julia project +* See [Running External + Programs](https://docs.julialang.org/en/v1/manual/running-external-programs/) + in the Julia manual for running Java scripts or other programs from Julia diff --git a/docs/src/comparisons/bioperl.md b/docs/src/comparisons/bioperl.md index a1c32c4..7826b1b 100644 --- a/docs/src/comparisons/bioperl.md +++ b/docs/src/comparisons/bioperl.md @@ -1,8 +1,11 @@ # [BioPerl (Perl5)](@id bioperl) -- [BioPerl](https://bioperl.org/) 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 +* [BioPerl](https://bioperl.org/) 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:** @@ -35,6 +38,9 @@ | Single language implementation (JuliaLang) | Family of related languages/implementations (Perl5, Perl6/Raku, ActivePerl,...) | **To transition from Perl5 to Julia:** -- Read the [Julia manual](https://docs.julialang.org/) for an in-depth look at its internals and features -- See [Running External Programs](https://docs.julialang.org/en/v1/manual/running-external-programs/) in the manual for running Perl scripts or other programs from Julia +* Read the [Julia manual](https://docs.julialang.org/) for an in-depth look at + its internals and features +* See [Running External + Programs](https://docs.julialang.org/en/v1/manual/running-external-programs/) + in the manual for running Perl scripts or other programs from Julia diff --git a/docs/src/comparisons/biopython.md b/docs/src/comparisons/biopython.md index 9172595..218ac82 100644 --- a/docs/src/comparisons/biopython.md +++ b/docs/src/comparisons/biopython.md @@ -1,9 +1,13 @@ # [Biopython (Python3)](@id biopython) -- [Biopython](https://biopython.org/) 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 +* [Biopython](https://biopython.org/) 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:** @@ -40,7 +44,12 @@ | Arrays are column-major (columns are contiguous in memory) | (Numpy) arrays are row-major by default (rows are contiguous in memory) | **To transition from Python3 to Julia:** -- See [Noteworthy differences from Python](https://docs.julialang.org/en/v1/manual/noteworthy-differences/#Noteworthy-differences-from-Python) in the Julia manual for a more in-depth comparison -- Use [PythonCall.jl](https://github.com/cjdoris/PythonCall.jl.git)/[CondaPkg.jl](https://github.com/JuliaPy/CondaPkg.jl.git) to seamlessly integrate Python3 code into your Julia project -- Use [juliacall](https://pypi.org/project/juliacall/) to seamlessly integrate Julia code into your Python3 project +* See [Noteworthy differences from + Python](https://docs.julialang.org/en/v1/manual/noteworthy-differences/#Noteworthy-differences-from-Python) + in the Julia manual for a more in-depth comparison +* Use + [PythonCall.jl](https://github.com/cjdoris/PythonCall.jl.git)/[CondaPkg.jl](https://github.com/JuliaPy/CondaPkg.jl.git) + to seamlessly integrate Python3 code into your Julia project +* Use [juliacall](https://pypi.org/project/juliacall/) to seamlessly integrate + Julia code into your Python3 project diff --git a/docs/src/comparisons/bioruby.md b/docs/src/comparisons/bioruby.md index a3fce1c..08bbcbe 100644 --- a/docs/src/comparisons/bioruby.md +++ b/docs/src/comparisons/bioruby.md @@ -1,9 +1,12 @@ # [BioRuby (Ruby)](@id bioruby) -- [BioRuby](http://bioruby.org/) 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 +* [BioRuby](http://bioruby.org/) 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:** @@ -35,6 +38,9 @@ | Single implementation available (JuliaLang) | Multiple implementations available (TruffleRuby, mruby,...) | **To transition from Ruby to Julia:** -- Read the [Julia manual](https://docs.julialang.org/) for an in-depth look at its internals and features -- See [Running External Programs](https://docs.julialang.org/en/v1/manual/running-external-programs/) in the manual for running Ruby scripts or other programs from Julia +* Read the [Julia manual](https://docs.julialang.org/) for an in-depth look at + its internals and features +* See [Running External + Programs](https://docs.julialang.org/en/v1/manual/running-external-programs/) + in the manual for running Ruby scripts or other programs from Julia diff --git a/docs/src/comparisons/scikitbio.md b/docs/src/comparisons/scikitbio.md index f65aa28..7bfbef3 100644 --- a/docs/src/comparisons/scikitbio.md +++ b/docs/src/comparisons/scikitbio.md @@ -1,8 +1,11 @@ # [scikit-bio (Python3)](@id scikitbio) -- [scikit-bio](http://scikit-bio.org/) 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 +* [scikit-bio](http://scikit-bio.org/) 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:** @@ -38,7 +41,12 @@ | Arrays are column-major (columns are contiguous in memory) | (Numpy) arrays are row-major by default (rows are contiguous in memory) | **To transition from Python3 to Julia:** -- See [Noteworthy differences from Python](https://docs.julialang.org/en/v1/manual/noteworthy-differences/#Noteworthy-differences-from-Python) in the Julia manual for a more in-depth comparison -- Use [PythonCall.jl](https://github.com/cjdoris/PythonCall.jl.git)/[CondaPkg.jl](https://github.com/JuliaPy/CondaPkg.jl.git) to seamlessly integrate Python3 code into your Julia project -- Use [juliacall](https://pypi.org/project/juliacall/) to seamlessly integrate Julia code into your Python3 project +* See [Noteworthy differences from + Python](https://docs.julialang.org/en/v1/manual/noteworthy-differences/#Noteworthy-differences-from-Python) + in the Julia manual for a more in-depth comparison +* Use + [PythonCall.jl](https://github.com/cjdoris/PythonCall.jl.git)/[CondaPkg.jl](https://github.com/JuliaPy/CondaPkg.jl.git) + to seamlessly integrate Python3 code into your Julia project +* Use [juliacall](https://pypi.org/project/juliacall/) to seamlessly integrate + Julia code into your Python3 project diff --git a/docs/src/getting_started/biojuliainstallation.md b/docs/src/getting_started/biojuliainstallation.md index 027fb74..0d33d9b 100644 --- a/docs/src/getting_started/biojuliainstallation.md +++ b/docs/src/getting_started/biojuliainstallation.md @@ -2,21 +2,26 @@ ## Standard installation -As with any Julia package, you can easily install any BioJulia package with the help of the [official -package manager](https://pkgdocs.julialang.org/v1/) included by default with every Julia installation. -All you need to know is the name of the package of interest! +As with any Julia package, you can easily install any BioJulia package with the +help of the [official package manager](https://pkgdocs.julialang.org/v1/) +included by default with every Julia installation. All you need to know is the +name of the package of interest! There are two standard methods to install a package: -!!! note - The 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](@ref pkg-devel) - below) so that you can isolate your dependencies from the global environment and manage them independently. See - [Working with Environment](https://pkgdocs.julialang.org/v1/environments/) for more details. +!!! note + The 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](@ref pkg-devel) below) so that you can isolate your + dependencies from the global environment and manage them independently. See + [Working with Environment](https://pkgdocs.julialang.org/v1/environments/) + for more details. -- **The package manager (Pkg) module** +* **The package manager (Pkg) module** ```julia julia> using Pkg @@ -26,11 +31,12 @@ julia> Pkg.add("") julia> using ``` -!!! note - One 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](@ref julia-repl) section for more. +!!! note + One 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](@ref julia-repl) section for more. -- **Pkg mode** +* **Pkg mode** ```julia # Enter ] @@ -41,23 +47,26 @@ julia> using julia> using ``` -!!! note - Just 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 all handled for you. +!!! note J + Just 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 all handled for you. ## [Package development](@id pkg-devel) -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. +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. There are two standard methods to set up Julia for developing a package: -- **The package manager (Pkg) module** +* **The package manager (Pkg) module** ```julia julia> using Pkg @@ -65,7 +74,7 @@ julia> Pkg.develop("") julia> using ``` -- **Pkg mode** +* **Pkg mode** ```julia # Enter ] @@ -83,11 +92,14 @@ julia> using julia> using ``` -!!! note - You can skip straight to `(@v1.9) pkg> activate ...` if you have already installed the package locally, - simply make sure to point Pkg to the right path as shown above. +!!! note + You can skip straight to `(@v1.9) pkg> activate ...` if you have + already installed the package 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 `. -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. +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. diff --git a/docs/src/getting_started/casescenarios.md b/docs/src/getting_started/casescenarios.md index 9adda88..fa9601e 100644 --- a/docs/src/getting_started/casescenarios.md +++ b/docs/src/getting_started/casescenarios.md @@ -1,115 +1,276 @@ # [Case Scenarios](@id casescenarios) -!!! note - These scenarios are based on practical workflows and real stories from fellow members of the BioJulia/Julia community! +!!! note + These scenarios are based on experiences and case studies from fellow + members of the BioJulia/Julia community! ## Industry !!! tip - Visit [JuliaHub](https://juliahub.com/case-studies/) for real-world case studies of Julia in multiple areas of industry! + Visit [JuliaHub](https://juliahub.com/case-studies/) for real-world case + studies of Julia in multiple areas of industry! -## App/Web Development +A biotechnology-oriented collaborative research organization has ordered their +IT department to organize the first in-house software development division. +Researchers and other essential personnel are divided into teams that each serve +one client at a time, though they all share the same laboratory and equipment. +The need for an in-house programming division has arisen based on feedback from +these teams facing many similar problems with the current workplace setup: + +* The researchers may not be digitally literate, thus they require more + accessible user experiences +* Lessening the number of tools they are required to learn would ideally reduce + complexity and onboarding time +* Some workflows can be repetitive and could take advantage of some automation + to reduce overall time -An analytics firm is interested in developing a new framework for creating interactive dashboards, the idea being that each -client can receive a real-time, custom view of their customer or product data. +It is thus decided that an employee-facing platform should be created that will +host a suite of simple, web-based software tools. These can include tools usable +by any employee or by only one or several teams depending on their needs. The +new division is given the following objectives: +* Collaborate with the researchers and understand their software requirements +* Use modern languages/frameworks to avoid technical headaches and allow for + faster onboarding +* Ensure access to both general and scientific libraries when needed for a + specific tool + +Upon reviewing these objectives, the division begins discussing which tech +stacks they should use. With a mix of veteran and junior talent, as well as a +desire to allow for fast time-to-deployment and performance, it is agreed that a +modern, higher-level programming language would be ideal. One of the +collaborating researchers suggests they look into Julia, which has been the +scripting language of choice amongst some of the teams for automating several +workflows, and the division gives it a go following some research and planning. + +The platform and first two tools for the collaborating researcher's team are +prototyped. The stack is built upon the [Genie](https://genieframework.com/) web +framework, which, crucially, enables authorization/authentication support on a +team-by-team basis and HTML/CSS/JS interoperability. The entire platform is +designed as a reactive app that can be deployed anywhere and is almost entirely +written in Julia for both the frontend and backend. Further Genie ecosystem +packages and plugins spur potential ideas like taking advantage of the included +no-code [UI builder](https://learn.genieframework.com/guides/genie-builder) for +producing analytics dashboards built by each team without advanced programming +expertise. + +The first tool conceived allows teams to upload, download, and manage files or +datasets within the company's shared drive from the web. It is designed to +handle data management on its own without the employees needing to remember +specific drive locations or other details, their only responsibility being +categorization (data pulled from which instrument, for which project, +etc.). The tool is able to manage the data by working with the company's S3 and +S3 Glacier storage instances via the +[AWS](https://juliacloud.github.io/AWS.jl/stable/) package. A user-facing +feature is also included that generates an `Artifacts.toml` file, allowing +researchers to use Julia's [Artifact +system](https://pkgdocs.julialang.org/v1/artifacts/) to declaratively point to +select data and download them when required for their local needs. For the more +tech savvy user, an input feature is set up to allow for +[DuckDB](https://duckdb.org/) database queries for large datasets. An [official +Julia package](https://duckdb.org/docs/api/julia.html) is provided for this +DBMS, however, one incredible feature of the language is the ability to bundle +external programs written in other languages and treat them as first-class Julia +packages, known as +[JLLs](https://docs.binarybuilder.org/stable/jll/#JLL-packages). The official +package wraps the `DuckDB_jll` bundle, which the developers can manage as a +separate dependency for more direct interaction with the DBMS. This feature, to +their delight, also means that porting over common, open scientific software for +more specific tools can be as simple as generating their JLLs and managing them +directly via Julia. Seamless interoperability also extends to the ability to +interact with codes from other languages such as Python with +[PythonCall](https://juliapy.github.io/PythonCall.jl/stable/)/[CondaPkg](https://github.com/JuliaPy/CondaPkg.jl) +and R with [RCall](https://juliainterop.github.io/RCall.jl/stable/). + +The second tool conceived is designed specifically for the collaborating +researcher who needs to determine total cell count following each cell passage. +The user uploads a photo of a stained cell culture sample, along with inputs +such as total medium volume and dilution factor. The developers make use of the +[ImageSegmentation](https://juliaimages.org/stable/pkgs/segmentation/#ImageSegmentation.jl) +package for differentiating live and dead cells through the use of the watershed +algorithm. A side-by-side view is generated with the original and segmented +image, as well as the total number of markers indicating the amount of live +cells, being differentiable due to their staining. Although only a prototype, +the developers believe it would be more than possible, thanks to the number of +large Julia packages already available, to employ basic machine learning to +simplify the process and increase accuracy. Aside from other imaging packages +like [ImageAxes](https://juliaimages.org/stable/pkgs/axes/#ImageAxes.jl), OpenCV +has already been ported over [as a +JLL](https://juliahub.com/ui/Packages/General/OpenCV_jll) for direct +development, and a host of packages are available within the +[SciML](https://sciml.ai/) ecosystem for building the machine learning model. + +The trial period with the collaborating researcher's team proves to be a +success, and the company decides to fully commit to this platform, almost fully +written in Julia, with additional resources and manpower. Novel ideas are +excitedly tossed about internally over which tools can further improve +workflows, such as replacing their electronic lab notebook systems with +[Pluto](https://plutojl.org/) and embedding a quick statistics calculator for +linear regression modelling with packages including +[GLM](https://juliastats.org/GLM.jl/stable/) and [Makie](https://makie.org/). It +is even discussed how Julia may allow the company to eventually commercialize +these tools for other contract research organizations that face the same +challenges. + ## Research -!!! tip - Visit [The Journal of Open Source Software](https://joss.theoj.org/) and [JuliaCon Proceedings](https://proceedings.juliacon.org/) to explore several research packages written in Julia! - -A freshly minted researcher begins the morning with a new directive from the principal investigator. Their lab specializes in -translational cancer immunotherapy, and as of late have been exploring a potential avenue for T-cell activation in patients with -with a rare type of lymphoma. It is hoped that strengthening the expression of specific peptides involved in cellular adaptive immune -response can lead to more effective treatment of this specific cancer. One patient's blood has been sampled and delivered to the lab, -with the goal of extacting and combing through the resulting expression data from various antigen-presenting cells (APCs) to identify abnormal -peptide expression levels. - -The researcher understands that the exploratory nature of this project will require an interactive environment from which results can be -rapidly generated and saved/discarded when need be. Previously, a number of challenges would get in the way of this workflow: - -- Working with interactive languages had proven to be a hassle due to issues like competing build systems and environments -- The REPL experience was often lacking due to missing features or lack of integrations with other tools like a package manager -- Notebooks, while good for experimenting, can come with their own problems such as slow speeds and difficulties with deployment and versioning -- Writing high-performing software would require lower-level languages like C or Fortran, which would prove difficult for scientists without a computer science background - -They remember previously experimenting with Julia while before it was stable, and decide to give it a second go. Installation proved to be very simple with the -[juliaup](https://github.com/JuliaLang/juliaup#installation) tool, and they proceed to read up on the basics from the [Julia manual](https://docs.julialang.org/en/v1/). -The first step, upon loading the Julia REPL, is to add the [DrWatson](https://juliadynamics.github.io/DrWatson.jl/stable/) package to better track -the project. With DrWatson and the built-in package manager, the researcher can geneate reproducible code for simulations, plotting, and -data preparation. - -At the same time, the researcher isolates the APCs via a microfluidic cell-sorting device. The patient's cells are encapsulated into individual -droplets from which single-cell profiling can occur via Droplet-Sequencing (Drop-seq). The resulting data is stored in [.h5 files](https://www.wikiwand.com/en/Hierarchical_Data_Format) on the lab's shared drive. The researcher generates an `Artifacts.toml` file that utilizes Julia's built-in package manager to point -to these files in a persistent and reproducible manner every time when the project needs to be shared with others on their own machines. The researcher makes -quick work of loading the data into Julia with the [HDF5](https://juliaio.github.io/HDF5.jl/stable/) package, and applies a number of steps with -[DataFrames](https://dataframes.juliadata.org/stable/), [TidierData](https://tidierorg.github.io/TidierData.jl/latest/), and [Chain](https://github.com/jkrumbiegel/Chain.jl) -to transform, normalize, and filter the data. Finally, principle component analysis (PCA) with [SingleCellProjections](https://biojulia.dev/SingleCellProjections.jl/stable/) -is conducted, visualized with a plotting package such as [Makie](https://makie.org/) or [PlotlyJS](http://juliaplots.org/PlotlyJS.jl/stable/). - -The whole project is saved by DrWatson and shared with the P.I. for further discussion. PCA analysis leads them to focus on a narrow subset of -APCs with elevated peptide expression levels which will be followed up in subsequent studies. The researcher prepares a more digestible format of the results -as a [Pluto notebook](https://plutojl.org/) to share with colleagues the more pertinent observations, and finally a more formal research report is written with -[Weave](https://weavejl.mpastell.com/stable/). The lab is impressed with what was achieved with Julia, with many remarking how effortless it seemed to achieve -excellent performance with such a high-level language. +!!! tip + Visit [The Journal of Open Source Software](https://joss.theoj.org/) and + [JuliaCon Proceedings](https://proceedings.juliacon.org/) to explore several + research packages written in Julia! + +A freshly minted researcher begins the morning with a new directive from the +principal investigator. Their lab specializes in translational cancer +immunotherapy, and as of late have been exploring a potential avenue for T-cell +activation in patients with with a rare type of lymphoma. It is hoped that +strengthening the expression of specific peptides involved in cellular adaptive +immune response can lead to more effective treatment of this specific cancer. +One patient's blood has been sampled and delivered to the lab, with the goal of +extacting and combing through the resulting expression data from various +antigen-presenting cells (APCs) to identify abnormal peptide expression levels. + +The researcher understands that the exploratory nature of this project will +require an interactive environment from which results can be rapidly generated +and saved/discarded when need be. Previously, a number of challenges would get +in the way of this workflow: + +* Working with interactive languages had proven to be a hassle due to issues + like competing build systems and environments +* The REPL experience was often lacking due to missing features or lack of + integrations with other tools like a package manager +* Notebooks, while good for experimenting, can come with their own problems such + as slow speeds and difficulties with deployment and versioning +* Writing high-performance software would require lower-level languages like C + or Fortran, which would prove difficult for scientists without a computer + science background + +They remember previously experimenting with Julia before it was considered +stable, and decide to give it a second go. Installation proved to be very simple +with the [juliaup](https://github.com/JuliaLang/juliaup#installation) tool, and +they proceed to read up on the basics from the [Julia +manual](https://docs.julialang.org/en/v1/). The first step, upon loading the +Julia REPL, is to add the +[DrWatson](https://juliadynamics.github.io/DrWatson.jl/stable/) package to +better track the project. With DrWatson and the built-in package manager, the +researcher can geneate reproducible code for simulations, plotting, and data +preparation. + +At the same time, the researcher isolates the APCs via a microfluidic +cell-sorting device. The patient's cells are encapsulated into individual +droplets from which single-cell profiling can occur via Droplet-Sequencing +(Drop-seq). The resulting data is stored in [.h5 +files](https://www.wikiwand.com/en/Hierarchical_Data_Format) on the lab's shared +drive. The researcher generates an `Artifacts.toml` file that utilizes Julia's +built-in [Artifact system](https://pkgdocs.julialang.org/v1/artifacts/) to point +to these files in a persistent and reproducible manner every time the project +needs to be shared with others on their own machines. The researcher makes quick +work of loading the data into Julia with the +[HDF5](https://juliaio.github.io/HDF5.jl/stable/) package, and applies a number +of steps with [DataFrames](https://dataframes.juliadata.org/stable/), +[TidierData](https://tidierorg.github.io/TidierData.jl/latest/), and +[Chain](https://github.com/jkrumbiegel/Chain.jl) to transform, normalize, and +filter the data. Finally, principle component analysis (PCA) with +[SingleCellProjections](https://biojulia.dev/SingleCellProjections.jl/stable/) +is conducted, visualized with the help of the [Makie](https://makie.org/) +plotting package. + +The whole project is saved by DrWatson and shared with the P. I. for further +discussion. PCA analysis leads them to focus on a narrow subset of APCs with +elevated peptide expression levels which will be followed up in subsequent +studies. The researcher prepares a more digestible format of the results as a +[Pluto notebook](https://plutojl.org/) to share with colleagues the more +pertinent observations, and finally a more formal research report with Julia +code included is written with [Weave](https://weavejl.mpastell.com/stable/). The +lab is impressed with what was achieved with Julia, with many remarking how +effortless it seemed to achieve excellent performance with such a high-level +language. ## Education -A new teacher 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 they have been given free reign to design their own course plan. They are 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. They look 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, the new teacher 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 common computer science - concepts -- There is a desire to avoid the "two-language problem" wherein parts of either language are written in another and thus introduce unneeded - complexity - -A fellow professor recommends that they look into Julia, which has found success within the department. Beyond addressing many -of the issues encountered with R and Python3, it is especially enjoyable 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. - -The first objective is to create a presentation format with good aesthetics that can also show off and run code. They discover how -to set up interactive notebooks with [Pluto](https://plutojl.org/) that will be hosted in a [central repository](https://github.com/) -or online via a website or with solutions like [Binder](https://mybinder.org/). 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, they take advantage of Julia's [Artifact system](https://pkgdocs.julialang.org/v1/artifacts/) for -handling and retrieving data from almost anywhere on the Internet. - -With the course infrastructure set, attention is now put towards creating the actual course material. They can cover a number of biostatistics -topics using powerful, well-established Julia packages: - -- [Plots](https://docs.juliaplots.org/stable/) or [Makie](https://docs.makie.org/stable/) for data visualization -- [DataFrames](https://dataframes.juliadata.org/stable/), [CSV](https://csv.juliadata.org/stable/), and [Tidier](https://tidierorg.github.io/Tidier.jl/dev/) - for data handling -- [Statistics] and [StatsBase] for general statistical functionality (scalar statistics, estimation,...) -- [Distributions](https://juliastats.org/Distributions.jl/stable/) for probability and sampling -- [HypothesisTests](https://juliastats.org/HypothesisTests.jl/stable/) for parametric (ANOVA, chi-squared,...) and non-parametric testing -- [GLM](https://juliastats.org/GLM.jl/stable/) for generalized linear modelling -- [Flux](https://fluxml.ai/) or [MLJ](https://alan-turing-institute.github.io/MLJ.jl/stable/) for basic machine learning - -The course agenda is now almost complete. However, just before the start of the semester, a new lesson on Tukey's honest significance test is -added. Unfortunately, there is no package written in Julia for this test, and there is little time left to develop the code on their own. Luckily, -Julia posseses amazing interoperability with both Python3 and R, and they discover how to both call and bundle Scipy's `stats.tukey_hsd` function via -[PythonCall](https://cjdoris.github.io/PythonCall.jl/stable/) and [CondaPkg](https://github.com/cjdoris/CondaPkg.jl). Not only will the Python3 code -seamlessly integrate into the Julia notebook, but it will also handle conda packaging automatically! - -The teacher goes on to deliver one of the best courses that semester, empowered by Julia to deliver an engaging, interactive experience that teaches -students both the fundamentals of biostatistics and of quality programming. +A new teacher 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 they have been given free reign to design their own course +plan. They are 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. They look 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, the new teacher +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 including 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 common computer science concepts +* There is a desire to avoid the "two-language problem" wherein parts of either + language are written in another and thus introduce unneeded complexity + +A fellow professor recommends that they look into Julia, which has already found +success within certain departments. Beyond addressing many of the issues +encountered with R and Python3, it is especially enjoyable 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. + +The first objective is to create a presentation format with good aesthetics that +can also show off and run code. They discover how to set up interactive +notebooks with [Pluto](https://plutojl.org/) that will be hosted in a [central +repository](https://github.com/) or online via a website or with solutions like +[Binder](https://pluto-on-binder.glitch.me/). 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, they take advantage of Julia's +[Artifact system](https://pkgdocs.julialang.org/v1/artifacts/) for handling and +retrieving data from almost anywhere on the Internet. + +With the course infrastructure set, attention is now put towards creating the +actual course material. They can cover a number of biostatistics topics using +powerful, well-established Julia packages: + +* [Plots](https://docs.juliaplots.org/stable/) or + [Makie](https://docs.makie.org/stable/) for data visualization +* [DataFrames](https://dataframes.juliadata.org/stable/), + [CSV](https://csv.juliadata.org/stable/), and + [Tidier](https://tidierorg.github.io/Tidier.jl/dev/) for data handling +* [Statistics] and [StatsBase] for general statistical functionality (scalar + statistics, estimation, ...) +* [Distributions](https://juliastats.org/Distributions.jl/stable/) for + probability and sampling +* [HypothesisTests](https://juliastats.org/HypothesisTests.jl/stable/) for + parametric (ANOVA, chi-squared, ...) and non-parametric testing +* [GLM](https://juliastats.org/GLM.jl/stable/) for generalized linear modelling +* [Flux](https://fluxml.ai/) or + [MLJ](https://alan-turing-institute.github.io/MLJ.jl/stable/) for basic + machine learning + +The course agenda is now almost complete. However, just before the start of the +semester, a new lesson on Tukey's honest significance test is added. +Unfortunately, there is no package written in Julia for this test, and there is +little time left to develop the code on their own. Luckily, Julia posseses +amazing interoperability with both Python3 and R, and they discover how to both +call and bundle Scipy's `stats.tukey_hsd` function via +[PythonCall](https://cjdoris.github.io/PythonCall.jl/stable/) and +[CondaPkg](https://github.com/cjdoris/CondaPkg.jl). + +The teacher goes on to deliver one of the best courses that semester, empowered +by Julia to deliver an engaging, interactive experience that teaches students +both the fundamentals of biostatistics and of quality programming. + diff --git a/docs/src/getting_started/juliainstallation.md b/docs/src/getting_started/juliainstallation.md index 77e3307..5507fb0 100644 --- a/docs/src/getting_started/juliainstallation.md +++ b/docs/src/getting_started/juliainstallation.md @@ -1,78 +1,93 @@ # [Installing Julia](@id juliainstallation) -There are a number of methods available to install Julia that each have their own advantages: +There are a number of methods available to install Julia that each have their +own advantages: -!!! note - It 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! +!!! note + It 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! ## juliaup (recommended) -[juliaup](https://github.com/JuliaLang/juliaup.git) 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. +[juliaup](https://github.com/JuliaLang/juliaup.git) 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. -- If you are running **Linux or Mac**, enter the following command in your terminal: +* If you are running **Linux or Mac**, enter the following command in your + terminal: ``` curl -fsSL https://install.julialang.org | sh ``` -- If you are running **Windows**, enter the following: +* If you are running **Windows**, enter the following: ``` winget install julia -s msstore ``` -- If you have the **Rust** programming language installed on your machine, you can install `juliaup` via the Cargo package manager: +* If you have the **Rust** programming language installed on your machine, you + can install `juliaup` via the Cargo package manager: -!!! warning - This is not a recommended option as this will involve compiling the actual `juliaup` executable on your machine +!!! warning + This is not a recommended option as this will involve compiling the + actual `juliaup` executable on your machine ``` cargo install juliaup ``` -You can use the first and last commands listed to install Julia via `juliaup` in a container (see [Docker/Podman](#Docker/Podman) below) +You can use the first and last commands listed to install Julia via `juliaup` in +a container (see [Docker/Podman](#Docker/Podman) below) ## Docker/Podman -An [official Docker image](https://hub.docker.com/_/julia) 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. +An [official Docker image](https://hub.docker.com/_/julia) 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. You must first download the image via the Docker or Podman command-line tool: -!!! note - If you are using Podman, you can replace the keyword `docker` with `podman` in any of the following commands! +!!! note + If you are using Podman, you can replace the keyword `docker` with + `podman` in any of the following commands! ``` docker pull julia:latest ``` -You can specify which version of the image you wish to install via tags, such as `latest`, `rc`, `1.6`, etc. +You can specify which version of the image you wish to install via tags, such as +`latest`, `rc`, `1.6`, etc. To create a container instance, run the following command: -!!! note - You may skip the previous step if you have not already downloaded the image, Docker/Podman will automatically begin installing it for - you here! +!!! note + You may skip the previous step if you have not already downloaded the + image, Docker/Podman will automatically begin installing it for you here! ``` docker run -it --rm --network host julia:latest ``` -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. +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. -The image itself can serve as a base for your custom container built from a Dockerfile/Containerfile: +The image itself can serve as a base for your custom container built from a +Dockerfile/Containerfile: ``` FROM julia:latest # ... ``` -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`: +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`: ``` # First option: Install juliaup via curl @@ -92,18 +107,24 @@ RUN cargo install juliaup ## Direct download -You can also install Julia as a downloadable executable from the Julia website's [Download section](https://julialang.org/downloads/). -You must make sure to install the correct Julia build for your machine based on: -- native instruction set (x86_64, i686, ARM, Apple Silicon, PowerPC) -- operating system type (Windows, MacOS, Linux (Glibc), Linux (Musl), FreeBSD) -- bit compute type (32-bit, 64-bit) -- desired level of support (Tier 1 (guaranteed to build and pass all tests) through Tier 4) +You can also install Julia as a downloadable executable from the Julia website's +[Download section](https://julialang.org/downloads/). You must make sure to +install the correct Julia build for your machine based on: +* native instruction set (x86_64, i686, ARM, Apple Silicon, PowerPC) +* operating system type (Windows, MacOS, Linux (Glibc), Linux (Musl), FreeBSD) +* bit compute type (32-bit, 64-bit) +* desired level of support (Tier 1 (guaranteed to build and pass all tests) + through Tier 4) -Make sure to follow the exact installation steps for your machine in order to ensure the best experience. +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](https://github.com/JuliaLang/julia.git). -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. +For building/testing purposes, you may build Julia from the source code that is +fully available in the [Julia GitHub +repository](https://github.com/JuliaLang/julia.git). 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/docs/src/getting_started/toolsinstallation.md b/docs/src/getting_started/toolsinstallation.md index b9af2e0..1cfd4dc 100644 --- a/docs/src/getting_started/toolsinstallation.md +++ b/docs/src/getting_started/toolsinstallation.md @@ -2,12 +2,14 @@ ## [Julia REPL](@id julia-repl) -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 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. -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: +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: ``` _ _ _(_)_ | Documentation: https://docs.julialang.org @@ -21,15 +23,17 @@ alone can almost be considered a proper IDE. It should appear the moment you ent julia> ``` -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: +Not every feature that the REPL provides will be shown, however here is a quick +list that most Julia users should know to make the most of this shell: -- There are 5 Julia REPL modes that serve separate purposes: +* There are 5 Julia REPL modes that serve separate purposes: 1. The Julian (default) mode wherein one can write, load, and test out code 2. Help mode for printing documentation for functions, keywords, etc. - 3. Pkg mode for working with the included package manager and manipulating dependencies/packages - 4. Shell mode to execute system commands (run a terminal from Julia which itself is running from a terminal!) + 3. Pkg mode for working with the included package manager and manipulating + dependencies/packages + 4. Shell mode to execute system commands (run a terminal from Julia which + itself is running from a terminal!) 5. Search modes (forward, reverse) to look through your history of inputs | Prompt | Key binding | @@ -41,29 +45,34 @@ know to make the most of this shell: | `(reverse-i-search):` | `^R` | | `(forward-i-search):` | `^S` | -- 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! -- You 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](https://docs.julialang.org/en/v1/manual/unicode-input/) section of the Julia manual): +* 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! +* You 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](https://docs.julialang.org/en/v1/manual/unicode-input/) section of the + Julia manual): ```julia julia> pri[TAB] primitive type print println printstyled julia> \pi[TAB] # renders π ``` -- You 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__` - -!!! warning - One 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](https://timholy.github.io/Revise.jl/stable/) package, although restarting the session is the simplest option. - ```julia - julia> struct Point - x::Int - y::Int - end +* You 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__` + +!!! warning + One 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](https://timholy.github.io/Revise.jl/stable/) package, although + restarting the session is the simplest option. + ```julia + julia> struct Point::Int y::Int end julia> struct Point x::Int @@ -75,39 +84,48 @@ know to make the most of this shell: @ REPL[2]:1 ``` -To learn more, see the [The Julia REPL](https://docs.julialang.org/en/v1/stdlib/REPL/) section in the Julia manual. +To learn more, see the [The Julia +REPL](https://docs.julialang.org/en/v1/stdlib/REPL/) section in the Julia +manual. ## Visual Studio Code extension -The Julia organization officially maintains the [Julia vscode extension](https://www.julia-vscode.org/), which provides -a complete IDE solution for developing in Julia. This boasts a number of advantages compared to a REPL solution: +The Julia organization officially maintains the [Julia vscode +extension](https://www.julia-vscode.org/), which provides a complete IDE +solution for developing in Julia. This boasts a number of advantages compared to +a REPL solution: -- Built-in syntax highlighting and code completion -- GUI interaction for managing options and commands -- Advanced profiling/debugging features -- Additional extensions support +* Built-in syntax highlighting and code completion +* GUI interaction for managing options and commands +* Advanced profiling/debugging features +* Additional extensions support -To install vscode, follow the instructions on how to install the official binary for your development machine from the -[official website](https://code.visualstudio.com/). 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`. +To install vscode, follow the instructions on how to install the official binary +for your development machine from the [official +website](https://code.visualstudio.com/). 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`. ![Julia VSCode Extension](JuliaVSCodeExtension.png) -Install the extension and restart vscode. We also recommend installing some additional extensions that will further improve -the development experience: +Install the extension and restart vscode. We also recommend installing some +additional extensions that will further improve the development experience: -- [Even Better TOML](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml) - (`ext install tamasfe.even-better-toml`) for working with the package TOML +* [Even Better + TOML](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml) + (`ext install tamasfe.even-better-toml`) for working with the package TOML files (Project.toml, Manifest.toml, Artifacts.toml,...) -- [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) (`ext install eamodio.gitlens`) for - enhancing Git workflows - - - -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](https://code.visualstudio.com/docs/languages/julia) page -in the official vscode docs. You can also visit the [Julia extension](https://www.julia-vscode.org/) website to learn more about -what features are available. +* [GitLens](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) + (`ext install eamodio.gitlens`) for enhancing Git workflows + +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](https://code.visualstudio.com/docs/languages/julia) page in the official +vscode docs. You can also visit the [Julia +extension](https://www.julia-vscode.org/) website to learn more about what +features are available. diff --git a/docs/src/index.md b/docs/src/index.md index 9791d8e..2a9a1d2 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1,29 +1,48 @@ # 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. +> 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](https://julialang.org/). 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. +BioJulia is a passionate, community-led organization providing biology-related +packages written in the [Julia programming language](https://julialang.org/). +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 and other scientists are fully empowered by Julia to easily tackle domain-specific challenges, taking advantage of features including: -- [Fully reproducible environments](https://pkgdocs.julialang.org/v1/environments/) thanks to Julia's built-in package manager -- [Competitive performance](https://julialang.org/benchmarks/) that rivals that of lower-level, more complex languages such as C and Fortran -- [Unicode-based math symbol support](https://docs.julialang.org/en/v1/manual/unicode-input/), [transparent BLAS integration](https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/#man-linalg), and additional features for performing complex numerical operations -- [A batteries-included read-eval-print loop (REPL)](https://docs.julialang.org/en/v1/stdlib/REPL/#The-Julia-REPL) for interactive data exploration and prototyping -- [Seamless interoperability](https://docs.julialang.org/en/v1/manual/calling-c-and-fortran-code/#Calling-C-and-Fortran-Code) [(JLLs,](https://docs.binarybuilder.org/stable/#Project-flow) [Cmd,...)](https://docs.julialang.org/en/v1/manual/running-external-programs/#Running-External-Programs) with other languages via multiple foreign function interfaces +Biologists and other scientists are fully empowered by Julia to easily tackle +domain-specific challenges, taking advantage of features including: +* [Fully reproducible + environments](https://pkgdocs.julialang.org/v1/environments/) thanks to + Julia's built-in package manager +* [Competitive performance](https://julialang.org/benchmarks/) that rivals that + of lower-level, more complex languages such as C and Fortran +* [Unicode-based math symbol + support](https://docs.julialang.org/en/v1/manual/unicode-input/), [transparent + BLAS + integration](https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/#man-linalg), + and additional features for performing complex numerical operations +* [A batteries-included read-eval-print loop + (REPL)](https://docs.julialang.org/en/v1/stdlib/REPL/#The-Julia-REPL) for + interactive data exploration and prototyping +* [Seamless + interoperability](https://docs.julialang.org/en/v1/manual/calling-c-and-fortran-code/#Calling-C-and-Fortran-Code) + [(JLLs,](https://docs.binarybuilder.org/stable/#Project-flow) + [Cmd,...)](https://docs.julialang.org/en/v1/manual/running-external-programs/#Running-External-Programs) + with other languages via multiple foreign function interfaces ## Where to Start? - - Take a look at all BioJulia code via the official [GitHub page](https://github.com/BioJulia). - - Begin contributing ideas and features following the [core guidelines](https://github.com/BioJulia/Contributing.git). - - Deep dive into the ecosystem over at the [Overview](). - - Start learning right away using the [Getting Started tutorials](). - - See some awesome examples in the [BioJulia Showcase](). - - - Come chat with us over in the [Slack](https://julialang.org/slack/) #biology workspace and on [forums](https://discourse.julialang.org/). +* Take a look at all BioJulia code via the official [GitHub + page](https://github.com/BioJulia) +* Begin contributing ideas and features following the [core + guidelines](https://github.com/BioJulia/Contributing.git) +* Deep dive into the ecosystem over at the [Overview]() +* Start learning right away using the [Getting Started tutorials]() +* See some awesome examples in the [BioJulia Showcase]() +* Come chat with us over in the [Slack](https://julialang.org/slack/) #biology + channel and on [forums](https://discourse.julialang.org/) -Use the top navigation bar to search for provided packages within one's field of interest. +Use the top navigation bar to search for provided packages within one's field of +interest. diff --git a/docs/src/overview.md b/docs/src/overview.md index e69de29..2c6de17 100644 --- a/docs/src/overview.md +++ b/docs/src/overview.md @@ -0,0 +1 @@ +# [Overview](@id overview) From 56e58996b20e419621b50d215db4aa96c880495a Mon Sep 17 00:00:00 2001 From: Michael Persico Date: Wed, 8 Nov 2023 02:53:31 +0000 Subject: [PATCH 2/2] Complete tool installation section --- docs/make.jl | 2 +- docs/src/assets/JuliaVSCodeExtension.png | Bin 0 -> 166685 bytes docs/src/getting_started/toolsinstallation.md | 125 +++++++++++++++--- docs/src/overview.md | 10 ++ 4 files changed, 116 insertions(+), 21 deletions(-) create mode 100644 docs/src/assets/JuliaVSCodeExtension.png diff --git a/docs/make.jl b/docs/make.jl index 72119e9..bb18c23 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -28,7 +28,7 @@ makedocs( ], ], # Showcase of Cool Examples - "What is BioJulia" => ["overview.md", + "What is BioJulia?" => ["overview.md", ] ] ) diff --git a/docs/src/assets/JuliaVSCodeExtension.png b/docs/src/assets/JuliaVSCodeExtension.png new file mode 100644 index 0000000000000000000000000000000000000000..15ab654c5f564d38f8a47d368915ee3173397a75 GIT binary patch literal 166685 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

?5!ktVl^X6sZZWjBMN@s}??g`o4 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

v;8A6IC^LNfw(l)9ZDF_MlSx!XPE80vOl*i`TZ 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 literal 0 HcmV?d00001 diff --git a/docs/src/getting_started/toolsinstallation.md b/docs/src/getting_started/toolsinstallation.md index 1cfd4dc..5579a11 100644 --- a/docs/src/getting_started/toolsinstallation.md +++ b/docs/src/getting_started/toolsinstallation.md @@ -65,19 +65,22 @@ list that most Julia users should know to make the most of this shell: __main__` condition would be `if abspath() == @__FILE__` !!! warning - One 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](https://timholy.github.io/Revise.jl/stable/) package, although - restarting the session is the simplest option. - ```julia - julia> struct Point::Int y::Int end - + One 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](https://timholy.github.io/Revise.jl/stable/) package, although + restarting the session is the simplest option. + ```julia + julia> struct Point + x::Int + y::Int + end + julia> struct Point x::Int z::Int - end + end ERROR: invalid redefinition of constant Point Stacktrace: [1] top-level scope @@ -90,10 +93,11 @@ manual. ## Visual Studio Code extension -The Julia organization officially maintains the [Julia vscode -extension](https://www.julia-vscode.org/), which provides a complete IDE -solution for developing in Julia. This boasts a number of advantages compared to -a REPL solution: +The Julia organization officially supports the [julia-vscode +extension](https://www.julia-vscode.org/) which, together with VSCode, provides +a complete solution for developing in Julia similar to a fully integrated +development environment (IDE). This boasts a number of advantages compared to a +pure REPL-driven solution: * Built-in syntax highlighting and code completion * GUI interaction for managing options and commands @@ -108,8 +112,7 @@ 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`. - -![Julia VSCode Extension](JuliaVSCodeExtension.png) +![Julia VSCode Extension](../assets/JuliaVSCodeExtension.png) Install the extension and restart vscode. We also recommend installing some additional extensions that will further improve the development experience: @@ -124,8 +127,90 @@ additional extensions that will further improve the development experience: 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](https://code.visualstudio.com/docs/languages/julia) page in the official -vscode docs. You can also visit the [Julia -extension](https://www.julia-vscode.org/) website to learn more about what -features are available. +Code](https://code.visualstudio.com/docs/languages/julia) page or the [Julia +extension's](https://www.julia-vscode.org/) official website. + +## Alternative Editor/IDE extensions + +Although [julia-vscode](https://www.julia-vscode.org/) is the only officially +supported extension, community extensions are available for a range of code +editors/IDEs: + +- [julia-emacs](https://github.com/JuliaEditorSupport/julia-emacs.git) that + integrates a new major mode for developing in Julia +- [julia-vim](https://github.com/JuliaEditorSupport/julia-vim.git) to enable + Julia support for Vim/Neovim +- [julia-sublime](https://github.com/JuliaEditorSupport/Julia-sublime.git) to + enable Julia support for Sublime + +Certain editors/IDEs, such as [GodBolt](https://godbolt.org/) and +[Replit](https://replit.com/lm/julia), already support Julia without extensions. +Finally, many editors, like [micro](https://micro-editor.github.io/), natively +include support for basic features such as code highlighting or simple +autocomplete. + +## Notebooks + +A reactive notebook is an interactive environment that combines elements of a +code editor and a REPL into one solution. One writes code in executable blocks +of "cells" that can be mixed with text and other assets to create a reproducible +document that is shareable and easily manipulable. Notebooks are especially +useful for scientific exploration since code can be rapidly prototyped in an +isolated environment that can be both visualized and documented in the same +file. + +There are two standard methods for working with Julia in notebooks: + +### IJulia (Julia kernel for Jupyter) + +The Julia organization officially supports the +[IJulia](https://julialang.github.io/IJulia.jl/stable/) kernel, or backend, for +Jupyter notebooks, which is the most popular web-based notebook solution. + +To install IJulia/Jupyter and run the notebook server: + +!!! note + Instead of loading Pkg, one can simply activate pkg mode with the `]` key and enter `(@v1.9) pkg> add ` + + 1. Install Julia via any method mentioned in the [Installing Julia](@ref juliainstallation) section + 2. Open the Julia REPL by entering `julia` into your terminal + 3. Add the IJulia package via the built-in package manager: `julia> using Pkg;Pkg.add("IJulia")` + 4. Load IJulia and launch the notebook server: `julia> using IJulia; notebook()` + (run `notebook(detached=true)` if you wish that the notebook, and `notebook(dir="/some/path")` if you wish to open a notebook in a ) + server sruns in the background even if the Julia session is closed) + 5. Enter `y` to install Jupyter via Conda if you have not done so already on + your machine + +The notebook dashboard should open within your web browser. If you already have +jupyter installed ([Installing Jupyter](https://jupyter.org/install)), you can +enter `n` when prompted by the Julia REPL and instead run `jupyter notebook` +from the terminal. Visit the [Running +IJulia](https://julialang.github.io/IJulia.jl/stable/manual/running/#Running-IJulia) +section in the official IJulia docs for more information. + +### Pluto notebooks + +[Pluto.jl](https://plutojl.org/) is an alternative notebook solution built with +Julia in mind. It integrates well with the language and boasts a number of +features that are not available or are difficult to achieve with the Jupyter +solution: + +* Works with Julia's built-in package manager for native reproducibility +* Live docs feature, essentially Julia's help mode available within the notebook +* Works with normal Julia (.jl) files as opposed to .ipynb files +* Extendable via packages like + [PlutoUI](https://featured.plutojl.org/basic/plutoui.jl) and + [PlutoPDF](https://github.com/JuliaPluto/PlutoPDF.jl.git) + +To install and run the Pluto server: + + 1. Install Julia via any method mentioned in the [Installing Julia](@ref juliainstallation) section + 2. Open the Julia REPL by entering `julia` into your terminal + 3. Add the Pluto package via the built-in package manager: `julia> using Pkg;Pkg.add("Pluto")` + 4. Load Pluto and launch the notebook server: `julia> using Pluto; Pluto.run()` + 5. Copy/paste the given URL (http://localhost:...) into your web browser + +A number of featured notebooks are [available +online](https://featured.plutojl.org/) that include basic tutorials and powerful +demonstrations achieved with Pluto. diff --git a/docs/src/overview.md b/docs/src/overview.md index 2c6de17..1a80318 100644 --- a/docs/src/overview.md +++ b/docs/src/overview.md @@ -1 +1,11 @@ # [Overview](@id overview) + +# Overview of the BioJulia Ecosystem + +BioJulia is an + +## + +## Common Julia packages + +Below are a few examples of common Julia packages that are \ No newline at end of file