Development of Spotfire Tools at Tibotec
Overview Looking at data from different angles Saveable tools Query device visualization Protein visualization SAS integration
Overview Looking at data from different angles Depivot Summarize/Unique Saveable tools Query device visualization Protein visualization SAS integration
Depivot tool Example: distances between major European cities
Depivot tool Depivot to records containing single distance: Scatter Plot Vienna Stockholm Rome Paris Munich Milan Marseilles Madrid Lyons Lisbon Hook of Holland Hamburg Gibralta Geneva Copenhagen Cologne Cherbourg Calais Brussels Barcelona Athens
Depivot Tool Implementation: ADO recordset Enlarge the code sample if possible var sRS= recs.GetRecordSet(); var fRS= new ActiveXObject("ADODB.Recordset"); … fRS.Fields.Append(colValName,sRS.Fields(sCols[0] ).Type, sRS.Fields(sCols[0]).DefinedSize,adFldIsNullable ); … fRS.Open(); … fRS.AddNew(); fRS.Fields(2).Value=rec.Field(col);
Summarize Summary viewer calculations in table Example: baseball data set
Unique Records Tool Creates column to be used in query for showing part of the dataset. Example: summarized data in baseball data set.
Overview Looking at data from different angles Saveable tools Why? Demo of Global Annotation Implementation Technical hurdles AfterSave event Query device visualization Protein visualization SAS integration
Saveable tools Some tools with control windows, are actually new visualizations. Example: summary table from DecisionSite Statistics Configuration data of the tool is often data dependant Problem: not saveable
Saveable tools Example: Global Annotation Tool Provides annotation on the file level. Updated by tools that generate data in a new spotfire (Do you mean DecisionSite?).
Saveable tools Implementation: In the saveable tool Capture beforeSave event Wrap configuration data in xml and append to HTML-details-on- demand Remove data after saving is done Extra checkbox to force saving for exports When launched check for wrapped configuration data in HTML- details-on-demand In plugin Capture VisualizationOpen event Look for wrapped configuration data in HTML-details-on-demand Launch tools
Saveable tools Example of wrapped xml: (enlarge code text) Tibotec.Tools.GlobAnnot Created by Depivot Tool
Saveable tools Technical hurdles: No afterSave event available Solution: Set Modified flag for visualization Use polling to wait for Modified flag to be reset by save operation The beforeSave event is not triggered by exports Solution: Extra checkbox in user interface to force wrapping configuration data and appending to HTML-details on demand.
Overview Looking at data from different angles Saveable tools Query device visualization Why? Demo of functionality Technical hurdles Getting the active Query Device Getting the active Visualization Protein visualization SAS integration
Query Device Visualization When dealing with complex datasets, query device settings are hard to track Considering a set of query devices as a linear chain of filters How is the data filtered? (e.g. how many records are deselected by a particular query device?) Switching between query device settings Saving multiple query device settings
Query Device Visualization Tibotec Query Device Visualization Tool
Query Device Visualization Technical hurdles: Getting the active Query Device When editing search field ‘Full Text Search’ query device, the active query device is not changed. Solution: refresh button in user interface Getting the active Visualisation When the ‘Query Devices’ window is active it is not possible to get the active Visualization Undocumented OnReset event
Overview Looking at data from different angles Saveable tools Query device visualization Protein visualization Embedding other ActiveX components SAS integration
Protein visualization Embedded ActiveX object
Protein Visualization Technical Hurdles: Local path to files in package Solution: use PackageManager Enlarge code text var pkgMgr = new ActiveXObject("Spotfire.PackageManager"); var pkg = pkgMgr.LookupInstalled("Tibotec.Package.ProtMapTool"); var pkgRes = pkg.MapUrl(getTheResourceObject().BuildPath(prot)); tmpPath=pkgRes.LocalPath;
Overview Looking at data from different angles Saveable tools Query device visualization Protein visualization SAS integration Technical Hurdles Transferring data
SAS integration Use SAS to calculate new columns Example: Random Number Generator Use SAS to generate new dataset Example: Correlation Analysis
SAS integration Technical hurdles: Contacting SAS server Use SASWorkspaceManager.ServerDef SAS-incompatible column names Transferring data to SAS –Create empty dataset in SAS and use ADODB to fill with data. obServerDef.Port = 6960 ' ObjectServerPort obServerDef.Protocol = 2 ' (ProtocolBridge) obServerDef.MachineDNSName = "tc479"