In SBOL3, combinatorial derivations can also represent things like the design of an experiment, e.g., test strains A, B, and C in media X, Y, and Z.
Currently, however, it is not able to take advantage of the full succinctness offered by the new Feature class. In particular:
LocalSubComponents and ExternallyDefined cannot be used as targets, only SubComponents.
Measures cannot be directly varied, but must be varied by varying components with the measure attached.
Thus, if we design a sample with 0.5 uM arabinose, we can express that directly as an ExternallyDefined with 0.5 uM concentration, but if we want to express a CombinatorialDerivation in which the dosage varies between 0.0, 0.2, and 0.5 uM, we need to use a SubComponent for the variable and then create 3 Component objects, one for each dosage.
I believe this was a simple oversight in our updating, because our discussions clearly envisioned using CombinatorialDerivation in these ways. I believe this can be fixed quite simply by:
Changing the range of VariableComponent:variable from SubComponent to Feature.
Adding a VariableComponent:variantMeasure field, with cardinality 0..* and range om:Measure
The first change will allow modulation of all component features, which I believe is appropriate. We want to be able to change the dose of small molecules (ExternallyDefined), fill in blank variables (LocalSubComponent), vary the type of junction or scar (SequenceFeature), and might want to vary something in a subsystem (ComponentReference).
The second change will allow direct specification of variation of dosages, temperatures, and other design properties.
In SBOL3, combinatorial derivations can also represent things like the design of an experiment, e.g., test strains A, B, and C in media X, Y, and Z.
Currently, however, it is not able to take advantage of the full succinctness offered by the new Feature class. In particular:
Thus, if we design a sample with 0.5 uM arabinose, we can express that directly as an ExternallyDefined with 0.5 uM concentration, but if we want to express a CombinatorialDerivation in which the dosage varies between 0.0, 0.2, and 0.5 uM, we need to use a SubComponent for the variable and then create 3 Component objects, one for each dosage.
I believe this was a simple oversight in our updating, because our discussions clearly envisioned using CombinatorialDerivation in these ways. I believe this can be fixed quite simply by:
The first change will allow modulation of all component features, which I believe is appropriate. We want to be able to change the dose of small molecules (ExternallyDefined), fill in blank variables (LocalSubComponent), vary the type of junction or scar (SequenceFeature), and might want to vary something in a subsystem (ComponentReference).
The second change will allow direct specification of variation of dosages, temperatures, and other design properties.