Beispiel #1
0
class ControlType(Entity):
    _URI = "controltypes"
    _TAG = "control-type"
    _PREFIX = 'ctrltp'

    name = StringAttributeDescriptor('name')
    supplier = StringDescriptor('supplier')
    archived = BooleanDescriptor('archived')
    single_step = BooleanDescriptor('single_step')
class Controltype(Entity):
    """Control sample."""

    _URI = 'controltypes'
    _TAG = 'control-type'
    _PREFIX = 'ctrltp'

    name = StringAttributeDescriptor('name')
    supplier = StringDescriptor('supplier')
    catalogue_number = StringDescriptor('catalogue-number')
    website = StringDescriptor('website')
    concentration = StringDescriptor('concentration')
    archived = BooleanDescriptor('archived')
    single_step = BooleanDescriptor('single-step')
Beispiel #3
0
class File(Entity):
    "File attached to a project or a sample."

    attached_to = StringDescriptor('attached-to')
    content_location = StringDescriptor('content-location')
    original_location = StringDescriptor('original-location')
    is_published = BooleanDescriptor('is-published')
Beispiel #4
0
class ReagentKit(Entity):
    """Type of Reagent with information about the provider"""
    _URI = "reagentkits"
    _TAG = "reagent-kit"
    _PREFIX = 'kit'

    name = StringDescriptor('name')
    supplier = StringDescriptor('supplier')
    website = StringDescriptor('website')
    archived = BooleanDescriptor('archived')
Beispiel #5
0
class Instrument(Entity):
    """Lab Instrument
    """
    _URI = "instruments"
    _TAG = "instrument"
    _PREFIX = "inst"

    name = StringDescriptor('name')
    type = StringDescriptor('type')
    serial_number = StringDescriptor('serial-number')
    expiry_date = StringDescriptor('expiry-date')
    archived = BooleanDescriptor('archived')
Beispiel #6
0
class Udfconfig(Entity):
    "Instance of field type (cnf namespace)."
    _URI = 'configuration/udfs'

    name = StringDescriptor('name')
    attach_to_name = StringDescriptor('attach-to-name')
    attach_to_category = StringDescriptor('attach-to-category')
    show_in_lablink = BooleanDescriptor('show-in-lablink')
    allow_non_preset_values = BooleanDescriptor('allow-non-preset-values')
    first_preset_is_default_value = BooleanDescriptor(
        'first-preset-is-default-value')
    show_in_tables = BooleanDescriptor('show-in-tables')
    is_editable = BooleanDescriptor('is-editable')
    is_required = BooleanDescriptor('is-required')
    is_deviation = BooleanDescriptor('is-deviation')
    is_controlled_vocabulary = BooleanDescriptor('is-controlled-vocabulary')
    presets = StringListDescriptor('preset')
class ProcessTypeProcessInput(object):

    instance = None
    name = None
    root = None
    tag = ''

    artifact_type = StringDescriptor('artifact-type')
    display_name = StringDescriptor('display-name')
    remove_working_flag = BooleanDescriptor('remove-working-flag')

    def __init__(self, pt_instance, node):
        self.instance = pt_instance
        self.root = node

    def get(self):
        pass
Beispiel #8
0
class ProcessTypeProcessInput(object):

    instance = None
    name = None
    root = None
    tag = ''

    artifact_type = StringDescriptor('artifact-type')
    display_name = StringDescriptor('display-name')
    remove_working_flag = BooleanDescriptor('remove-working-flag')

    def __init__(self, pt_instance, node):
        self.instance = pt_instance
        self.root = node
        self.lims = pt_instance.lims

    def __repr__(self):
        return "{0}({1})".format(self.__class__.__name__, self.display_name)

    def get(self):
        pass
Beispiel #9
0
class Artifact(Entity):
    "Any process input or output; analyte or file."

    _URI = 'artifacts'
    _TAG = 'artifact'
    _PREFIX = 'art'

    name = StringDescriptor('name')
    type = StringDescriptor('type')
    output_type = StringDescriptor('output-type')
    parent_process = EntityDescriptor('parent-process', Process)
    volume = StringDescriptor('volume')
    concentration = StringDescriptor('concentration')
    qc_flag = StringDescriptor('qc-flag')
    location = LocationDescriptor('location')
    working_flag = BooleanDescriptor('working-flag')
    samples = EntityListDescriptor('sample', Sample)
    udf = UdfDictionaryDescriptor()
    files = EntityListDescriptor(nsmap('file:file'), File)
    reagent_labels = ReagentLabelList()

    # artifact_flags XXX
    # artifact_groups XXX

    def input_artifact_list(self):
        """Returns the input artifact ids of the parrent process."""
        input_artifact_list = []
        try:
            for tuple in self.parent_process.input_output_maps:
                if tuple[1]['limsid'] == self.id:
                    input_artifact_list.append(tuple[0]['uri'])  # ['limsid'])
        except:
            pass
        return input_artifact_list

    def get_state(self):
        "Parse out the state value from the URI."
        parts = urlparse(self.uri)
        params = parse_qs(parts.query)
        try:
            return params['state'][0]
        except (KeyError, IndexError):
            return None

    @property
    def container(self):
        "The container where the artifact is located, or None"
        try:
            return self.location[0]
        except:
            return None

    def stateless(self):
        "returns the artefact independently of it's state"
        parts = urlparse(self.uri)
        if 'state' in parts[4]:
            stateless_uri = urlunparse(
                [parts[0], parts[1], parts[2], parts[3], '', ''])
            return Artifact(self.lims, uri=stateless_uri)
        else:
            return self

    # XXX set_state ?
    state = property(get_state)
    stateless = property(stateless)

    def _get_workflow_stages_and_statuses(self):
        self.get()
        result = []
        rootnode = self.root.find('workflow-stages')
        for node in rootnode.findall('workflow-stage'):
            result.append((Stage(self.lims, uri=node.attrib['uri']),
                           node.attrib['status'], node.attrib['name']))
        return result

    workflow_stages_and_statuses = property(_get_workflow_stages_and_statuses)