Worktable and labwares


class labware.Carrier(carrier_type: labware.Carrier.Type, grid: int, label: str = None, worktable: labware.WorkTable = None)[source]

Bases: object

Collection of Labwares sites, filled with labwares…

class Type(name, idx: int = None, widht_in_grids: int = None, n_sites: int = None)[source]

Bases: object

__init__(name, idx: int = None, widht_in_grids: int = None, n_sites: int = None)[source]

Initialize self. See help(type(self)) for accurate signature.

class Types(carrier_file: pathlib.Path)[source]

Bases: object

__init__(carrier_file: pathlib.Path)[source]

Initialize self. See help(type(self)) for accurate signature.

add_type(carrier_type)[source]
parse_file(carrier_file=None)[source]
__init__(carrier_type: labware.Carrier.Type, grid: int, label: str = None, worktable: labware.WorkTable = None)[source]

Initialize self. See help(type(self)) for accurate signature.

add_labware(labware, site)[source]
class labware.Cuvette(type, location, label=None)[source]

Bases: labware.Labware

__init__(type, location, label=None)[source]
Parameters:
  • type
  • label
  • location
autoselect(offset=0, maxTips=1, replys=1)[source]
Parameters:
  • offset
  • maxTips
  • replys
Returns:

init_wells()[source]
class labware.CuvetteType(name, nRow, max_vol, nCol=1)[source]

Bases: labware.Type

__init__(name, nRow, max_vol, nCol=1)[source]

Initialize self. See help(type(self)) for accurate signature.

create_labware(loc, label)[source]
class labware.DITIrack(type: labware.DITIrackType, location: labware.WorkTable.Location, label: str)[source]

Bases: labware.Labware

Objects of this class represent physical objects (with location) of some type Labware.DITIrackType

__init__(type: labware.DITIrackType, location: labware.WorkTable.Location, label: str)[source]
Parameters:
  • type
  • location
  • label
  • worktable
fill(beg=1, end=None)[source]
find_new_tips(number_tips) -> (<class 'bool'>[, <class 'labware.Tip'>])[source]

Return existing tips. May be only partially. Just to know there are tips

pick_up(TIP_MASK) → [<class 'labware.usedTip'>][source]

Low level. Part of the job have been already done: the rack self hat already the source tip-wells selected. We need to return these tips.

Parameters:TIP_MASK
retire_new_tips(number_tips) → [<class 'labware.Tip'>][source]

Return removed tips. May be only partially. Low Level !!! To be called only by implementations of low level Instruction.actualize_robot_state as part of series.retire_new_tips as response to getDITI2

set_DITI_counter(posInRack, lastPos=False)[source]
set_back(TIP_MASK, tips)[source]

Low level. Part of the job have been already done: tips is a list of the tips in the robot arm, passed here just to prevent a call and a link back to the robot. And the rack self hat already the target tip-wells selected.

Parameters:
  • TIP_MASK
  • labware_selection
  • tips
class labware.DITIrackType(name, nRow=8, nCol=12, max_vol=None, portrait=False)[source]

Bases: labware.Type

__init__(name, nRow=8, nCol=12, max_vol=None, portrait=False)[source]

Initialize self. See help(type(self)) for accurate signature.

create_labware(loc, label)[source]
create_series(labware: labware.Labware)[source]
class labware.DITIrackTypeSeries(labware: labware.Labware)[source]

Bases: labware.Series

__init__(labware: labware.Labware)[source]

Initialize self. See help(type(self)) for accurate signature.

find_new_tips(TIP_MASK) -> (<class 'bool'>[, <class 'labware.Tip'>])[source]
Parameters:
  • TIP_MASK
  • lastPos
Returns:

refill_next_rack(worktable=None)[source]
retire_new_tips(TIP_MASK)[source]

A response to a get_tips: the tips have to be removed from the rack and only after that can appear mounted in the robot arm to pipette. The tips are removed at the “current” position, the position where begin the fresh tips, with is maintained internally by the robot and is unknown to the user

class labware.DITIwaste(type, location, label=None)[source]

