Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Scientific Computing and Imaging Institute School of Computing University of Utah Scientific Computing and Imaging Institute School of Computing University."— Presentation transcript:

1 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 02.09.2003 David Weinstein SIAM CSE 02.09.2003 Scientific Visualization in SCIRun

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

3 SCIRun SIAM CSE Natalie: Surgical Planning

4 SCIRun SIAM CSE Aneurysm: Volume Rendering

5 SCIRun SIAM CSE Forward and Inverse EEG

6 SCIRun SIAM CSE Electrocardiography

7 SCIRun SIAM CSE Electroencephalography

8 SCIRun SIAM CSE MEG / Diffusion Tensors

9 SCIRun SIAM CSE Photorealism for Sci Vis: RTRT

10 SCIRun SIAM CSE CSAFE: Fire-spread

11 SCIRun SIAM CSE Nuclear Fusion: Tokamak

12 SCIRun SIAM CSE

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

14 SCIRun SIAM CSE Elements of SCIRun Visual programming Environment

15 SCIRun SIAM CSE PSE Relationships

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

17 SCIRun SIAM CSE Documentation: The Central Source http://internal.sci.utah.edu/developer/doc/

18 SCIRun SIAM CSE Documentation: User Support On-line Documentation Tutorial User’s Manual FAQ Lists Printed Documentation User’s Manuals Mailing List scirun-users@sci.utah.edu Direct Contact Email and Bugzilla Phone

19 SCIRun SIAM CSE System Specs and Requirements Required OS and Build Tools SGISGI IRIX 6.5IRIX 6.5 MIPSPro Compilers (CC) 7.3.1.1mMIPSPro Compilers (CC) 7.3.1.1m LinuxLinux Kernel 2.2.17Kernel 2.2.17 GCC 2.95.3GCC 2.95.3 BothBoth GNU Make 3.79.1GNU Make 3.79.1 http://software.sci.utah.edu/doc/TechnicalGuide/p1c1.html

20 SCIRun SIAM CSE Minimum System Requirements Tested Systems: Gateway, Micron, Dell. http://software.sci.utah.edu/tested_systems/tested_systems.html 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 1.0-1541 http://software.sci.utah.edu/doc/TechnicalGuide/p1c2.html

21 SCIRun SIAM CSE Documentation: Tutorial

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

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

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

25 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

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

27 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

28 SCIRun SIAM CSE Tikhonov Regularization

29 SCIRun SIAM CSE Tikhonov Regularization

30 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

31 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

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

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

34 SCIRun SIAM CSE Component Wizard Adding a Module

35 SCIRun SIAM CSE Component Wizard

36 SCIRun SIAM CSE Component Wizard Edit a Port Name Namespace

37 SCIRun SIAM CSE Component Wizard Package Category Path

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

39 SCIRun SIAM CSE Component Wizard After Compiling

40 SCIRun SIAM CSE Component Wizard Your Skeleton GUI

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

42 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 }

43 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 }

44 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”

45 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

46 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 >;

47 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

48 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

49 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

50 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); };

51 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; }

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

53 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


Download ppt "Scientific Computing and Imaging Institute School of Computing University of Utah Scientific Computing and Imaging Institute School of Computing University."

Similar presentations


Ads by Google