Skip to content

Intermediate data sources when running multiple child-producing operators #2075

@psavery

Description

@psavery

The primary operators in tomviz that produce children via dataset.create_child_dataset() are reconstruction operators. Since usually only one reconstruction is performed on a data source, running multiple child-producing operators on one data source is currently not common.

With #2061 coming, however, child-producing operators may become more common, because setting scalars that have different dimensions than the other scalars on the dataset is easier to do on a child than on the original dataset (because scalars with non-matching dimensions are disposed of).

This issue is partly here to document the current behavior of running multiple child-producing operators on one data source, and then discuss what the behavior should be. I think the big question is: should we be producing intermediate data sources, as some of the examples below are doing?

The attached operator is used in these examples. It simply produces a child that is the inverse of its parent.
make_inverted_child.py.gz
make_inverted_child.json.gz

Internal pipeline with description.json

Screenshot from 2020-03-12 14-54-57

This produces intermediate data sources, that are kept and not deleted when the next operator is performed. Each child's parent is the data source before it. The modules are only moved down once when the first child is created, but the output of each step appears to be correct.

Internal pipeline with no description.json

Screenshot from 2020-03-12 14-58-24

In this case, there are no intermediate data sources. However, the output is not correct, because the internal pipeline requires a description.json, or else it ignores the child and just copies the input down.

External pipeline with description.json

Screenshot from 2020-03-12 15-02-34

This produces intermediate data sources. The first child output is correct, but all subsequent child outputs are not (it seems to just copy the input after the first one).

External pipeline with no description.json

Screenshot from 2020-03-12 15-00-24

There are no intermediate data sources, but each output is correct - it properly inverts the data source each time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions