Startup
This commit is contained in:
139
script/__Lib/diffcalc-2.1/diffcalc/hkl/vlieg/hkl.py
Executable file
139
script/__Lib/diffcalc-2.1/diffcalc/hkl/vlieg/hkl.py
Executable file
@@ -0,0 +1,139 @@
|
||||
###
|
||||
# Copyright 2008-2011 Diamond Light Source Ltd.
|
||||
# This file is part of Diffcalc.
|
||||
#
|
||||
# Diffcalc is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Diffcalc 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Diffcalc. If not, see <http://www.gnu.org/licenses/>.
|
||||
###
|
||||
|
||||
from diffcalc.hkl.common import getNameFromScannableOrString
|
||||
from diffcalc.util import command
|
||||
from diffcalc import settings
|
||||
|
||||
|
||||
from diffcalc.ub import ub
|
||||
from diffcalc.hkl.vlieg.calc import VliegHklCalculator
|
||||
|
||||
|
||||
__all__ = ['hklmode', 'setpar', 'trackalpha', 'trackgamma', 'trackphi',
|
||||
'parameter_manager', 'hklcalc']
|
||||
|
||||
|
||||
hklcalc = VliegHklCalculator(ub.ubcalc, settings.geometry, settings.hardware)
|
||||
|
||||
parameter_manager = hklcalc.parameter_manager
|
||||
|
||||
def __str__(self):
|
||||
return hklcalc.__str__()
|
||||
|
||||
@command
|
||||
def hklmode(num=None):
|
||||
"""hklmode {num} -- changes mode or shows current and available modes and all settings""" #@IgnorePep8
|
||||
|
||||
if num is None:
|
||||
print hklcalc.__str__()
|
||||
else:
|
||||
hklcalc.mode_selector.setModeByIndex(int(num))
|
||||
pm = hklcalc.parameter_manager
|
||||
print (hklcalc.mode_selector.reportCurrentMode() + "\n" +
|
||||
pm.reportParametersUsedInCurrentMode())
|
||||
|
||||
def _setParameter(name, value):
|
||||
hklcalc.parameter_manager.set_constraint(name, value)
|
||||
|
||||
def _getParameter(name):
|
||||
return hklcalc.parameter_manager.get_constraint(name)
|
||||
|
||||
@command
|
||||
def setpar(scannable_or_string=None, val=None):
|
||||
"""setpar {parameter_scannable {{val}} -- sets or shows a parameter'
|
||||
setpar {parameter_name {val}} -- sets or shows a parameter'
|
||||
"""
|
||||
|
||||
if scannable_or_string is None:
|
||||
#show all
|
||||
parameterDict = hklcalc.parameter_manager.getParameterDict()
|
||||
names = parameterDict.keys()
|
||||
names.sort()
|
||||
for name in names:
|
||||
print _representParameter(name)
|
||||
else:
|
||||
name = getNameFromScannableOrString(scannable_or_string)
|
||||
if val is None:
|
||||
_representParameter(name)
|
||||
else:
|
||||
oldval = _getParameter(name)
|
||||
_setParameter(name, float(val))
|
||||
print _representParameter(name, oldval, float(val))
|
||||
|
||||
def _representParameter(name, oldval=None, newval=None):
|
||||
flags = ''
|
||||
if hklcalc.parameter_manager.isParameterTracked(name):
|
||||
flags += '(tracking hardware) '
|
||||
if settings.geometry.parameter_fixed(name): # @UndefinedVariable
|
||||
flags += '(fixed by geometry) '
|
||||
pm = hklcalc.parameter_manager
|
||||
if not pm.isParameterUsedInSelectedMode(name):
|
||||
flags += '(not relevant in this mode) '
|
||||
if oldval is None:
|
||||
val = _getParameter(name)
|
||||
if val is None:
|
||||
val = "---"
|
||||
else:
|
||||
val = str(val)
|
||||
return "%s: %s %s" % (name, val, flags)
|
||||
else:
|
||||
return "%s: %s --> %f %s" % (name, oldval, newval, flags)
|
||||
|
||||
def _checkInputAndSetOrShowParameterTracking(name, b=None):
|
||||
"""
|
||||
for track-parameter commands: If no args displays parameter settings,
|
||||
otherwise sets the tracking switch for the given parameter and displays
|
||||
settings.
|
||||
"""
|
||||
# set if arg given
|
||||
if b is not None:
|
||||
hklcalc.parameter_manager.setTrackParameter(name, b)
|
||||
# Display:
|
||||
lastValue = _getParameter(name)
|
||||
if lastValue is None:
|
||||
lastValue = "---"
|
||||
else:
|
||||
lastValue = str(lastValue)
|
||||
flags = ''
|
||||
if hklcalc.parameter_manager.isParameterTracked(name):
|
||||
flags += '(tracking hardware)'
|
||||
print "%s: %s %s" % (name, lastValue, flags)
|
||||
|
||||
@command
|
||||
def trackalpha(b=None):
|
||||
"""trackalpha {boolean} -- determines wether alpha parameter will track alpha axis""" #@IgnorePep8
|
||||
_checkInputAndSetOrShowParameterTracking('alpha', b)
|
||||
|
||||
@command
|
||||
def trackgamma(b=None):
|
||||
"""trackgamma {boolean} -- determines wether gamma parameter will track alpha axis""" #@IgnorePep8
|
||||
_checkInputAndSetOrShowParameterTracking('gamma', b)
|
||||
|
||||
@command
|
||||
def trackphi(b=None):
|
||||
"""trackphi {boolean} -- determines wether phi parameter will track phi axis""" #@IgnorePep8
|
||||
_checkInputAndSetOrShowParameterTracking('phi', b)
|
||||
|
||||
|
||||
commands_for_help = ['Mode',
|
||||
hklmode,
|
||||
setpar,
|
||||
trackalpha,
|
||||
trackgamma,
|
||||
trackphi]
|
||||
Reference in New Issue
Block a user