Example #1
0
 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
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
 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
Example #6
0
 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)
Example #7
0
 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
Example #8
0
 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
Example #9
0
 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