• An open source not for profit project built on the
Eclipse Rich Client Platform (RCP) framework
• Eclipse based workbench for doing scientific
data analysis. It supports:
– Visualization and analysis of data in 1D, 2D and 3D
– Python script development, debugging and execution
– Workflow tool for the treatment/manipulation of
scientific data
Client server
technology
Communication with
EPICS and hardware
Scan mechanism
www.opengda.org
Jython
and Python
Visualisation
Communication
with external
analysis
Analysis
tools
Data read, write,
convert
Metadata structure
Workflows
www.dawnsci.org
DAWN is a
collection of
generic and
bespoke ‘views’
collated into
‘perspectives’.
The perspectives
and views can
be used in part
or whole in either
the GDA or
DAWN.
Acquisition Analysis
Active code contributors/developers
Commercial subcontractors
Evaluating or strong interest expressed
http://www.dawnsci.org
• RCP is an extension based platform (as opposed to an extensible
application)
– i.e. Emacs, Auto CAD, Eclipse
– Minimalistic runtime, that includes extension mechanism
– High level language
– Extension points mechanism
• Through its Plugin architecture RCP lets you:
– Decompose your code into loosely coupled units
– Extend (and update) your product incrementally
– Enforce contracts between groups in your organization
– Play nicely with components from other vendors
– Allow even customers to extend your product
Extension based platform Extensible application
EclipseCon 2009 -Advanced RCP by Kai Tödter
• Standard Widget Toolkit (SWT)
– Portable open source widget toolkit for Java
– Displays GUI elements using native GUI libraries
• Draw2d
– Lightweight toolkit for displaying graphical components on an SWT
Canvas
• Nebula visualization library
– data visualization in
science, engineering...
– originally from CSS project
• Functions of XY Graph:
– Line, scatter, bar, step,
area chart, zooms,
panning, auto Scale,
undo/redo etc.
www.eclipse.org/nebula/
• Apache Commons : reusable Java components
– Math: Lightweight, self-contained mathematics and statistics
components
– IO: Collection of I/O utilities
– Net: Collection of network utilities and protocol implementations
– Jexl: Expression language which extends the Expression Language of
the JSTL.
• HDF5/NeXus libraries to support HDF5 data
• Passerelle toolkit built on Ptolemy II, (Java packages for
heterogeneous, concurrent modeling and design) for workflows
• SLF4J for logging
• Jackson for processing JSON data format
• BoofCV Java computer vision library
• etc
• RCP many of the core features, editors, toolbars, views, projects
• GEF for visualization of pipeline graphs
• SWT/Jface – lazy viewers being used extensively for large trees and
tables
• Draw2D for 1D and 2D plotting (SWT XY Graph)
• Pydev for python/jython scripting layer used by the scientists
• Ptolemy 2 (a version known as ‘Passerelle’) workflow and pipelining
• HDF5 libraries for storing large data sets
• Apache, Eclipse-WST, springsource, JDK, and many more of course...
Who– Oak Ridge National Laboratory
– IBM
– Diamond Light Source
– Kichwa Coders
– IFP Energies Nouvelles
– MARINTEK / Itema
– Clemson University
– Lablicate (Chemclipse)
– Facility for Rare Isotope Beams
(FRIB)
– Tech’Advantage
– Uppsala University (Bioclipse)
– Others not on the steering committee
• Hosted by the Eclipse Foundation
• Collaborative effort involving industry, academia, and government
• Language and platform agnostic
• Develop well defined interfaces, models, definitions, algorithms, and reusable software libraries, services, and applications
• Develop reusable open source software for scientific research
• Making science software inter-operable and interchangeable
• Provides features to allow scientific software to be inter-
operable and re-usable
• Defines Java interfaces for
– data description
– plotting and plot tools
– data slicing and file loading
• It defines an architecture oriented around OSGi services
• provides a reference implementation
• Eclipse links
– https://projects.eclipse.org/proposals/dawnsci
– https://projects.eclipse.org/projects/technology.dawnsci
• Eclipse RCP product built using Buckminster (previously
PDE)
• Usage of Jenkins for continuous integration
• Unit tests using Squish UI Testing, Junit and Junit plugin
tests
• Agile practices being used where otherwise possible
• Documentation of designs and code using confluence
• Source code control using Git/eGit
• Cross-platform GUI and
regression testing tool
available as an Eclipse
plugin
• Can test applications based
on a variety of GUI
technologies
• Able to record and replay
test scripts written in
JavaScript, Perl, Python,
Ruby or Tcl
• Eclipse UDC
– Lightweight framework for
collecting usage data information
using listeners on various aspects
of the Eclipse workbench
• Be able to provide feedback
on how DAWN is used
– What are the most used
views/perspectives
– What are the systems used to run
DAWN (Java version, OS,
language, etc) ...
• Potentially useful information
for management and
development teams
• Conducted Dec’13-Jan’14
• By Software Sustainability Institute (SSI)– “...cultivating world-class research through software.”
– based at the Universities of Edinburgh, Manchester, Oxford and Southampton
– Funded by EPSRC (Engineering and Physical Sciences Research Council)
• Technical review– ‘Tutorial-based Evaluation’
• Collaboration review– Questions agreed in advance
– on-site interviews, telecon interviews
• 20 recommendations
• A reasonably typical profile for such a project
Significant development history, scale of development
• Generally a good
feedback profile
– Agreement on many
positive aspects
– Most suggested
improvements constrained
to individual beamlines
• Many stakeholders
• Complex requirements!
• A challenge!
# recommendations across area
# observations across area
• Positive highlights– Development, support – a major strength
• Keen to understand scientific needs of beamlines
• Timely responses for resolving issues and queries
– Training – useful, applicable, and enjoyable
– Integration with working process
– Software – many useful features and integration
• Areas for Improvement– Future release planning
– Software – interface
– Documentation – quick start guides, goal-oriented docs• Technical writer?
– Addressing new features prioritised over testing• Software testing personnel?
• Open-source and science work well together– It is important to pick a technology that
• Answers your users specific needs
• Has a proven track record and is well used
• Has a good community support
– Better collaboration leads to better software and in result to better science
– Industry good practices and tools are a necessity for big projects
• Having your software reviewed will give you valuable information– An external viewpoint
– What you are doing right
– Areas that can be improved
• Eclipse community for providing great tools
• Java/Python community for its APIs
• Software Sustainability Institute for constructive reviewing of DAWN
• Diamond science and software groups
• All collaborators that participate to DAWN developments
And there's more….
• Scientific uses of DAWN @ Diamond presented in tomorrow’s talk
• Posters...