What is a Node?
What is a node?
Nodes are a core conceptual element of the arkitekt platform, that represent the functionality that Arkitekt can do for you. As such you can think of a node as a provider of a bioimage task.
E.g. a node can be a functionality provided by an app that maximum projects an image, or applies a gaussian filter to an image, but also a functionality that will ask you the user to select a file, or label an image. A node can therefore be anything that you can envision as a task.
Input and Output
Nodes in Arkitekt are defined by their input and output. This means that a node can be a simple as a node that takes an image as an input and outputs an image, or more complex as a node that two images and some information about the images as an input and outputs a table of results.
What is a node not?
The most important feature to understand about Arkitekt nodes is that they are not bound to an implementation.
This means that a node can be implemented in many different ways AND, by various different apps. For example, here the show Node is implemented by the Fiji app, but also by the Napari app. These apps can implement the same node in different ways, as long as they respect the input and output and the general logic of the node. As nodes are the primary way to interact with the platform, this means that you can rest assured that the node will behave the same way, no matter which app implements it, but also that you can choose the app that you like the most.
Also this abstraction, comes with some additional benefits for the application developer as they can use this abstraction to automatically test their app against the node specification. More about this in the developer sections. As apps templates are the primary way to interact with the platform, this means that even though part of their code can change each version, but users can still interface with the app in the same way, until the developer decides to change the input and output of the node.
Node can establish Streams
Another important feature to understand about Arkitekt nodes is how they process data. This section will only make sense if you have read the Workflow section, but it is important to understand how nodes can establish streams of data.
Programming Analogy
Everybody knows and loves functions, especially functional programming friends like us. If you are are familiar with the core concepts of function and generators in programming, then have a look at their analogy in Arkitekt.
Nodes are best explained in interplay with explaining it with a Template