Esempio n. 1
0
 def setup_method(self):
     diffcalc.util.COLOURISE_TERMINAL_OUTPUT = False
     self.hardware_monitor = Mock()
     self.hardware_monitor.get_position.return_value = (1., ) * 6
     self.hardware_monitor.get_axes_names.return_value = [
         'mu', 'delta', NUNAME, 'eta', 'chi', 'phi'
     ]
     self.cm = YouConstraintManager(self.hardware_monitor)
Esempio n. 2
0
 def test_build_initial_display_table_with_fixed_detector(self):
     self.cm = YouConstraintManager(None, {NUNAME: 0})
     print self.cm.build_display_table_lines()
     eq_(self.cm.build_display_table_lines(), [
         '    REF        SAMP', '    ------     ------',
         '    a_eq_b     mu', '    alpha      eta', '    beta       chi',
         '    psi        phi'
     ])
Esempio n. 3
0
 def test_build_initial_display_table_for_four_circle(self):
     self.cm = YouConstraintManager(None, {'mu': 0, NUNAME: 0})
     print self.cm.build_display_table_lines()
     eq_(self.cm.build_display_table_lines(), [
         '    REF        SAMP', '    ------     ------',
         '    a_eq_b     eta', '    alpha      chi', '    beta       phi',
         '    psi'
     ])
Esempio n. 4
0
 def test_build_initial_display_table_with_fixed_sample(self):
     self.cm = YouConstraintManager(None, {'mu': 0})
     print self.cm.build_display_table_lines()
     eq_(self.cm.build_display_table_lines(), [
         '    DET        REF        SAMP',
         '    ------     ------     ------',
         '    delta      a_eq_b     eta',
         '    %s     alpha      chi' % NUNAME.ljust(6),
         '    qaz        beta       phi', '    naz        psi'
     ])
Esempio n. 5
0
 def setup_method(self):
     diffcalc.util.COLOURISE_TERMINAL_OUTPUT = False
     self.hardware_monitor = Mock()
     self.hardware_monitor.get_position.return_value = (1.,) * 6
     self.hardware_monitor.get_axes_names.return_value = [
                                   'mu', 'delta', NUNAME, 'eta', 'chi', 'phi']
     self.cm = YouConstraintManager(self.hardware_monitor)
 def test_build_initial_display_table_for_four_circle(self):
     self.cm = YouConstraintManager(None, {'mu': 0, NUNAME: 0})
     print self.cm.build_display_table_lines()
     eq_(self.cm.build_display_table_lines(),
         ['    REF        SAMP',
          '    ======     ======',
          '    a_eq_b     eta',
          '    alpha      chi',
          '    beta       phi',
          '    psi'])
 def test_build_initial_display_table_with_fixed_detector(self):
     self.cm = YouConstraintManager(None, {NUNAME: 0})
     print self.cm.build_display_table_lines()
     eq_(self.cm.build_display_table_lines(),
         ['    REF        SAMP',
          '    ======     ======',
          '    a_eq_b     mu',
          '    alpha      eta',
          '    beta       chi',
          '    psi        phi'])
 def test_build_initial_display_table_with_fixed_sample(self):
     self.cm = YouConstraintManager(None, {'mu': 0})
     print self.cm.build_display_table_lines()
     eq_(self.cm.build_display_table_lines(),
         ['    DET        REF        SAMP',
          '    ======     ======     ======',
          '    delta      a_eq_b     eta',
          '    %s     alpha      chi' % NUNAME.ljust(6),
          '    qaz        beta       phi',
          '    naz        psi'])
Esempio n. 9
0
    def setup_method(self):
        self.mock_ubcalc = createMockUbcalc(None)
        self.mock_geometry = createMockDiffractometerGeometry()
        names = ['delta', NUNAME, 'mu', 'eta', 'chi', 'phi']
        self.mock_hardware = SimpleHardwareAdapter(names)
        self.constraints = YouConstraintManager(self.mock_hardware)
        self.calc = YouHklCalculator(self.mock_ubcalc, self.mock_geometry,
                                     self.mock_hardware, self.constraints)

        self.mock_hardware.set_lower_limit('delta', 0)
        self.mock_hardware.set_upper_limit('delta', 179.999)
        self.mock_hardware.set_lower_limit(NUNAME, 0)
        self.mock_hardware.set_upper_limit(NUNAME, 179.999)
        self.mock_hardware.set_lower_limit('mu', 0)
        self.mock_hardware.set_lower_limit('eta', 0)
        self.mock_hardware.set_lower_limit('chi', -10)

        self.places = 11
class TestConstraintManagerWithFourCircles:

    def setUp(self):
        self.cm = YouConstraintManager(None, {NUNAME: 0, 'mu': 0})    

    def test_init(self):
        eq_(self.cm.all, {NUNAME: 0, 'mu': 0})
        eq_(self.cm.detector, {NUNAME: 0})
        eq_(self.cm.reference, {})
        eq_(self.cm.sample, {'mu': 0})
        eq_(self.cm.naz, {})

    def test_build_initial_display_table_with_fixed_detector(self):
        self.cm = YouConstraintManager(None, {NUNAME: 0})
        print self.cm.build_display_table_lines()
        eq_(self.cm.build_display_table_lines(),
            ['    REF        SAMP',
             '    ======     ======',
             '    a_eq_b     mu',
             '    alpha      eta',
             '    beta       chi',
             '    psi        phi'])
        
    def test_build_initial_display_table_with_fixed_sample(self):
        self.cm = YouConstraintManager(None, {'mu': 0})
        print self.cm.build_display_table_lines()
        eq_(self.cm.build_display_table_lines(),
            ['    DET        REF        SAMP',
             '    ======     ======     ======',
             '    delta      a_eq_b     eta',
             '    %s     alpha      chi' % NUNAME.ljust(6),
             '    qaz        beta       phi',
             '    naz        psi'])
        
    def test_build_initial_display_table_for_four_circle(self):
        self.cm = YouConstraintManager(None, {'mu': 0, NUNAME: 0})
        print self.cm.build_display_table_lines()
        eq_(self.cm.build_display_table_lines(),
            ['    REF        SAMP',
             '    ======     ======',
             '    a_eq_b     eta',
             '    alpha      chi',
             '    beta       phi',
             '    psi'])
        
    def test_constrain_fixed_detector_angle(self):
        assert_raises(DiffcalcException, self.cm.constrain, 'delta')
        assert_raises(DiffcalcException, self.cm.constrain, NUNAME)
        assert_raises(DiffcalcException, self.cm.constrain, 'naz')
        assert_raises(DiffcalcException, self.cm.constrain, 'qaz')

    def test_unconstrain_fixed_detector_angle(self):
        assert_raises(DiffcalcException, self.cm.unconstrain, 'delta')
        assert_raises(DiffcalcException, self.cm.unconstrain, NUNAME)
        assert_raises(DiffcalcException, self.cm.unconstrain, 'naz')
        assert_raises(DiffcalcException, self.cm.unconstrain, 'qaz')
        
    def test_set_constrain_fixed_detector_angle(self):
        assert_raises(DiffcalcException, self.cm.set_constraint, 'delta', 0)
        assert_raises(DiffcalcException, self.cm.set_constraint, NUNAME, 0)
        assert_raises(DiffcalcException, self.cm.set_constraint, 'naz', 0)
        assert_raises(DiffcalcException, self.cm.set_constraint, 'qaz', 0)
    
    @raises(DiffcalcException)
    def test_constrain_fixed_sample_angle(self):
        self.cm.constrain('mu')

    @raises(DiffcalcException)
    def test_unconstrain_fixed_sample_angle(self):
        self.cm.unconstrain('mu')

    @raises(DiffcalcException)
    def test_set_constrain_fixed_sample_angle(self):
        self.cm.set_constraint('mu', 0)
 def setUp(self):
     self.cm = YouConstraintManager(None, {NUNAME: 0, 'mu': 0})    
class TestConstraintManager:

    def setUp(self):
        self.hardware_monitor = Mock()
        self.hardware_monitor.get_position.return_value = (1.,) * 6
        self.hardware_monitor.get_axes_names.return_value = [
                                      'mu', 'delta', NUNAME, 'eta', 'chi', 'phi']
        self.cm = YouConstraintManager(self.hardware_monitor)

    def test_init(self):
        eq_(self.cm.all, {})
        eq_(self.cm.detector, {})
        eq_(self.cm.reference, {})
        eq_(self.cm.sample, {})
        eq_(self.cm.naz, {})

    def test_build_display_table(self):
        self.cm.constrain('qaz')
        self.cm.constrain('alpha')
        self.cm.constrain('eta')
        self.cm.set_constraint('qaz', 1.234)
        self.cm.set_constraint('eta', 99.)
        print self.cm.build_display_table_lines()
        eq_(self.cm.build_display_table_lines(),
            ['    DET        REF        SAMP',
             '    ======     ======     ======',
             '    delta      a_eq_b     mu',
             '    %s o-> alpha  --> eta' % NUNAME.ljust(6),
             '--> qaz        beta       chi',
             '    naz        psi        phi',
             '                          mu_is_%s' % NUNAME])


#"""
#    DET        REF        SAMP                  Available:
#    ======     ======     ======
#    delta      a_eq_b     mu                    3x samp:         80 of 80
#    nu     o-> alpha  --> eta                   2x samp and ref: chi & phi
#--> qaz        beta       chi                                    mu & eta
#    naz        psi        phi                                    chi=90 & mu=0
#                          mu_is_nu              2x samp and det: 0 of 6
#                                                3x samp:         0 of 4
#"""[1:-1]

    def test_unconstrain_okay(self):
        eq_(self.cm.all, {})
        self.cm.constrain('delta')
        self.cm.constrain('mu')
        eq_(self.cm.all, {'delta': None, 'mu': None})
        eq_(self.cm.unconstrain('delta'), None)
        eq_(self.cm.all, {'mu': None})
        
    def test_clear_constraints(self):
        self.cm.constrain('delta')
        self.cm.constrain('mu')
        self.cm.clear_constraints()
        eq_(self.cm.all, {})

    def test_unconstrain_bad(self):
        eq_(self.cm.all, {})
        eq_(self.cm.unconstrain('delta'), "Delta was not already constrained.")

    def test_constrain_det(self, pre={}):
        eq_(self.cm.all, pre)
        eq_(self.cm.constrain('delta'), None)
        eq_(self.cm.all, joined({'delta': None}, pre))
        eq_(self.cm.constrain('delta'), 'Delta is already constrained.')
        eq_(self.cm.all, joined({'delta': None}, pre))
        eq_(self.cm.constrain('naz'), 'Delta constraint replaced.')
        eq_(self.cm.all, joined({'naz': None}, pre))
        eq_(self.cm.constrain('delta'), 'Naz constraint replaced.')
        eq_(self.cm.all, joined({'delta': None}, pre))

    def test_constrain_det_one_preexisting_ref(self):
        self.cm.constrain('alpha')
        self.test_constrain_det({'alpha': None})

    def test_constrain_det_one_preexisting_samp(self):
        self.cm.constrain('phi')
        self.test_constrain_det({'phi': None})

    def test_constrain_det_one_preexisting_samp_and_ref(self):
        self.cm.constrain('alpha')
        self.cm.constrain('phi')
        self.test_constrain_det({'alpha': None, 'phi': None})

    def test_constrain_det_two_preexisting_samp(self):
        self.cm.constrain('chi')
        self.cm.constrain('phi')
        self.test_constrain_det({'chi': None, 'phi': None})

    def test_constrain_det_three_preexisting_other(self):
        self.cm.constrain('alpha')
        self.cm.constrain('phi')
        self.cm.constrain('chi')
        try:
            self.cm.constrain('delta')
            assert False
        except DiffcalcException, e:
            eq_(e.args[0], (
                "Delta could not be constrained. First un-constrain one of the"
                "\nangles alpha, chi or phi (with 'uncon')"))
 def setUp(self):
     self.hardware_monitor = Mock()
     self.hardware_monitor.get_position.return_value = (1.,) * 6
     self.hardware_monitor.get_axes_names.return_value = [
                                   'mu', 'delta', NUNAME, 'eta', 'chi', 'phi']
     self.cm = YouConstraintManager(self.hardware_monitor)
Esempio n. 14
0
 def setup_method(self):
     self.cm = YouConstraintManager(None, {NUNAME: 0, 'mu': 0})    
Esempio n. 15
0
from __future__ import absolute_import

from diffcalc.hkl.common import getNameFromScannableOrString
from diffcalc.util import command
from diffcalc.hkl.you.calc import YouHklCalculator
from diffcalc import settings

import diffcalc.ub.ub
from diffcalc.hkl.you.constraints import YouConstraintManager

__all__ = ['allhkl', 'con', 'uncon', 'hklcalc', 'constraint_manager']

_fixed_constraints = settings.geometry.fixed_constraints  # @UndefinedVariable

constraint_manager = YouConstraintManager(_fixed_constraints)

hklcalc = YouHklCalculator(diffcalc.ub.ub.ubcalc, constraint_manager)


def __str__(self):
    return hklcalc.__str__()


@command
def con(*args):
    """
    con -- list available constraints and values
    con <name> {val} -- constrains and optionally sets one constraint
    con <name> {val} <name> {val} <name> {val} -- clears and then fully constrains
Esempio n. 16
0
from __future__ import absolute_import

from diffcalc.hkl.common import getNameFromScannableOrString
from diffcalc.util import command
from diffcalc.hkl.you.calc import YouHklCalculator
from diffcalc import settings

import diffcalc.ub.ub
from diffcalc.hkl.you.constraints import YouConstraintManager

__all__ = ['allhkl', 'con', 'uncon', 'hklcalc', 'constraint_manager']

_fixed_constraints = settings.geometry.fixed_constraints  # @UndefinedVariable

constraint_manager = YouConstraintManager(settings.hardware,
                                          _fixed_constraints)

hklcalc = YouHklCalculator(diffcalc.ub.ub.ubcalc, settings.geometry,
                           settings.hardware, constraint_manager)


def __str__(self):
    return hklcalc.__str__()


@command
def con(*args):
    """
    con -- list available constraints and values
    con <name> {val} -- constrains and optionally sets one constraint
    con <name> {val} <name> {val} <name> {val} -- clears and then fully constrains
 def setup_method(self):
     diffcalc.util.COLOURISE_TERMINAL_OUTPUT = False
     self.cm = YouConstraintManager()
     settings.geometry = SixCircle()
Esempio n. 18
0
class TestConstraintManager:
    def setup_method(self):
        diffcalc.util.COLOURISE_TERMINAL_OUTPUT = False
        self.hardware_monitor = Mock()
        self.hardware_monitor.get_position.return_value = (1., ) * 6
        self.hardware_monitor.get_axes_names.return_value = [
            'mu', 'delta', NUNAME, 'eta', 'chi', 'phi'
        ]
        self.cm = YouConstraintManager(self.hardware_monitor)

    def test_init(self):
        eq_(self.cm.all, {})
        eq_(self.cm.detector, {})
        eq_(self.cm.reference, {})
        eq_(self.cm.sample, {})
        eq_(self.cm.naz, {})

    def test_build_display_table(self):
        self.cm.constrain('qaz')
        self.cm.constrain('alpha')
        self.cm.constrain('eta')
        self.cm.set_constraint('qaz', 1.234)
        self.cm.set_constraint('eta', 99.)
        print '\n'.join(self.cm.build_display_table_lines())
        eq_(self.cm.build_display_table_lines(), [
            '    DET        REF        SAMP',
            '    ------     ------     ------', '    delta      a_eq_b     mu',
            '    %s o-> alpha  --> eta' % NUNAME.ljust(6),
            '--> qaz        beta       chi', '    naz        psi        phi',
            '                          mu_is_%s' % NUNAME
        ])

#"""
#    DET        REF        SAMP                  Available:
#    ======     ======     ======
#    delta      a_eq_b     mu                    3x samp:         80 of 80
#    nu     o-> alpha  --> eta                   2x samp and ref: chi & phi
#--> qaz        beta       chi                                    mu & eta
#    naz        psi        phi                                    chi=90 & mu=0
#                          mu_is_nu              2x samp and det: 0 of 6
#                                                3x samp:         0 of 4
#"""[1:-1]

    def test_unconstrain_okay(self):
        eq_(self.cm.all, {})
        self.cm.constrain('delta')
        self.cm.constrain('mu')
        eq_(self.cm.all, {'delta': None, 'mu': None})
        eq_(self.cm.unconstrain('delta'), None)
        eq_(self.cm.all, {'mu': None})

    def test_clear_constraints(self):
        self.cm.constrain('delta')
        self.cm.constrain('mu')
        self.cm.clear_constraints()
        eq_(self.cm.all, {})

    def test_unconstrain_bad(self):
        eq_(self.cm.all, {})
        eq_(self.cm.unconstrain('delta'), "Delta was not already constrained.")

    def test_constrain_det(self, pre={}):
        eq_(self.cm.all, pre)
        eq_(self.cm.constrain('delta'), None)
        eq_(self.cm.all, joined({'delta': None}, pre))
        eq_(self.cm.constrain('delta'), 'Delta is already constrained.')
        eq_(self.cm.all, joined({'delta': None}, pre))
        eq_(self.cm.constrain('naz'), 'Delta constraint replaced.')
        eq_(self.cm.all, joined({'naz': None}, pre))
        eq_(self.cm.constrain('delta'), 'Naz constraint replaced.')
        eq_(self.cm.all, joined({'delta': None}, pre))

    def test_constrain_det_one_preexisting_ref(self):
        self.cm.constrain('alpha')
        self.test_constrain_det({'alpha': None})

    def test_constrain_det_one_preexisting_samp(self):
        self.cm.constrain('phi')
        self.test_constrain_det({'phi': None})

    def test_constrain_det_one_preexisting_samp_and_ref(self):
        self.cm.constrain('alpha')
        self.cm.constrain('phi')
        self.test_constrain_det({'alpha': None, 'phi': None})

    def test_constrain_det_two_preexisting_samp(self):
        self.cm.constrain('chi')
        self.cm.constrain('phi')
        self.test_constrain_det({'chi': None, 'phi': None})

    def test_constrain_det_three_preexisting_other(self):
        self.cm.constrain('alpha')
        self.cm.constrain('phi')
        self.cm.constrain('chi')
        try:
            self.cm.constrain('delta')
            assert False
        except DiffcalcException, e:
            eq_(e.args[0], (
                "Delta could not be constrained. First un-constrain one of the"
                "\nangles alpha, chi or phi (with 'uncon')"))
