This issue frequently arrises in formulations studies. Suppose you frequently mix media for a cell culture experiment or create different compound formulations for animal PK/Tox studies. The whole process is more-or-less the same from day to day, except that on the media (or compound) preparation step you are changing the additives. For example, one day you might grow cells with glucose. Another day you might use sucrose, plus amoxicillin antibiotic. On a third day you might use glucose and maltose, plus tetracycline antibiotic. Or for that matter, you might even have different sugars and antibiotics in each run of one experiment (as would happen in a factorial experimental design).
There are a couple of ways to handle this. We also provide some tools in our JMP AddIn to help with the analytics related to such situations.
Approach 1: You can create one or more “slots” of generic resources on the step, then fill those slots with more specific resource types. E.g., add two “carbon source” resource types and an “antibiotic” resource type to the input. Then you can assign any different resource you want to those inputs on your runs in the experiment (glucose, fructose, sucrose, maltose, glycerol, whatever for the carbon source column, and amoxicillin, tetracycline, etc. to the antibiotic resource column). If you need yet another resource, you can always add another resource input to the step on the live experiment.
If the specific resource (glucose lot or antibiotic vial) already exists in the system, you can simply search for it and assign it to the input in the usual way. If the resource does not exist, you can create it. To do that follow the instructions here.
This is very flexible and convenient. It’s particularly helpful if you are varying the input resources from run to run.
But what if you never know how many different carbon sources you may use. So you can't count on their being always two slots. You can use Approach 2 below and add resources dynamically. Or you can take Approach 1 here a little further. Create an upstream formulation step with a generic resource slot as in input. You then create one run for each material you are blending (as many materials as you like), and merge all of those runs into your blending step (the downstream step). Then assign an input resource to each of those runs.
But there can be a downside to Approach 1 here too. When you retrieve the experiment data for analysis, a particular resource like glucose may end up in either of the “carbon source” columns you have on the step. This can make data analysis a little less clean (needing a wee bit of preprocessing). Or you have a single column containing a mixture of resources of varying types. This may not matter to your analysis, but it can be a nuisance sometimes.
Fortunately, if you are a JMP user, we have developed some data stacking and splitting functions in the Riffyn JMP AddIn that allow you to sort-out the resources into columns of uniform type. This is done by first stacking your carbon source columns together, and subsequently splitting them apart based on the resource type or other properties. See the explanation in the section of that article titled "Stack / split columns (sorting your resources in columns of the same type)" for more details.
If you are not a JMP user, you can use Approach 2 below to avoids these issues.
Approach 2: You can can leave the input resources on the step empty, and wait until the experiment to add exactly the resource types you need on the spot. For example, once the experiment is started, click the Modify tab and add a “glucose” and a “amoxicillin” resource type. Then assign the relevant resources to your runs.
This has the upside that your data will be nicely aligned for analysis. For example, all the glucose input reagent data will be in the “glucose” columns no matter what run or experiment.
The downside of this approach is that it is less clear to the user what inputs and what data should be input on the step because it is not predefined in the process template. You also cannot pre-define formulas on the name or properties of that resource type.
One work-around for this is to ensure the procedural tasks spell out exactly what the user should do, including what to add to the inputs for data capture.
Another work-around for this is to add default properties to a custom resource type (you can only do this for custom resource types created by users, not system default resource types). When you add default properties, they will always be added along with your resource type when you add that resource type to your process. This then suggests to the user what data should be captured on the resource type. Adding default properties can be done via the Resource Type Library.
Note, the default property capability does not yet allow you to specify default units or default formulas. It’s a feature on our to do list. As a work around, add the suggested units and formulas to the procedure tasks in the sidebar on this step.