38 #include <OpenMS/VISUAL/OpenMS_GUIConfig.h>
49 #include <QRubberBand>
209 spectrum_widget_ = widget;
220 return spectrum_widget_;
243 return intensity_mode_;
257 intensity_mode_ = mod;
258 intensityModeChange_();
274 return layers_.getLayer(index);
279 return layers_.getLayer(index);
285 return layers_.getCurrentLayer();
290 return layers_.getCurrentLayer();
296 return layers_.getCurrentLayerIndex();
302 return getLayerFlag(layers_.getCurrentLayerIndex(), f);
308 setLayerFlag(layers_.getCurrentLayerIndex(), f, value);
314 return layers_.getLayer(layer).flags.test(f);
321 if (layers_.empty())
return;
323 layers_.getLayer(layer).flags.set(f, value);
324 update_buffer_ =
true;
331 if (layers_.empty())
return;
332 layers_.getCurrentLayer().label = label;
333 update_buffer_ =
true;
344 return visible_area_;
355 return mz_to_x_axis_;
370 return layers_.getLayerCount();
381 for (
Size i = getLayerCount(); i > 0; --i)
431 bool addLayer(std::vector<PeptideIdentification> & peptides,
432 const String & filename =
"");
437 return layers_.getCurrentLayer().getMinIntensity();
443 return layers_.getCurrentLayer().getMaxIntensity();
449 return getLayer(index).getMinIntensity();
455 return getLayer(index).getMaxIntensity();
467 getCurrentLayer().param = param;
468 emit preferencesChange();
612 dataToWidget_(x, y, point);
615 dataToWidget_(0, 0, zero);
730 virtual void zoom_(
int x,
int y,
bool zoom_in);
744 virtual void translateLeft_(Qt::KeyboardModifiers m);
775 visible_area_.minX() + (height() - y) / height() * visible_area_.width(),
776 visible_area_.minY() + x / width() * visible_area_.height()
782 visible_area_.minX() + x / width() * visible_area_.width(),
783 visible_area_.minY() + (height() - y) / height() * visible_area_.height()
791 return widgetToData_(pos.x(), pos.y());
810 point.setX(
int((y - visible_area_.minY()) / visible_area_.height() * width()));
815 std::log10((y - visible_area_.minY()) + 1) / std::log10(visible_area_.height() + 1) * width())
819 point.setY(height() -
int((x - visible_area_.minX()) / visible_area_.width() * height()));
823 point.setX(
int((x - visible_area_.minX()) / visible_area_.width() * width()));
827 point.setY(height() -
int((y - visible_area_.minY()) / visible_area_.height() * height()));
831 point.setY(height() -
int(
832 std::log10((y - visible_area_.minY()) + 1) / std::log10(visible_area_.height() + 1) * height()
854 bool mz_to_x_axis_ =
true;
885 bool show_grid_ =
true;
890 std::vector<AreaType>::iterator zoom_pos_ = zoom_stack_.end();
901 virtual void update_(
const char * caller_name);
907 bool update_buffer_ =
false;
920 double percentage_factor_ = 1.0;
929 std::vector<double> snap_factors_ = {1.0};
935 QMenu* context_add_ =
nullptr;
938 bool show_timing_ =
false;
948 std::set<DataProcessing::ProcessingAction> actions;
949 actions.insert(action);
953 p->setProcessingActions(actions);
955 p->getSoftware().setName(
"PlotCanvas");
961 for (
Size i = 0; i < map.
size(); ++i)
963 map[i].getDataProcessing().push_back(p);
A container for consensus elements.
Definition: ConsensusMap.h:90
DataFilter array providing some convenience functions.
Definition: DataFilters.h:51
Description of the applied preprocessing steps.
Definition: DataProcessing.h:53
ProcessingAction
Definition: DataProcessing.h:59
static DateTime now()
Returns the current date and time.
A base class for all classes handling default parameters.
Definition: DefaultParamHandler.h:93
A container for features.
Definition: FeatureMap.h:106
Class that stores the data for one layer.
Definition: LayerDataBase.h:99
boost::shared_ptr< ExperimentType > ExperimentSharedPtrType
SharedPtr on MSExperiment.
Definition: LayerDataBase.h:162
boost::shared_ptr< OnDiscMSExperiment > ODExperimentSharedPtrType
SharedPtr on On-Disc MSExperiment.
Definition: LayerDataBase.h:167
LabelType
Label used in visualization.
Definition: LayerDataBase.h:134
boost::shared_ptr< FeatureMap > FeatureMapSharedPtrType
SharedPtr on feature map.
Definition: LayerDataBase.h:150
boost::shared_ptr< const ExperimentType > ConstExperimentSharedPtrType
Definition: LayerDataBase.h:164
boost::shared_ptr< ConsensusMap > ConsensusMapSharedPtrType
SharedPtr on consensus features.
Definition: LayerDataBase.h:156
Flags
Flags that determine which information is shown.
Definition: LayerDataBase.h:117
boost::shared_ptr< OSWData > OSWDataSharedPtrType
SharedPtr on OSWData.
Definition: LayerDataBase.h:170
Definition: PlotCanvas.h:73
Size getLayerCount() const
Size getCurrentLayerIndex() const
Size current_layer_
Definition: PlotCanvas.h:103
LayerDataBase & getCurrentLayer()
LayerDataBase & getLayer(const Size index)
void removeLayer(Size layer_index)
const LayerDataBase & getLayer(const Size index) const
void setCurrentLayer(Size index)
throws Exception::IndexOverflow unless index is smaller than getLayerCount()
void addLayer(LayerDataBaseUPtr new_layer)
const LayerDataBase & getCurrentLayer() const
void removeCurrentLayer()
std::vector< LayerDataBaseUPtr > layers_
Definition: PlotCanvas.h:101
In-Memory representation of a mass spectrometry run.
Definition: MSExperiment.h:73
Size size() const
Definition: MSExperiment.h:120
The representation of a 1D spectrum.
Definition: MSSpectrum.h:70
ContainerType::const_iterator ConstIterator
Non-mutable iterator.
Definition: MSSpectrum.h:130
Management and storage of parameters / INI files.
Definition: Param.h:70
A 1-dimensional raw data point or peak.
Definition: Peak1D.h:54
Represents the peptide hits for a spectrum.
Definition: PeptideIdentification.h:65
Base class for visualization canvas classes.
Definition: PlotCanvas.h:138
virtual void translateBackward_()
Translation bound to the 'Down' key.
float getMaxIntensity(Size index) const
Returns the maximum intensity of the layer with index index.
Definition: PlotCanvas.h:453
float getMinIntensity(Size index) const
Returns the minimum intensity of the layer with index index.
Definition: PlotCanvas.h:447
float getCurrentMinIntensity() const
Returns the minimum intensity of the active layer.
Definition: PlotCanvas.h:435
void addDataProcessing_(PeakMap &map, DataProcessing::ProcessingAction action) const
Data processing setter for peak maps.
Definition: PlotCanvas.h:946
void layerActivated(QWidget *w)
Signal emitted whenever a new layer is activated within the current window.
void setLayerName(Size i, const String &name)
Sets the name of layer i.
~PlotCanvas() override
Destructor.
DRange< 2 > AreaType
Types of Ranges/Areas.
Definition: PlotCanvas.h:171
LayerStack layers_
Layer data.
Definition: PlotCanvas.h:851
double getIdentificationMZ_(const Size layer_index, const PeptideIdentification &peptide) const
Returns the m/z value of an identification depending on the m/z source of the layer (precursor mass/t...
bool addLayer(std::vector< PeptideIdentification > &peptides, const String &filename="")
Add an identification data layer.
PlotCanvas(const Param &preferences, QWidget *parent=nullptr)
Default constructor.
LayerDataBase::ConstExperimentSharedPtrType ConstExperimentSharedPtrType
Definition: PlotCanvas.h:149
String getLayerName(Size i)
Gets the name of layer i.
virtual void horizontalScrollBarChange(int value)
Notifies the canvas that the horizontal scrollbar has been moved.
SpectrumType::PeakType PeakType
Peak type.
Definition: PlotCanvas.h:166
QImage buffer_
Buffer that stores the actual peak information.
Definition: PlotCanvas.h:842
PeakIndex selected_peak_
selected peak
Definition: PlotCanvas.h:941
double getPercentageFactor() const
Returns the percentage factor.
void zoomAdd_(const AreaType &area)
Add a visible area to the zoom stack.
void setIntensityMode(IntensityModes mod)
Sets the intensity mode.
Definition: PlotCanvas.h:255
void recalculateAxes()
Forces recalculation of axis ticks in the connected widget.
LayerDataBase::ConsensusMapSharedPtrType ConsensusMapSharedPtrType
Main managed data type (consensus features)
Definition: PlotCanvas.h:159
Size getLayerCount() const
Returns the number of layers.
Definition: PlotCanvas.h:368
virtual void updateLayer(Size i)=0
Updates layer i when the data in the corresponding file changes.
bool addLayer(ExperimentSharedPtrType map, ODExperimentSharedPtrType od_map, const String &filename="")
Add a peak data layer.
PointType widgetToDataDistance(double x, double y)
compute distance in widget coordinates (unit axis as shown) when moving x/y px in chart coordinates
Definition: PlotCanvas.h:622
bool gridLinesShown() const
Returns if the grid is currently shown.
Definition: PlotCanvas.h:266
SpectrumType::ConstIterator SpectrumConstIteratorType
Spectrum iterator type (iterates over peaks)
Definition: PlotCanvas.h:164
void enterEvent(QEvent *e) override
LayerDataBase::FeatureMapSharedPtrType FeatureMapSharedPtrType
Main managed data type (features)
Definition: PlotCanvas.h:155
virtual void updateScrollbars_()
Updates the scroll bars.
void getVisibleConsensusData(ConsensusMapType &map) const
Fills the handed over map with the visible consensus features of the current layer.
Size getCurrentLayerIndex() const
returns the index of the active layer
Definition: PlotCanvas.h:294
void setLabel(LayerDataBase::LabelType label)
Definition: PlotCanvas.h:328
bool addLayer(FeatureMapSharedPtrType map, const String &filename="")
Add a feature data layer.
Int getActionMode() const
Returns the action mode.
Definition: PlotCanvas.h:229
void mzToXAxis(bool mz_to_x_axis)
Sets the mapping of m/z to axes.
LayerDataBase::OSWDataSharedPtrType OSWDataSharedPtrType
Definition: PlotCanvas.h:151
virtual void activateLayer(Size layer_index)=0
change the active layer (the one that is used for selecting and so on)
const LayerDataBase & getLayer(Size index) const
returns the layer data with index index
Definition: PlotCanvas.h:272
void updateCursor_()
Updates the cursor according to the current action mode.
void drawText_(QPainter &painter, QStringList text)
Draws several lines of text to the upper right corner of the widget.
PointType widgetToData_(const QPoint &pos)
Calls widgetToData_ with x and y position of pos.
Definition: PlotCanvas.h:789
virtual void removeLayer(Size layer_index)=0
removes the layer with index layer_index
virtual void verticalScrollBarChange(int value)
Notifies the canvas that the vertical scrollbar has been moved.
void actionModeChange()
Emitted when the action mode changes.
LayerDataBase & getLayer(Size index)
returns the layer data with index index
Definition: PlotCanvas.h:277
const AreaType & getVisibleArea() const
Returns the currently visible area.
Definition: PlotCanvas.h:342
void sendCursorStatus(double mz=-1.0, double rt=-1.0)
Emitted when the cursor position changes (for displaying e.g. in status bar)
void leaveEvent(QEvent *e) override
void zoomClear_()
Clears the zoom stack and invalidates the current zoom position. After calling this,...
void keyReleaseEvent(QKeyEvent *e) override
void getVisibleFeatureData(FeatureMapType &map) const
Fills the handed over map with the visible features of the current layer.
void recalculateRanges_(UInt mz_dim, UInt rt_dim, UInt it_dim)
Recalculates the overall_data_range_.
void visibleAreaChanged(DRange< 2 > area)
Change of the visible area.
void getVisibleIdentifications(std::vector< PeptideIdentification > &peptides) const
Fills the handed over peptides with the visible peptide identifications of the current layer.
ExperimentType::SpectrumType SpectrumType
Spectrum type.
Definition: PlotCanvas.h:162
virtual void showMetaData(bool modifiable=false, Int index=-1)
Shows a dialog with the meta data.
void resetZoom(bool repaint=true)
Zooms fully out and resets the zoom stack.
virtual void paintGridLines_(QPainter &painter)
Helper function to paint grid lines.
LayerDataBase & getCurrentLayer()
returns the layer data of the active layer
Definition: PlotCanvas.h:288
virtual void saveCurrentLayer(bool visible)=0
Saves the current layer data.
void keyPressEvent(QKeyEvent *e) override
void setLayerFlag(LayerDataBase::Flags f, bool value)
sets a layer flag of the current layer
Definition: PlotCanvas.h:306
virtual void zoomForward_()
Go forward in zoom history.
void setAdditionalContextMenu(QMenu *menu)
Sets the additional context menu. If not 0, this menu is added to the context menu of the canvas.
void dataToWidgetDistance(double x, double y, QPoint &point)
converts a distance in axis values to pixel values
Definition: PlotCanvas.h:610
void changeVisibility(Size i, bool b)
change the visibility of a layer
void updateVScrollbar(float, float, float, float)
Triggers the update of the vertical scrollbar.
bool getLayerFlag(Size layer, LayerDataBase::Flags f) const
returns a layer flag of the layer layer
Definition: PlotCanvas.h:312
void wheelEvent(QWheelEvent *e) override
void focusOutEvent(QFocusEvent *e) override
virtual void changeVisibleArea_(const AreaType &new_area, bool repaint=true, bool add_to_stack=false)
Sets the visible area.
void modificationStatus_(Size layer_index, bool modified)
Takes all actions necessary when the modification status of a layer changes (signals etc....
virtual void translateForward_()
Translation bound to the 'Up' key.
DPosition< 2 > PointType
Type of the Points.
Definition: PlotCanvas.h:169
void zoomBack_()
Go backward in zoom history.
IntensityModes
Display modes of intensity.
Definition: PlotCanvas.h:185
@ IM_NONE
Normal mode: f(x)=x.
Definition: PlotCanvas.h:186
@ IM_SNAP
Shows the maximum displayed intensity as if it was the overall maximum intensity.
Definition: PlotCanvas.h:188
@ IM_PERCENTAGE
Shows intensities normalized by layer maximum: f(x)=x/max(x)*100.
Definition: PlotCanvas.h:187
@ IM_LOG
Logarithmic mode.
Definition: PlotCanvas.h:189
LayerDataBase::FeatureMapType FeatureMapType
Main data type (features)
Definition: PlotCanvas.h:153
float getCurrentMaxIntensity() const
Returns the maximum intensity of the active layer.
Definition: PlotCanvas.h:441
virtual void setFilters(const DataFilters &filters)
Sets the filters applied to the data before drawing (for the current layer)
const LayerDataBase & getCurrentLayer() const
returns the layer data of the active layer
Definition: PlotCanvas.h:283
void changeLayerFilterState(Size i, bool b)
change if the defined data filters are used
void setVisibleArea(const AreaType &area)
Sets the visible area.
void layerModficationChange(Size layer, bool modified)
Signal emitted whenever the modification status of a layer changes (editing and storing)
virtual void translateRight_(Qt::KeyboardModifiers m)
Translation bound to the 'Right' key.
bool addLayer(ConsensusMapSharedPtrType map, const String &filename="")
Add a consensus feature data layer.
void setCurrentLayerParameters(const Param ¶m)
Sets the parameters of the current layer.
Definition: PlotCanvas.h:465
void updateHScrollbar(float, float, float, float)
Triggers the update of the horizontal scrollbar.
void sendStatusMessage(std::string message, OpenMS::UInt time)
Emits a status message that should be displayed for time ms. If time is 0 the message should be displ...
std::vector< AreaType > zoom_stack_
The zoom stack.
Definition: PlotCanvas.h:888
QPoint last_mouse_pos_
start position of mouse actions
Definition: PlotCanvas.h:913
PointType widgetToData_(double x, double y)
Convert widget to chart coordinates.
Definition: PlotCanvas.h:770
double getSnapFactor()
Returns the first intensity scaling factor for 'snap to maximum intensity mode'.
virtual bool finishAdding_()=0
Method that is called when a new layer has been added.
ActionModes
Mouse action modes.
Definition: PlotCanvas.h:177
@ AM_ZOOM
zoom
Definition: PlotCanvas.h:179
@ AM_TRANSLATE
translate
Definition: PlotCanvas.h:178
virtual void intensityModeChange_()
This method is called whenever the intensity mode changes. Reimplement if you need to react on such c...
void popIncompleteLayer_(const QString &error_message="")
void preferencesChange()
Emitted when the layer preferences have changed.
PeakIndex measurement_start_
start peak of measuring mode
Definition: PlotCanvas.h:943
IntensityModes getIntensityMode() const
Returns the intensity mode.
Definition: PlotCanvas.h:241
bool isMzToXAxis() const
Returns the mapping of m/z to axes.
Definition: PlotCanvas.h:353
void dataToWidget_(double x, double y, QPoint &point)
Convert chart to widget coordinates.
Definition: PlotCanvas.h:802
bool getLayerFlag(LayerDataBase::Flags f) const
returns a layer flag of the current layer
Definition: PlotCanvas.h:300
virtual void showCurrentLayerPreferences()=0
Shows the preferences dialog of the active layer.
void resizeEvent(QResizeEvent *e) override
const DRange< 3 > & getDataRange()
Returns the area which encloses all data points.
QRubberBand rubber_band_
Rubber band for selected area.
Definition: PlotCanvas.h:932
LayerDataBase::ConsensusMapType ConsensusMapType
Main data type (consensus features)
Definition: PlotCanvas.h:157
LayerDataBase::ExperimentSharedPtrType ExperimentSharedPtrType
Main managed data type (experiment)
Definition: PlotCanvas.h:148
void getVisiblePeakData(ExperimentType &map) const
Fills the handed over map with the visible peaks of the current layer.
void changeLegendVisibility()
Toggle axis legend visibility change.
void showGridLines(bool show)
Whether or not to show grid lines.
void layerZoomChanged(QWidget *w)
Signal emitted whenever the zoom changed.
virtual void recalculateSnapFactor_()
Recalculates the intensity scaling factor for 'snap to maximum intensity mode'.
void removeLayers()
removes all layers by calling removeLayer() for all layer indices (from highest to lowest)
Definition: PlotCanvas.h:379
LayerDataBase::ODExperimentSharedPtrType ODExperimentSharedPtrType
Definition: PlotCanvas.h:150
PlotWidget * getPlotWidget() const
Returns the spectrum widget.
Definition: PlotCanvas.h:218
virtual void update_(const char *caller_name)
Updates the displayed data.
void setLayerFlag(Size layer, LayerDataBase::Flags f, bool value)
sets a layer flag of the layer layer
Definition: PlotCanvas.h:318
void setPlotWidget(PlotWidget *widget)
Sets the spectrum widget.
Definition: PlotCanvas.h:207
LayerDataBase::ExperimentType ExperimentType
Main data type (experiment)
Definition: PlotCanvas.h:146
Handles the management of a multidimensional range, e.g. RangeMZ and RangeIntensity for spectra.
Definition: RangeManager.h:455
A more convenient string class.
Definition: String.h:60
static String getVersion()
Return the version number of OpenMS.
int Int
Signed integer type.
Definition: Types.h:102
unsigned int UInt
Unsigned integer type.
Definition: Types.h:94
size_t Size
Size type e.g. used as variable which can hold result of size()
Definition: Types.h:127
Main OpenMS namespace.
Definition: FeatureDeconvolution.h:47
std::unique_ptr< LayerDataBase > LayerDataBaseUPtr
Definition: PlotCanvas.h:65
boost::shared_ptr< DataProcessing > DataProcessingPtr
Definition: DataProcessing.h:136
Index of a peak or feature.
Definition: PeakIndex.h:51