Warning, /graphics/kst-plot/devel-docs/deprecated/future.txt is written in an unsupported language. File is not indexed.
0001 kst: Long Term Goals 0002 Barth Netterfield Nov. 18, 2004 0003 0004 1. Overview: 0005 Our goal should be to develop kst into the premier data viewing, plotting, and light data analysis tool, prioritized in that order. In particular, we would like to directly compete with (and eventually surpass) sm, pgplot, and xmgrace. The rational is to have one tool (kst) be used for data display at all stages of an experiment's life, from real time data collection to data analysis, to publication. As our most important specific case, I would like this to be true for the Planck-HFI. I believe that we have created a framework in kst which is capable of attaining this goal, if we remain disciplined about both UI design and code structure. 0006 What follows is an incomplete list of the types of features we would need to add to kst to fully achieve this lofty goal. While the priority of many of these features may be relatively low, nothing should be done to the kst code base which would impede later upgrades to these features. 0007 0008 2. New Capabilities 0009 2.1. Data Viewing 0010 Currently, kst is very strong in many aspects of data viewing. However, there are a couple of important areas where it can be improved. 0011 i ) advanced Image based data representations: 0012 * Waterfall plots (builtin?) 0013 * focal Plane visual representations (instrument specific plugins) 0014 * simple binned maps (plugin) 0015 ii ) UI enhancements: These require some discussion 0016 * Better auto-labeling 0017 * add-curve from context menu 0018 * edit parent data object of curves from context menu 0019 * QuickStats(tm) label in context menu 0020 * X-axis sensitive Y auto scaling 0021 * X-axis sensitive curve fitting 0022 iii ) Colour co-ordination: psds and histograms should default to the same colour as their curves 0023 iv ) Shift/scale for RVectors: to, eg, allow easy/fast calibration for datasources that don't otherwise support it. 0024 v ) Time Awareness (input) 0025 * Data sources need to have a (configurable) TIME_ field, which is A*<somefield> + B. <somefield> could be, eg, INDEX. The configuration should be on a data-source by data-source basis, and should be cached (how to avoid this growing to \infinity?) 0026 * Vector limits everywhere need to be able to accept time rather than INDEX for ranges. 0027 0028 0029 2.2. Plotting 0030 The goal here is to make kst suitable for publication quality plots for a sufficiently large fraction of cases, so that a second tool needed. 0031 i ) Asymetric error bars: currently only symetric errors are supported. We need a mechanism for s+ != s-. 0032 ii ) Floating labels: labels outside of plots 0033 iii ) Alternate axis limits: (eg, wavenumber on bottom, frequency on top) 0034 iv ) shared axis: (eg, Stack several plots vertically so they are touching, all with the same X Axis, only labeled on the bottom plot) 0035 v ) sparse symbols as suggested by nicolas 0036 vi ) Configurable legends: 0037 * Ability to add text (including latex) 0038 * change curve name text 0039 * change listed order 0040 * Floating legends (shared between multiple plots) 0041 vii ) Drawing elements: 0042 * lines & arrows 0043 * Shapes (boxes, circles) 0044 * fills (eg, shade, hatch, or blank regions of the plot) 0045 * curves 0046 viii ) R to L language support (?) 0047 ix ) Better control over symbols 0048 * sm options (#vertex, star or polygon, filled or open, size) 0049 * png (etc) import 0050 * select indexed from a list (V[0] uses png[0], V[1] uses png[1] etc. 0051 x ) Better latex support in labels 0052 * more math symbols (sqrt, matrix related) 0053 * vertically positioned integral and sum limits 0054 * multi-row equation support, not just 'inline' equations. 0055 xi ) Axis property control: In an 'advanced' dialog... 0056 * line width 0057 * tick lengths 0058 * line colour different from label colour 0059 * t type axis rather than box axis 0060 xii ) Layout mode magnetic borders 0061 xiii ) Alternal base for axis (eg, hex) 0062 xiv ) Other types of plots (eg, Polar) 0063 0064 2.3. Data Analysis 0065 i ) A spreadsheet mode for looking at and hand editing data vectors 0066 ii ) Improved data export capability: 0067 * Multi vector 0068 * Subsets defined by X vector 0069 * Subsets defined by current plot ranges 0070 * Output to other formats than ascii 0071 * Interoplation in export 0072 iii ) Scripting environment 0073 * Loops & branches 0074 * subroutines and functions (which can take all data objects) 0075 * Natural format equations (ie, e2 = i*v1 + s1*v2^2) 0076 * String handling 0077 * String lists for creating data object lists 0078 * Data source list, Vector list and scalar list indexing 0079 * Vector element access 0080 * Convenient access to plugins from scripts 0081 * Script command prompt 0082 * Scripts from files 0083 * Access to command line arguments in scripts 0084 * Ability to extend UI from scripts 0085 * Access to timer system from scripts 0086 * Full control over labels, plots, windows 0087 iv ) plugins 0088 * Despike 0089 * Deconvolve 0090 * Gausian fit to negative gaussians 0091 * Differentiation 0092 * Integration 0093 * FIR time domain filtering 0094 * Fit to RC modeled Cosmic Rays 0095 * Fits to arbitrary equations 0096 v ) data processing optionally limited to current view 0097 * Fits 0098 * Stats 0099 vi ) UI for creating functions (and perhaps subroutines) as mentioned in Scripting Environment. (this has previously been referred to a 'filter sets') 0100 vii ) Math in labels (ie, [S1_BOLO1-rms]*2.0) 0101 viii ) consider allowing non-power of 2 FFTs (use gsl or fftw?) 0102 0103 2.4. Other features 0104 i ) Access to data sources using KIO: This will work like an indirect file, and will allow reading of archived data only. 0105 ii ) Embed/attach vector data in kst file (option at save time) 0106 iii ) Allow saving and loading of kst files via KIO: Particularly useful w/ embedded data. 0107 iv ) Drag and Drop 0108 * Drop in other apps as png/ps/pdf (think KWord or KMail...) 0109 * Drag between MDI windows 0110 * Drag between kst sessions 0111 v ) 'Database' system for scalars: we need to be able to turn off the MKS constants (rarely needed in the general case) and add other experiment specific scalar lists. 0112 vi ) Make a KstPlotLib to allow kst to be used from C++ programs (reverse scripting....) 0113 vii ) Make .kst files a recognized MIME type: This will be very useful when combined with embedded data. 0114 viii ) Make kst a kpart: to allow embedding in konq (kst as embedded viewer) or kpresenter (allow interactive plots in a presentation) 0115 ix ) Eye Candy: possibly completely useless frills.... except maybe for kpresenter/ppt use or for less serious publications. 0116 * Import background from a PNG/jpeg, etc 0117 * raised/shadowed/embossed lines and labels 0118 * raised/shadowed/embossed bar graph bars, pie charts, etcgraph 0119 * rounded corners on plots 0120 * Raised/shadowed plots 0121 * Use alpha channel to allow semi-transparent plots 0122 * Make all of the above themable 0123 0124 3. Library and Class changes 0125 In order to do all of these things, it will be important to keep careful control over the code structure of kst. However, all changes we make to the class structure has to be specifically motivated by a tangable goal. As I see it, the following items will require some noticeable/significant re-architecturing. All re-architecturing needs to be done in an incremental way (3 day steps max), rather than via a re-write, to avoid long code development stagnations! 0126 3.1. Data viewing 0127 i ) a Waterfall Plot DataObject class and UI needs to be created. It should use the same structure as psds and histograms do. 0128 ii ) Plugins need to export matrixes to allow experiment specific image stuff. 0129 3.2. Plot upgrades: 0130 i ) Floating labels (outside of plots) require ViewObject label. Axis and tick labels work better under current model. We don't want to support 2 rendering engines. So - the label rendering engine needs to be pulled out of Kst[View]Label and shared by both classes. Current floating label model needs to be replaced. 0131 ii ) Floating legends require legends to become ViewObjects 0132 iii ) New Legend classs needs to use new lable rendering class to allow equations and R to L without code duplication 0133 iv ) Optionally floating ViewObjects requires the ViewObjects to be attached to a 'parent' or be free (ie, attached to the top level view). 0134 v ) ViewObject classes for lines, etc must be created. 0135 vi ) Refactoring of renderer may be useful to ease addition of extended point properties and axis properties. 0136 3.3. Data Analysis 0137 i ) Class to represent subroutines (generalized filter sets). Should inherit from a 'kstplugin'.... 0138 ii ) subvectors: For working on visible part of plots 0139 * Must be efficient (produced by plots during drawing?) 0140 * should appear as a kstvector. 0141 3.4. Other stuff 0142 i ) making KstPlotLib will require changes beyond the scope of human comprehension. 0143 ii ) Making kst a Kpart will be hard also. 0144