Beamline experiments with BLISS @ ESRF
presented by Matias Guijarro - BLISS team
Beamline Control Unit / Software Group
ESRF, Grenoble, France
17th Biennial International Conference on
Accelerator and Large Experimental Physics
ESRF Extremely Brilliant Source (EBS) update program
4th generation light source
150 M€ investment (2015-2022)
100x better
X-ray beams
New
state-of-the-art
beamlines
Data as a Service strategy
Beamline Instrumentation Support Software
BLISS project goals
State-of-the-art beamline control
Advanced scans, Trajectories,
Data management
Integrated environment
Configuration, Command Line Interface, Live Data Display
Ready for new challenges
Online data analysis, live feedback, extensibility of the system
BLISS philosophy
Python (3.7=>) everywhere
Software library first,
with a set of tools built upon
To provide a generic scan engine
for all kind of data acquisition procedures
Producer/Consumer model for Data Management, to decouple acquisition and data storage
online data analysis
data visualisation
data archiving
Beacon server
BLISS modular architecture
1
2
3
Web interface for configuration editing
Beacon server
.yml
Devices & sequences configuration in YAML format
User sessions to group beamline devices for an experiment, Python setup file
Can replace TANGO DB
to have all beamline configuration at the same place
Beacon server
configuration
+ services based on
Message broker: data channels,
distributed lock
Transient data store
Settings cache
1
Centralized logging and log viewer web application
BLISS scan engine
synchronization
low latency
flexibility
2
BLISS scan framework
2
Acquisition Chain
tree with master and slave nodes
Acquisition Master
triggers data acquisition
Acquisition Slave
takes data
(can also take data)
Acquisition Channel
Acquisition Channel
BLISS scan example
Continuous scan with a motor triggering MCA and 2D detector acquisition, while a timer triggers diode readings
2
BLISS online data publishing
While a scan is running, data is published to the redis database provided by Beacon
scalar values are stored directly
bigger data (images, spectra) is just referenced
configurable time to live (TTL)
Any external process can access redis data to perform online data analysis or live feedback for example
3
BLISS scan data flow
3
Acquisition chain
Channels
BLISS development
BLISS development methodology
Prioritized
todo
Analysis phase
Coding
Integration tests
Ready to merge
new features
bug fixes
backlog
(tasks)
Kanban
BLISS project development tools
Issues list, Kanban board, wiki, and more on
ESRF-hosted gitlab
Continuous Integration:
gitlab-ci
Deployment:
Documentation:
MkDocs
Code formatting: Black
Sharing knowledge within the BLISS team
Daily stand-ups
Pair programming
"Stop and Solve" meetings
Guidelines, good practices
(very useful for newcomers)
BLISS team ensures Quality Assurance
Automatic tests pipeline
(980+ tests)
Systematic code review
Only merge code with documentation
Integration tests on beamlines (real hardware)
Dealing with the technical debt
Technical debt = Tetris game
(you can't win)
Refactoring helps to fill the holes,
but with time penalty
ID31
BM32
ID21
ID15
ID13
ID11
ID10
BLISS deployment (2020)
Text
In 2018, first tests with users: MX, ID10, ID11, ID13, ID31
BM29
BM23
ID22
ID19
ID29
ID30A+B
ID23
ID26
Conclusion
BLISS is the new Python-based DAQ and experiments control system
BLISS is being designed for the needs of the EBS beamlines
Half of the beamlines are being converted to BLISS during the EBS shutdown (2019-2020)
Would be happy to start collaborations around BLISS with interested people
Acknowledgements
BLISS Core Development team
From left to right:
B. Formet (CEA), M. Guijarro,
P. Pancino, L. Pithan,
P. Guillou,
S. Petitdemange,
C. Guilloud
Beamline Operation team
A. Beteva, G. Berruyer, L. Claustre, S. Fisher, A. Homs, R. Homs, M-C. Lagier, A. Mauro, C. Muzelle, S. Ohlsson, M. Oscarsson, E. Papillon, F. Sever, V. Valls, H. Witsch
head of Software Group: A. Gotz, head of BCU: J. Meyer