cgevans / mixes

BSD 3-Clause "New" or "Revised" License
0 stars 1 forks source link

support for other protocol steps #21

Open dave-doty opened 1 year ago

dave-doty commented 1 year ago

This isn't really a specific issue, just a place to populate with ideas that can be used to create more specific issues.

Here's some things that would be useful for experiments I've done recently:

  1. Splitting: Sometimes one wants to make a single large mix and split it across several test tubes. Have a way to specify this where one simply indicates the desired volumes/concentrations in each individual test tube, as well as the number of them (and possibly their names), and it should automatically figure out the volumes to mix in the large Mix, and print instructions for that and for splitting/aliquotting into several individual test tubes.
  2. Master mixes: For instance, if 10 sample tubes all contain water, buffer, scaffold, staples, and differ only in a 5th component, then you'd want to make a master mix of the shared components, with enough volume to split into 10 tubes to reduce the amount of pipetting. Even better (but maybe this is overcomplicating it) would be if we have an optional threshold parameter master_mix_combine to Experiment that does the following. If at least two (or some configurable number) Mixes contain identical volumes of at least master_mix_combine components, then the Experiment object can automatically create the master mix. This can be done by adding a method Experiment.instructions that normally would just iterate over the Mixes in order and call instructions on each of them, but in this special case would actually create new Mixes using the master mix approach. Or maybe a cleaner way to do this is to add a method Experiment.use_master_mixes that returns a new Experiment object with master mixes substituted where appropriate. (But would still be nice to have a method Experiment.instructions). This should use the splitting mentioned in the feature idea above.
  3. Tracking samples in gel lanes: This might be more general, but it's nice to specify in a protocol in advance which sample goes into which gel lane, so it's written down. Having a command of some sort for this that creates a Markdown table showing sample names in lanes, e.g., image