diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index fb7f4a8..b589d56 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 0000000..4515aa3
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index caad4cc..51a3b49 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,3 @@
-
-
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 76ac51b..26dfe1b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -46,7 +46,7 @@
+ android:screenOrientation="landscape" android:parentActivityName=".activities.MenuActivity">
diff --git a/app/src/main/java/com/bae/myapplication/activities/DataAnalysisActivity.java b/app/src/main/java/com/bae/myapplication/activities/DataAnalysisActivity.java
index 1fdb946..02d75b6 100644
--- a/app/src/main/java/com/bae/myapplication/activities/DataAnalysisActivity.java
+++ b/app/src/main/java/com/bae/myapplication/activities/DataAnalysisActivity.java
@@ -51,8 +51,8 @@ public class DataAnalysisActivity extends AppCompatActivity {
private static final int LISTVIEW_TEXTVIEW = R.id.sampleLabel;
private static final int LISTVIEW_SAMPLE_LABEL = R.id.sampleLabel;
private static final int LISTVIEW_RGB_LABEL = R.id.RGBLabel;
- private static final int LISTVIEW_RPOINT_LABEL = R.id.RPointLabelTitle;
- private static final int LISTVIEW_RPOINTSTD_LABEL = R.id.RPointSTDLabel;
+ private static final int LISTVIEW_Alpha_LABEL = R.id.AlphaLabel;
+ private static final int LISTVIEW_RPOINTBeta_LABEL = R.id.BetaLabel;
private static final int LISTVIEW_TRANSFORMEDVALUE_LABEL = R.id.TransformedValueLabel;
private static final int LISTVIEW_COMPARISONVALUE_LABEL = R.id.ComparativeValueLabel;
@@ -142,11 +142,13 @@ private void setBalloonListeners() {
ImageButton b2 = findViewById(R.id.avgrgbTip2);
ImageButton b3 = findViewById(R.id.avgrgbTip3);
ImageButton b4 = findViewById(R.id.avgrgbTip4);
+ ImageButton b5 = findViewById(R.id.avgrgbTip5);
b1.setOnClickListener(new avgRGBOnClickListener(b1));
b2.setOnClickListener(new avgRValOnClickListener(b2));
b3.setOnClickListener(new avgRValSTDOnClickListener(b3));
b4.setOnClickListener(new RatioOnClickListener(b4));
+ b5.setOnClickListener(new snrOnClick(b5));
}
/**
@@ -193,7 +195,7 @@ public avgRValSTDOnClickListener(ImageButton button) {
@Override
public void onClick(View v) {
- balloons.getAvgRValSTDBalloon().showAlignBottom(button);
+ balloons.getAlphaBalloon().showAlignBottom(button);
}
}
@@ -213,6 +215,23 @@ public void onClick(View v) {
}
}
+ /**
+ * Tooltip listener
+ */
+ private class snrOnClick implements View.OnClickListener {
+ private ImageButton button;
+
+ public snrOnClick(ImageButton button) {
+ this.button = button;
+ }
+
+ @Override
+ public void onClick(View v) {
+ balloons.getSnrBalloon().showAlignBottom(button);
+ }
+ }
+
+
/**
* Transition to MainActivity to restart the process.
*/
@@ -275,8 +294,8 @@ public View getView(int position, View convertView, ViewGroup parent) {
DataCaptureModule.Element sampleData = getItem(position);
TextView sampleLabel = convertView.findViewById(LISTVIEW_SAMPLE_LABEL);
TextView RGBLabel = convertView.findViewById(LISTVIEW_RGB_LABEL);
- TextView RPointLabel = convertView.findViewById(LISTVIEW_RPOINT_LABEL);
- TextView RPointSTDLabel = convertView.findViewById(LISTVIEW_RPOINTSTD_LABEL);
+ TextView AlphaLabel = convertView.findViewById(LISTVIEW_Alpha_LABEL);
+ TextView BetaLabel = convertView.findViewById(LISTVIEW_RPOINTBeta_LABEL);
TextView transformedValueLabel = convertView.findViewById(LISTVIEW_TRANSFORMEDVALUE_LABEL);
TextView comparisonValueLabel = convertView.findViewById(LISTVIEW_COMPARISONVALUE_LABEL);
@@ -288,10 +307,10 @@ public View getView(int position, View convertView, ViewGroup parent) {
sampleLabel.setText("x" + position);
}
RGBLabel.setText(String.format("(%.0f, %.0f, %.0f)", sampleData.getAvgR(), sampleData.getAvgG(), sampleData.getAvgB()));
- RPointLabel.setText(String.format("%.2f", sampleData.getRPoint()));
- RPointSTDLabel.setText(String.format("%.2E", sampleData.getRPointSTD()));
+ AlphaLabel.setText(String.format("%.2f", sampleData.getAlpha()));
+ BetaLabel.setText(String.format("%.2E", sampleData.getBeta()));
transformedValueLabel.setText(String.format("%.2f", sampleData.getTransformedValue()));
- comparisonValueLabel.setText(String.format("%.2f", sampleData.getComparativeValue()));
+ comparisonValueLabel.setText(String.format("%.2f", sampleData.getSnr()));
return convertView;
}
@@ -353,6 +372,7 @@ public void onClick(View v) {
csvFile);
// send as an intent
+
Intent exportDataIntent = new Intent(Intent.ACTION_SEND);
exportDataIntent.setType("text/csv");
exportDataIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
diff --git a/app/src/main/java/com/bae/myapplication/balloons/DataAnalysisBalloons.java b/app/src/main/java/com/bae/myapplication/balloons/DataAnalysisBalloons.java
index f6eb4bb..9c9c5b5 100644
--- a/app/src/main/java/com/bae/myapplication/balloons/DataAnalysisBalloons.java
+++ b/app/src/main/java/com/bae/myapplication/balloons/DataAnalysisBalloons.java
@@ -12,8 +12,10 @@ public class DataAnalysisBalloons {
// balloons for tooltips
private Balloon avgRGBBalloon;
private Balloon avgRValBalloon;
- private Balloon avgRValSTDBalloon;
+ //private Balloon avgRValSTDBalloon;
private Balloon ratioBalloon;
+ private Balloon snrBalloon;
+ private Balloon alphaBalloon;
public DataAnalysisBalloons(AppCompatActivity context)
{
@@ -27,16 +29,26 @@ public DataAnalysisBalloons(AppCompatActivity context)
.build();
avgRValBalloon = balloonBuilder
- .setText(res.getString(R.string.avg_rval))
+ .setText(res.getString(R.string.alpha))
.build();
- avgRValSTDBalloon = balloonBuilder
- .setText(res.getString(R.string.avg_rvalstd))
- .build();
+ //avgRValSTDBalloon = balloonBuilder
+ // .setText(res.getString(R.string.avg_rvalstd))
+ // .build();
ratioBalloon = balloonBuilder
.setText(res.getString(R.string.ratio))
.build();
+
+ // Additions For Alpha and SNR tooltips
+ alphaBalloon = balloonBuilder
+ .setText(res.getString(R.string.alpha))
+ .build();
+
+ snrBalloon = balloonBuilder
+ .setText(res.getString(R.string.snr))
+ .build();
+
}
public Balloon getAvgRGBBalloon() {
@@ -47,11 +59,14 @@ public Balloon getAvgRValBalloon() {
return avgRValBalloon;
}
- public Balloon getAvgRValSTDBalloon() {
- return avgRValSTDBalloon;
- }
+// public Balloon getAvgRValSTDBalloon() {
+// return avgRValSTDBalloon;
+// }
public Balloon getRatioBalloon() {
return ratioBalloon;
}
+
+ public Balloon getSnrBalloon() {return snrBalloon;}
+ public Balloon getAlphaBalloon() {return alphaBalloon;}
}
diff --git a/app/src/main/java/com/bae/myapplication/datasystem/DataBundlingVisitor.java b/app/src/main/java/com/bae/myapplication/datasystem/DataBundlingVisitor.java
index d299c39..e5a4315 100644
--- a/app/src/main/java/com/bae/myapplication/datasystem/DataBundlingVisitor.java
+++ b/app/src/main/java/com/bae/myapplication/datasystem/DataBundlingVisitor.java
@@ -47,9 +47,12 @@ public String saveData()
DataCaptureModule module = new DataCaptureModule();
for (DataProcessor dp : dps)
{
+ double snr = dp.getBeta()/dps.get(0).getBeta(); // snr = Beta_sample/Beta_control
+
DataCaptureModule.Element elem = new DataCaptureModule.Element(
dp.getAvgRValue(), dp.getAvgGValue(), dp.getAvgBValue(),
- dp.getAvgRPoint(), dp.getRPointSTD(), dp.getComparativeValue(), dp.getTransformedValue());
+ dp.getAvgRPoint(), dp.getRPointSTD(), dp.getComparativeValue(), dp.getTransformedValue(),
+ dp.getAlpha(), dp.getBeta(), snr);
module.putElement(elem);
}
return DataStore.primaryDataStore.putModule(module, ActivityTransitions.FROM_DATA_CAPTURE_ACTIVITY);
diff --git a/app/src/main/java/com/bae/myapplication/datasystem/DataProcessor.java b/app/src/main/java/com/bae/myapplication/datasystem/DataProcessor.java
index 2adc08b..f22ebee 100644
--- a/app/src/main/java/com/bae/myapplication/datasystem/DataProcessor.java
+++ b/app/src/main/java/com/bae/myapplication/datasystem/DataProcessor.java
@@ -32,6 +32,9 @@ public class DataProcessor {
private double comparativeValue;
private double transformedValue;
+ private double alpha;
+ private double beta;
+
public DataProcessor() {
sampleColors = new ArrayList<>();
@@ -52,6 +55,8 @@ public void addSampleColor(int sampleColor) {
public void start() {
// Calculate rPoints
// Do (r + g) / b
+ // May be irrelevant due to new algorithm...
+
for (int i = 0; i < sampleColors.size(); i++) {
int r = Color.red(sampleColors.get(i));
int g = Color.green(sampleColors.get(i));
@@ -62,7 +67,7 @@ public void start() {
rPoints.add(rPoint);
}
- // Calculate r,g,b
+ // Calculate avg(r,g,b)
for (int i = 0; i < sampleColors.size(); i++) {
int color = sampleColors.get(i);
avg_rval += Color.red(color);
@@ -74,12 +79,14 @@ public void start() {
avg_gval /= size;
avg_bval /= size;
+ // May be irrelevant due to new algorithm
// Calculate average R Point
for (Double d : rPoints) {
avg_rpoint += d;
}
avg_rpoint /= rPoints.size();
+ // May be irrelevant due to new algorithm
// Calculate R Point STD
double mean = getAvgRPoint();
double squaredDiffs = 0;
@@ -87,6 +94,14 @@ public void start() {
squaredDiffs += Math.pow(d - mean, 2);
}
rPointSTD = squaredDiffs / rPoints.size();
+
+
+ // Calculates alpha & beta
+ for (int i = 0; i < sampleColors.size(); ++i){
+ int color = sampleColors.get(i);
+ alpha = (double) avg_rval/avg_gval;
+ beta = alpha * Math.exp(alpha);
+ }
}
@@ -158,4 +173,9 @@ public void setTransformedValue(double val) {
public double getTransformedValue() {
return transformedValue;
}
+
+ public double getAlpha(){ return alpha;}
+
+ public double getBeta() { return beta;}
+
}
diff --git a/app/src/main/java/com/bae/myapplication/util/DataCaptureModule.java b/app/src/main/java/com/bae/myapplication/util/DataCaptureModule.java
index cef459f..b5e4b49 100644
--- a/app/src/main/java/com/bae/myapplication/util/DataCaptureModule.java
+++ b/app/src/main/java/com/bae/myapplication/util/DataCaptureModule.java
@@ -28,7 +28,13 @@ public static class Element implements Serializable
private double comparativeValue;
private double transformedValue;
- public Element(double avgR, double avgG, double avgB, double rPoint, double rPointSTD, double comparativeValue, double transformedValue)
+ private double alpha;
+ private double beta;
+ private double snr;
+
+ public Element(double avgR, double avgG, double avgB, double rPoint, double rPointSTD,
+ double comparativeValue, double transformedValue, double alpha, double beta,
+ double snr)
{
this.avgR = avgR;
this.avgG = avgG;
@@ -37,6 +43,9 @@ public Element(double avgR, double avgG, double avgB, double rPoint, double rPoi
this.rPointSTD = rPointSTD;
this.comparativeValue = comparativeValue;
this.transformedValue = transformedValue;
+ this.alpha = alpha;
+ this.beta = beta;
+ this.snr = snr;
}
/** Getters */
@@ -48,6 +57,10 @@ public Element(double avgR, double avgG, double avgB, double rPoint, double rPoi
public double getComparativeValue() { return comparativeValue; }
public double getTransformedValue() { return transformedValue; }
+ public double getAlpha() {return alpha;}
+ public double getBeta() {return beta;}
+ public double getSnr() {return snr;}
+
public DataCaptureModule getParent() { return parent; }
@@ -55,7 +68,7 @@ public Element(double avgR, double avgG, double avgB, double rPoint, double rPoi
}
- // Contains the examples. e.g. control, x1, x2, x3, x4
+ // Contains the samples. e.g. control, x1, x2, x3, x4
private ArrayList elements = new ArrayList<>();
@@ -68,6 +81,8 @@ public void putElement(Element elem)
elements.add(elem);
}
+
+ // Add beta, alpha, snr to csv file
/**
* @return A raw string that represents the DataSet as a CSV file extension.
*/
@@ -76,15 +91,15 @@ public String getCSV()
StringBuilder rawCSV = new StringBuilder(new String());
// append column titles
- rawCSV.append("avgR,avgG,avgB,rPoint,rPointSTD,TransformedValue,S/N\n");
+ rawCSV.append("\"avg(R,G,B)\",rPoint,rPointSTD,TransformedValue,Alpha, Beta,SNR\n");
// for each element, append a row
for (Element elem : elements)
{
- @SuppressLint("DefaultLocale") String newRow = String.format("%f,%f,%f,%f,%f,%f,%f\n",
+ @SuppressLint("DefaultLocale") String newRow = String.format("\"(%.0f, %.0f, %.0f)\",%f,%f,%f,%f,%f,%f\n",
elem.getAvgR(), elem.getAvgG(), elem.getAvgB(),
elem.getRPoint(), elem.getRPointSTD(), elem.getTransformedValue(),
- elem.getComparativeValue());
+ elem.getAlpha(), elem.getBeta(), elem.getSnr());
rawCSV.append(newRow);
}
diff --git a/app/src/main/res/layout-land/activity_datagraphview.xml b/app/src/main/res/layout-land/activity_datagraphview.xml
index ca00d9c..c52729d 100644
--- a/app/src/main/res/layout-land/activity_datagraphview.xml
+++ b/app/src/main/res/layout-land/activity_datagraphview.xml
@@ -7,15 +7,15 @@
+ app:layout_constraintTop_toBottomOf="@+id/GraphViewAddDataSetsBtn" />
diff --git a/app/src/main/res/layout-land/listview_results_item.xml b/app/src/main/res/layout-land/listview_results_item.xml
index d86ade9..30f0fec 100644
--- a/app/src/main/res/layout-land/listview_results_item.xml
+++ b/app/src/main/res/layout-land/listview_results_item.xml
@@ -9,7 +9,9 @@
android:layout_width="wrap_content"
android:layout_height="50dp"
android:orientation="horizontal"
- app:layout_constraintStart_toStartOf="parent">
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent">
Average RGB values from all sampling points within the given sample
- Average value of how red selected area from the sample is
- Spread of each sampling point with respect to rval
+
+ Calculated by taking R/G
+ Spread of each sampling point with respect to rval
The respective rval / rval_c. Where rval_c is of the control
+ The Single Noise Ratio of the sample. Beta_sample/Beta_control
\ No newline at end of file