コード例 #1
0
 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
コード例 #2
0
ファイル: sample.py プロジェクト: helixyte/TheLMA
 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
コード例 #3
0
ファイル: sample.py プロジェクト: helixyte/TheLMA
    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()
コード例 #4
0
 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
コード例 #5
0
ファイル: tubetransfer.py プロジェクト: helixyte/TheLMA
 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
コード例 #6
0
ファイル: tubetransfer.py プロジェクト: papagr/TheLMA
 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
コード例 #7
0
ファイル: subproject.py プロジェクト: helixyte/TheLMA
 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
コード例 #8
0
    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()
コード例 #9
0
ファイル: project.py プロジェクト: helixyte/TheLMA
 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
コード例 #10
0
ファイル: rack.py プロジェクト: helixyte/TheLMA
 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
コード例 #11
0
ファイル: job.py プロジェクト: papagr/TheLMA
 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
コード例 #12
0
ファイル: job.py プロジェクト: helixyte/TheLMA
 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
コード例 #13
0
ファイル: tubehandler.py プロジェクト: helixyte/TheLMA
 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.')
コード例 #14
0
 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
コード例 #15
0
ファイル: experiment.py プロジェクト: helixyte/TheLMA
 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
コード例 #16
0
 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.')
コード例 #17
0
ファイル: project.py プロジェクト: papagr/TheLMA
 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
コード例 #18
0
ファイル: liquidtransfer.py プロジェクト: helixyte/TheLMA
 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
コード例 #19
0
ファイル: experiment.py プロジェクト: papagr/TheLMA
 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
コード例 #20
0
 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
コード例 #21
0
ファイル: sample.py プロジェクト: helixyte/TheLMA
    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
コード例 #22
0
    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
コード例 #23
0
ファイル: rackscanning.py プロジェクト: papagr/TheLMA
 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)
コード例 #24
0
ファイル: rackscanning.py プロジェクト: helixyte/TheLMA
 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)
コード例 #25
0
    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
コード例 #26
0
ファイル: liquidtransfer.py プロジェクト: papagr/TheLMA
 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
コード例 #27
0
 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 = []
コード例 #28
0
ファイル: sample.py プロジェクト: helixyte/TheLMA
 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 = []