Exemplo n.º 1
0
 def populate_free_pin(self):
     self.queue_model_hwobj.clear_model('free-pin')
     self.queue_model_hwobj.select_model('free-pin')
     sample = queue_model_objects.Sample()
     sample.free_pin_mode = True
     sample.set_name('manually-mounted')
     self.queue_model_hwobj.add_child(
         self.queue_model_hwobj.get_model_root(), sample)
Exemplo n.º 2
0
def get_default_prefix(sample_data, generic_name):
    sample = qmo.Sample()
    sample.code = sample_data.get("code", "")
    sample.name = sample_data.get("sampleName", "")
    sample.location = sample_data.get("location", "").split(':')
    sample.crystals[0].protein_acronym = sample_data.get("proteinAcronym", "")

    return mxcube.session.get_default_prefix(sample, generic_name)
Exemplo n.º 3
0
    def samples_from_sc_content(self, sc_content):
        sample_list = []

        for sample_info in sc_content:
            sample = queue_model_objects.Sample()
            sample.init_from_sc_sample(sample_info)
            sample_list.append(sample)

        return sample_list
Exemplo n.º 4
0
 def samples_from_sc_content(self, sc_basket_content, sc_sample_content):
     basket_list = []
     sample_list = []
     for basket_info in sc_basket_content:
         basket = queue_model_objects.Basket()
         basket.init_from_sc_basket(basket_info, "Puck")
         basket_list.append(basket)
     for sample_info in sc_sample_content:
         sample = queue_model_objects.Sample()
         sample.init_from_sc_sample(sample_info)
         sample_list.append(sample)
     return basket_list, sample_list
Exemplo n.º 5
0
def get_default_prefix(sample_data, generic_name):
    if isinstance(sample_data, dict):
        sample = qmo.Sample()
        sample.code = sample_data.get("code", "")
        sample.name = sample_data.get("sampleName", "")
        sample.location = sample_data.get("location", "").split(':')
        sample.lims_id = sample_data.get("limsID", -1)
        sample.crystals[0].protein_acronym = sample_data.get("proteinAcronym", "")
    else:
        sample = sample_data

    return mxcube.session.get_default_prefix(sample, generic_name)
Exemplo n.º 6
0
    def samples_from_lims(self, lims_sample_list):
        barcode_samples = {}
        location_samples = {}

        for lims_sample in lims_sample_list:
            sample = queue_model_objects.Sample()
            sample.init_from_lims_object(lims_sample)

            if sample.lims_code:
                barcode_samples[sample.lims_code] = sample

            if sample.lims_location:
                location_samples[sample.lims_location] = sample

        return (barcode_samples, location_samples)
Exemplo n.º 7
0
 def samples_from_plate_content(self, plate_sample_content):
     row_list = []
     sample_list = []
     actual_row_index = -1
     for sample_info in plate_sample_content:
         if actual_row_index < sample_info[1]:
             row = queue_model_objects.Basket()
             row_info = [sample_info[1], None]
             row.init_from_sc_basket(row_info, "Row")
             row_list.append(row)
             actual_row_index = sample_info[1]
         sample = queue_model_objects.Sample()
         sample.init_from_plate_sample(sample_info)
         sample_list.append(sample)
     return row_list, sample_list
Exemplo n.º 8
0
def add_sample(sample_id, item):
    """
    Adds a sample with sample id <sample_id> the queue.

    :param str sample_id: Sample id (often sample changer location)
    :returns: SampleQueueEntry
    """
    # Is the sample with location sample_id already in the queue,
    # in that case, send error response

    for sampleId, sampleData in queue_to_dict().iteritems():
        if sampleId == sample_id:
            msg = "[QUEUE] sample could not be added, already in the queue"
            raise Exception(msg)

    sample_model = qmo.Sample()

    # We should really use sample_id instead of loc_str
    sample_model.loc_str = sample_id
    sample_model.free_pin_mode = item['location'] == 'Manual'

    sample_model.set_name(item['sampleName'])
    sample_model.crystals[0].protein_acronym = item.get('proteinAcronym', '')

    if sample_model.free_pin_mode:
        sample_model.location = (None, sample_id)
    else:
        sample_model.location = tuple(map(int, item['location'].split(':')))

    sample_entry = qe.SampleQueueEntry(Mock(), sample_model)
    sample_entry.set_enabled(True)

    mxcube.queue.add_child(mxcube.queue.get_model_root(), sample_model)
    mxcube.queue.queue_hwobj.enqueue(sample_entry)

    return sample_model._node_id
