SlideShare a Scribd company logo
1 of 29
Download to read offline
Igor Khokhriakov
Integrated Control System Environment
for High-Throughput Tomography
@PETRAIII beamlines P05&P07.
ESRF, BCU Meeting, 24/11/16
http://ingvord.ru
Some facts:
●
JavaScript developer since 2007
●
Enterprise Java and Web developer since 2008
●
Tango developer since 2012
●
C++ developer since 2013
●
Tango kernel developer since 2016
X-Environment
PreExperiment Data Collector
FEATURES:
• Customizable on-the-fly view forms defined in YAML
• Different policies are applicable to the view forms: web, web-readonly, tango
• Supports different validations: number, double, string, text, required
• Provides tango access to data
• Offline clients
Status Server
FEATURES:
• Forms continuous timeline of the experiment
• Simple configuration, defined in XML
• Values can be obtained through event or polling mechanism
• Different interpolation strategies: last, nearest and linear
Mobile Status Server Client
• Monitor the ongoing experiment from a mobile device
• Review experiment when device is offline
• Configure easily for a variety of different instruments
Idea:
Goals:
X-Environment
DataFormatServer
NXComposer:
YAML NeXus definition:
Integrated Control System Environment for High-throughput Tomography @PETRAIII beamlines P05&P07
Integrating everything together
Data transfer between Tango servers.
Apache Camel Integration.
Data transfer between Tango servers.
Apache Camel Integration.
Apache Camel is a rule-based routing and
mediation engine that provides a Java object-
based implementation of the Enterprise
Integration Patterns
Apache Camel routes.
Camel Integration Tango API library:
https://bitbucket.org/Ingvord/camel-tango
Works with pipes (events, polling, single acquisition)
Control Environment [IDL Scripts]
Web monitoring and control. Web Jive.

Browse Tango devices

Add/remove devices

Quick test new devices

Quick monitor existing devices
Why do we need a new Jive?

Narrow down UI to actually used features:
– Remove unused settings and configurations
– Simplified device context menu
– Simplified server wizard

Benefit from web interface: wide screen; reorganize views

Lightweight and fast
Jive is like a swiss army knife...
80% of the time
we need 20% of its features
Our own new Jive:
To fulfil Tango V10 FR6 – generic web application
Web Jive 2.0 (current release version 0.1)

Dynamic Device tree (devices are loaded on demand)

Test device panel

Editable Device tab (Info, Properties, Attributes config,
Events etc)

Interactive Monitoring tab, aka embedded ATK Panel

Simplified Server wizard

Log console
Web Jive: All-in-one screenshot
X-Environment
OpenCL real-time reconstruction server
A Tango server that performs a reconstruction in parallel to the experiment.
FEAUTURES:
•Based on KIT’s UFO project.
•Main goal: to give users close to real time reconstruction
•Deal with up to 1000 frames/s (1 frame = 2K x 2K)
Hardware triggering driven experiment.
Continuous Integration.
1. Release
2. Assemble & test
3. Deploy
4. Feedback
5. Repeat
1. Release
2. Assemble & test
3. Deploy
4. Feedback
1. Release
2. Assemble & test
3. Deploy
4. Feedback
Packaging
Every component is an independent single
Executable jar file!
Dedicated project holds all configuration
files.
Packaging
●
Beamline scientist friendly environment
●
Fully automitazed and ease deployment
●
Integration with DESY computer center
●
Works stable for 3 months without any support
●
Opensource, available @bitbucket.org/hzgwpn
Summary
Thank you!
Questions?
Thank you!
Questions?
ezTangORB
Consider the following example:
DeviceProxy proxy = new DeviceProxy("some-device");
DeviceAttribute attribute = proxy.read_attribute("some-attribute");
if(result.hasFailed()){
throw new Exception("Can not read attribute.");
}
int dataFormat = result.getDataFormat()
int dataType = result.getType()
double result;
switch(dataType){
case Tango_DEV_Double:
switch(dataFormat){
case _SCALAR:
result = attribute.extractDouble()
...
}
...
}
...
Using the API the same result can be achieved with the following code:
TangoProxyWrapper proxy = new TangoProxyWrapper("some-device");
double result = proxy.<Double>readAttribute("some-attribute");
...
This library will be a part of the Tango distribution since version 9.
Miscelanious
• WebCam Tango Server (published in Tango repository)
• DataMatrixDecoder Tango Server (published in Tango repository)
• PXICI 2.0 CL Frame Grabber Tango Server (not yet published)
• Android control application for Fischertechnics on DESY open
days 2013

