Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef OPENMS_VISUAL_DIALOGS_LAYERSTATISTICSDIALOG_H
00037 #define OPENMS_VISUAL_DIALOGS_LAYERSTATISTICSDIALOG_H
00038
00039 #include <OpenMS/VISUAL/DIALOGS/UIC/ui_LayerStatisticsDialog.h>
00040 #include <OpenMS/VISUAL/LayerData.h>
00041
00042 #include <QtGui/QPushButton>
00043
00044 #include <utility>
00045 #include <map>
00046
00047 namespace OpenMS
00048 {
00049 class SpectrumWidget;
00050 class SpectrumCanvas;
00051
00057 class OPENMS_GUI_DLLAPI LayerStatisticsDialog :
00058 public QDialog,
00059 public Ui::LayerStatisticsDialogTemplate
00060 {
00061 Q_OBJECT
00062
00063 public:
00064
00066 LayerStatisticsDialog(SpectrumWidget * parent);
00067
00068 protected slots:
00069
00071 void showDistribution_();
00072
00073 protected:
00074
00078 struct MetaStatsValue_
00079 {
00080 MetaStatsValue_(unsigned long c = 0, DoubleReal mi = 0, DoubleReal ma = 0, DoubleReal a = 0)
00081 {
00082 count = c;
00083 min = mi;
00084 max = ma;
00085 avg = a;
00086 }
00087
00088 unsigned long count;
00089 DoubleReal min, max, avg;
00090 };
00091
00093 typedef LayerData::ExperimentType::SpectrumType::ConstIterator PeakIterator_;
00095 typedef LayerData::FeatureMapType::ConstIterator FeatureIterator_;
00097 typedef LayerData::ConsensusMapType::ConstIterator ConsensusIterator_;
00099 typedef std::map<UInt, MetaStatsValue_>::iterator MetaIterator_;
00100
00102 void computePeakStats_();
00104 void computeFeatureStats_();
00106 void computeConsensusStats_();
00108 template <typename MetaDataIterator>
00109 void computeMetaDataArrayStats_(MetaDataIterator begin, MetaDataIterator end);
00111 void bringInMetaStats_(const MetaInfoInterface & meta_interface);
00113 void computeMetaAverages_();
00114
00116 std::map<UInt, MetaStatsValue_> meta_stats_;
00118 std::map<String, MetaStatsValue_> meta_array_stats_;
00120 SpectrumCanvas * canvas_;
00122 LayerData layer_data_;
00124 DoubleReal min_intensity_;
00126 DoubleReal max_intensity_;
00128 DoubleReal avg_intensity_;
00130 DoubleReal min_charge_;
00132 DoubleReal max_charge_;
00134 DoubleReal avg_charge_;
00136 DoubleReal min_quality_;
00138 DoubleReal max_quality_;
00140 DoubleReal avg_quality_;
00142 DoubleReal min_elements_;
00144 DoubleReal max_elements_;
00146 DoubleReal avg_elements_;
00147
00148 private:
00150 LayerStatisticsDialog();
00151
00152 };
00153
00154 template <typename MetaDataIterator>
00155 void LayerStatisticsDialog::computeMetaDataArrayStats_(MetaDataIterator begin, MetaDataIterator end)
00156 {
00157 for (MetaDataIterator meta_array_it = begin; meta_array_it != end; meta_array_it++)
00158 {
00159 String meta_name = meta_array_it->getName();
00160 MetaStatsValue_ meta_stats_value;
00161 std::map<String, MetaStatsValue_>::iterator it = meta_array_stats_.find(meta_name);
00162 if (it != meta_array_stats_.end())
00163 {
00164 meta_stats_value = it->second;
00165 for (typename MetaDataIterator::value_type::const_iterator value_it = meta_array_it->begin(); value_it != meta_array_it->end(); value_it++)
00166 {
00167 Real value = *value_it;
00168 meta_stats_value.count++;
00169 if (value < meta_stats_value.min)
00170 {
00171 meta_stats_value.min = value;
00172 }
00173 else if (value > meta_stats_value.max)
00174 {
00175 meta_stats_value.max = value;
00176 }
00177 meta_stats_value.avg += value;
00178 }
00179 it->second = meta_stats_value;
00180 }
00181 else if (meta_array_it->size() > 0)
00182 {
00183 Real init_value = *(meta_array_it->begin());
00184 meta_stats_value = MetaStatsValue_(0, init_value, init_value, 0);
00185 for (typename MetaDataIterator::value_type::const_iterator value_it = meta_array_it->begin(); value_it != meta_array_it->end(); value_it++)
00186 {
00187 Real value = *value_it;
00188 meta_stats_value.count++;
00189 if (value < meta_stats_value.min)
00190 {
00191 meta_stats_value.min = value;
00192 }
00193 else if (value > meta_stats_value.max)
00194 {
00195 meta_stats_value.max = value;
00196 }
00197 meta_stats_value.avg += value;
00198 }
00199 meta_array_stats_.insert(make_pair(meta_name, meta_stats_value));
00200 }
00201 }
00202 }
00203
00204 }
00205 #endif // OPENMS_VISUAL_DIALOGS_LAYERSTATISTICSDIALOG_H