def _create_iso_candidates(self, tube_rack_fac, tube_rack_specs_matrix, tube_fac, item_status_managed, organization_cenix, stock_sample_fac): ss_agg = get_root_aggregate(IStockSample) rack_agg = get_root_aggregate(IRack) tube_bc = 9000000000 vol = 1e-4 row_idx = 0 col_idx = 0 tube_rack = tube_rack_fac(label='test_iso_candidates', specs=tube_rack_specs_matrix, status=get_item_status_managed()) rack_agg.add(tube_rack) mdp_agg = get_root_aggregate(IMoleculeDesignPool) for mdp_id in [288282, 3349397, 3430173, 1139866, 199937]: tube = tube_fac(barcode=str(tube_bc), status=item_status_managed) col_idx += 1 tube_bc += 1 tube_rack.add_tube( tube, get_rack_position_from_indices(row_idx, col_idx)) mdp = mdp_agg.get_by_id(mdp_id) ss = stock_sample_fac( volume=vol, container=tube, molecule_design_pool=mdp, supplier=organization_cenix, molecule_type=mdp.molecule_type, concentration=mdp.default_stock_concentration) ss_agg.add(ss)
def _create_iso_candidates(self, tube_rack_fac, tube_rack_specs_matrix, tube_fac, item_status_managed, organization_cenix, stock_sample_fac): ss_agg = get_root_aggregate(IStockSample) rack_agg = get_root_aggregate(IRack) tube_bc = 9000000000 vol = 1e-4 row_idx = 0 col_idx = 0 tube_rack = tube_rack_fac(label='test_iso_candidates', specs=tube_rack_specs_matrix, status=get_item_status_managed()) rack_agg.add(tube_rack) mdp_agg = get_root_aggregate(IMoleculeDesignPool) for mdp_id in [288282, 3349397, 3430173, 1139866, 199937]: tube = tube_fac(barcode=str(tube_bc), status=item_status_managed) col_idx += 1 tube_bc += 1 tube_rack.add_tube( tube, get_rack_position_from_indices(row_idx, col_idx)) mdp = mdp_agg.get_by_id(mdp_id) ss = stock_sample_fac( volume=vol, container=tube, molecule_design_pool=mdp, supplier=organization_cenix, molecule_type=mdp.molecule_type, concentration=mdp.default_stock_concentration) ss_agg.add(ss)
def __get_empty_racks(self, count): rack_specs_agg = get_root_aggregate(ITubeRackSpecs) rs_matrix = rack_specs_agg.get_by_slug('matrix0500') is_managed = get_item_status_managed() rack_agg = get_root_aggregate(ITubeRack) rack_agg.filter = eq(total_containers=0, specs=rs_matrix, status=is_managed) rack_agg.slice = slice(0, count) return list(iter(rack_agg))
def __prepare_pool_stock_rack(self, empty_rack, sector_idx): tube_specs_agg = get_root_aggregate(ITubeSpecs) ts_matrix = tube_specs_agg.get_by_slug('matrix0500') is_managed = get_item_status_managed() pos_idxs_96 = zip([1, 1, 0, 0], [1, 1, 1, 1]) (row_idx, col_idx) = pos_idxs_96[sector_idx] tube = Tube.create_from_data( dict(barcode=str(9999999990 + tube_counter.next()), status=is_managed, specs=ts_matrix)) pos = get_rack_position_from_indices(row_idx, col_idx) empty_rack.add_tube(tube, pos)
def __get_status(self): try: status = self.__status except AttributeError: pp = self.preparation_plates # Detect if this ISO job is done (it is sufficient to check the # status of the first preparation plate). item_status_managed = get_item_status_managed() if len(pp) > 0 and pp[0].status == item_status_managed: status = ISO_STATUS.DONE else: status = ISO_STATUS.QUEUED return status
def __get_status(self): try: status = self.__status except AttributeError: pp = self.preparation_plates # Detect if this ISO job is done (it is sufficient to check the # status of the first preparation plate). item_status_managed = get_item_status_managed() if len(pp) > 0 and pp[0].status == item_status_managed: status = ISO_STATUS.DONE else: status = ISO_STATUS.QUEUED return status
def run(self): src_rack = self.__get_rack(self.__source_barcode) for tgt_bc in self.__target_barcodes: tgt_rack = self.__get_rack(tgt_bc) for pos, src_cnt_loc in iteritems_(src_rack.container_positions): if not src_cnt_loc.container is None: src_cnt = src_cnt_loc.container if not src_cnt.sample is None: src_smpl = src_cnt.sample tgt_cnt = tgt_rack.container_positions[pos] tgt_smpl = tgt_cnt.make_sample(self.__transfer_volume) for sm in src_smpl.sample_molecules: tgt_smpl.make_sample_molecule(sm.molecule, sm.concentration) tgt_rack.status = get_item_status_managed()
def run(self): src_rack = self.__get_rack(self.__source_barcode) for tgt_bc in self.__target_barcodes: tgt_rack = self.__get_rack(tgt_bc) for pos, src_cnt_loc in iteritems_(src_rack.container_positions): if not src_cnt_loc.container is None: src_cnt = src_cnt_loc.container if not src_cnt.sample is None: src_smpl = src_cnt.sample tgt_cnt = tgt_rack.container_positions[pos] tgt_smpl = tgt_cnt.make_sample(self.__transfer_volume) for sm in src_smpl.sample_molecules: tgt_smpl.make_sample_molecule( sm.molecule, sm.concentration) tgt_rack.status = get_item_status_managed()
def __create_rack_samples(self, layout, design_rack): """ Generates the sample for each experiment plate belonging to a particular experiment design rack. The volume is fixed (:attr:`FINAL_SAMPLE_VOLUME`), the molecule are stored in the :attr:`_pool_molecule_map` and positions and concentrations are derived from the layout. """ without_pool_data = isinstance(layout, RackLayout) design_rack_label = design_rack.label for exp_rack in self._experiment_racks[design_rack_label]: plate = exp_rack.rack if without_pool_data: positions = layout.get_positions() self.__add_samples_without_pools(positions, plate) else: self.__add_samples_with_pools(layout, plate, design_rack_label) if self.has_errors(): break plate.status = get_item_status_managed()
def __create_rack_samples(self, layout, design_rack): """ Generates the sample for each experiment plate belonging to a particular experiment design rack. The volume is fixed (:attr:`FINAL_SAMPLE_VOLUME`), the molecule are stored in the :attr:`_pool_molecule_map` and positions and concentrations are derived from the layout. """ without_pool_data = isinstance(layout, RackLayout) design_rack_label = design_rack.label for exp_rack in self._experiment_racks[design_rack_label]: plate = exp_rack.rack if without_pool_data: positions = layout.get_positions() self.__add_samples_without_pools(positions, plate) else: self.__add_samples_with_pools(layout, plate, design_rack_label) if self.has_errors(): break plate.status = get_item_status_managed()
def run(self): layout_map = {} for sector, lfn in enumerate((self.__layout_filename_q1, self.__layout_filename_q2, self.__layout_filename_q3, self.__layout_filename_q4)): layout_map.update(self.__parse_layout_file(sector, lfn)) pool_map = self.__get_md_pool_map(set(layout_map.values())) stock_conc_map = self.__find_stock_concentrations(pool_map) pool_tube_barcode_map = self.__get_tube_barcode_map(pool_map, stock_conc_map) tube_map = self.__get_tube_map(pool_tube_barcode_map.values()) tgt_rack = self.__get_target_rack(self.__target_barcode) for pos_label, pool_id in layout_map.iteritems(): pos = get_rack_position_from_label(pos_label) cnt = tgt_rack.container_positions[pos] smpl = cnt.make_sample(self.__iso_volume) tube = tube_map[pool_tube_barcode_map[pool_id]] sm_conc = \ self.__iso_concentration / len(tube.sample.sample_molecules) for sm in tube.sample.sample_molecules: smpl.make_sample_molecule(sm.molecule, sm_conc) tgt_rack.status = get_item_status_managed()