def __get_planned_liquid_transfers(self, step_container, transfer_type): # Create :class:`PlannedSampleDilution`s for dilution (requires # valid diluent), otherwise it creates # :class:`PlannedSampleTransfer`s. planned_liquid_transfers = [] for transfer_container in step_container.get_transfer_containers(): src_positions = transfer_container.get_source_positions() trg_positions = transfer_container.get_target_positions() volume = float(transfer_container.volume) / VOLUME_CONVERSION_FACTOR if transfer_type == TRANSFER_TYPES.SAMPLE_DILUTION: diluent = transfer_container.diluent if diluent is None or not len(str(diluent)) > 1: msg = 'A diluent must be at least 2 characters long! ' \ 'Change the diluent for step %i code %s, ' \ 'please.' \ % (step_container.number, transfer_container.code) self.add_error(msg) return None for trg_pos_container in trg_positions: trg_pos = self._convert_to_rack_position(trg_pos_container) kw = dict(target_position=trg_pos, volume=volume) if transfer_type == TRANSFER_TYPES.SAMPLE_DILUTION: kw['diluent_info'] = str(transfer_container.diluent) psd = PlannedSampleDilution.get_entity(**kw) planned_liquid_transfers.append(psd) else: for src_pos_container in src_positions: src_pos = self._convert_to_rack_position( src_pos_container) kw['source_position'] = src_pos pst = PlannedSampleTransfer.get_entity(**kw) planned_liquid_transfers.append(pst) return planned_liquid_transfers
def _create_planned_sample_transfer(self, **kw): if not 'volume' in kw: kw['volume'] = 0.000020 if not 'source_position' in kw: kw['source_position'] = self._get_entity(IRackPosition, 'a1') if not 'target_position' in kw: kw['target_position'] = self._get_entity(IRackPosition, 'b2') return PlannedSampleTransfer.get_entity(**kw)
def _create_planned_liquid_transfers(self): """ Generates the planned container transfers for the worklist. """ self.add_debug('Generate planned container transfer ...') volume = TransfectionParameters.TRANSFER_VOLUME \ / VOLUME_CONVERSION_FACTOR for rack_pos, tf_pos in self.transfection_layout.iterpositions(): if tf_pos.is_empty: continue for target_pos in tf_pos.cell_plate_positions: pst = PlannedSampleTransfer.get_entity(volume=volume, source_position=rack_pos, target_position=target_pos) self._add_planned_transfer(pst)
def get_planned_sample_transfers(self, plate_marker): """ Converts the all transfer target for the given target plate into :class:`PlannedSampleTransfer` objects. """ psts = [] for tt in self.transfer_targets: if not tt.target_rack_marker == plate_marker: continue trg_pos = get_rack_position_from_label(tt.position_label) pst = PlannedSampleTransfer.get_entity( volume=tt.transfer_volume / VOLUME_CONVERSION_FACTOR, source_position=self.rack_position, target_position=trg_pos) psts.append(pst) return psts
def _create_planned_liquid_transfers(self): """ Generates the planned container transfers for the worklist. """ self.add_debug('Generate planned container transfer ...') volume = TransfectionParameters.TRANSFER_VOLUME \ / VOLUME_CONVERSION_FACTOR for rack_pos, tf_pos in self.transfection_layout.iterpositions(): if tf_pos.is_empty: continue for target_pos in tf_pos.cell_plate_positions: pst = PlannedSampleTransfer.get_entity( volume=volume, source_position=rack_pos, target_position=target_pos) self._add_planned_transfer(pst)
def get_planned_sample_transfers(self, plate_marker): """ Converts the all transfer target for the given target plate into :class:`PlannedSampleTransfer` objects. """ psts = [] for tt in self.transfer_targets: if not tt.target_rack_marker == plate_marker: continue trg_pos = get_rack_position_from_label(tt.position_label) pst = PlannedSampleTransfer.get_entity( volume=tt.transfer_volume / VOLUME_CONVERSION_FACTOR, source_position=self.rack_position, target_position=trg_pos, ) psts.append(pst) return psts
def __make_stock_rack_worklist_series(self, label, volume, layout): # Builds a sector 0 -> sector 0 rack transfer worklist series. pip_specs_cy = get_pipetting_specs_cybio() wl_series = WorklistSeries() psts = [] if layout is None: # Rack transfer (only for pool stock rack -> prep plate transfer). pst = PlannedRackSampleTransfer.get_entity(volume, 1, 0, 0) psts.append(pst) pwl_type = TRANSFER_TYPES.RACK_SAMPLE_TRANSFER else: # Sample transfers (for single stock transfer). for rack_pos in layout.get_positions(): pst = PlannedSampleTransfer.get_entity(volume, rack_pos, rack_pos) psts.append(pst) pwl_type = TRANSFER_TYPES.SAMPLE_TRANSFER wl = PlannedWorklist(label, pwl_type, pip_specs_cy, planned_liquid_transfers=psts) wl_series.add_worklist(0, wl) return wl_series