Esempio n. 19
0
class TestConstraintManagerWithFourCircles:
    def setup_method(self):
        self.cm = YouConstraintManager(None, {NUNAME: 0, 'mu': 0})

    def test_init(self):
        eq_(self.cm.all, {NUNAME: 0, 'mu': 0})
        eq_(self.cm.detector, {NUNAME: 0})
        eq_(self.cm.reference, {})
        eq_(self.cm.sample, {'mu': 0})
        eq_(self.cm.naz, {})

    def test_build_initial_display_table_with_fixed_detector(self):
        self.cm = YouConstraintManager(None, {NUNAME: 0})
        print self.cm.build_display_table_lines()
        eq_(self.cm.build_display_table_lines(), [
            '    REF        SAMP', '    ------     ------',
            '    a_eq_b     mu', '    alpha      eta', '    beta       chi',
            '    psi        phi'
        ])

    def test_build_initial_display_table_with_fixed_sample(self):
        self.cm = YouConstraintManager(None, {'mu': 0})
        print self.cm.build_display_table_lines()
        eq_(self.cm.build_display_table_lines(), [
            '    DET        REF        SAMP',
            '    ------     ------     ------',
            '    delta      a_eq_b     eta',
            '    %s     alpha      chi' % NUNAME.ljust(6),
            '    qaz        beta       phi', '    naz        psi'
        ])

    def test_build_initial_display_table_for_four_circle(self):
        self.cm = YouConstraintManager(None, {'mu': 0, NUNAME: 0})
        print self.cm.build_display_table_lines()
        eq_(self.cm.build_display_table_lines(), [
            '    REF        SAMP', '    ------     ------',
            '    a_eq_b     eta', '    alpha      chi', '    beta       phi',
            '    psi'
        ])

    def test_constrain_fixed_detector_angle(self):
        assert_raises(DiffcalcException, self.cm.constrain, 'delta')
        assert_raises(DiffcalcException, self.cm.constrain, NUNAME)
        assert_raises(DiffcalcException, self.cm.constrain, 'naz')
        assert_raises(DiffcalcException, self.cm.constrain, 'qaz')

    def test_unconstrain_fixed_detector_angle(self):
        assert_raises(DiffcalcException, self.cm.unconstrain, 'delta')
        assert_raises(DiffcalcException, self.cm.unconstrain, NUNAME)
        assert_raises(DiffcalcException, self.cm.unconstrain, 'naz')
        assert_raises(DiffcalcException, self.cm.unconstrain, 'qaz')

    def test_set_constrain_fixed_detector_angle(self):
        assert_raises(DiffcalcException, self.cm.set_constraint, 'delta', 0)
        assert_raises(DiffcalcException, self.cm.set_constraint, NUNAME, 0)
        assert_raises(DiffcalcException, self.cm.set_constraint, 'naz', 0)
        assert_raises(DiffcalcException, self.cm.set_constraint, 'qaz', 0)

    @raises(DiffcalcException)
    def test_constrain_fixed_sample_angle(self):
        self.cm.constrain('mu')

    @raises(DiffcalcException)
    def test_unconstrain_fixed_sample_angle(self):
        self.cm.unconstrain('mu')

    @raises(DiffcalcException)
    def test_set_constrain_fixed_sample_angle(self):
        self.cm.set_constraint('mu', 0)
Esempio n. 20
0
 def setup_method(self):
     self.cm = YouConstraintManager(None, {NUNAME: 0, 'mu': 0})