Skip to content
Development GuidesAna Software Architecture

Basic Components

The workflow for generating synthetic data using Ana involves a graph-based architecture executed through applications known as channels. The executable building blocks are called nodes.

Core Architecture

The steps necessary to generate synthetic data with Ana are described by a graph. This flow-based program executes within an application called a channel.

The executable elements in the graph are called nodes and are implemented as Python classes organized within packages. Packages bundle related nodes alongside supporting libraries, and channels can leverage nodes from multiple packages simultaneously.

Packages often depend on static support data, which resides in virtual containers called volumes. A package can make use of multiple volumes. Additional information is available in the Package Volumes documentation.

Example Use Case

A computer vision engineer developing machine learning models for low Earth orbit satellite imagery wants to train an algorithm to automatically count vehicles in parking lots. The solution involves generating thousands of synthetic overhead RGB images showing various automobile types, lot configurations, and environmental elements like trees and street lights.

To accomplish this, a channel named 'cars_in_parking_lots' is established. This channel enables graph creation for generating the required overhead imagery. The 'satrgb' Python package furnishes essential capabilities including scene composition, solar positioning, and RGB camera rendering. Static assets -- specifically 3D car models as Blender files -- are maintained on a volume called 'satrgb_data'.

Channel Execution

After establishing channel component connections, users develop a graph file specifying image generation parameters. This graph file is then run through an interpreter script which executes the appropriate channel node code to produce imagery and associated output data.