SedSat3 1.1.6
Sediment Source Apportionment Tool - Advanced statistical methods for environmental pollution research
Loading...
Searching...
No Matches
omsizecorrectiontablemodel.cpp
Go to the documentation of this file.
2
3OmSizeCorrectionTableModel::OmSizeCorrectionTableModel(MultipleLinearRegressionSet *_mlrset, QObject *parent) : QAbstractTableModel(parent)
4{
5 MLRset = _mlrset;
6}
7int OmSizeCorrectionTableModel::rowCount(const QModelIndex &index) const
8{
9 return MLRset->size();
10}
11int OmSizeCorrectionTableModel::columnCount(const QModelIndex &index) const
12{
13 if (MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames().size()==2)
14 return 8;
15 else if (MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames().size()==1)
16 return 5;
17}
18QVariant OmSizeCorrectionTableModel::data(const QModelIndex &index, int role) const
19{
20 MultipleLinearRegression *mlr = &MLRset->operator[](MLRset->Key(index.row()));
21 if (role == Qt::DisplayRole)
22 { if (index.column()==0)
23 {
24 return QString::fromStdString(MLRset->Key(index.row()));
25 }
26 if (index.column()==1)
27 {
28 return mlr->CoefficientsIntercept()[0];
29 }
30 if (index.column()==2)
31 {
32 return mlr->CoefficientsIntercept()[1];
33 }
34 if (index.column()==3)
35 {
36 return mlr->P_Value()[0];
37 }
38 if (index.column()==4)
39 {
40 if (mlr->Effective(0))
41 return "Yes";
42 else
43 return "No";
44 }
45 if (index.column()==5)
46 {
47 return mlr->CoefficientsIntercept()[2];
48 }
49 if (index.column()==6)
50 {
51 return mlr->P_Value()[1];
52 }
53 if (index.column()==7)
54 {
55 if (mlr->Effective(1))
56 return "Yes";
57 else
58 return "No";
59 }
60 }
61 if (role == Qt::ItemIsEnabled)
62 {
63 if (index.column()==7 || index.column()==4)
64 return true;
65 else
66 return false;
67 }
68
69 if (role == Qt::ForegroundRole)
70 {
71 if (index.column()==3 && mlr->P_Value()[0]<mlr->PValueThreshold())
72 return QVariant::fromValue(QColor(Qt::red));
73 else if (index.column()==6 && mlr->P_Value()[1]<mlr->PValueThreshold())
74 return QVariant::fromValue(QColor(Qt::red));
75 else
76 return QVariant::fromValue(QColor(Qt::black));
77 }
78
79 return QVariant();
80
81}
82QVariant OmSizeCorrectionTableModel::headerData(int section, Qt::Orientation orientation, int role) const
83{
84 if (role == Qt::DisplayRole)
85 {
86 if (orientation == Qt::Horizontal)
87 { if (section==0)
88 {
89 return "Constituent";
90 }
91 if (section==1)
92 {
93 return "Intercept";
94 }
95 if (section==2)
96 {
97 return "Coefficient for " + QString::fromStdString(MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames()[0]);
98 }
99 if (section==3)
100 {
101 return "P-value for " + QString::fromStdString(MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames()[0]);
102 }
103 if (section==4)
104 {
105 return "Correct based on " + QString::fromStdString(MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames()[0]);
106 }
107 if (section==5)
108 {
109 return "Coefficient for " + QString::fromStdString(MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames()[1]);
110 }
111 if (section==6)
112 {
113 return "P-value for " + QString::fromStdString(MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames()[1]);
114 }
115 if (section==7)
116 {
117 return "Correct based on " + QString::fromStdString(MLRset->operator[](MLRset->Key(0)).GetIndependentVariableNames()[1]);
118 }
119 }
120 }
121 return QVariant();
122}
123bool OmSizeCorrectionTableModel::setData(const QModelIndex & index, const QVariant & value, int role)
124{
125 MultipleLinearRegression *mlr = &MLRset->operator[](MLRset->Key(index.row()));
126 if (role==Qt::EditRole)
127 {
128 if (index.column()==4)
129 {
130 if (value.toString()=="Yes" || value.toBool())
131 mlr->SetEffective(0,true);
132 else
133 mlr->SetEffective(0,false);
134 }
135 if (index.column()==7)
136 {
137 if (value.toString()=="Yes" || value.toBool())
138 mlr->SetEffective(1,true);
139 else
140 mlr->SetEffective(1,false);
141 }
142
143 }
144 QString result = "Done";
145 emit editCompleted(result);
146 return true;
147}
148Qt::ItemFlags OmSizeCorrectionTableModel::flags(const QModelIndex & index) const
149{
150 if (index.column()!=4 && index.column()!=7)
151 return Qt::ItemIsSelectable | Qt::ItemIsEnabled ;
152 else
153 return Qt::ItemIsSelectable | Qt::ItemFlag::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsEditable ;
154
155}
156
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
void editCompleted(const QString &)
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
OmSizeCorrectionTableModel(MultipleLinearRegressionSet *MLRset, QObject *parent=nullptr)
MultipleLinearRegressionSet * MLRset
QVariant headerData(int section, Qt::Orientation orientation, int role) const override