Presentation is loading. Please wait.

Presentation is loading. Please wait.

ScanOcean 21 March 2012. Goals The next generation of scanSee Provide online and offline data browsing, analysis, and visualization File based data browsing.

Similar presentations


Presentation on theme: "ScanOcean 21 March 2012. Goals The next generation of scanSee Provide online and offline data browsing, analysis, and visualization File based data browsing."— Presentation transcript:

1 ScanOcean 21 March 2012

2 Goals The next generation of scanSee Provide online and offline data browsing, analysis, and visualization File based data browsing for various formats, including HDF5, MDA and TIFF Support for area detectors, point detectors and multiple simultaneous detectors Plug-in architecture for extensibility Ability to launch legacy code (using file based communication for IO)

3 Current Status - DataExplorer Progress – DStar data model – Tree, Image & Table Views To Do – Axes/dimension scale support – Display axes in TableView and ImageView – Color maps for images – Edit/Save

4 Current Status - DStar Data Model dstar::AbstractObject – dstar::AbstractAttribute dstar::HDF5Attribute – dstar::AbstractData dstar::HDF5Data – dstar::HDF5DataScalar – dstar::HDF5DataSimple – dstar::AbstractGroup dstar::HDF5Group – dstar::HDF5File – dstar::HDF5Object dstar::HDF5Attribute dstar::HDF5Data dstar::HDF5Group dstar::AbstractView – ImageView – PropertiesView – TableView – TreeView

5 Two Prototypes, One Goal Viewing Area Detector images is a ScanOcean goal. There is a need for a (“good”) live image viewer for Area Detector images. 2-BM-B requests ability to view AD images in TomoUI. A separate prototype will help us narrow our scope, focus our work, and flush out design details.

6 Design Thoughts GDA, GUMTREE, Mantid, et al. all have large, monolithic, highly-specialized hierarchies and structures that make it difficult to reuse individual parts. There will be beam line (technique) specific UIs. We already have XPCSUI and TomoUI, and there will probably be more. Need to keep things agile and encapsulated for easy, fast reuse. XPCSUI DStar (using) TreeView (using) TableView (planned) ImageView (planned) TomoUI DStar (planned) TreeView (planned) TableView (planned) ImageView (planned) Components from LiveImageViewer (planned)

7 Internal Pipeline (Overview) Image Source* Color Transfer Function* Display Manager* GUI Circular Buffer** *Thread (Throttle) *Thread (Throttle) Read most recent frame conditional wait if no data available Write to next location Pre-allocated raw image buffer Pre-allocated RGB image buffer Update event **C++ template class

8 Internal Pipeline (Analysis ROI Intensity) Image Source Color Transfer Function Display Manager GUI Circular Buffer Intensity from ROI Circular Buffer Display Manager Alternatively, there may be one singleton DisplayManager with multiple sources.

9 Internal Pipeline (Saving streaming data) Image Source Color Transfer Function Display Manager GUI Circular Buffer Save RAW Save RGB Save RGB Only if we REALLY wanted to. Should use AD for this.

10 Internal Pipeline Why not use AD plug-ins for this? – Won’t help with offline analysis. – Won’t help with multi-channel scalar analysis (ADC). Stage/thread boxes may be the beginning of a plug-in architecture.

11 What We Need EPICS Interface – TomoUI has a small class for ChannelAccess. – Look at EPICS Qt for ChannelAccess object management. Build internal pipeline components – Base class for threaded stages Graphics components – GStar

12 GStar QGraphicsScene QGraphicsItem gstar::ROI gstar::Measure gstar::ScaleBar gstar::ThetaArch gstar::LineScan Qt has a robust 2D scene graph. Build Qt graphics tools with as little outside dependency as possible. Graphics annotations are independent of the rest of the application. Only provides GUI elements, not actual analysis or calculations. Easier to reuse. gstar::Mask gstar::CTFWidget QWidget

13 GStar Color-transfer function editor Integer values (needs floating point values) Display images in background (for histograms, etc.) More efficient internals

14 EPICS Qt GUI Components vs. ScanOcean Channel Access Pipeline Source Pipeline GStar Channel Access EPICS Qt Base Classes EPICS Qt Button EPICS Qt Label File on Disk GUI There is such a thing as too much inheritance! Can’t reuse leaf classes without parents. Won’t help when there’s no ChannelAccess. EPICS Qt widgets provide very simple functionality. Still excellent choice for some things, but not this GUI. This composition makes GStar easier to reuse. This makes EPICS Qt widgets hard to reuse w/o CA.

15 Current Bigger Picture dstar – data model gstar – Qt graphics widgets estar – EPICS channel access tools (maybe just EPICS Qt) dstar gstar estar??? TomoUI ScanOcean DataExplorer XPCSUI Applications Libraries ScanOcean ImageViewer

16 Final Thought Even if ScanOcean doesn’t become the uber beam line application, we’ll have a lot of reusable stuff (some of which we’re already reusing).

17

18 Agile Manifesto We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.

19 To Do Put things in SVN Add more tasks to Jira Finish up axes displays as time permits Working on Tomography Upgrade – Started writing sample code for EPICS – Related to Tomography Upgrade, but directly applicable to ScanOcean. Will likely turn out to be an excellent example of code reuse and refactoring – Image viewer, color-map editor, interacting with EPCIS and AD, etc.

20 Big To-do List Small (<= 1 day) – Support many different numeric data types in ImageView – Set display precision for floating point numbers in TableView – Speed-up image display with pointer arithmetic instead of indexing – Attribute view/editor Moderate (<= 1 week) – Refactor TableView and ImageView into 2D slice view and subclasses – Region zoom tool in ImageView – Create a graph view using Qwt as underlying plotter – Tab and pop-out windows in addition to MDI – Re-use allocated buffers more when fetching data from files – Refactor using Mediator pattern to create a data/view manager – Validate data objects for use with a data view Large (multiple weeks) – Factory creational pattern in data model to enforce smart pointer use – Good Color Map Editor (with log maps, saving/restoring maps) – Refactor application of color maps out of ImageView (use templates)*** – Pre-fetch data for speed-up*** Still need an icon More documentation, as always


Download ppt "ScanOcean 21 March 2012. Goals The next generation of scanSee Provide online and offline data browsing, analysis, and visualization File based data browsing."

Similar presentations


Ads by Google