Download presentation
Presentation is loading. Please wait.
Published byVivian Riley Modified over 9 years ago
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.