I think that this is different from #40, but I'm not positive.
Now that I've got some experience with a non-trivial protocol (#31), it's clear that while the result is straightforward (for me, at least), even with some of the simplifications I've made, it will need to be made simpler for others.
At first, I was thinking about some sort of interactive graphical layout tool, which would allow the user to place mixes and draw paths, but I really don't think I want to be going down that path.
What I think I'm going to try instead is to develop some sort of declarative Protocol object that allows you to specify in more or less detail what has to happen and what has to move from where to where. Ideally, most of the actual placement can be done automatically, but I'll probably want to start with it being explicit and add in more automatic capability as I figure out how to do it.
Migrated from internal repository. Originally created by @EvanKirshenbaum on Aug 03, 2021 at 12:49 PM PDT.
So what's in a protocol? From the ones I've done, it looks as though you have things like
source reagents
possibly with quantities needed, although we can probably infer that.
possibly with wells identified or "delivered via extraction point", although we should be able to determine based on need which are best put in wells and probably which wells are best for which based on where we need to go from them.
mixes and dilutions.
these need placement and orientation.
pads for each drop can be specified or automatically determined.
thermocycles
with channels for each drop specified or determined.
walking paths.
in the CS portion of PCR, I had three of these: walking to waste, walking from mixing to thermocycling, and walking from thermocycling to mixing. (The last two may be one circular path.)
the notion of these paths is that you can get on anywhere and get off anywhere, but they run in one direction.
next steps for each drop:
e.g., after mix, go to thermocycle (via mix-to-tcycle walkway), then other mix as lead drop (via tcycle-to-mix walkway)
phases
all of these have to happen before anybody goes to their next step
extra jogs and yields needed to make things work.
Migrated from internal repository. Originally created by @EvanKirshenbaum on Aug 03, 2021 at 12:57 PM PDT.
I think that this is different from #40, but I'm not positive.
Now that I've got some experience with a non-trivial protocol (#31), it's clear that while the result is straightforward (for me, at least), even with some of the simplifications I've made, it will need to be made simpler for others.
At first, I was thinking about some sort of interactive graphical layout tool, which would allow the user to place mixes and draw paths, but I really don't think I want to be going down that path.
What I think I'm going to try instead is to develop some sort of declarative
Protocol
object that allows you to specify in more or less detail what has to happen and what has to move from where to where. Ideally, most of the actual placement can be done automatically, but I'll probably want to start with it being explicit and add in more automatic capability as I figure out how to do it.Migrated from internal repository. Originally created by @EvanKirshenbaum on Aug 03, 2021 at 12:49 PM PDT.