Giter Club home page Giter Club logo

ui-api's Introduction

MXCuBE

License: LGPL v3

MXCuBE stands for Macromolecular Xtallography Customized Beamline Environment. The project started in 2005 at ESRF, since then it has been adopted by other institutes in Europe. In 2010, a collaboration agreement has been signed for the development of MXCuBE with the following partners:

Latest information about the MXCuBE project can be found in the project webpage.

MXCuBE is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

MXCuBE is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with MXCuBE. If not, see https://www.gnu.org/licenses/.

Information for developers

Information for users

Oscarsson, M. et al. 2019. “MXCuBE2: The Dawn of MXCuBE Collaboration.” Journal of Synchrotron Radiation 26 (Pt 2): 393–405.

Gabadinho, J. et al. (2010). MxCuBE: a synchrotron beamline control environment customized for macromolecular crystallography experiments. J. Synchrotron Rad. 17, 700-707

ui-api's People

Contributors

ivarskarpics avatar jordiandreu avatar marcus-oscarsson avatar martinsavko avatar rhfogh avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ui-api's Issues

sample changer - discussion

We now have the sample changer proposal from Marcus. and the sample changer (among other things) from Martin. It would be nice to get the discussion started. I would summarise agreements and questions as follows (questions in bold):

Minimum requirement

  • mount(location)

  • unmount() # MO has unmount(location) - is the location mandatory/optional/unnecessary?

  • get_state()

  • get_sample_list() # MS calls it 'get_present_samples'

  • get_loaded_sample() # **NB MS does not have this, but surely this functionality is necessary? **

Command handling

MO has get_available_commands, get_command_state, execute_command. This has the advantage of being infinitely extendable, but the problem that no functionality can be assumed to be present (or consistently named) across sites.
Is there a need (and possibility) for some commands (e.g. abort) to be universally supported?

The commands proposed here, between MS and MO, are: on, off, abort, park, calibrate, dry, home, defreeze, reset_sample_number, change_gripper

Procedure dependent?

The MO and MS lists have commands that do not match and that may depend on what kind of procedures are envisaged - as a non-crystallographer I cannot have an opinion.
How do these fit into a universal UI?

  • get_error_message() # MS

  • prepare_sample_loading() # MS

  • select_location(location) # MO

  • scan_location(location) # MO

  • get_full_state() # MO

API implementation test with Qt4

Hi all,

I created a mini brick to test the sample changer interface:

sc_brick

In the header of file I have:

from api import sample_changer

api is a directory containing file sample_changer.py:

from HardwareRepository import HardwareRepository

hw_repository_client = HardwareRepository.HardwareRepository()
bl_setup_hwobj = hw_repository_client.getHardwareObject("beamline-setup")

def mount_sample(location, device_name=None, wait=False):

    Mounts sample from location
    Some sample delivery devices like yets could not have a difined locations,
    so location argument could be None.

    :param LocationStr location: location
    :returns: True if mount successful otherwise False
    :rtype: bool

    if not device_name:
        device = bl_setup_hwobj.sample_changer_hwobj
    else:
        device = getattr(bl_setup_hwobj, device_name + "_hwobj")

    device.load_sample(holder_length=None, sample_location=location)

def unmount_current_sample(device_name=None, location=None):

    Un-mounts mounted sample to location, un mounts the sample
    to where it was last mounted from if nothing is passed

    :param LocationStr location: location
    :returns: True if un-mount successful otherwise False
    :rtype: bool

    pass

We could use beamline-setup as container of all hardware objects. By default mount_sample method looks for sample_changer_hwobj and call related method. I added argument device_name because it may happen that several sample mount devices are available.

What do you think about this?

Help - accessing rejected pull requests

Pull request #7 has a lot of interesting discussion we should keep, but it would be easier to reject it and submit a new one, rather than to merge it and then totally change it by a new pull request.

Is there a way to keep the discussion without accepting the PR?

Rasmus

Actuators discussion

A couple of issues to discuss:

  • 1 Do we agree that all actuators belong to the beamline as such?

  • 2 Are we OK with the proposed system and set of commands?

  • 3 Names of centring and alignment motors.
    One would prefer some names that

       - Were independent of geometry and motor names at individual beamlines
    
       - Could be understood and mapped without explicit config mapping (if possible)
    
       - There are various considerations
    
          - The names should work for minikappa, full kappa, Smargon, and maybe Euler 
             geometries. (so maybe avoid 'kappa_phi' and go towards Omega, Kappa, Phi)?
    
          - The names should work for horizontal and vertical omega both 
             (which limits the use of 'horizontal' and 'vertical' for translation motors)
    
          - One of the alignment motors doubles as one of the centring motors. 
            Which one, and how to determine it? 
            Also, one of the alignment motors doubles as the focus motor on some beamline. 
    

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.