Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
bliss
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
494
Issues
494
List
Boards
Labels
Service Desk
Milestones
Jira
Jira
Merge Requests
135
Merge Requests
135
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Bliss
bliss
Commits
2a88a20f
Commit
2a88a20f
authored
Jan 22, 2020
by
Wout De Nolf
Committed by
Linus Pithan
Jan 28, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[writer] positioners have their own category
parent
c9b58b37
Pipeline
#20345
passed with stages
in 54 minutes and 23 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
24 additions
and
74 deletions
+24
-74
nexus_writer_service/subscribers/scan_writer_base.py
nexus_writer_service/subscribers/scan_writer_base.py
+17
-41
nexus_writer_service/subscribers/scan_writer_config.py
nexus_writer_service/subscribers/scan_writer_config.py
+0
-12
nexus_writer_service/subscribers/scan_writer_publish.py
nexus_writer_service/subscribers/scan_writer_publish.py
+0
-18
tests/nexus_writer/helpers/nxw_test_data.py
tests/nexus_writer/helpers/nxw_test_data.py
+7
-3
No files found.
nexus_writer_service/subscribers/scan_writer_base.py
View file @
2a88a20f
...
...
@@ -356,13 +356,6 @@ class NexusScanWriterBase(base_subscriber.BaseSubscriber):
else
:
return
[]
@
property
def
instrument_info
(
self
):
"""
Instrument information publish by the Bliss core library
"""
return
self
.
get_info
(
"instrument"
,
default
=
{})
@
property
def
config_devices
(
self
):
return
{}
...
...
@@ -903,6 +896,14 @@ class NexusScanWriterBase(base_subscriber.BaseSubscriber):
def
instrument_name
(
self
):
return
""
@
property
def
positioner_info
(
self
):
return
self
.
get_info
(
"positioners"
,
{})
@
property
def
motors
(
self
):
return
list
(
self
.
positioner_info
.
get
(
"positioners_start"
,
{}).
keys
())
@
contextmanager
def
nxinstrument
(
self
,
subscan
):
"""
...
...
@@ -1683,51 +1684,35 @@ class NexusScanWriterBase(base_subscriber.BaseSubscriber):
if
dproxy
.
data_type
!=
"principal"
:
yield
fullname
,
dproxy
@
property
def
positioners_start
(
self
):
positioners
=
self
.
instrument_info
.
get
(
"positioners"
,
{})
units
=
self
.
instrument_info
.
get
(
"positioners_units"
,
{})
return
positioners
,
units
@
property
def
positioners_dial_start
(
self
):
positioners
=
self
.
instrument_info
.
get
(
"positioners_dial"
,
{})
units
=
self
.
instrument_info
.
get
(
"positioners_units"
,
{})
return
positioners
,
units
@
property
def
positioners_end
(
self
):
return
{},
{}
@
property
def
positioners_dial_end
(
self
):
return
{},
{}
def
_save_positioners
(
self
,
subscan
):
"""
Save fixed snapshots of motor positions.
:param Subscan subscan:
"""
info
=
self
.
positioner_info
units
=
info
.
get
(
"positioners_units"
,
{})
# Positions at the beginning of the scan
positioners
,
units
=
self
.
positioners_start
positioners
=
info
.
get
(
"positioners_start"
,
{})
subscan
.
logger
.
info
(
"Save {} motor positions"
.
format
(
len
(
positioners
)))
self
.
_save_positioners_snapshot
(
subscan
,
positioners
,
units
,
"_start"
,
overwrite
=
False
)
self
.
_save_positioners_snapshot
(
subscan
,
positioners
,
units
,
""
,
overwrite
=
False
)
positioners
,
units
=
self
.
positioners_dial_start
positioners
=
info
.
get
(
"positioners_dial_start"
,
{})
self
.
_save_positioners_snapshot
(
subscan
,
positioners
,
units
,
"_dial_start"
,
overwrite
=
False
)
# Positions at the end of the scan
positioners
,
units
=
self
.
positioners_end
positioners
=
info
.
get
(
"positioners_end"
,
{})
self
.
_save_positioners_snapshot
(
subscan
,
positioners
,
units
,
"_end"
,
overwrite
=
True
)
positioners
,
units
=
self
.
positioners_dial_end
positioners
=
info
.
get
(
"positioners_dial_end"
,
{})
self
.
_save_positioners_snapshot
(
subscan
,
positioners
,
units
,
"_dial_end"
,
overwrite
=
True
)
...
...
@@ -1749,11 +1734,6 @@ class NexusScanWriterBase(base_subscriber.BaseSubscriber):
with
self
.
nxpositioners
(
subscan
,
suffix
=
suffix
)
as
nxpositioners
:
if
nxpositioners
is
None
:
return
subscan
.
logger
.
info
(
"Save motor positions snapshot {} (overwrite: {})"
.
format
(
repr
(
nexus
.
h5Name
(
nxpositioners
)),
overwrite
)
)
for
mot
,
pos
in
positions
.
items
():
unit
=
units
.
get
(
mot
,
None
)
exists
=
mot
in
nxpositioners
...
...
@@ -1802,8 +1782,7 @@ class NexusScanWriterBase(base_subscriber.BaseSubscriber):
# Positioners should always be there under
# a different name when not in positioners
# snapshot
motors
=
self
.
instrument_info
.
get
(
"positioners"
,
{})
if
linkname
not
in
motors
:
if
linkname
not
in
self
.
motors
:
linknames
.
append
(
"pos_"
+
linkname
)
# Principle positioners which are masters should
# be there under their normal name
...
...
@@ -1846,9 +1825,6 @@ class NexusScanWriterBase(base_subscriber.BaseSubscriber):
scan_meta
=
{}
for
cat
in
categories
:
add
=
info
.
get
(
cat
,
{})
if
cat
==
"instrument"
:
# TODO: remove when positioners are outside
add
.
pop
(
"positioners"
)
if
set
(
add
.
keys
())
-
{
"NX_class"
,
"@NX_class"
}:
scan_meta
[
cat
]
=
add
if
scan_meta
:
...
...
nexus_writer_service/subscribers/scan_writer_config.py
View file @
2a88a20f
...
...
@@ -134,18 +134,6 @@ class NexusScanWriterConfigurable(scan_writer_base.NexusScanWriterBase):
)
return
signaldict
@
property
def
positioners_end
(
self
):
positioners
=
self
.
config_writer
.
get
(
"positioners"
,
{})
units
=
self
.
config_writer
.
get
(
"positioners_units"
,
{})
return
positioners
,
units
@
property
def
positioners_dial_end
(
self
):
positioners
=
self
.
config_writer
.
get
(
"positioners_dial"
,
{})
units
=
self
.
config_writer
.
get
(
"positioners_units"
,
{})
return
positioners
,
units
def
_init_subscan
(
self
,
subscan
):
"""
Things that can already be saved right after
...
...
nexus_writer_service/subscribers/scan_writer_publish.py
View file @
2a88a20f
...
...
@@ -42,31 +42,13 @@ def register_metadata_generators(generators):
:param bliss.scanning.scan_meta.ScanMeta generators:
"""
instrument
=
generators
.
instrument
instrument
.
set
(
"positioners"
,
fill_positioners
)
# start of scan
generators
=
generators
.
nexuswriter
generators
.
set
(
"instrument"
,
fill_instrument_name
)
generators
.
set
(
"positioners"
,
fill_positioners
)
# end of scan
generators
.
set
(
"device_info"
,
fill_device_info
)
generators
.
set
(
"technique"
,
fill_technique_info
)
generators
.
set
(
"filenames"
,
fill_filenames
)
def
fill_positioners
(
scan
):
"""
:param bliss.scanning.scan.Scan scan:
"""
logger
.
debug
(
"fill motor positions"
)
data
=
{}
data
[
"positioners"
]
=
positions
=
{}
data
[
"positioners_dial"
]
=
dials
=
{}
data
[
"positioners_units"
]
=
units
=
{}
for
name
,
pos
,
dial
,
unit
in
global_map
.
get_axes_positions_iter
(
on_error
=
"ERR"
):
positions
[
name
]
=
pos
dials
[
name
]
=
dial
units
[
name
]
=
unit
return
data
def
fill_instrument_name
(
scan
):
"""
:param bliss.scanning.scan.Scan scan:
...
...
tests/nexus_writer/helpers/nxw_test_data.py
View file @
2a88a20f
...
...
@@ -327,9 +327,13 @@ def validate_instrument(
:param str master_name:
"""
# Positioner groups
expected_posg
=
{
"positioners"
,
"positioners_start"
,
"positioners_dial_start"
}
if
config
:
expected_posg
|=
{
"positioners_end"
,
"positioners_dial_end"
}
expected_posg
=
{
"positioners"
,
"positioners_start"
,
"positioners_dial_start"
,
"positioners_end"
,
"positioners_dial_end"
,
}
# Detectors
expected_dets
=
expected_detectors
(
config
=
config
,
technique
=
technique
,
detectors
=
detectors
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment