Analysis Manifests

Defining analysis DAG structure and metadata

Analysis Manifests

An Analysis Manifest defines the structure of your analysis, including which algorithms to use and how they connect in a DAG.

Manifest Structure

analysis_manifest = {
    "manifest_version": "0.1.0",
    "metadata": {
        "version": "1.0",
        "description": "Device visits analysis",
        "tags": ["visits", "foottraffic"]
    },
    "algorithm_nodes": [
        {
            "name": "device-visits",
            "algorithm_version_id": "algo-version-id",
            "children": {}
        }
    ]
}

manifest_version

Specifies the manifest schema version (currently "0.1.0").

metadata

Contains analysis metadata:

  • version - Semantic version for this analysis version
  • description - What the analysis does
  • tags - Keywords for categorization

algorithm_nodes

Array of nodes in the DAG. Each node has:

  • name - Unique identifier for this node
  • algorithm_version_id - Which Algorithm Version to use
  • children - Map of dependencies (which nodes provide input)

Defining the DAG

Single Algorithm Analysis

algorithm_nodes = [
    {
        "name": "visits",
        "algorithm_version_id": version_id,
        "children": {}  # No dependencies
    }
]

Sequential Analysis

algorithm_nodes = [
    {
        "name": "collect-data",
        "algorithm_version_id": version_id_1,
        "children": {}
    },
    {
        "name": "detect-objects",
        "algorithm_version_id": version_id_2,
        "children": {"input": "collect-data"}  # Depends on first node
    }
]

Complex DAG

algorithm_nodes = [
    {
        "name": "node-a",
        "algorithm_version_id": version_a,
        "children": {}
    },
    {
        "name": "node-b",
        "algorithm_version_id": version_b,
        "children": {}
    },
    {
        "name": "node-c",
        "algorithm_version_id": version_c,
        "children": {
            "input_1": "node-a",
            "input_2": "node-b"
        }
    }
]

Validation

When creating an Analysis Version, the platform validates:

  1. DAG is acyclic - No circular dependencies
  2. Data Type compatibility - Output/input types match between connected nodes
  3. Algorithm Versions exist - All referenced versions are valid
  4. Node names are unique - No duplicate node names

Next Steps