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¶
- from schema: https://w3id.org/astra/analysis
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