The Variable classes (Input, Output, Meta) were made to support test data generation (i.e. to generate inputs for the system), but this never really came to fruition. Since then, they've just hung around without providing much functionality. We could probably just use string names now, since we never differentiate between the different variable types. If we ever did want to provide different functionality based on variable type (e.g. input and output), then this could be recorded as metadata in the causal DAG (both in the DOT file representation and in the CausalDAG class).
The Scenario class was made to hold the Variables and the "modelling scenario": a query on the data, e.g. "location = UK". While I do think it's important to keep the query functionality at both the DAG level (so the user doesn't have to pre-filter their data) and the edge level (to allow for low-effort adjustment of categorical variables), I think we can manage this more easily through the new improved CausalTestingFramework class.
The
Variableclasses (Input,Output,Meta) were made to support test data generation (i.e. to generate inputs for the system), but this never really came to fruition. Since then, they've just hung around without providing much functionality. We could probably just use string names now, since we never differentiate between the different variable types. If we ever did want to provide different functionality based on variable type (e.g. input and output), then this could be recorded as metadata in the causal DAG (both in the DOT file representation and in theCausalDAGclass).The
Scenarioclass was made to hold theVariables and the "modelling scenario": a query on the data, e.g. "location = UK". While I do think it's important to keep the query functionality at both the DAG level (so the user doesn't have to pre-filter their data) and the edge level (to allow for low-effort adjustment of categorical variables), I think we can manage this more easily through the new improvedCausalTestingFrameworkclass.