Scientific Computing and Imaging Institute School of Computing University of Utah Scientific Computing and Imaging Institute School of Computing University.

Slides:



Advertisements
Similar presentations
pa 1 Porting BETA to ROTOR ROTOR Projects Presentation Day, June by Peter Andersen.
Advertisements

Guide to Oracle10G1 Introduction To Forms Builder Chapter 5.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Programming with Objects: Class Libraries and Reusable Code.
A Guide to Oracle9i1 Introduction To Forms Builder Chapter 5.
Advanced Object-Oriented Programming Features
1 Component Description Alice 3d Graphics Software Human Computer Interaction Institute Carnegie Mellon University Prepared by: Randy Pausch,
Communication in Distributed Systems –Part 2
Guide To UNIX Using Linux Third Edition
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Guide To UNIX Using Linux Third Edition
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 7: Planning a DNS Strategy.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Software Installation The full set of lecture notes of this Geant4 Course is available at
Form Handling, Validation and Functions. Form Handling Forms are a graphical user interfaces (GUIs) that enables the interaction between users and servers.
OOP Languages: Java vs C++
1 Chapter One A First Program Using C#. 2 Objectives Learn about programming tasks Learn object-oriented programming concepts Learn about the C# programming.
1 Integrated Development Environment Building Your First Project (A Step-By-Step Approach)
A First Program Using C#
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
ROOT An object oriented HEP analysis framework.. Computing in Physics Physics = experimental science =>Experiments (e.g. at CERN) Planning phase Physics.
Systems Analysis and Design in a Changing World, Fifth Edition
September 6, 2015 Connecting Client Applications to Informix Databases using IBM Informix Connect and ODBC James Edmiston Database Consultant Quest Information.
BioPSE NCRR SCIRun: Getting Started Installation and Configuration J. Davison de St. Germain (801)
Chapter 33 CGI Technology for Dynamic Web Documents There are two alternative forms of retrieving web documents. Instead of retrieving static HTML documents,
SUSE Linux Enterprise Server Administration (Course 3037) Chapter 4 Manage Software for SUSE Linux Enterprise Server.
System Overview CIBC SCIRun / BioPSE System Overview.
London April 2005 London April 2005 Creating Eyeblaster Ads The Rich Media Platform The Rich Media Platform Eyeblaster.
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
9 Chapter Nine Compiled Web Server Programs. 9 Chapter Objectives Learn about Common Gateway Interface (CGI) Create CGI programs that generate dynamic.
12 Systems Analysis and Design in a Changing World, Fifth Edition.
© 2005 Pearson Education, Inc., Upper Saddle River, NJ. All rights reserved. Data Structures for Java William H. Ford William R. Topp Appendix E The EZJava.
Programming Languages and Paradigms Object-Oriented Programming (Part II)
Guide to Linux Installation and Administration, 2e1 Chapter 10 Managing System Resources.
SIMPLE PROBLEM SOLVING in Java: a Problem Set Framework Viera K. Proulx Richard Rasala Jason Jay Rodrigues CCSCNE 2002 Conference.
Advanced BioPSE NCRR Dynamic Compilation Joint Session #1: Advanced BioPSE/SCIRun.
Copyright © Curt Hill Generic Classes Template Classes or Container Classes.
Object-Oriented Design Simple Program Design Third Edition A Step-by-Step Approach 11.
NIH NCRR Overview The SCIRun and BioPSE Problem Solving Environments Chris Johnson, Rob MacLeod, and David Weinstein Scientific Computing and Imaging Institute.
Advanced BioPSE NCRR How to Install and Configure J. Davison de St. Germain Chief Software Engineer SCI Institute December 2003 J. Davison.
VAPOR 3.0 Architecture Overview. Purpose of this document Provide understandable overview of 3.0 architecture Enable the development team to maintain.
Guide to Linux Installation and Administration, 2e1 Chapter 11 Using Advanced Administration Techniques.
C# Programming: From Problem Analysis to Program Design1 10 Advanced Object-Oriented Programming Features C# Programming: From Problem Analysis to Program.
Developer Session #3 NCRR Advanced SCIRun/BioPSE Elements: GUIs, Core Libs, Contributions & Support.
Building the Events Components– Lesson 111 Building the Events Components Lesson 11.
SCHOOL OF ELECTRICAL AND COMPUTER ENGINEERING | SCHOOL OF COMPUTER SCIENCE | GEORGIA INSTITUTE OF TECHNOLOGY MANIFOLD Manifold Execution Model and System.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
Porting a large scale enterprise application from Tcl/Tk 8.4 to 8.5 Prashant Thakre, Tushar Gupta {prashant_thakre, Gaurav Bansal.
Future NCRR The Future of SCIRun and BioPSE. Future NCRR 6 Months Ago: The Next 12 Months Preparing for Renewal: Users & Pubs Usability Domains UI wrapping.
M1G Introduction to Programming 2 5. Completing the program.
Chapter 5 Introduction To Form Builder. Lesson A Objectives  Display Forms Builder forms in a Web browser  Use a data block form to view, insert, update,
8 Chapter Eight Server-side Scripts. 8 Chapter Objectives Create dynamic Web pages that retrieve and display database data using Active Server Pages Process.
BioPSE Examples NCRR BioPSE Examples: Networks, Datasets, Tutorials, and PowerApps.
Top Secret CIBC Sneak Preview of Next Generation SCIRun Features and Directions.
BioPSE Elements NCRR Elements of SCIRun and BioPSE.
INFSO-RI Enabling Grids for E-sciencE gLite C++ Configurator Practical experience gLite Configuration Meeting, March 1, 2005 Peter.
Institute for the Protection and Security of the Citizen HAZAS – Hazard Assessment ECCAIRS Technical Course Provided by the Joint Research Centre - Ispra.
EPICS and LabVIEW Tony Vento, National Instruments
ECG Simulation NCRR Overview Technology for the ECG Simulation project CardioWave BioPSE project background Tools developed to date Tools for the next.
 Wind River Systems, Inc Chapter - 4 CrossWind.
Chapter 3: Windows7 Part 5.
J. Michael, M. Shing M. Miklaski, J. Babbitt Naval Postgraduate School
Chapter 3: Windows7 Part 5.
Backround and Concepts for SCIRun and BioPSE
Joint Session #1: Advanced
Overview of the SCIRun/BioPSE Software Systems
Software Installation
The SCIRun and BioPSE Problem Solving Environments
LCC 6310 Computation as an Expressive Medium
Overview Before You Start Structure of a Module Ports and Datatypes
Presentation transcript:

Scientific Computing and Imaging Institute School of Computing University of Utah Scientific Computing and Imaging Institute School of Computing University of Utah David Weinstein SIAM CSE David Weinstein SIAM CSE Scientific Visualization in SCIRun

SCIRun SIAM CSE Overview Examples Tour of SCIRun - How To Get / Install It - Dataflow - Building A Module Live Demos

SCIRun SIAM CSE Natalie: Surgical Planning

SCIRun SIAM CSE Aneurysm: Volume Rendering

SCIRun SIAM CSE Forward and Inverse EEG

SCIRun SIAM CSE Electrocardiography

SCIRun SIAM CSE Electroencephalography

SCIRun SIAM CSE MEG / Diffusion Tensors

SCIRun SIAM CSE Photorealism for Sci Vis: RTRT

SCIRun SIAM CSE CSAFE: Fire-spread

SCIRun SIAM CSE Nuclear Fusion: Tokamak

SCIRun SIAM CSE

SCIRun SIAM CSE Integration and Interaction Modeling Simulation Visualization user guides What If?

SCIRun SIAM CSE Elements of SCIRun Visual programming Environment

SCIRun SIAM CSE PSE Relationships

SCIRun SIAM CSE Extensibility Leverage existing utilities Extensibility through bridges SCIRun Matlab mpeg libimage Teem GENESIS lib socket lib SQL

SCIRun SIAM CSE Documentation: The Central Source

SCIRun SIAM CSE Documentation: User Support On-line Documentation Tutorial User’s Manual FAQ Lists Printed Documentation User’s Manuals Mailing List Direct Contact and Bugzilla Phone

SCIRun SIAM CSE System Specs and Requirements Required OS and Build Tools SGISGI IRIX 6.5IRIX 6.5 MIPSPro Compilers (CC) mMIPSPro Compilers (CC) m LinuxLinux Kernel Kernel GCC GCC BothBoth GNU Make GNU Make

SCIRun SIAM CSE Minimum System Requirements Tested Systems: Gateway, Micron, Dell. Processor(s) Main Memory Other HW/SW SGI 250 MHz R10K 256 MB Texture Mapping Hardware/Memory Linux 700 MHz Pentium III 256 MB NVIDIA GeForce3 Graphics Card, XFree86 drivers version

SCIRun SIAM CSE Documentation: Tutorial

SCIRun SIAM CSE Network Design Dataflow Vocabulary Module Dataport Datapipe UI Send and Get GuiVars Scheduler Dependencies loops: send_intermediate

SCIRun SIAM CSE Packages Encapsulated project External code resides in Thirdparty Packages enabled via “configure” options % configure ‘--enable-package=BioPSE mypackage’

SCIRun SIAM CSE Module Categories …/Dataflow/Modules/{Fields,Math,…}

SCIRun SIAM CSE Fields Data int, float, double, … Vector, Tensor, … Data int, float, double, … Vector, Tensor, … Geometry Regular Irregular Geometry Regular Irregular Properties Data_at (center) Properties Data_at (center) PointCloudField ScanlineFieldCurveField ImageField QuadSurfFieldTriSurfField LatVolFieldHexVolField TetVolField

SCIRun SIAM CSE On-the-fly Compilation Combinatorial Explosion! Geometry Data type Data_at Build source, compile, link – all at run time

SCIRun SIAM CSE Error Messages Run-time messages are sent to the module’s “log” Startup messages Log message indicator Gray: no messages Red: error Blue: warning/remark Log message indicator Gray: no messages Red: error Blue: warning/remark

SCIRun SIAM CSE Tikhonov Regularization

SCIRun SIAM CSE Tikhonov Regularization

SCIRun SIAM CSE How To Build A Module Before You Start Structure of a Module Ports and Datatypes Component Wizard GUI’s Dynamic Compilation Algorithm

SCIRun SIAM CSE Before You Start Design Your Function A Module is a Function Inputs and Outputs User Input (GUI Variables) Dataflow Coding Standard Standards Advice SCIRun/doc/Developer/Guide/coding_standard.html

SCIRun SIAM CSE Module Structure Support Files.cc file sub.mk.xml file.tcl file sub.mk.h file (optional)

SCIRun SIAM CSE Ports and Datatypes Ports LockingHandles Generation number Memory Management Sending Data Cache Results Datatypes Fields, Matrix, SceneGraph Detach (Dataflow) Properties

SCIRun SIAM CSE Component Wizard Adding a Module

SCIRun SIAM CSE Component Wizard

SCIRun SIAM CSE Component Wizard Edit a Port Name Namespace

SCIRun SIAM CSE Component Wizard Package Category Path

SCIRun SIAM CSE Component Wizard New Package? New Category? Reconfiguring.

SCIRun SIAM CSE Component Wizard After Compiling

SCIRun SIAM CSE Component Wizard Your Skeleton GUI

SCIRun SIAM CSE GUI’s TCL itcl blt Use Simple GUI as a Pattern GuiVars

SCIRun SIAM CSE GUI’s itcl_class SCIRun_Fields_SelectField { inherit Module constructor {config} { set name SelectField global $this-stampvalue global $this-runmode set_defaults } method set_defaults {} { set $this-stampvalue 100 set $this-runmode 0 # 0 nothing 1 accumulate 2 replace } method replace {} { set $this-runmode 2 $this-c needexecute } method accumulate {} { set $this-runmode 1 $this-c needexecute }

SCIRun SIAM CSE GUI’s method ui {} { set w.ui[modname] if {[winfo exists $w]} { raise $w return } toplevel $w frame $w.row1 frame $w.row3 frame $w.row4 pack $w.row1 $w.row3 $w.row4 -side top -e y -f both -padx 5 -pady 5 label $w.row1.value_label -text "Selection Value" entry $w.row1.value -textvariable $this-stampvalue pack $w.row1.value_label $w.row1.value -side left button $w.row3.execute -text "Replace" -command "$this replace" pack $w.row3.execute -side top -e n -f both button $w.row4.execute -text "Accumulate" -command "$this accumulate" pack $w.row4.execute -side top -e n -f both }

SCIRun SIAM CSE GUI’s GuiVars Values to from C side –Initialize l C++ side constructor synchs with tcl name l tcl side sets the initial value –my_var.reset() –my_var.get() tcl_command(...) –$this-c “needexecute”

SCIRun SIAM CSE Algorithm Structure Algorithm Base Class Inherits from common base class Defines the pure virtual interface needed by a module Provides a static CompileInfo Templated Algorithm Implements the pure virtual interface in the base class Potentially specialized for specific field type Algorithm Base Class Inherits from common base class Defines the pure virtual interface needed by a module Provides a static CompileInfo Templated Algorithm Implements the pure virtual interface in the base class Potentially specialized for specific field type virtual void render(FieldBase&)=0; template RenderField : public RenderFieldBase

SCIRun SIAM CSE TypeDescription TypeDescription object augments RTTI Holds: Strings that describe object’s exact type Namespace string Path to the.h file that declares the object Has a recursive structure Example: foo >; TypeDescription object augments RTTI Holds: Strings that describe object’s exact type Namespace string Path to the.h file that declares the object Has a recursive structure Example: foo >;

SCIRun SIAM CSE CompileInfo Similar info as a TypeDescription Algorithm is not instantiated, so cannot yet be queried Start with a CompileInfo from Algorithm base class Augmented with information from all pertinent TypeDescription objects for the specific types involved Passed to DynamicLoader, which creates the proper type Similar info as a TypeDescription Algorithm is not instantiated, so cannot yet be queried Start with a CompileInfo from Algorithm base class Augmented with information from all pertinent TypeDescription objects for the specific types involved Passed to DynamicLoader, which creates the proper type

SCIRun SIAM CSE DynamicLoader Returns Requested Algorithm Writes C++ instantiation code Compile shared library, using SCIRun makefiles Load shared library (dlopen) Return Instance of Algorithm (Cached for next use) Synchronization code such that Only 1 thread can compile at a time per algorithm Multiple algorithms can compile and load at the same time Returns Requested Algorithm Writes C++ instantiation code Compile shared library, using SCIRun makefiles Load shared library (dlopen) Return Instance of Algorithm (Cached for next use) Synchronization code such that Only 1 thread can compile at a time per algorithm Multiple algorithms can compile and load at the same time

SCIRun SIAM CSE Calling Module void ShowField::execute() { // Get a Field from input field port. field = (FieldIPort *)get_iport("Field"); field->get(field_handle); // Get the input field's type info. const TypeDescription *td = field_handle->get_type_description(); // Get the Algorithm. CompileInfo *ci = RenderFieldBase::get_compile_info(td); if (! DynamicLoader::scirun_loader().get(*ci, rend_algo)) { error("Could not compile algorithm for ShowField -"); return; } RenderFieldBase *rf = dynamic_cast (rend_algo); // Let the templated algorithm render this field. rf->render(field_handle, /* any other parameters from gui */); // Send results downstream... } No template instantiations for the exact algorithm type

SCIRun SIAM CSE Example //! ConvertTetBase supports the dynamically loadable algorithm concept. //! when dynamically loaded the user will dynamically cast to a //! ConvertTetBase from the DynamicAlgoBase they will have a pointer to. class ConvertTetBase : public DynamicAlgoBase { public: virtual FieldHandle convert_quadratic(FieldHandle in) = 0; virtual ~ConvertTetBase(); static const string& get_h_file_path(); static string dyn_file_name(const TypeDescription *td) { // add no extension. return template_class_name() + "." + td->get_filename() + "."; } static const string base_class_name() { static string name("ConvertTetBase"); return name; } static const string template_class_name() { static string name("ConvertTet"); return name; } //! support the dynamically compiled algorithm concept static CompileInfo *get_compile_info(const TypeDescription *td); };

SCIRun SIAM CSE Example template class ConvertTet : public ConvertTetBase { public: //! virtual interface. virtual FieldHandle convert_quadratic(FieldHandle in); }; template FieldHandle ConvertTet ::convert_quadratic(FieldHandle ifh) { Fld *fld = dynamic_cast (ifh.get_rep()); ASSERT(fld != 0); typedef typename Fld::value_type val_t; FieldHandle fh(QuadraticTetVolField ::create_from(*fld)); return fh; }

SCIRun SIAM CSE Summary Concepts Ports and Datatypes Modules (Component Wizard) Templated Algorithms Dynamic Loading

SCIRun SIAM CSE On the Horizon (BioPSE 2.0) GUI Separation: Event/State Managers Detachable interface Reproducibility Collaboration Remote vis Custom UI Scripting Regression testing BioPSE GUI State Manager GUI