Skip to content

Class: Output

An expected output from the analysis. An Output is either produced locally (with inputs, decisions, recipe) or re-exported from a sub-analysis via from.

Re-export grammar:

__

_ from: child.out_id -- own child sub's output_

_ from: child.grandchild.out_id -- descend into nested children_

__

A re-exported Output is a pure pointer: only id, from, and when are allowed; type/description/recipe are inherited.

URI: astra:Output

 classDiagram
    class Output
    click Output href "../Output/"
      Output : decisions

      Output : description

      Output : from

      Output : id

      Output : inputs

      Output : label

      Output : recipe





        Output --> "0..1" Recipe : recipe
        click Recipe href "../Recipe/"



      Output : type





        Output --> "0..1" OutputType : type
        click OutputType href "../OutputType/"



      Output : when

Slots

Name Cardinality and Range Description Inheritance
from 0..1
String
Path to a descendant Output: `child direct
when *
String
Conditions for when this element is active direct
id 1
String
Unique identifier for the output direct
label 0..1
String
Short human-readable name for compact rendering (margin glyphs, breadcrumbs, ... direct
type 0..1
OutputType
Type of output direct
description 0..1
String
Description of the output direct
inputs *
String
IDs of upstream artifacts this output depends on direct
decisions *
String
Decision IDs (in the surrounding scope) that parameterize this output direct
recipe 0..1
Recipe
How to produce this output (pure how; dependencies live on the Output via `... direct

Usages

used by used in type used
Analysis outputs range Output

Rules

from_alias_forbids_type

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'PRESENT'}} {'type': {'value_presence': 'ABSENT'}}

from_alias_forbids_label

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'PRESENT'}} {'label': {'value_presence': 'ABSENT'}}

from_alias_forbids_description

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'PRESENT'}} {'description': {'value_presence': 'ABSENT'}}

from_alias_forbids_inputs

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'PRESENT'}} {'inputs': {'value_presence': 'ABSENT'}}

from_alias_forbids_decisions

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'PRESENT'}} {'decisions': {'value_presence': 'ABSENT'}}

from_alias_forbids_recipe

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'PRESENT'}} {'recipe': {'value_presence': 'ABSENT'}}

type_required_when_not_aliased

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'ABSENT'}} {'type': {'required': True}}

Identifier and Mapping Information

Schema Source

Mappings

Mapping Type Mapped Value
self astra:Output
native astra:Output

LinkML Source

Direct

name: Output
description: "An expected output from the analysis. An Output is either produced locally\
  \ (with `inputs`, `decisions`, `recipe`) or re-exported from a sub-analysis via\
  \ `from`.\nRe-export grammar:\n\n  from: child.out_id           -- own child sub's\
  \ output\n  from: child.grandchild.out_id -- descend into nested children\n\nA re-exported\
  \ Output is a pure pointer: only `id`, `from`, and `when` are allowed; type/description/recipe\
  \ are inherited."
from_schema: https://w3id.org/astra/analysis
slots:
- from
- when
slot_usage:
  from:
    name: from
    description: 'Path to a descendant Output: `child.out_id` for an own child sub-analysis''s
      output, or deeper (`child.grand.out_id`) to descend through nested children.
      Reaching upward is not allowed  Outputs flow up only via re-export at each
      layer.'
    pattern: ^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$
