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 : format

      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
format 0..1 recommended
String
Concrete serialization of the artifact, as a lowercase token: the file extens... direct
description 0..1
String
Free-prose description of this 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_format

Rule Applied Preconditions Postconditions Elseconditions
slot_conditions {'from': {'value_presence': 'PRESENT'}} {'format': {'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
  format:
    name: format
    annotations:
      required_in:
        tag: required_in
        value: 0.1.0
    description: 'Concrete serialization of the artifact, as a lowercase token: the
      file extension the artifact is written with, without the leading dot (`png`,
      `pdf`, `svg`, `csv`, `parquet`, `json`, `fits`, `hdf5`, `html`, `md`). Where
      `type` says what the output *is* (figure, table, data), `format` says how it
      is encoded, so consumers can render, diff, or open it without inspecting the
      file.

      The value space is deliberately open  any lowercase token matching the pattern
      is legal, so formats specific to a field (`asdf`, `zarr`, `nc`) need no schema
      change.

      Recommended, not required, in 0.0.x: validators warn when it is missing. It
      becomes **required** for non-aliased Outputs in 0.1.0. Forbidden when `from`
      is set (inherited from the source).'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    domain_of:
    - Output
    recommended: true
    pattern: ^[a-z0-9][a-z0-9_.+-]*$
  description:
    name: description
    description: Free-prose description of this 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:
      format:
        name: format
        value_presence: ABSENT
  title: from_alias_forbids_format
- 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
  format:
    name: format
    annotations:
      required_in:
        tag: required_in
        value: 0.1.0
    description: 'Concrete serialization of the artifact, as a lowercase token: the
      file extension the artifact is written with, without the leading dot (`png`,
      `pdf`, `svg`, `csv`, `parquet`, `json`, `fits`, `hdf5`, `html`, `md`). Where
      `type` says what the output *is* (figure, table, data), `format` says how it
      is encoded, so consumers can render, diff, or open it without inspecting the
      file.

      The value space is deliberately open  any lowercase token matching the pattern
      is legal, so formats specific to a field (`asdf`, `zarr`, `nc`) need no schema
      change.

      Recommended, not required, in 0.0.x: validators warn when it is missing. It
      becomes **required** for non-aliased Outputs in 0.1.0. Forbidden when `from`
      is set (inherited from the source).'
    from_schema: https://w3id.org/astra/analysis
    rank: 1000
    alias: format
    owner: Output
    domain_of:
    - Output
    range: string
    recommended: true
    pattern: ^[a-z0-9][a-z0-9_.+-]*$
  description:
    name: description
    description: Free-prose description of this 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:
      format:
        name: format
        value_presence: ABSENT
  title: from_alias_forbids_format
- 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