36 #include "../../trace/maptrace.h"
37 #include "../../pappsoexception.h"
45 const QString &x_axis_label,
46 const QString &y_axis_label)
137 std::shared_ptr<std::map<double, MapTrace>> double_map_trace_map_sp,
146 QString(
"The color to be used for the plot graph is invalid."));
148 QCPColorMap *color_map_p =
new QCPColorMap(xAxis, yAxis);
150 color_map_p->setLayer(
"plotsLayer");
160 QCPColorMap *color_map_p =
new QCPColorMap(xAxis, yAxis);
162 color_map_p->data()->setSize(50, 50);
163 color_map_p->data()->setRange(QCPRange(0, 2), QCPRange(0, 2));
164 for(
int x = 0;
x < 50; ++
x)
165 for(
int y = 0;
y < 50; ++
y)
166 color_map_p->data()->setCell(
x,
y, qCos(
x / 10.0) + qSin(
y / 10.0));
167 color_map_p->setGradient(QCPColorGradient::gpPolar);
168 color_map_p->rescaleDataRange(
true);
184 static_cast<void (QCPAbstractPlottable::*)(
bool)
>(
185 &QCPAbstractPlottable::selectionChanged),
186 [
this, color_map_p]() {
188 color_map_p->selected());
194 color_map_p->data()->setSize(color_map_plot_config.
keyCellCount,
197 color_map_p->data()->setRange(QCPRange(color_map_plot_config.
minKeyValue,
201 color_map_p->data()->fill(0.0);
205 for(
auto &&pair : *double_map_trace_map_sp)
212 double dt_or_rt_key = pair.first;
215 for(
auto &&data_point_pair : map_trace)
217 double mz = data_point_pair.first;
218 double intensity = data_point_pair.second;
225 double prev_intensity = color_map_p->data()->data(dt_or_rt_key,
mz);
226 double new_intensity = prev_intensity + intensity;
242 color_map_p->data()->setData(dt_or_rt_key,
mz, new_intensity);
250 color_map_p->setGradient(QCPColorGradient::gpThermal);
252 color_map_p->rescaleDataRange(
true);
254 color_map_p->rescaleAxes();
260 QPen pen = xAxis->basePen();
263 xAxis->setBasePen(pen);
264 xAxis->setLabelColor(color);
265 xAxis->setTickLabelColor(color);
267 yAxis->setBasePen(pen);
268 yAxis->setLabelColor(color);
269 yAxis->setTickLabelColor(color);
275 color_map_p->setPen(pen);
295 QString(
"The color to be used for the plot graph is invalid."));
297 QCPColorMap *color_map_p =
new QCPColorMap(xAxis, yAxis);
299 color_map_p->setLayer(
"plotsLayer");
310 QCPColorMap *color_map_p =
new QCPColorMap(xAxis, yAxis);
312 color_map_p->data()->setSize(50, 50);
313 color_map_p->data()->setRange(QCPRange(0, 2), QCPRange(0, 2));
314 for(
int x = 0;
x < 50; ++
x)
315 for(
int y = 0;
y < 50; ++
y)
316 color_map_p->data()->setCell(
x,
y, qCos(
x / 10.0) + qSin(
y / 10.0));
317 color_map_p->setGradient(QCPColorGradient::gpPolar);
318 color_map_p->rescaleDataRange(
true);
335 static_cast<void (QCPAbstractPlottable::*)(
bool)
>(
336 &QCPAbstractPlottable::selectionChanged),
337 [
this, color_map_p]() {
339 color_map_p->selected());
345 color_map_p->data()->setSize(color_map_plot_config.
keyCellCount,
348 color_map_p->data()->setRange(QCPRange(color_map_plot_config.
minKeyValue,
352 color_map_p->data()->fill(0.0);
357 for(std::size_t i = 0; i < number_of_scans; i++)
360 std::vector<quint32> intensity_index_vector =
368 double dt_or_rt_key = i;
369 std::size_t vector_index = 0;
370 for(quint32 mzindex : mz_index_vector)
373 double intensity = intensity_index_vector.at(vector_index);
380 double prev_intensity = color_map_p->data()->data(dt_or_rt_key,
mz);
381 double new_intensity = prev_intensity + intensity;
399 color_map_p->data()->setCell(dt_or_rt_key,
mz, new_intensity);
412 color_map_p->setGradient(QCPColorGradient::gpThermal);
414 color_map_p->data()->recalculateDataBounds();
415 color_map_p->rescaleDataRange(
true);
417 color_map_p->rescaleAxes();
424 QPen pen = xAxis->basePen();
427 xAxis->setBasePen(pen);
428 xAxis->setLabelColor(color);
429 xAxis->setTickLabelColor(color);
431 yAxis->setBasePen(pen);
432 yAxis->setLabelColor(color);
433 yAxis->setTickLabelColor(color);
439 color_map_p->setPen(pen);
445 color_map_p->setInterpolate(
false);
446 color_map_p->setTightBoundary(
false);
451 qDebug() << color_map_p->data()->keyRange();
452 qDebug() << color_map_p->data()->valueRange();
453 qDebug() << color_map_p->data()->dataBounds();
463 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
465 QCPColorMapData *origData = color_map_p->data();
467 int keySize = origData->keySize();
468 int valueSize = origData->valueSize();
473 QCPRange keyRange = origData->keyRange();
474 QCPRange valueRange = origData->valueRange();
480 QCPColorMapData *newData =
481 new QCPColorMapData(valueSize, keySize, valueRange, keyRange);
483 for(
int iter = 0; iter < keySize; ++iter)
485 for(
int jter = 0; jter < valueSize; ++jter)
487 double cellData = origData->cell(iter, jter);
489 newData->setCell(jter, iter, cellData);
498 color_map_p->data()->clear();
499 color_map_p->rescaleDataRange(
true);
507 QString temp_axis_label = xAxis->label();
508 xAxis->setLabel(yAxis->label());
509 yAxis->setLabel(temp_axis_label);
512 color_map_p->setData(newData);
524 color_map_p->rescaleAxes();
540 qDebug() <<
"Asking to change z axis scale to log10 while it is already "
548 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
550 QCPColorMapData *map_data = color_map_p->data();
552 int keySize = map_data->keySize();
553 int valueSize = map_data->valueSize();
555 QCPRange keyRange = map_data->keyRange();
556 QCPRange valueRange = map_data->valueRange();
565 std::numeric_limits<double>::max());
568 std::numeric_limits<double>::min());
574 QCPColorMapData *new_map_data =
575 new QCPColorMapData(keySize, valueSize, keyRange, valueRange);
579 for(
int iter = 0; iter < keySize; ++iter)
581 for(
int jter = 0; jter < valueSize; ++jter)
583 double cell_data = map_data->cell(iter, jter);
585 double new_cell_data = 0;
593 new_cell_data = std::log10(cell_data);
601 std::min(new_color_map_plot_config.
lastMinZValue, new_cell_data);
607 std::max(new_color_map_plot_config.
lastMaxZValue, new_cell_data);
616 new_map_data->setCell(iter, jter, new_cell_data);
622 color_map_p->data()->clear();
625 color_map_p->setData(new_map_data);
627 color_map_p->data()->recalculateDataBounds();
628 color_map_p->rescaleDataRange(
true);
652 double threshold_percentage)
660 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
662 QCPColorMapData *map_data = color_map_p->data();
664 int keySize = map_data->keySize();
665 int valueSize = map_data->valueSize();
667 QCPRange keyRange = map_data->keyRange();
668 QCPRange valueRange = map_data->valueRange();
673 double amplitude = maxZValue - minZValue;
675 double amplitude_fraction = amplitude * threshold_percentage / 100;
677 double threshold = minZValue + amplitude_fraction;
690 new_color_map_plot_config.
lastMinZValue = std::numeric_limits<double>::max();
691 new_color_map_plot_config.
lastMaxZValue = std::numeric_limits<double>::min();
694 QCPColorMapData *new_map_data =
695 new QCPColorMapData(keySize, valueSize, keyRange, valueRange);
697 for(
int iter = 0; iter < keySize; ++iter)
699 for(
int jter = 0; jter < valueSize; ++jter)
701 double cell_data = map_data->cell(iter, jter);
703 double new_cell_data = 0;
705 if(cell_data < threshold)
707 new_cell_data = cell_data;
709 new_cell_data = threshold;
716 std::min(new_color_map_plot_config.
lastMinZValue, new_cell_data);
722 std::max(new_color_map_plot_config.
lastMaxZValue, new_cell_data);
731 new_map_data->setCell(iter, jter, new_cell_data);
735 color_map_p->data()->clear();
738 color_map_p->setData(new_map_data);
740 color_map_p->data()->recalculateDataBounds();
741 color_map_p->rescaleDataRange(
true);
768 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
770 QCPColorMapData *map_data = color_map_p->data();
772 int keySize = map_data->keySize();
773 int valueSize = map_data->valueSize();
775 QCPRange keyRange = map_data->keyRange();
776 QCPRange valueRange = map_data->valueRange();
789 new_color_map_plot_config.
lastMinZValue = std::numeric_limits<double>::max();
790 new_color_map_plot_config.
lastMaxZValue = std::numeric_limits<double>::min();
793 QCPColorMapData *new_map_data =
794 new QCPColorMapData(keySize, valueSize, keyRange, valueRange);
796 for(
int iter = 0; iter < keySize; ++iter)
798 for(
int jter = 0; jter < valueSize; ++jter)
800 double cell_data = map_data->cell(iter, jter);
802 double new_cell_data = 0;
804 if(cell_data < threshold)
806 new_cell_data = cell_data;
808 new_cell_data = threshold;
815 std::min(new_color_map_plot_config.
lastMinZValue, new_cell_data);
821 std::max(new_color_map_plot_config.
lastMaxZValue, new_cell_data);
830 new_map_data->setCell(iter, jter, new_cell_data);
834 color_map_p->data()->clear();
837 color_map_p->setData(new_map_data);
839 color_map_p->data()->recalculateDataBounds();
840 color_map_p->rescaleDataRange(
true);
860 double threshold_percentage)
869 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
871 QCPColorMapData *map_data = color_map_p->data();
873 int keySize = map_data->keySize();
874 int valueSize = map_data->valueSize();
876 QCPRange keyRange = map_data->keyRange();
877 QCPRange valueRange = map_data->valueRange();
882 double amplitude = maxZValue - minZValue;
884 double amplitude_fraction = amplitude * threshold_percentage / 100;
886 double threshold = minZValue + amplitude_fraction;
899 new_color_map_plot_config.
lastMinZValue = std::numeric_limits<double>::max();
900 new_color_map_plot_config.
lastMaxZValue = std::numeric_limits<double>::min();
903 QCPColorMapData *new_map_data =
904 new QCPColorMapData(keySize, valueSize, keyRange, valueRange);
906 for(
int iter = 0; iter < keySize; ++iter)
908 for(
int jter = 0; jter < valueSize; ++jter)
910 double cell_data = map_data->cell(iter, jter);
912 double new_cell_data = 0;
914 if(cell_data > threshold)
916 new_cell_data = cell_data;
918 new_cell_data = threshold;
925 std::min(new_color_map_plot_config.
lastMinZValue, new_cell_data);
931 std::max(new_color_map_plot_config.
lastMaxZValue, new_cell_data);
940 new_map_data->setCell(iter, jter, new_cell_data);
944 color_map_p->data()->clear();
947 color_map_p->setData(new_map_data);
949 color_map_p->data()->recalculateDataBounds();
950 color_map_p->rescaleDataRange(
true);
979 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
980 color_map_p->data()->clear();
984 "Not possible that the mpa_origColorMapData pointer be null."));
991 color_map_p->data()->recalculateDataBounds();
992 color_map_p->rescaleDataRange(
true);
1031 QString(
"basecolormapplotwidget.cpp: The axis cannot be different than "
1061 const QColor &new_color)
1063 Q_UNUSED(plottable_p);
1068 QPen pen = xAxis->basePen();
1069 pen.setColor(new_color);
1071 xAxis->setBasePen(pen);
1072 xAxis->setLabelColor(new_color);
1073 xAxis->setTickLabelColor(new_color);
1075 yAxis->setBasePen(pen);
1076 yAxis->setLabelColor(new_color);
1077 yAxis->setTickLabelColor(new_color);
1083 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
1085 color_map_p->setPen(pen);
1096 QPen pen = xAxis->basePen();
1106 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
1107 QCPColorMapData *map_data = color_map_p->data();
1109 bool found_range =
false;
1113 QCPRange full_data_range = color_map_p->getKeyRange(found_range);
1117 qDebug() <<
"The range was not found";
1138 if(!visible_data_range_lower || !visible_data_range_upper)
1140 visible_data_range_lower = full_data_range.lower;
1141 visible_data_range_upper = full_data_range.upper;
1150 map_data->coordToCell(visible_data_range_lower, 0, &lower,
nullptr);
1151 map_data->coordToCell(visible_data_range_upper, 0, &upper,
nullptr);
1163 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
1164 QCPColorMapData *map_data = color_map_p->data();
1166 bool found_range =
false;
1170 QCPRange full_data_range = color_map_p->getValueRange(found_range);
1174 qDebug() <<
"The range was not found";
1195 if(!visible_data_range_lower || !visible_data_range_upper)
1197 visible_data_range_lower = full_data_range.lower;
1198 visible_data_range_upper = full_data_range.upper;
1207 map_data->coordToCell(0, visible_data_range_lower,
nullptr, &lower);
1208 map_data->coordToCell(0, visible_data_range_upper,
nullptr, &upper);
1224 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
1225 QCPColorMapData *map_data = color_map_p->data();
1227 int key_index_lower_range;
1228 int key_index_upper_range;
1234 int value_index_lower_range;
1235 int value_index_upper_range;
1241 data_string.clear();
1242 QString debug_string;
1245 for(
int key_iter = key_index_lower_range; key_iter < key_index_upper_range;
1249 for(
int value_iter = value_index_lower_range;
1250 value_iter < value_index_upper_range;
1259 map_data->cellToCoord(key_iter, value_iter, &key, &value);
1262 QString(
"%1 %2 %3\n")
1263 .arg(key, 0,
'f', 6,
' ')
1264 .arg(value, 0,
'f', 6,
' ')
1266 .arg(map_data->cell(key_iter, value_iter), 0,
'f', 0,
' ');
1283 QCPColorMap *color_map_p =
static_cast<QCPColorMap *
>(plottable(0));
1284 QCPColorMapData *map_data = color_map_p->data();
1286 int key_index_lower_range;
1287 int key_index_upper_range;
1293 int value_index_lower_range;
1294 int value_index_upper_range;
1300 data_string.clear();
1305 for(
int key_iter = key_index_lower_range; key_iter < key_index_upper_range;
1308 double current_key_value;
1309 map_data->cellToCoord(key_iter, 0, ¤t_key_value,
nullptr);
1311 data_string += QString(
"%1 ").arg(current_key_value, 0,
'f', 6,
' ');
1315 data_string +=
"\n";
1339 for(
int value_iter = value_index_upper_range;
1340 value_iter >= value_index_lower_range;
1344 for(
int key_iter = key_index_lower_range;
1345 key_iter < key_index_upper_range;
1348 double intensity = map_data->cell(key_iter, value_iter);
1352 double value_double;
1353 map_data->cellToCoord(
1354 key_iter, value_iter, &key_double, &value_double);
1362 data_string += QString(
"%1/%2/%3 ")
1363 .arg(key_double, 0,
'f', 6,
' ')
1364 .arg(value_double, 0,
'f', 6,
' ')
1367 data_string += QString(
"%1 ").arg(intensity, 0,
'f', 0,
' ');
1370 data_string +=
"\n";
1377 data_string +=
"\n";
virtual std::size_t getTotalNumberOfScans() const
get the number of scans contained in this frame each scan represents an ion mobility slice
virtual std::vector< quint32 > getScanIndexList(std::size_t scanNum) const override
get raw index list for one given scan index are not TOF nor m/z, just index on digitizer
virtual std::vector< quint32 > getScanIntensities(std::size_t scanNum) const override
get raw intensities without transformation from one scan it needs intensity normalization
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
void setOrigAndLastMaxZValue(double value)
void setOrigAndLastMinZValue(double value)