Exemplo n.º 9
0
    def __init__(self, *args):
        """
        Descript. :
        """
        BlissWidget.__init__(self, *args)

        # Internal variables ------------------------------------------------
        self.sample = queue_model_objects.Sample()
        self.crystal = self.sample.crystals[0]
        self.sample_mib = DataModelInputBinder(self.sample)
        self.crystal_mib = DataModelInputBinder(self.crystal)

        # Signals ------------------------------------------------------------

        # Slots --------------------------------------------------------------
        self.defineSlot("populate_sample_details", ({}))

        # Graphic elements ----------------------------------------------------
        _info_widget = QWidget(self)
        self.crystal_widget = loadUi(\
             os.path.join(os.path.dirname(__file__),
             "widgets/ui_files/Qt4_crystal_widget_layout.ui"))
        self.sample_info_widget = loadUi(
            os.path.join(os.path.dirname(__file__),
                         "widgets/ui_files/Qt4_sample_info_widget_layout.ui"))
        #self.ispyb_sample_info_widget = ISPyBSampleInfoWidget(self)

        # Layout --------------------------------------------------------------
        _info_widget_hlayout = QHBoxLayout(_info_widget)
        _info_widget_hlayout.addWidget(self.sample_info_widget)
        _info_widget_hlayout.addWidget(self.crystal_widget)
        _info_widget_hlayout.addStretch(0)
        _info_widget_hlayout.setSpacing(0)
        _info_widget_hlayout.setContentsMargins(2, 2, 2, 2)

        _main_hlayout = QVBoxLayout(self)
        _main_hlayout.addWidget(_info_widget)
        #_main_hlayout.addWidget(self.ispyb_sample_info_widget)
        _main_hlayout.addStretch(0)
        _main_hlayout.setSpacing(0)
        _main_hlayout.setContentsMargins(2, 2, 2, 2)

        # SizePolicies --------------------------------------------------------

        # Qt signal/slot connections ------------------------------------------

        # Other ---------------------------------------------------------------
        self.crystal_mib.bind_value_update(
            'space_group', self.crystal_widget.space_group_value_label, str,
            None)

        self.crystal_mib.bind_value_update(
            'protein_acronym', self.crystal_widget.protein_acronym_value_label,
            str, None)

        self.crystal_mib.bind_value_update('cell_a',
                                           self.crystal_widget.a_value_label,
                                           str, None)

        self.crystal_mib.bind_value_update(
            'cell_alpha', self.crystal_widget.alpha_value_label, str, None)

        self.crystal_mib.bind_value_update('cell_b',
                                           self.crystal_widget.b_value_label,
                                           str, None)

        self.crystal_mib.bind_value_update(
            'cell_beta', self.crystal_widget.beta_value_label, str, None)

        self.crystal_mib.bind_value_update('cell_c',
                                           self.crystal_widget.c_value_label,
                                           str, None)

        self.crystal_mib.bind_value_update(
            'cell_gamma', self.crystal_widget.gamma_value_label, str, None)

        self.sample_mib.bind_value_update(
            'name', self.sample_info_widget.name_value_label, str, None)

        self.sample_mib.bind_value_update(
            'code', self.sample_info_widget.data_matrix_value_label, str, None)

        self.sample_mib.bind_value_update(
            'holder_length', self.sample_info_widget.holder_length_value_label,
            str, None)

        self.sample_mib.bind_value_update(
            'lims_sample_location',
            self.sample_info_widget.sample_location_value_label, str, None)

        self.sample_mib.bind_value_update(
            'lims_container_location',
            self.sample_info_widget.basket_location_value_label, str, None)
Exemplo n.º 10
0
    def __init__(self, *args):
        BaseComponents.BlissWidget.__init__(self, *args)

        #
        # Data attributes
        #
        self.sample = queue_model_objects.Sample()
        self.crystal = self.sample.crystals[0]
        self.sample_mib = DataModelInputBinder(self.sample)
        self.crystal_mib = DataModelInputBinder(self.crystal)

        #
        # Qt - Signals/Slots
        #
        self.defineSlot("populate_sample_details", ({}))

        #
        # Layout
        #
        main_layout = qt.QHBoxLayout(self, 11, 15, "main_layout")
        self.crystal_widget = CrystalWidgetLayout(self)
        self.sample_info_widget = SampleInfoWidgetLayout(self)
        main_layout.addWidget(self.sample_info_widget)
        main_layout.addWidget(self.crystal_widget)
        main_layout.addStretch(10)

        self.crystal_mib.bind_value_update(
            'space_group', self.crystal_widget.space_group_value_label, str,
            None)

        self.crystal_mib.bind_value_update(
            'protein_acronym', self.crystal_widget.protein_acronym_value_label,
            str, None)

        self.crystal_mib.bind_value_update('cell_a',
                                           self.crystal_widget.a_value_label,
                                           str, None)

        self.crystal_mib.bind_value_update(
            'cell_alpha', self.crystal_widget.alpha_value_label, str, None)

        self.crystal_mib.bind_value_update('cell_b',
                                           self.crystal_widget.b_value_label,
                                           str, None)

        self.crystal_mib.bind_value_update(
            'cell_beta', self.crystal_widget.beta_value_label, str, None)

        self.crystal_mib.bind_value_update('cell_c',
                                           self.crystal_widget.c_value_label,
                                           str, None)

        self.crystal_mib.bind_value_update(
            'cell_gamma', self.crystal_widget.gamma_value_label, str, None)

        self.sample_mib.bind_value_update(
            'name', self.sample_info_widget.name_value_label, str, None)

        self.sample_mib.bind_value_update(
            'code', self.sample_info_widget.data_matrix_value_label, str, None)

        self.sample_mib.bind_value_update(
            'holder_length', self.sample_info_widget.holder_length_value_label,
            str, None)

        self.sample_mib.bind_value_update(
            'lims_sample_location',
            self.sample_info_widget.sample_location_value_label, str, None)

        self.sample_mib.bind_value_update(
            'lims_container_location',
            self.sample_info_widget.basket_location_value_label, str, None)