Giter Club home page Giter Club logo

biomationscripterlib's Issues

Export `Labware_Layout` to an Excel file

It should be possible to export the current state of a Labware_Layout object to an excel file, such that it can be easily re-used in other protocols. This would also allow for less transient logging of a protocol or workflow's output.

This should be implemented as a function (similar to BMS.Import_Labware_Layout), where an output directory is specified.

Add an EchoProto Template for TapeStation Preparation

Request for an EchoProto Template which can be used to set up TapeStation 4200 plates. The template should:

  • Be flexible with options for any of the kit types (D1000, D5000, RNA, etc.)
  • Add the required volume to sample to the destination plate
  • Add the required amount of sample buffer to the destination plate
  • If applicable, add the required amount of ladder to the destination plate

Library Installation Issues

Problems experienced when trying to install the library. Specifically on Windows OS via Visual Studio Code.

Documentation on wiki out of sync

Wiki documentation needs to be updated as it is currently out of sync with the repo

  • Generic BMS tools
  • OTProto Functions
  • OTProto Template Superclass
  • OTProto Templates
  • EchoProto Functions
  • EchoProto Classes
  • EchoProto Template Superclass
  • EchoProto Templates

OT2 labware should have user friendly labels

Currently all labware is just referred to by its API name. All labware should be given a user friendly label to assist the user with ensuring the correct labware is placed in the correct deck position.

Allow dilution in same plate - SpotPlating template in OTProto

The SpotPlating template currently only allows serial dilution to occur in separate labware. This should be customisable so that the dilution can be done in the source plate (cells plate) and then continue into separate labware once all the wells have been used.

It should also be possible to customise the dilution type so that it doesn't have to be a serial dilution, specifically. There may be issues regarding the minimum transfer volume that the p20 pipette can do which would force an intermediate dilution to be made - the user should be warned of this.

Naming Conventions

All classes and functions should follow standard naming conventions, as some currently do not (i.e. a mix of underscore_separated and CamelCase).

DoE related tools has non-intuitive and contradictory naming

The variables, functions, and classes which make up the DoE tools have names which are not always intuitive, and sometimes contradict. For example, Source_Material and Material_Type are used interchangeably, as are the terms factor and value.

The names used in these tools should be re-worked to be intuitive and consistent

`mix_after` and `mix_before` OTProto methods do not allow a rate to be specified

Currently, any OTProto functions which accept the mix_after and/or mix_before arguments can only specify the number of repetitions and the volume used. It should also be possible to specify the mixing rate, as this could be critical for some protocols (e.g. those which require re-suspension of pellets).

This can be fixed by adding an optional third element to the tuple for mix_after and mix_before. If only a tuple with only two elements is passed, it should be assumed that the rate is 1.0, and should not raise an error.

It may be necessary to change the way in which the liquid transfer function is called from the API in order to supply the flow rate.

Transformation prints incorrect locations when shuffled

Heat_Shock_Transformation Template in OTProto has a print statement that sends potentially wrong infomration to the user.

Line 350 (at time of raising this issue)

        # TODO: This mapping is incorrect, pls fix it #
        print("Transformation Mapping")
        for dna, destination in zip([f"{layout.name}: {layout.get_liquids_in_well(well)[0]} ({well})" for layout in self.dna_source_layouts for well in layout.get_occupied_wells()], Destination_Locations):
            print(f"{dna} -> {destination}")

When the DNA_Source_Locations list is shuffled, the variables used in this print statement are not in the same order. This results in a misleading print statement.

OTProto Primer_Mixing_LightRun template only allows one tip box

The OTProto Primer_Mixing_LightRun template allows the user to specify a starting tip in a tip box, however if this starting tip means that more than one tip box would be required, the additional tip boxes are not created in the protocol, resulting in an OutOfTips error to occur.

Expected behaviour:
The Primer_Mixing_LightRun should use the BiomationScripter.OTProto.tip_racks_needed() function to determine how many tip boxes are required

Add an EchoProto Template for Gibson Assembly

Request for an EchoProto Template which can be used to set up Gibson assembly reactions. The template should:

  • Work with various gibson assembly protocols (e.g. NEB gibson, NEB HiFi...)
  • Have options for different part:backbone ratios
  • Have options for different final reaction volumes
  • Allow for any number of fragments

Create a serial dilution function for `OTProto`

Serial dilutions are used across a number of protocols, but they're all implemented in slightly different ways. It would be good to have a function (or class) which can handle creating serial dilutions and the transfer steps needed in a more standardised way across BMS.

Issue with EchoProto calculation

The attached protocol caused the following error to occur:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-11-eef2098f1c38> in <module>
     12     Repeats = Repeats
     13 )
---> 14 Protocol.run()

~\Anaconda3\lib\site-packages\BiomationScripter\EchoProto\Templates.py in run(self)
    137 
    138         # Generate the picklists
--> 139         self.create_picklists()
    140 
    141 class PCR(_EchoProto.EchoProto_Template):

~\Anaconda3\lib\site-packages\BiomationScripter\EchoProto\__init__.py in create_picklists(self)
     35 
     36     def create_picklists(self):
---> 37         _BMS.EchoProto.Generate_Actions(self._protocol)
     38         _BMS.EchoProto.Write_Picklists(self._protocol, self.save_dir)
     39 

~\Anaconda3\lib\site-packages\BiomationScripter\EchoProto\__init__.py in Generate_Actions(Protocol)
    243                             raise ValueError("Internal transfer error: unhandled transfer situation for {}. Please raise this protocol as an issue on GitHub.".format(reagent))
    244                         if source_index == len(source_wells):