attributes:
  id:
    name: id
    description: Unique identifier for the output
    from_schema: https://w3id.org/astra/analysis
    identifier: true
    domain_of:
    - Input
    - Output
    - Option
    - Decision
    - Analysis
    - Evidence
    - Insight
    - UniverseNode
    - Universe
    required: true
    pattern: ^(?!(inputs|outputs|decisions|findings|prior_insights|analyses|options|content)$)[a-z][a-z0-9_]*$
  label:
    name: label
    description: Short human-readable name for compact rendering (margin glyphs, breadcrumbs,
      card titles). Optional; tooling falls back to id when absent.
    from_schema: https://w3id.org/astra/analysis
    domain_of:
    - Input
    - Output
    - Option
    - Decision
    - Insight
  type:
    name: type
    description: Type of output. Required when `from` is unset; forbidden when `from`
      is set (inherited from the source).
    from_schema: https://w3id.org/astra/analysis
    domain_of:
    - Input
    - Output
    range: OutputType
  description:
    name: description
    description: Description of the output
    from_schema: https://w3id.org/astra/analysis
    domain_of:
    - Input
    - Output
    - Option
    - Analysis
    - Universe
  inputs:
    name: inputs
    description: 'IDs of upstream artifacts this output depends on. Each reference
      resolves to either an Input declared on the surrounding analysis (an external
      dataset/file/analysis) or a sibling Output (another artifact in scope). Runners
      materialize the upstream artifacts before invoking the recipe and surface the
      resolved input map to it (Snakemake-style `{input.x}` substitution, env vars,
      sidecar JSON  runner''s choice).

      References use plain artifact IDs and resolve through any `from:` chain in the
      surrounding analysis scope. An aliased Input (one with `from:`) is a valid local
      reference here; the runner walks the chain to the source.'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    domain_of:
    - Output
    - Analysis
    multivalued: true
  decisions:
    name: decisions
    description: 'Decision IDs (in the surrounding scope) that parameterize this output.
      Declares the output''s provenance contract: re-running with a different option
      for any listed decision must be expected to produce a different output.

      Runners use this to (a) compute the per-output cache key, (b) determine the
      minimal universe set needed to materialize the output, and (c) deliver the active
      option values to the recipe (via flags, env vars, or a sidecar  runner''s choice).

      References use plain decision IDs and resolve through any `from:` chain in the
      surrounding analysis scope.'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    domain_of:
    - Output
    - Analysis
    - UniverseNode
    - Universe
    multivalued: true
  recipe:
    name: recipe
    description: How to produce this output (pure *how*; dependencies live on the
      Output via `inputs`/`decisions`)
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    domain_of:
    - Output
    range: Recipe
    inlined: true
rules:
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      type:
        name: type
        value_presence: ABSENT
  title: from_alias_forbids_type
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      label:
        name: label
        value_presence: ABSENT
  title: from_alias_forbids_label
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      description:
        name: description
        value_presence: ABSENT
  title: from_alias_forbids_description
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      inputs:
        name: inputs
        value_presence: ABSENT
  title: from_alias_forbids_inputs
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      decisions:
        name: decisions
        value_presence: ABSENT
  title: from_alias_forbids_decisions
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      recipe:
        name: recipe
        value_presence: ABSENT
  title: from_alias_forbids_recipe
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: ABSENT
  postconditions:
    slot_conditions:
      type:
        name: type
        required: true
  description: A non-aliased Output must declare its type.
  title: type_required_when_not_aliased

Induced

name: Output
description: "An expected output from the analysis. An Output is either produced locally\
  \ (with `inputs`, `decisions`, `recipe`) or re-exported from a sub-analysis via\
  \ `from`.\nRe-export grammar:\n\n  from: child.out_id           -- own child sub's\
  \ output\n  from: child.grandchild.out_id -- descend into nested children\n\nA re-exported\
  \ Output is a pure pointer: only `id`, `from`, and `when` are allowed; type/description/recipe\
  \ are inherited."
from_schema: https://w3id.org/astra/analysis
slot_usage:
  from:
    name: from
    description: 'Path to a descendant Output: `child.out_id` for an own child sub-analysis''s
      output, or deeper (`child.grand.out_id`) to descend through nested children.
      Reaching upward is not allowed  Outputs flow up only via re-export at each
      layer.'
    pattern: ^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$
