Runtimesď
Nextstrainâs runtimes are specific computing environments in which Nextstrain CLI expects to find and run other Nextstrain programs, like Augur and Auspice. In turn, Nextstrain CLI provides a consistent set of commands to run and visualize Nextstrain pathogen builds regardless of the underlying runtime in use. Together, this allows Nextstrain to be used across many different computing platforms and operating systems.
The nextstrain build, nextstrain view, and nextstrain shell commands all require a runtime, as they require access to other Nextstrain software.
The nextstrain setup, nextstrain check-setup, and
nextstrain update commands manage the runtimes available for use by the
commands above. The nextstrain version commandâs --verbose
option reports detailed version information
about all available runtimes.
Other Nextstrain CLI commands, such as the nextstrain remote family of commands and the related nextstrain login and nextstrain logout commands, do not require a runtime. They may be used without any prior set up of a runtime.
The runtimes currently available are the:
Runtimes are managed (maintained, tested, versioned, released) by the Nextstrain team, except for the ambient runtime. The ambient runtime is special in that itâs whatever computing environment in which Nextstrain CLI itself is running (that is, itâs managed by the user).
You can set up and use multiple runtimes on the same computer, for example if
you want to use them in different contexts. Runtime-using commands let you
select a different runtime than your default with command-line options (e.g.
--docker
, --conda
, and so on). For example, you might use the Docker
runtime to run small builds locally and then use the AWS Batch runtime to run
large scale builds with more computing power.
If you pick one runtime and later realize you want to switch, you can go back and set up the other.
Comparisonď
Isolation level |
Containerized? |
Locality |
External dependencies |
|
---|---|---|---|---|
great (3) |
yes |
local or remote |
|
|
some (1) |
no |
local |
none |
|
good (2) |
yes |
local |
|
|
none (0) |
no |
local |
many |
|
great (3) |
yes |
remote |
AWS account with Batch set up |
- Isolation level
A relative ranking from least isolated (none, 0) to most isolated (great, 3) from the underlying computer system.
- Containerized?
A containerized computing platform provides a higher degree of isolation, which in turn usually means a higher degree of portabililty and reproducibility across different computers and users.
- Locality
Local means âon the same computer where
nextstrain
is being runâ. Remote means âon a different computerâ.Docker is most often used to run containers locally, but can also be used to run them remotely.
- External dependencies
Third-party programs or configuration which are required to use a runtime but not managed by nextstrain setup and nextstrain update.
Compatibilityď
Switching runtimes or updating the version of a runtime may result in different
versions of Nextstrain components like Augur and Auspice as well as other
programs, and thus different behaviour. Use the nextstrain version
commandâs --verbose
option to report
detailed version information about all available runtimes.
Exact behavioural compatibility is not guaranteed between different runtimes
(e.g. between the Docker vs. Conda runtimes) or between versions of the same
runtime (e.g. between Docker runtime images
nextstrain/base:build-20230714T205715Z
and
nextstrain/base:build-20230720T001758Z
). However, the containerized
runtimes (Docker, Singularity, AWS Batch; see comparison above) will usually
have identical behaviour given the same runtime version (e.g. build-âŚ
) as
they are all based the same runtime image (nextstrain/base
). Any variance
is typically due to use of external resources (intentional or otherwise) from
outside the container.