--> 245                             raise ValueError("Internal calculation error: ran out of {} to transfer. Please raise this protocol as an issue on GitHub.".format(reagent))
    246 
    247 #################################

ValueError: Internal calculation error: ran out of T4 Ligase Buffer to transfer. Please raise this protocol as an issue on GitHub.

Something is still wrong with how EchoProto calculates liquids.

Level 0 Loop - 150222.txt

Primer Mixing LightRun OTProto template could be more generic

The Primer Mixing LightRun OTProto template (https://github.com/intbio-ncl/BiomationScripterLib/blob/main/BiomationScripter/OTProto/Templates.py) could be re-worked (and re-named?) to be more generic, rather than specific to lightrun sequencing reactions.

This could be achieved by:

  • Adding in an optional argument for final volume
  • Adding in an optional argument for final primer volume
  • Adding in an optional argument for final DNA volume
  • Adding in water as a reagent to make the final mix up to the final volume

Deck slots 8, 10 & 11 appear as available when a Thermocycler is loaded

When protocol.deck[8] is called, it evaluates to None even if a Thermocycler module is loaded. This will generate an error if labware loading is attempted on that deck slot.

OTProto.next_empty_slot() needs modifying to prevent an error in this scenario

This should also be raised as an issue on the Opentrons github repo if it hasn't already been by someone else

Typed parameters and docstrings.

Hi Developers of BiomationScripterLib©,
I am working on a tool using BiomationScripterLib©, where programmatic introspection occurs on the templates.
What I would like:

  1. For the opentrons templates, typed parameters like how the echo templates have.
  2. Docstrings, specifically for templates, I.e. a brief textual description of the template and each parameter.

It should be possible to customise the axis and pipetting speed of the OT2

As noted in the comment below, it should be possible for users to modify the speed that the OT-2 works at, in terms of both head movement and pipetting speed.

It should also be possible to customise the movement speed of the pipetting head in general. Similar to how it is possible to define the starting tip position.
Originally posted by @davidcmarkham in #20 (comment)

This would probably be best implemented as a set of functions (XY_Speed, Aspirate_Speed, Z_Speed, Mixing_Speed, etc.), and also added as attributes and methods to the OT2 template superclass.

OT-2 miniprep template causes contamination

The Miniprep template in OTProto causes contamination of neutralisation buffer and wash buffer 2 reagent stocks.

This is because 400 uL is required, which is split into two transfer events when the P300 pipette is used (300 uL, and then 100 uL). The OT2 by default doesn't get a new tip for the second transfer, so residual sample from the first transfer contaminates the reagent stock.

EchoProto cannot handle reagents split across multiple source plates

This problems seems to occur when the same reagent is present across multiple source plates. Will investigate further to either raise an error when the user tries to do this (as a temp. solution), or make it so EchoProto can deal with this situation.

Originally posted by @Brad0440 in #26 (comment)

As noted above, if a reagent is found in multiple source plates, EchoProto correctly determines if enough of that source material is present, but errors occur when trying to determine the transfer events.

For now, it may be best to raise an error when this occurs and add support for the same reagents being present in multiple source plates in a later version.

Re-work all OTProto templates to extend the OTProto template superclass

Currently some OTProto templates don't extend the OTProto template superclass - all templates should extend this superclass for consistency

  • DNA_fmol_Dilution
  • Primer_Mixing_LightRun
  • OT2_Picklist - Due to its complexity, this template will remain as-is for now
  • Monarch_Miniprep - This template has been temporarily removed due to performance issues
  • Spot_Plating
  • Transformation

Add a `description` attribute to `Labware_Layout`

It may be useful to attached a short description to a Labware_Layout, similar to the description field used in the Labware Layout Excel File.

This could be implemented simply as a description attribute in the Labware_Layout class. If implemented, the import function should be updated to ensure that the description in the Excel file is also imported.

Syntax error in EchoProto\Templates.py

Syntax error preventing installation of BiomationScripterLib

BiomationScripter\EchoProto\Templates.py", line 171
    for rep in range(0, self.repeats)
                                     ^
SyntaxError: invalid syntax

EchoProto.Write_Picklists function can be improved with more save options

EchoProto.Write_Picklists function can be improved to include default save location i.e. the current working directory

The function will also raise an error if the save location provided does not exist. If this occurs, it should either be caught in the script or the directory should be created if it does not exist.

For example:
BMS.EchoProto.Write_Picklists(Protocol, "./Picklists")

If .\Picklists does not exist, the directory could be created and then the picklists saved into that location.

There could also be a default to save in a new directory called "Picklists"

OT2 app throws an error when 'OTProto.get_labware_format' is used with custom labware

Currently, when a protocol uses the OTProto.get_labware_format function for a custom labware file, a FileNotFound error is raised. This is because the opentrons cannot seem to find custom labware files loaded via the app.

The specific native OT2 API method this is related to is protocol_api.labware.get_labware_definition(). I'm unclear as to whether or not this is intended functionality, or a bug with the Opentrons API.

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

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.

OTProto Walkthroughs

Create Jupyter Notebook walkthroughs for:

  • Using OTProto tools to write a protocol
  • Using OTProto templates
  • Creating OTProto templates

EchoProto Walkthroughs

Create Jupyter notebook walkthroughs for:

  • Using EchoProto tools to write an Echo protocol
  • Using EchoProto templates
  • Creating an EchoProto template

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.