attributes:
  id:
    name: id
    description: Unique identifier for the output
    from_schema: https://w3id.org/astra/analysis
    identifier: true
    alias: id
    owner: Output
    domain_of:
    - Input
    - Output
    - Option
    - Decision
    - Analysis
    - Evidence
    - Insight
    - UniverseNode
    - Universe
    range: string
    required: true
    pattern: ^(?!(inputs|outputs|decisions|findings|prior_insights|analyses|options|content)$)[a-z][a-z0-9_]*$
  label:
    name: label
    description: Short human-readable name for compact rendering (margin glyphs, breadcrumbs,
      card titles). Optional; tooling falls back to id when absent.
    from_schema: https://w3id.org/astra/analysis
    alias: label
    owner: Output
    domain_of:
    - Input
    - Output
    - Option
    - Decision
    - Insight
    range: string
  type:
    name: type
    description: Type of output. Required when `from` is unset; forbidden when `from`
      is set (inherited from the source).
    from_schema: https://w3id.org/astra/analysis
    alias: type
    owner: Output
    domain_of:
    - Input
    - Output
    range: OutputType
  description:
    name: description
    description: Description of the output
    from_schema: https://w3id.org/astra/analysis
    alias: description
    owner: Output
    domain_of:
    - Input
    - Output
    - Option
    - Analysis
    - Universe
    range: string
  inputs:
    name: inputs
    description: 'IDs of upstream artifacts this output depends on. Each reference
      resolves to either an Input declared on the surrounding analysis (an external
      dataset/file/analysis) or a sibling Output (another artifact in scope). Runners
      materialize the upstream artifacts before invoking the recipe and surface the
      resolved input map to it (Snakemake-style `{input.x}` substitution, env vars,
      sidecar JSON  runner''s choice).

      References use plain artifact IDs and resolve through any `from:` chain in the
      surrounding analysis scope. An aliased Input (one with `from:`) is a valid local
      reference here; the runner walks the chain to the source.'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    alias: inputs
    owner: Output
    domain_of:
    - Output
    - Analysis
    range: string
    multivalued: true
  decisions:
    name: decisions
    description: 'Decision IDs (in the surrounding scope) that parameterize this output.
      Declares the output''s provenance contract: re-running with a different option
      for any listed decision must be expected to produce a different output.

      Runners use this to (a) compute the per-output cache key, (b) determine the
      minimal universe set needed to materialize the output, and (c) deliver the active
      option values to the recipe (via flags, env vars, or a sidecar  runner''s choice).

      References use plain decision IDs and resolve through any `from:` chain in the
      surrounding analysis scope.'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    alias: decisions
    owner: Output
    domain_of:
    - Output
    - Analysis
    - UniverseNode
    - Universe
    range: string
    multivalued: true
  recipe:
    name: recipe
    description: How to produce this output (pure *how*; dependencies live on the
      Output via `inputs`/`decisions`)
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    alias: recipe
    owner: Output
    domain_of:
    - Output
    range: Recipe
    inlined: true
  from:
    name: from
    description: 'Path to a descendant Output: `child.out_id` for an own child sub-analysis''s
      output, or deeper (`child.grand.out_id`) to descend through nested children.
      Reaching upward is not allowed  Outputs flow up only via re-export at each
      layer.'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    alias: from
    owner: Output
    domain_of:
    - Input
    - Output
    - Decision
    range: string
    pattern: ^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)+$
  when:
    name: when
    description: 'Conditions for when this element is active. Format: ''decision_id.option_id''
      or ''~decision_id.option_id''. Multiple conditions are AND''d together.'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    alias: when
    owner: Output
    domain_of:
    - Output
    - Decision
    range: string
    multivalued: true
rules:
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      type:
        name: type
        value_presence: ABSENT
  title: from_alias_forbids_type
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      label:
        name: label
        value_presence: ABSENT
  title: from_alias_forbids_label
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      description:
        name: description
        value_presence: ABSENT
  title: from_alias_forbids_description
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      inputs:
        name: inputs
        value_presence: ABSENT
  title: from_alias_forbids_inputs
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      decisions:
        name: decisions
        value_presence: ABSENT
  title: from_alias_forbids_decisions
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: PRESENT
  postconditions:
    slot_conditions:
      recipe:
        name: recipe
        value_presence: ABSENT
  title: from_alias_forbids_recipe
- preconditions:
    slot_conditions:
      from:
        name: from
        value_presence: ABSENT
  postconditions:
    slot_conditions:
      type:
        name: type
        required: true
  description: A non-aliased Output must declare its type.
  title: type_required_when_not_aliased