Bases: labware.Labware

__init__(type, location, label=None)[source]
Parameters:
  • type
  • label
  • location
waste(tips)[source]
class labware.DITIwasteType(name, capacity=480)[source]

Bases: labware.Type

__init__(name, capacity=480)[source]

Initialize self. See help(type(self)) for accurate signature.

create_labware(loc, label)[source]
class labware.Frezeer[source]

Bases: labware.WorkTable

__init__()[source]

Initialize self. See help(type(self)) for accurate signature.

class labware.Labware(type: labware.Labware.Type, label: str, location: labware.WorkTable.Location = None)[source]

Bases: object

class Position(row, col=1)[source]

Bases: object

__init__(row, col=1)[source]

Initialize self. See help(type(self)) for accurate signature.

to_name()[source]
class Type(name, nRow, nCol=1, max_vol=None)[source]

Bases: object

class Series(labware)[source]

Bases: object

__init__(labware)[source]

Initialize self. See help(type(self)) for accurate signature.

add(labware)[source]
remove(labware)[source]
static set_current_next_to(labware)[source]
set_next()[source]

Set current to the next of self.current :rtype: (Labware, bool) = (the next labware , serie’s current has rotated to the first :param labware:

show_next(labware=None)[source]

return next to self.current :rtype: (Labware, bool) = (the next labware , serie’s current has rotated to the first :param labware:

static show_next_to(labware)[source]
__init__(name, nRow, nCol=1, max_vol=None)[source]

Initialize self. See help(type(self)) for accurate signature.

create_labware(loc, label)[source]
create_series(labware)[source]
size() → int[source]
__init__(type: labware.Labware.Type, label: str, location: labware.WorkTable.Location = None)[source]
Parameters:
  • type
  • label
  • location
autoselect(offset=0, maxTips=1, replys=1)[source]
Parameters:
  • offset
  • maxTips
  • replys
Returns:

clearSelection()[source]
static create(labw_t_name: str, loc: labware.WorkTable.Location, label: str)[source]
find_free_wells(n=1, init_pos=0) -> (<class 'bool'>[, <class 'labware.Well'>])[source]
init_wells()[source]
moveParallel(pos, offset)[source]
newOffset(pos, offset)[source]
newPosition(pos, offset)[source]
offset(row_pos, col=1)[source]
offsetAtParallelMove(step, n_tips)[source]
offsetFromName(wellName)[source]
parallelOrder(n_tips, original=None)[source]
posAtParallelMove(step, n_tips)[source]
position(offset)[source]
put(reagent, pos=None, num_of_aliquots=None) → list[source]

Put a reagent with replicas in the given wells positions of this labware, and return a list of the wells used

Parameters:
  • reagent
  • pos – [wells]; if int or [int] will be assumed 1-based not 0-based
  • num_of_aliquots – number of replicas
Returns:

select(sel_idx_list)[source]
selectAll()[source]
selectOnly(sel_idx_list)[source]
selected() → list[source]
Returns:list of the selected well offset
selected_wells()[source]
types = {'24 Pos Eppi Tube Rack': 6, '96 Well 8er Macherey-Nagel flach': 12, '96 Well BioRad': 12, '96 Well DeepWell square': 12, '96 Well Macherey-Nagel Plate': 12, '96 Well Matrix Rack 1ml': 12, '96 Well Microplate': 12, '96 Well PCR Plate': 12, '96 Well Separation Plate': 9, 'AntiCOntamination': 1, 'Box 10x10': 10, 'Box 9x9': 9, 'DiTi 1000ul': 12, 'DiTi 1000ul SBS LiHa': 12, 'DiTi 10ul SBS LiHa': 12, 'DiTi 200 ul': 12, 'DiTi 200ul SBS LiHa': 12, 'DiTi 200ul SBS MCA96': 12, 'DiTi Nested Waste MCA384': 1, 'FilterplateaufElutionplate flach': 12, 'Sampletubes Eppendorfrack': 1, 'Trough 100ml': 1, 'Trough 25ml Max. Recovery': 1, 'Trough 300ml MCA': 12, 'Tube 13*100mm 16 Pos': 1, 'Tube Eppendorf 1 Pos': 1, 'Tube Eppendorf 16 Pos': 1, 'Tube Eppendorf 2m 6x 16 Pos': 6, 'Tube Eppendorf 2mL 1 Pos': 1, 'Tube Eppendorf 2mL 16 Pos': 1, 'Tube Eppendorf 3x 16 Pos': 3, 'Tube Eppendorf 3x 16 PosR': 3, 'Tube Eppendorf 48 Pos': 6, 'Tube Eppendorf 6x 16 Pos': 6, 'Tube Falcon 15ml 12 Pos': 6, 'Tube Greiner conic 2mL 1 Pos': 1, 'Tube Greinerconic 2mL 16 Pos': 1, 'Wash Station Cleaner deep': 1, 'Wash Station Cleaner shallow': 1, 'Wash Station Waste': 1, 'Washstation 2Grid Cleaner long': 1, 'Washstation 2Grid Cleaner short': 1, 'Washstation 2Grid DiTi Waste': 1, 'Washstation 2Grid Waste': 1, 'fixed tips': 1}

dict of labwares types, like: {‘Trough 100ml’: <class ‘EvoScriPy.Labware.Labware.CuvetteType’>}

wellSelectionStr(wells: (<class 'int'>, [<class 'int'>], [<class 'labware.Well'>]) = None)[source]
Returns:See A.15.3, pag. A-122

file:///C:/Prog/RobotEvo/FreedomEVOwareStandardV2.4SP1-2011.ExtendedDeviceSupportManual.pdf Many of the advanced worklist commands have a parameter called wellSelection. wellSelection is a string which specifies the wells (tips) which should be used for the command. Characters 1 and 2 of the string specify the number of wells in the x-direction in hexadecimal. Characters 3 and 4 of the the string specify the number of wells in the y-direction in hexadecimal. For example, 12 x 8 (96 wells) = 0C08. All following characters are used for the well selection, whereby each character specifies the well selection for a group of 7 adjacent wells using a specially adapted bitmap system. Only 7 bits are used per byte [RANGE 0-127 !!!] instead of 8 to avoid screen and printer font compatibility problems. Using the 7-bit system, 14 characters are needed to represent the well selection for 96 wells (plus characters 1 to 4, total of 18 characters) and 55 characters are needed to represent the well selection for 384 wells (total of 59 characters). In addition, since most ANSI characters below ANSI 32 are non-printable (nonhuman- readable), decimal 48 (ANSI value for “0”) is added to the value [RANGE 48-175 !!! 144 have undefined Unicode !!!] of the bitmap to make it easier to read, send by eMail etc. The following shows some examples for character 5 of the well selection string for a 96-well microplate in landcape orientation. Character 5 is responsible for the first group of 7 wells

this function stores 7 bit per character in the selection string the first 2 characters are the number of wells in x direction (columns) in hexadecimal. the characters 3 and 4 are the number of wells in y direction (rows) in hexadecimal. well are computed in the order back to front, left to right; https://docs.python.org/3.4/library/string.html#formatstrings

class labware.LiquidClass(name: str, liquid_name: str = '')[source]

Bases: object

__init__(name: str, liquid_name: str = '')[source]
Parameters:
  • name
  • liquid_name
class labware.LiquidClassDefault(name: str, liquid_name: str = '')[source]

Bases: labware.LiquidClass

__init__(name: str, liquid_name: str = '')[source]
Parameters:
  • name
  • liquid_name
class labware.LiquidClassDerived(raw_name: str, origen: labware.LiquidClassDefault)[source]

Bases: labware.LiquidClass

__init__(raw_name: str, origen: labware.LiquidClassDefault)[source]
Parameters:
  • name
  • liquid_name
class labware.LiquidClasses(database: pathlib.Path)[source]

Bases: object

__init__(database: pathlib.Path)[source]

Initialize self. See help(type(self)) for accurate signature.

exception labware.NoFreeWells(labware: labware.Labware, error: str)[source]

Bases: Exception

__init__(labware: labware.Labware, error: str)[source]

Initialize self. See help(type(self)) for accurate signature.

exception labware.ProtocolLogicPippetingError[source]

Bases: Exception

class labware.Te_Mag(name, nRow, nCol=1, max_vol=None)[source]

Bases: labware.Type

class labware.Tip(rack_type)[source]

Bases: object

__init__(rack_type)[source]

Initialize self. See help(type(self)) for accurate signature.

class labware.Well(labware, Well_Offset)[source]

Bases: object

class Action(volume: float, origin=None)[source]

Bases: object

__init__(volume: float, origin=None)[source]

Initialize self. See help(type(self)) for accurate signature.

__init__(labware, Well_Offset)[source]

Initialize self. See help(type(self)) for accurate signature.

actions
log(vol, origin=None)[source]
reagent
select(sel=True)[source]
vol
class labware.WorkTable(template_file, robot_protocol=None, grids=67, sites=127)[source]

Bases: object

Collection of carriers.types and Labware.types and pos of instances

class File(input, output, worktable)[source]

Bases: object

__init__(input, output, worktable)[source]

Initialize self. See help(type(self)) for accurate signature.

grid_carrier_line()[source]
write(worktable)[source]
class Location(grid=None, site=None, carrier=None, carrier_site=None, worktable=None)[source]

Bases: object

One location in a WorkTable

__init__(grid=None, site=None, carrier=None, carrier_site=None, worktable=None)[source]
Parameters:
  • grid – int, 1-67. worktable grid. Carrier grid position
  • site – int, 0 - 127. Site on carrier (on RAck?) = labware location - (site on carrier - 1) !!!!!
  • carrier
  • carrier_site
__init__(template_file, robot_protocol=None, grids=67, sites=127)[source]

Initialize self. See help(type(self)) for accurate signature.

add_labware(labware, loc: labware.WorkTable.Location)[source]
Parameters:
  • labware
  • loc
Returns:

Raises:

"This WT have only " + len(self.grid) + " grid."

add_new_labware(labware, loc: labware.WorkTable.Location = None)[source]

This will be the first location of this labware. Don’t remove from possible old location. :param labware: :param loc: :return: :raise “This WT have only ” + len(self.grid) + ” grid.”:

cur_worktable = None
get_DITI_series(rack=None)[source]

Find and return the series of DiTi racks of the type specified by argument rack.

Parameters:rack

:type rack:(str, DITIrackType, DITIrack, DITIrackTypeSeries) :return: the serie of DiTi racks of the type specified by argument rack

get_current_labware(labware)[source]
get_labware(label: (<class 'str'>, <class 'int'>) = None, labw_type=None)[source]

Return a Labware already created manually or after the worktable template was scanned. The labware type is optional (if you provide a label), but it makes the search more robust. It is mandatory if you provide no label or an index (no label will return the labware with index 0 in the series of labware of the desired type). The type may be a label or a predefined Labware.Type :type labw_type: (str, Labware.Type) :param label: :return Labware

labware_series = None

typeName: Series. For each type - a series of labwares (with self have locations)

parse_worktable_file(template_file, robot_protocol)[source]
reagents = None

connect each reagent name with the reagent self

replace_with_new(labw, label)[source]
retire_labware(labw)[source]
set_current(labware)[source]
set_def_DiTi(tips)[source]
set_first_pos(labw_type_name=None, posstr=None)[source]

Default to DITI if no labw_type_name is given. chooses a labware by label and set next well or tip to be used. :param labw_type_name: :param posstr: :return:

class labware.conectedWell(labware, Well_Offset)[source]

Bases: labware.Well

actions
reagent
vol
labware.count_tips(TIP_MASK: int) → int[source]
labware.getLabware(labw_type, label, worktable=None)[source]
class labware.usedTip(tip: labware.Tip, origin=None)[source]

Bases: labware.Tip

__init__(tip: labware.Tip, origin=None)[source]

Initialize self. See help(type(self)) for accurate signature.