More Related Content

Recently uploaded

Effort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software ProjectsEffort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software ProjectsDEEPRAJ PATHAK
 
Key Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapKey Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapIshara Amarasekera
 
oracle 23c new features for developer and dba
oracle 23c new features for developer and dbaoracle 23c new features for developer and dba
oracle 23c new features for developer and dbaRemote DBA Services
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jNeo4j
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorTier1 app
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flinkconfluent
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdfSteve Caron
 
AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...
AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...
AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...Bert Jan Schrijver
 
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive ReviewRevolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Reviewjw364beach
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxAS Design & AST.
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
What is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxWhat is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxTechnogeeks
 
Business Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business AnalysisBusiness Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business AnalysisDEEPRAJ PATHAK
 
ETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBU
ETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBUETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBU
ETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBUsamruddhijedgule2004
 
Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...
Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...
Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...OnePlan Solutions
 
logical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptxlogical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptxRemote DBA Services
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxSasikiranMarri
 
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptxSPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptxVersion 1 Analytics
 
Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...
Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...
Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...Piyovi
 

Recently uploaded (20)

Effort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software ProjectsEffort Estimation Techniques used in Software Projects
Effort Estimation Techniques used in Software Projects
 
Key Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery RoadmapKey Steps in Agile Software Delivery Roadmap
Key Steps in Agile Software Delivery Roadmap
 
oracle 23c new features for developer and dba
oracle 23c new features for developer and dbaoracle 23c new features for developer and dba
oracle 23c new features for developer and dba
 
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4jGraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
GraphSummit Madrid - Product Vision and Roadmap - Luis Salvador Neo4j
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Effectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryErrorEffectively Troubleshoot 9 Types of OutOfMemoryError
Effectively Troubleshoot 9 Types of OutOfMemoryError
 
Santander Stream Processing with Apache Flink
Santander Stream Processing with Apache FlinkSantander Stream Processing with Apache Flink
Santander Stream Processing with Apache Flink
 
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
[ CNCF Q1 2024 ] Intro to Continuous Profiling and Grafana Pyroscope.pdf
 
AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...
AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...
AmsterdamJUG April 2024 - Going serverless with Quarkus GraalVM native images...
 
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive ReviewRevolutionize Your Video Editing with InVideo.io: A Comprehensive Review
Revolutionize Your Video Editing with InVideo.io: A Comprehensive Review
 
Mastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptxMastering Project Planning with Microsoft Project 2016.pptx
Mastering Project Planning with Microsoft Project 2016.pptx
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
What is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docxWhat is Mendix and the concept of low-code development.docx
What is Mendix and the concept of low-code development.docx
 
Business Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business AnalysisBusiness Analyzopedia - Your Pocket Gita for Business Analysis
Business Analyzopedia - Your Pocket Gita for Business Analysis
 
ETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBU
ETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBUETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBU
ETE PPT.pdf LMMKLMKLMLKMLLMJKBHJBHBNUIHBU
 
Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...
Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...
Transform your Corporate Strategy Office - Harness OnePlan’s Strategic Portfo...
 
logical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptxlogical backup of Oracle Datapump-detailed.pptx
logical backup of Oracle Datapump-detailed.pptx
 
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptxUnderstanding Plagiarism: Causes, Consequences and Prevention.pptx
Understanding Plagiarism: Causes, Consequences and Prevention.pptx
 
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptxSPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
SPSS Statistics - Encrypting a Syntax File in IBM SPSS Statistics.pptx
 
Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...
Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...
Explore the Three Main Types of Logistics - Inbound Logistics, Outbound Logis...
 

