Hi Jake, Chris, and Bryan,
Another set of applicable tools are the Densmore lab's Constellation software and the associated GOLDBAR formalism that I worked on. The attached text file contains a GOLDBAR specification similar to what Jake describes and the JSON file defines the collections of parts (in this case amino acids) referenced in the GOLDBAR spec. If you enter these at
https://constellationcad.org/, it produces the SBOL (version 2) for the equivalent CombinatorialDerivation (see the attached XML file).
There are few things that would likely need to be tweaked (currently Constellation gives everything the DNA type, supports a subset of commonly use roles, and does not use SBOL 3), but it is close in terms of backend functionality. The other main difference that I can see between Jake's description and the GOLDBAR specification is that the GOLDBAR does not explicitly describe changes with respect to a parent/template sequence, just combinatorial structure. The CombinatorialDerivation generated from the GOLDBAR does include a template ComponentDefinition, but it is abstract (its sub-ComponentDefinitions lack sequences). In this case, I chose to specify the changes in Jake's description as options alongside the original design, but I did not have to do so. Depending on how desirable it is to represent or compute a combinatorial library in terms of changes to a parent/template design or another library, additional changes would need to be made, but GOLDBAR provides a decent formal basis that could be built upon.
Here are the full demo steps:
2. Copy contents of protein_20mer.txt into the "Specification" box and the contents of amino_acids.json into the "Categories" box.
3. Enter a design name (I chose "protein_20mer").
4. Click "Submit", then click the download icon ("Export design as SBOL") above and to the right of the "Graph" box.