intbio-ncl / BiomationScripterLib

A Python library to assist with scripting bio-automation protocols
MIT License
3 stars 0 forks source link

`Labware_Layout` should have a way of naming wells/slots #19

Closed Brad0440 closed 2 years ago

Brad0440 commented 2 years ago

There should be a way of giving a name to specific wells/slots of a Labware_Layout object, in addition to adding contents to a well.

For example, a well might contain reagents and DNA required for a DNA assembly. It should be possible to then define the name of the construct being assembled in that well:

Well B2:
   Contents: [water, enzyme, buffer, ligase, backbone, part1, part2]
   Name/Label: Assembly 1

This functionality can then be used to easily retrieve a well with multiple contents, rather than having to keep a separate list to refer to. It will also help in cases where a labware is used as a destination first, and then a source. E.g., in the case of DNA assembly, a PCR plate could be used as the destination where constructs are assembled, but then as a DNA source plate for transformation. Currently, this would require a new labware layout to be defined.

jbird1223 commented 2 years ago

I have Q's

  1. Are DNA parts e.g. part 1 part 2 and backbone defined - in the sense does the user have to define what the names of those parts/backbone is in the script or do they just script part 1, part 2, backbone without saying what they actually are?
  2. Are you wanting someone to be able to retrieve a print out everything in this plate kind of thing or print A1 sort of thing?
  3. In your example ( E.g., in the case of DNA assembly, a PCR plate could be used as the destination where constructs are assembled, but then as a DNA source plate for transformation. Currently, this would require a new labware layout to be defined.) Do you mean you add the PCR plate in and are adding reagents and other DNA parts/backbone in (hence destination plate), then the assembly would take place in this and hence for a transformation plate it would be the source plate. So, are you trying to do a assembly and transformation joint protocol?

I think that's all for now.

Brad0440 commented 2 years ago
  1. Are DNA parts e.g. part 1 part 2 and backbone defined - in the sense does the user have to define what the names of those parts/backbone is in the script or do they just script part 1, part 2, backbone without saying what they actually are?

They need to be defined, but this could just be a string. See the example here where eight DNA samples are defined. These strings (or whatever you use to refer to them as) are then passed as arguments to the add_content method.

  1. Are you wanting someone to be able to retrieve a print out everything in this plate kind of thing or print A1 sort of thing?

There's a print method for labware_layout already which prints out the content of the plate

  1. In your example ( E.g., in the case of DNA assembly, a PCR plate could be used as the destination where constructs are assembled, but then as a DNA source plate for transformation. Currently, this would require a new labware layout to be defined.) Do you mean you add the PCR plate in and are adding reagents and other DNA parts/backbone in (hence destination plate), then the assembly would take place in this and hence for a transformation plate it would be the source plate. So, are you trying to do a assembly and transformation joint protocol?

hYes, basically that. There aren't really any examples of this yet in BMS (other than the in-development DoE OTProto template), but hopefully in future development it will be possible to link together different protocol templates as modules of a larger protocol. So in this example you could use an OTProto template to perform some DNA assembly in the on-board thermocycler, and then link in the transformation OTProto template to transform the newly assembled DNA. In this case, like you said, the assembly PCR plate would initially be a destination plate, and then become a source plate for the transvomations.

Brad0440 commented 2 years ago

The branch merged by @jbird1223 ( #25) should have addressed this issue, so I'm closing it now.