Integrated Control System Environment for High-throughput Tomography @PETRAIII beamlines P05&P07

  • 1. Igor Khokhriakov Integrated Control System Environment for High-Throughput Tomography @PETRAIII beamlines P05&P07. ESRF, BCU Meeting, 24/11/16
  • 2. http://ingvord.ru Some facts: ● JavaScript developer since 2007 ● Enterprise Java and Web developer since 2008 ● Tango developer since 2012 ● C++ developer since 2013 ● Tango kernel developer since 2016
  • 4. PreExperiment Data Collector FEATURES: • Customizable on-the-fly view forms defined in YAML • Different policies are applicable to the view forms: web, web-readonly, tango • Supports different validations: number, double, string, text, required • Provides tango access to data • Offline clients
  • 5. Status Server FEATURES: • Forms continuous timeline of the experiment • Simple configuration, defined in XML • Values can be obtained through event or polling mechanism • Different interpolation strategies: last, nearest and linear
  • 6. Mobile Status Server Client • Monitor the ongoing experiment from a mobile device • Review experiment when device is offline • Configure easily for a variety of different instruments Idea: Goals:
  • 11. Data transfer between Tango servers. Apache Camel Integration.
  • 12. Data transfer between Tango servers. Apache Camel Integration. Apache Camel is a rule-based routing and mediation engine that provides a Java object- based implementation of the Enterprise Integration Patterns
  • 13. Apache Camel routes. Camel Integration Tango API library: https://bitbucket.org/Ingvord/camel-tango Works with pipes (events, polling, single acquisition)
  • 15. Web monitoring and control. Web Jive.  Browse Tango devices  Add/remove devices  Quick test new devices  Quick monitor existing devices
  • 16. Why do we need a new Jive?  Narrow down UI to actually used features: – Remove unused settings and configurations – Simplified device context menu – Simplified server wizard  Benefit from web interface: wide screen; reorganize views  Lightweight and fast Jive is like a swiss army knife... 80% of the time we need 20% of its features Our own new Jive: To fulfil Tango V10 FR6 – generic web application
  • 17. Web Jive 2.0 (current release version 0.1)  Dynamic Device tree (devices are loaded on demand)  Test device panel  Editable Device tab (Info, Properties, Attributes config, Events etc)  Interactive Monitoring tab, aka embedded ATK Panel  Simplified Server wizard  Log console
  • 18. Web Jive: All-in-one screenshot
  • 20. OpenCL real-time reconstruction server A Tango server that performs a reconstruction in parallel to the experiment. FEAUTURES: •Based on KIT’s UFO project. •Main goal: to give users close to real time reconstruction •Deal with up to 1000 frames/s (1 frame = 2K x 2K)
  • 22. Continuous Integration. 1. Release 2. Assemble & test 3. Deploy 4. Feedback 5. Repeat 1. Release 2. Assemble & test 3. Deploy 4. Feedback 1. Release 2. Assemble & test 3. Deploy 4. Feedback
  • 23. Packaging Every component is an independent single Executable jar file! Dedicated project holds all configuration files.
  • 25. ● Beamline scientist friendly environment ● Fully automitazed and ease deployment ● Integration with DESY computer center ● Works stable for 3 months without any support ● Opensource, available @bitbucket.org/hzgwpn Summary
  • 28. ezTangORB Consider the following example: DeviceProxy proxy = new DeviceProxy("some-device"); DeviceAttribute attribute = proxy.read_attribute("some-attribute"); if(result.hasFailed()){ throw new Exception("Can not read attribute."); } int dataFormat = result.getDataFormat() int dataType = result.getType() double result; switch(dataType){ case Tango_DEV_Double: switch(dataFormat){ case _SCALAR: result = attribute.extractDouble() ... } ... } ... Using the API the same result can be achieved with the following code: TangoProxyWrapper proxy = new TangoProxyWrapper("some-device"); double result = proxy.<Double>readAttribute("some-attribute"); ... This library will be a part of the Tango distribution since version 9.
  • 29. Miscelanious • WebCam Tango Server (published in Tango repository) • DataMatrixDecoder Tango Server (published in Tango repository) • PXICI 2.0 CL Frame Grabber Tango Server (not yet published) • Android control application for Fischertechnics on DESY open days 2013

Editor's Notes

  1. Software; Hardware done by other guy in the team