CEDRIC  Revision_backup-2009-02
EventNavigator.h
Go to the documentation of this file.
1 /******************************************************************************
2  *
3  * Copyright (C) 2008 Boris Iven, Max Hermann
4  *
5  * This file is part of the "CEDRIC Event Display" application.
6  *
7  *****************************************************************************/
8 
9 #ifndef EVENTNAVIGATOR_H
10 #define EVENTNAVIGATOR_H
11 
12 #include "MDSView.h"
13 
14 #include <QtGui/QWidget>
15 class QGraphicsScene;
16 class QToolButton;
17 
18 #include <EventMap/EventMap.h>
19 #include <Redukt/PAMClustering.h>
20 
21 
30 class EventNavigator: public QWidget
31 {
32  Q_OBJECT
33 
34 signals:
37  void eventSelected( int index );
38 
39  void info( const QString& );
40 protected:
41  void printInfo( const QString& msg ) { emit info(msg); }
42 
43 
46  {
47  struct LocalEvent
48  {
49  EventSignature* signature;
50  double localStress;
51  unsigned int mapIndex;
52  unsigned int phastIndex;
53  };
54 
55  public:
56  MapSelection( EventNavigator& navigator, QList<QGraphicsItem*> selectedItems );
57 
58  double greatestDissimilarity() const;
59  double greatestDissimilarityOfInliers( double times_stddev=1.0 ) const;
60  double percentile( double fraction ) const;
61  double percentileOfInliers( double fraction, double times_stddev=1.0 ) const;
62 
63  protected:
65  double localStress( EventMap* map, unsigned int mapIndex ) const;
66 
67  private:
68  typedef std::map<double,LocalEvent> tmap;
69  tmap m_events;
70  double m_stdev; // standard deviation of local stress
71  double m_mean; // mean of local stress
72  };
73 
74 
75 public:
77  {
78  //~ ScaleByOne=0,
79  //~ ScaleByBortStress,
80  //~ ScaleByMaxDelta,
81  //~ ScaleByMaxDelta_x_BortStress
86  };
87 
89  {
93  };
94 
96  {
99  };
100 
101  EventNavigator( QWidget* parent=0 );
102  ~EventNavigator();
103 
104  MDSView* view() const { return m_view; }
105 
109  bool init();
110 
111 public slots:
113  void changeOptions();
114 
116  void overview();
117 
119  void cluster();
120 
121  void reset();
122 
123 protected slots:
124  void setScene( QGraphicsScene* scene );
125 
126  void zoomAll();
127  void zoomSelection();
128 
129  void selectEventUserMode( int index, int mode );
130 
132  void fit( const QRectF& rect );
133 
135  void immerse( int index, double radius );
136 
137  void setImmerseScalingMethod( int method ) { m_immerseScalingMethod = method; }
138  void setColorMethod( int method );
139 
140  virtual void resizeEvent( QResizeEvent* event );
141 
142 protected:
144  void showMap( EventMap* map, QString additionalInfo=QString("") );
145 
146  EventMap* curMap() { return m_curMap; }
147 
148  bool computeSignatures();
149  bool computeOverviewMap();
150 
152  bool computeClustering( int k=-1 );
153 
154  EventSignature& findSignature( int phastIndex );
155 
156 private:
157  QToolButton* m_defaultActionBut;
158 
159  QGraphicsScene* m_scene;
160 
161  MDSView* m_view;
162 
163  QRectF m_curRect;
164 
165  EventSignatureSet m_allSignatures;
166  EventSignatureSet m_signatures;
167  EventMap* m_overviewMap;
168  EventMap* m_immersedMap;
169  EventMap* m_curMap;
170  EventFeatureCovar* m_covar;
171  EventGroundDistance* m_groundDist;
172 
173  float m_fractionVisible;
174 
175  int m_sampleSize;
176  int m_weightType;
177  int m_distType;
178 
179  int m_immerseScalingMethod;
180  int m_colorMethod;
181 
182  PAMClustering::ivec m_previewLabels;
183  PAMClustering::ivec m_clusterMedoids;
184  bool m_clustered;
185 };
186 
187 
188 #endif // EVENTNAVIGATOR_H
Definition: EventNavigator.h:85
EventMap * curMap()
Definition: EventNavigator.h:146
Definition: EventNavigator.h:98
Definition: EventNavigator.h:91
~EventNavigator()
Definition: EventNavigator.cpp:227
void eventSelected(int index)
bool computeOverviewMap()
Definition: EventNavigator.cpp:403
void info(const QString &)
Class for different immersion techniques.
Definition: EventNavigator.h:45
MapSelection(EventNavigator &navigator, QList< QGraphicsItem * > selectedItems)
Definition: EventNavigator.cpp:742
double percentile(double fraction) const
Definition: EventNavigator.cpp:806
UserActionModes
Definition: EventNavigator.h:95
void cluster()
Show cluster dialog.
Definition: EventNavigator.cpp:354
EventMap * createMap(EventMap::SignatureSampler *sampler)
Definition: EventNavigator.cpp:606
Definition: MDSView.h:49
Definition: MDSView.h:34
Definition: EventNavigator.h:97
void setImmerseScalingMethod(int method)
Definition: EventNavigator.h:137
Definition: EventNavigator.h:30
void fit(const QRectF &rect)
Adjust viewer in such a way, that the region specified by rect is visible (keeps the aspect ratio) ...
Definition: EventNavigator.cpp:989
double greatestDissimilarity() const
Definition: EventNavigator.cpp:798
void reset()
Definition: EventNavigator.cpp:235
Select radius around single event and "immerse" on it
Definition: MDSView.h:52
bool computeClustering(int k=-1)
Definition: EventNavigator.cpp:433
void selectEventUserMode(int index, int mode)
Definition: EventNavigator.cpp:249
ColorMethods
Definition: EventNavigator.h:88
bool init()
Create signatures for all events, compute overview map and show it. Assumes that a mDST is already lo...
Definition: EventNavigator.cpp:552
double percentileOfInliers(double fraction, double times_stddev=1.0) const
Definition: EventNavigator.cpp:820
void changeOptions()
Let the user change options (i.e. sample size, ground distance, weight type).
Definition: EventNavigator.cpp:303
void showMap(EventMap *map, QString additionalInfo=QString(""))
Definition: EventNavigator.cpp:625
ImmerseScalingMethods
Definition: EventNavigator.h:76
void overview()
Return to "overview" map, i.e. the map computed by init() from a random sample of all events...
Definition: EventNavigator.cpp:962
Definition: EventMap.h:48
void zoomSelection()
Definition: EventNavigator.cpp:1013
Definition: EventNavigator.h:82
MDSView * view() const
Definition: EventNavigator.h:104
Definition: EventNavigator.h:90
double greatestDissimilarityOfInliers(double times_stddev=1.0) const
Definition: EventNavigator.cpp:862
EventSignature & findSignature(int phastIndex)
Definition: EventNavigator.cpp:731
void zoomAll()
Definition: EventNavigator.cpp:1006
Definition: EventNavigator.h:84
Definition: FeatureCovar.h:22
Interface for distance functions to use with EarthMoversDistance.
Definition: EarthMoversDistance.h:14
std::vector< EventSignature > EventSignatureSet
Definition: EventSignature.h:21
void setScene(QGraphicsScene *scene)
Definition: EventNavigator.cpp:969
void setColorMethod(int method)
Definition: EventNavigator.cpp:297
Create signature for "physical" event (check numFeatures()>0 to recognize "physical" event afterwards...
Definition: EventSignature.h:37
void immerse(int index, double radius)
Compute "immmersed" map, i.e. the map consisting only of events inside selected radius around pivot e...
Definition: EventNavigator.cpp:897
std::vector< unsigned int > ivec
Definition: PAMClustering.h:32
void printInfo(const QString &msg)
Definition: EventNavigator.h:41
EventNavigator(QWidget *parent=0)
Definition: EventNavigator.cpp:108
Definition: EventMap.h:55
Definition: EventNavigator.h:92
double localStress(EventMap *map, unsigned int mapIndex) const
Compute local stress.
Definition: EventNavigator.cpp:877
virtual void resizeEvent(QResizeEvent *event)
Definition: EventNavigator.cpp:1024
bool computeSignatures()
Definition: EventNavigator.cpp:371