Hello,
I
would like to introduce you to a new open source project
for scanning hardware and completing scientific
experiments. It has been donated to the Eclipse Foundation
as an incubation project and has number of interesting
features. The original project proposal can be read here:
https://projects.eclipse.org/proposals/scanning
However,
I would like to point out some of the things it can do to
you, as a subscriber to this list or person who has
expressed an interest in the past with the project.
![Solstice.png](jpg2dIJ1fiERy.jpg)
Scan
Paths
The
start of a scan is the scan path. It is a series of
n-Dimensional motor/scalar positions provided by a
generator pattern - we call them scan point generators.
The possible paths are created using a factory, with each
path requiring a model. The generators may be nested,
limited only by their ability to be addressed. The paths
scale to hundreds of millions of points because not all
points are created in memory at the start of the scan, so
really large scans are possible. The paths are defined in
Python to make it easy for scientists to create custom
generators on the fly, in the unlikely event that they
cannot achieve the type of scan required. Unlimited
regions of interest are allowed so the user may for
instance create a grid and then draw various shapes to
filter the scan points. A simple example of a scan path is
a snake scan running over a grid of 2D positions of a
stage motors for x and y.
Runnable
Devices and Scannable Devices
When
it comes time to run the scan, the motors and detectors
are represented in code by the simple interfaces
IRunnableDevice and IScannable. These classes are each
managed by an OSGi service which allows devices to be
added by a Spring layer or by creating and registering
them with the server in Python. Once they are added, they
provide the link to the hardware such as Area Detector or
EPICS PVs, you can then start to run scans.
Scanning
Algorithms
The
scanning algorithm is also part of a factory pattern and
allows users to override or create their own. The default
algorithm uses the power of Java Executor Service. It
splits up the devices by a concept known as level and uses
a fully multi-threaded design to move motors in the most
efficient way. Motors are moved while detectors are read
out and the file is written. For those motors in a 2D scan
which have a fast and slow axis on the same EPICS IOC, the
power of the scan path design means that the code can look
forwards to figure out each fast path segment and run
lines close to the theoretical maximum.
User
Interface
The
project comes with a complete user interface for creating
and running scans written in Eclipse RCP. The bundles
which contribute the UI are modular and may be removed for
those people without an RCP front end. The user interface
interacts seamlessly with the python layer giving the user
either the ability to submit without scripting or, for
advanced users, the ability to copy the scan command into
Python. It is easy to create Java-Swing, Python-QT or any
front end because the scanning system is driven externally
by JSON.
Python
and Malcolm
The
Scanning project is partly written in Python and partly
Java. Most of the C-python device layer is contributed in
a separate project called
pymalcolm
and
the project interacts with Malcolm devices (which are
IRunnableDevice) using the EPICSv4 protocol,
http://epics-pvdata.sourceforge.net/.
Eclipse
January, NeXus HDF5 -SWMR
Scanning
includes the implementation of the January concept
“ILazyWriteableDataset”. This means that if you are
creating a device, you only need depend on January and
your control layer (EPICS for instance). The device layer
is modular and multi-threaded so it allows the full speed
of HDF5-SWMR to be utilised without the need to mix up
HDF5 and device code.
Online
Analysis
For
the first time, online analysis has been considered and
designed into a scanning system from the start. This means
that online analysis codes running on the cluster can run
processing SWMR files on the data during the live data
collection. The user interface allows the choose between
different analysis or even create your own graphically
using DAWN and then deploy the analysis with the scan.
This is done efficiently using the new Single Write
Multiple Read (SWMR) HDF5 library.
Builds
and Tests
Scanning
does not skimp on tests, it has hundreds of tests
executing different scanning scenarios and different
device options. It checks operation of the algorithms with
machine topup and beam dump scenarios, it writes HDF5 SWMR
files and checks the supported scan point generators. It
gives the user interface composites a workover using
SWTBot. For the first time this layer has be abstracted
into a separately built (travisCi+maven) and
tested(travisCI+junit+sonarqube) project which enables
anyone to participate and contribute.
Getting
Started
If
you want to check out ‘Scanning’ and run it, providing you
are experienced with targets and products it is easy to
run by following these instructions:
https://github.com/eclipse/scanning/blob/master/GETTINGSTARTED.pdf
Sincerely,
Matthew
Gerring
--
This e-mail and any attachments may contain confidential,
copyright and or privileged material, and are for the use of
the intended addressee only. If you are not the intended
addressee or an authorised recipient of the addressee please
notify us of receipt by returning the e-mail and do not use,
copy, retain, distribute or disclose the information in or
attached to the e-mail.
Any opinions expressed within this e-mail are those of the
individual and not necessarily of Diamond Light Source Ltd.
Diamond Light Source Ltd. cannot guarantee that this e-mail
or any attachments are free from viruses and we cannot
accept liability for any damage which you may sustain as a
result of software viruses which may be transmitted in or
with the message.
Diamond Light Source Limited (company no. 4375679).
Registered in England and Wales with its registered office
at Diamond House, Harwell Science and Innovation Campus,
Didcot, Oxfordshire, OX11 0DE, United Kingdom
_______________________________________________
science-iwg mailing list
science-iwg@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/science-iwg