def __init__(self, sample, volume, time_stamp=None, **kw): Entity.__init__(self, **kw) self.sample = sample self.volume = volume if time_stamp is None: time_stamp = get_utc_time() self.time_stamp = time_stamp
def check_out(self): """ Checks this sample out of the freezer it is currently in. :raises RuntimeError: If the `checkout_date` attribute is not `None`. """ if not self.checkout_date is None: raise RuntimeError("Trying to check out a sample that has not " "been checked in.") self.checkout_date = get_utc_time()
def __init__(self, product_id, supplier, time_stamp=None, is_current=False, is_deleted=False, **kw): Entity.__init__(self, **kw) self.product_id = product_id self.supplier = supplier if time_stamp is None: time_stamp = get_utc_time() self.time_stamp = time_stamp self.is_current = is_current self.is_deleted = is_deleted
def __init__(self, user, tube_transfers=None, timestamp=None, **kw): Entity.__init__(self, **kw) self.user = user if timestamp is None: timestamp = get_utc_time() self.timestamp = timestamp if tube_transfers is None: tube_transfers = [] self.tube_transfers = tube_transfers
def __init__(self, label, creation_date=None, active=False, project=None, **kw): Entity.__init__(self, **kw) self.label = label if creation_date is None: creation_date = get_utc_time() self.creation_date = creation_date self.active = active if project is not None: self.project = project
def check_out(self): """ Checks this sample out of the freezer it is currently in. :raises RuntimeError: If the `checkout_date` attribute is not `None`. """ if not self.checkout_date is None: raise RuntimeError('Trying to check out a sample that has not ' 'been checked in.') self.checkout_date = get_utc_time()
def __init__(self, label, leader, customer=None, creation_date=None, subprojects=None, **kw): Entity.__init__(self, **kw) self.label = label self.title = label self.customer = customer self.leader = leader if creation_date is None: creation_date = get_utc_time() self.creation_date = creation_date if subprojects is None: subprojects = [] self.subprojects = subprojects
def __init__(self, label, specs, status, comment='', creation_date=None, barcode=None, **kw): Entity.__init__(self, **kw) if self.__class__ is Rack: raise NotImplementedError('Abstract class') self.label = label self.specs = specs self.status = status self.comment = comment if creation_date is None: creation_date = get_utc_time() self.creation_date = creation_date self.barcode = barcode self.containers = [] self._location = None
def __init__(self, label, user, creation_time=None, job_type=None, **kw): """ Constructor """ if self.__class__ is Job: raise NotImplementedError('Abstract class') Entity.__init__(self, **kw) if job_type is None: job_type = JOB_TYPES.BASE self.job_type = job_type self.label = label self.user = user if creation_time is None: creation_time = get_utc_time() self.creation_time = creation_time
def run(self): self.reset() self.add_info('Start tube transfer execution ...') self.__check_input() if not self.has_errors(): self.__scan_racks() if not self.has_errors(): self.__check_transfers() if not self.has_errors(): self.__update_tube_locations() if not self.has_errors(): self.return_value = TubeTransferWorklist(user=self.user, tube_transfers=self.tube_transfers, timestamp=get_utc_time()) self.add_info('Tube transfer executor run completed.')
def __init__(self, label, subproject, number_replicates, experiment_metadata_type, experiment_design=None, ticket_number=None, lab_iso_request=None, creation_date=None, **kw): Entity.__init__(self, **kw) self.label = label self.subproject = subproject self.experiment_design = experiment_design self.lab_iso_request = lab_iso_request self.number_replicates = number_replicates self.ticket_number = ticket_number if creation_date is None: creation_date = get_utc_time() self.creation_date = creation_date self.experiment_metadata_type = experiment_metadata_type
def run(self): self.reset() self.add_info('Start tube transfer execution ...') self.__check_input() if not self.has_errors(): self.__scan_racks() if not self.has_errors(): self.__check_transfers() if not self.has_errors(): self.__update_tube_locations() if not self.has_errors(): self.return_value = TubeTransferWorklist( user=self.user, tube_transfers=self.tube_transfers, timestamp=get_utc_time()) self.add_info('Tube transfer executor run completed.')
def __init__(self, planned_liquid_transfer, user, timestamp=None, transfer_type=None, **kw): # pylint: disable=W0622 if self.__class__ is ExecutedLiquidTransfer: raise NotImplementedError('Abstract class') Entity.__init__(self, **kw) if transfer_type is None: transfer_type = TRANSFER_TYPES.LIQUID_TRANSFER self.transfer_type = transfer_type if not planned_liquid_transfer.transfer_type == transfer_type: msg = 'Invalid planned liquid transfer type "%s" for executed ' \ 'transfer class %s.' \ % (planned_liquid_transfer.transfer_type, self.__class__.__name__) raise ValueError(msg) self.planned_liquid_transfer = planned_liquid_transfer self.user = user if timestamp is None: timestamp = get_utc_time() self.timestamp = timestamp
def check_in(self): """ Checks this sample into a freezer. Requires the `checkout_date` attribute to be set so that we can determine if a freeze/thaw cycle increment is in order. :raises RuntimeError: If the `checkout_date` attribute is `None`. """ checkout_date = self.checkout_date if checkout_date is None: raise RuntimeError("Trying to check in a sample that has not " "been checked out.") if checkout_date.tzinfo is None: checkout_date = as_utc_time(self.checkout_date) checkout_secs = abs(get_utc_time() - checkout_date).seconds if checkout_secs > self.thaw_time: if self.freeze_thaw_cycles is None: self.freeze_thaw_cycles = 1 else: self.freeze_thaw_cycles += 1 self.checkout_date = None
def check_in(self): """ Checks this sample into a freezer. Requires the `checkout_date` attribute to be set so that we can determine if a freeze/thaw cycle increment is in order. :raises RuntimeError: If the `checkout_date` attribute is `None`. """ checkout_date = self.checkout_date if checkout_date is None: raise RuntimeError('Trying to check in a sample that has not ' 'been checked out.') if checkout_date.tzinfo is None: checkout_date = as_utc_time(self.checkout_date) checkout_secs = abs(get_utc_time() - checkout_date).seconds if checkout_secs > self.thaw_time: if self.freeze_thaw_cycles is None: self.freeze_thaw_cycles = 1 else: self.freeze_thaw_cycles += 1 self.checkout_date = None
def __parse_scanning_files(self): # Parses the scanning file(s). The result are stored in # :attr:`__file_layouts`. self.add_debug('Parse scanning files ...') self.__max_age = timedelta(days=self.MAX_FILE_AGE) self.__now = get_utc_time() file_map = self.__get_files_from_directory() if file_map is None and not self.has_errors(): file_map = read_zip_archive(zip_stream=self.rack_scanning_files) if not file_map is None: for fn, stream in file_map.iteritems(): self.__parse_rack_scanning_file(stream, fn) elif not self.has_errors(): if isinstance(self.rack_scanning_files, StringIO): stream = self.rack_scanning_files else: try: stream = open(self.rack_scanning_files, 'r') except IOError: stream = self.rack_scanning_files except TypeError: stream = self.rack_scanning_files self.__parse_rack_scanning_file(stream)
def from_rack(cls, tube_rack): """ Creates a :class:`RackScanningLayout` using the data of a the passed rack. :param tube_rack: The tube rack to create the layout for. :type tube_rack: :class:`thelma.entities.rack.TubeRack` :raises TypeError: If the tube rack is the wrong type (incl. other rack types). :return: :class:`RackScanningLayout` """ if not isinstance(tube_rack, TubeRack): msg = 'The tube rack must be a %s type (obtained: %s).' \ % (TubeRack.__class__.__name__, tube_rack.__class__.__name__) raise TypeError(msg) rsl = RackScanningLayout(rack_barcode=tube_rack.barcode, timestamp=get_utc_time()) # for tube in tube_rack.containers: # rack_pos = tube.position # rsl.add_position(rack_pos, tube.barcode) for pos, tube in iteritems_(tube_rack.container_positions): rsl.add_position(pos, tube.barcode) return rsl
def __init__(self, molecule_design, supplier, **kw): Entity.__init__(self, **kw) self.molecule_design = molecule_design self.supplier = supplier self.insert_date = get_utc_time() self.samples = []